ZGlmZiAtLWdpdCBhL3NyYy9pZl9tenNjaC5jIGIvc3JjL2lmX216c2NoLmMKaW5kZXggNzA2ZjRjYS4uYzMyNWE5MiAxMDA2NDQKLS0tIGEvc3JjL2lmX216c2NoLmMKKysrIGIvc3JjL2lmX216c2NoLmMKQEAgLTEwMCw3ICsxMDAsNyBAQAogI2lmZGVmIEhBVkVfU0FOREJPWAogc3RhdGljIFNjaGVtZV9PYmplY3QgKnNhbmRib3hfZmlsZV9ndWFyZChpbnQsIFNjaGVtZV9PYmplY3QgKiopOwogc3RhdGljIFNjaGVtZV9PYmplY3QgKnNhbmRib3hfbmV0d29ya19ndWFyZChpbnQsIFNjaGVtZV9PYmplY3QgKiopOwotc3RhdGljIHZvaWQgc2FuZGJveF9jaGVjaygpOworc3RhdGljIHZvaWQgc2FuZGJveF9jaGVjayh2b2lkKTsKICNlbmRpZgogLyogIEJ1ZmZlci1yZWxhdGVkIGNvbW1hbmRzICovCiBzdGF0aWMgU2NoZW1lX09iamVjdCAqYnVmZmVyX25ldyhidWZfVCAqYnVmKTsKQEAgLTI0NDEsNyArMjQ0MSw4IEBACiAgICAgZWxzZQogCWFyZ3ZbMF0gPSBzY2hlbWVfbWFrZV9zdHJpbmcoXygiVmltIGVycm9yIikpOwogCi0gICAgYXJndlsxXSA9IHNjaGVtZV9jdXJyZW50X2NvbnRpbnVhdGlvbl9tYXJrcygpOworICAgIC8qIFRPRE86IHByb3BlciBhcmd1bWVudCAqLworICAgIGFyZ3ZbMV0gPSBzY2hlbWVfY3VycmVudF9jb250aW51YXRpb25fbWFya3MoTlVMTCk7CiAKICAgICBzY2hlbWVfcmFpc2Uoc2NoZW1lX21ha2Vfc3RydWN0X2luc3RhbmNlKHZpbV9leG4sIDIsIGFyZ3YpKTsKIH0KQEAgLTI2NTksNyArMjY2MCw3IEBACiBzdGF0aWMgU2NoZW1lX09iamVjdCAqTV9kZWxldGUgPSBOVUxMOwogCiAgICAgc3RhdGljIHZvaWQKLXNhbmRib3hfY2hlY2soKQorc2FuZGJveF9jaGVjayh2b2lkKQogewogICAgIGlmIChzYW5kYm94KQogCXJhaXNlX3ZpbV9leG4oXygibm90IGFsbG93ZWQgaW4gdGhlIFZpbSBzYW5kYm94IikpOwpkaWZmIC0tZ2l0IGEvc3JjL2lmX3RjbC5jIGIvc3JjL2lmX3RjbC5jCmluZGV4IGZlNDNkMjMuLjRiMDg5Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9pZl90Y2wuYworKysgYi9zcmMvaWZfdGNsLmMKQEAgLTE1NjQsNyArMTU2NCw5IEBACiAJaWYgKHJlZmxpc3QtPmludGVycCA9PSBpbnRlcnAgJiYgcmVmbGlzdC0+dmltb2JqID09IHZpbW9iaikKIAl7CiAJICAgIGlmIChyZWZsaXN0LT5kZWxjbWQpCisJICAgIHsKIAkJVGNsX0RlY3JSZWZDb3VudChyZWZsaXN0LT5kZWxjbWQpOworCSAgICB9CiAJICAgIFRjbF9JbmNyUmVmQ291bnQoZGVsY21kKTsKIAkgICAgcmVmbGlzdC0+ZGVsY21kID0gZGVsY21kOwogCSAgICByZXR1cm4gVENMX09LOwpkaWZmIC0tZ2l0IGEvc3JjL2xpbmsuc2ggYi9zcmMvbGluay5zaAppbmRleCAwYWIwN2YwLi5kYzM3NmQ1IDEwMDc1NQotLS0gYS9zcmMvbGluay5zaAorKysgYi9zcmMvbGluay5zaApAQCAtNSw3ICs1LDggQEAKICMgbGlicmFyaWVzIHdoZW4gdGhleSBleGlzdCwgYnV0IHRoaXMgZG9lc24ndCBtZWFuIHRoZXkgYXJlIG5lZWRlZCBmb3IgVmltLgogIwogIyAgICAgIEF1dGhvcjogQnJhbSBNb29sZW5hYXIKLSMgTGFzdCBjaGFuZ2U6IDIwMDUgSmFuIDI1CisjIExhc3QgY2hhbmdlOiAyMDA2IFNlcCAyNgorIyAgICAgTGljZW5zZTogUHVibGljIGRvbWFpbgogIwogIyBXYXJuaW5nOiBUaGlzIGZhaWxzIG1pc2VyYWJseSBpZiB0aGUgbGlua2VyIGRvZXNuJ3QgcmV0dXJuIGFuIGVycm9yIGNvZGUhCiAjCmRpZmYgLS1naXQgYS9zcmMvcG8vUkVBRE1FLnR4dCBiL3NyYy9wby9SRUFETUUudHh0CmluZGV4IDYyZWUzODkuLmQ2MzZlY2UgMTAwNjQ0Ci0tLSBhL3NyYy9wby9SRUFETUUudHh0CisrKyBiL3NyYy9wby9SRUFETUUudHh0CkBAIC0xMiw5ICsxMiw5IEBACiBlbmNvZGluZy4KIAogVGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnksIHN0YXJ0aW5nIHdpdGggdmVyc2lvbiAwLjEwLjM2LCB1c2VzIGEgbmV3IGZvcm1hdCBmb3IKLXNvbWUgZW5jb2RpbmdzLiAgVGhpcyBmb2xvd3MgdGhlIEM5OSBzdGFuZGFyZCBmb3Igc3RyaW5ncy4gIEl0IG1lYW5zIHRoYXQgd2hlbgotYSBtdWx0aS1ieXRlIGNoYXJhY3RlciBpbmNsdWRlcyB0aGUgMHg1YyBieXRlLCB0aGlzIGlzIG5vdCByZWNvZ25pemVkIGFzIGEKLWJhY2tzbGFzaC4gIFNpbmNlIHRoaXMgZm9ybWF0IGlzIGluY29tcGF0aWJsZSB3aXRoIFNvbGFyaXMsIFZpbSB1c2VzIHRoZSBvbGQKK3NvbWUgZW5jb2RpbmdzLiAgVGhpcyBmb2xsb3dzIHRoZSBDOTkgc3RhbmRhcmQgZm9yIHN0cmluZ3MuICBJdCBtZWFucyB0aGF0Cit3aGVuIGEgbXVsdGktYnl0ZSBjaGFyYWN0ZXIgaW5jbHVkZXMgdGhlIDB4NWMgYnl0ZSwgdGhpcyBpcyBub3QgcmVjb2duaXplZCBhcworYSBiYWNrc2xhc2guICBTaW5jZSB0aGlzIGZvcm1hdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBTb2xhcmlzLCBWaW0gdXNlcyB0aGUgb2xkCiBmb3JtYXQuICBUaGlzIGlzIGRvbmUgYnkgc2V0dGluZyB0aGUgT0xEX1BPX0ZJTEVfT1VUUFVUIGFuZCBPTERfUE9fRklMRV9JTlBVVAogZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgV2hlbiB5b3UgdXNlIHRoZSBNYWtlZmlsZSBpbiB0aGlzIGRpcmVjdG9yeSB0aGF0IHdpbGwKIGJlIGRvbmUgZm9yIHlvdS4gIFRoaXMgZG9lcyBOT1Qgd29yayB3aXRoIGdldHRleHQgMC4xMC4zNi4gIERvbid0IHVzZSBpdCwgZ2V0CkBAIC0zMCw3ICszMCw3IEBACiAKIFlvdSBtaWdodCBoYXZlIHRvIGRvIHRoZSBjb21tYW5kcyBtYW51YWxseS4gIEV4YW1wbGU6CiAKLSAgIGNkIGM6XHZpbVx2aW02MAorICAgY2QgYzpcdmltXHZpbTcxCiAgICBta2RpciBydW50aW1lXGxhbmdcamFcTENfTUVTU0FHRVMKICAgIG1zZ2ZtdCAtbyBydW50aW1lXGxhbmdcamFcTENfTUVTU0FHRVNcdmltLm1vIHNyY1xwb1xqYS5wbwogCmRpZmYgLS1naXQgYS9zcmMvcG8vcGwucG8gYi9zcmMvcG8vcGwucG8KaW5kZXggNmY4YWM1MC4uNGY0ZTI5ZiAxMDA2NDQKLS0tIGEvc3JjL3BvL3BsLnBvCisrKyBiL3NyYy9wby9wbC5wbwpAQCAtMSwyMiArMSwyMiBAQAogIyB0cmFuc2xhdGlvbiBvZiBwbC5wbyB0byBQb2xpc2gKICMgUG9saXNoIFRyYW5zbGF0aW9uIGZvciBWaW0KICMKLSMgdXBkYXRlZCAyMDA2IGZvciB2aW0tNy4wCisjIHVwZGF0ZWQgMjAwNyBmb3IgdmltLTcuMAogIwogIyBGSVJTVCBBVVRIT1IgTWFyY2luIERhbGVja2kgPG1hcnRpbkBkYWxlY2tpLmRlPiwgMjAwMC4KLSMgTWlrb2xhaiBNYWNob3dza2kgPG1pa21hY2hAd3AucGw+LCAyMDA0LCAyMDA1LCAyMDA2LgorIyBNaWtvbGFqIE1hY2hvd3NraSA8bWlrbWFjaEB3cC5wbD4sIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcuCiBtc2dpZCAiIgogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBwbFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNi0wNC0yNyAxODoyNyswMjAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwNi0wNC0yNyAxOToxNSswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDctMDQtMzAgMjA6MDMrMDIwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDctMDQtMzAgMjA6MDcrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTWlrb2xhaiBNYWNob3dza2kgPG1pa21hY2hAd3AucGw+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogUG9saXNoIDxrZGUtdHJhbnNsQG1lci5jaGVtaWEucG9sc2wuZ2xpd2ljZS5wbD5cbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0yXG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgotIlgtR2VuZXJhdG9yOiBLQmFiZWwgMS4xMS4yXG4iCisiWC1HZW5lcmF0b3I6IEtCYWJlbCAxLjExLjRcbiIKIAogbXNnaWQgIkU4MjogQ2Fubm90IGFsbG9jYXRlIGFueSBidWZmZXIsIGV4aXRpbmcuLi4iCiBtc2dzdHIgIkU4MjogTmllIG1vZ+ogemFyZXplcndvd2HmIGJ1Zm9yYTsgemFrb/FjemVuaWUuLi4iCkBAIC0xOTQsNiArMTk0LDkgQEAKIG1zZ2lkICJFOTk6IEN1cnJlbnQgYnVmZmVyIGlzIG5vdCBpbiBkaWZmIG1vZGUiCiBtc2dzdHIgIkU5OTogQmllv7FjeSBidWZvciBuaWUgamVzdCB3IHRyeWJpZSBy879uaWMiCiAKK21zZ2lkICJFNzkzOiBObyBvdGhlciBidWZmZXIgaW4gZGlmZiBtb2RlIGlzIG1vZGlmaWFibGUiCittc2dzdHIgIkU3OTM6IK9hZGVuIGlubnkgYnVmb3IgdyB0cnliaWUgZGlmZiBuaWUgamVzdCBtb2R5Zmlrb3dhbG55IgorCiBtc2dpZCAiRTEwMDogTm8gb3RoZXIgYnVmZmVyIGluIGRpZmYgbW9kZSIKIG1zZ3N0ciAiRTEwMDogQnJhayBpbm5lZ28gYnVmb3JhIHcgdHJ5YmllIHLzv25pYyIKIApAQCAtNjE5LDYgKzYyMiwxMCBAQAogbXNnc3RyICJFNzA2OiBOaWVwcmF3aWSzb3d5IHR5cCB6bWllbm5laiBkbGE6ICVzIgogCiAjLCBjLWZvcm1hdAorbXNnaWQgIkU3OTU6IENhbm5vdCBkZWxldGUgdmFyaWFibGUgJXMiCittc2dzdHIgIkU3OTU6IE5pZSBtb2fqIHVzdW6x5iB6bWllbm5laiAlcyIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJFNzQxOiBWYWx1ZSBpcyBsb2NrZWQ6ICVzIgogbXNnc3RyICJFNzQxOiBXYXJ0b7bmIGplc3QgemFibG9rb3dhbmE6ICVzIgogCkBAIC04ODMsNiArODkwLDcgQEAKIG1zZ2lkICIgRkFJTEVEIgogbXNnc3RyICIgTklFIFBPV0lPRKNPIFNJyiIKIAorIy4gYXZvaWQgYSB3YWl0X3JldHVybiBmb3IgdGhpcyBtZXNzYWdlLCBpdCdzIGFubm95aW5nCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMzc6IFZpbWluZm8gZmlsZSBpcyBub3Qgd3JpdGFibGU6ICVzIgogbXNnc3RyICJFMTM3OiBQbGlrIHZpbWluZm8gamVzdCBuaWV6YXBpc3l3YWxueTogJXMiCkBAIC0xNDU3LDYgKzE0NjUsOSBAQAogbXNnaWQgImlzIG5vdCBhIGZpbGUiCiBtc2dzdHIgIm5pZSBqZXN0IHBsaWtpZW0iCiAKK21zZ2lkICJpcyBhIGRldmljZSAoZGlzYWJsZWQgd2l0aCAnb3BlbmRldmljZScgb3B0aW9uIgorbXNnc3RyICJqZXN0IHVyerFkemVuaWVtICh3ebOxY3pvbnltIHcgb3BjamkgJ29wZW5kZXZpY2UnIgorCiBtc2dpZCAiW05ldyBGaWxlXSIKIG1zZ3N0ciAiW05vd3kgUGxpa10iCiAKQEAgLTE1NTMsNiArMTU2NCw5IEBACiBtc2dpZCAiaXMgbm90IGEgZmlsZSBvciB3cml0YWJsZSBkZXZpY2UiCiBtc2dzdHIgIm5pZSBqZXN0IHBsaWtpZW0gbHViIHphcGlzeXdhbG55bSBwcnp5cnqxZGVtIgogCittc2dpZCAid3JpdGluZyB0byBkZXZpY2UgZGlzYWJsZWQgd2l0aCAnb3BlbmRldmljZScgb3B0aW9uIgorbXNnc3RyICJ6YXBpc3l3YW5pZSBkbyB1cnqxZHplbmlhIHd5s7Fjem9uZSB3IG9wY2ppICdvcGVuZGV2aWNlJyIKKwogbXNnaWQgImlzIHJlYWQtb25seSAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJqZXN0IHR5bGtvIGRvIG9kY3p5dHUgKHd5bXW2IHBvcHJ6ZXogISkiCiAKQEAgLTMyODgsNiArMzMwMiw5IEBACiAiLFxuIgogImx1YiBwbGlrIHpvc3RhsyB1c3prb2R6b255LiIKIAorbXNnaWQgIiBoYXMgYmVlbiBkYW1hZ2VkIChwYWdlIHNpemUgaXMgc21hbGxlciB0aGFuIG1pbmltdW0gdmFsdWUpLlxuIgorbXNnc3RyICIgem9zdGGzIHVzemtvZHpvbnkgKHdpZWxrb7bmIHN0cm9ueSBqZXN0IG1uaWVqc3phIG5pvyBuYWptbmllanN6YSB3YXJ0b7bmKS5cbiIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2luZyBzd2FwIGZpbGUgXCIlc1wiIgogbXNnc3RyICJVv3l3YW0gcGxpa3Ugd3ltaWFueSBcIiVzXCIiCkBAIC0zNjI2LDYgKzM2NDMsMTAgQEAKIG1zZ2lkICJFMzI5OiBObyBtZW51IFwiJXNcIiIKIG1zZ3N0ciAiRTMyOTogTmllIG1hIG1lbnUgXCIlc1wiIgogCisjLiBPbmx5IGEgbW5lbW9uaWMgb3IgYWNjZWxlcmF0b3IgaXMgbm90IHZhbGlkLgorbXNnaWQgIkU3OTI6IEVtcHR5IG1lbnUgbmFtZSIKK21zZ3N0ciAiRTc5MjogUHVzdGEgbmF6d2EgbWVudSIKKwogbXNnaWQgIkUzMzA6IE1lbnUgcGF0aCBtdXN0IG5vdCBsZWFkIHRvIGEgc3ViLW1lbnUiCiBtc2dzdHIgIkUzMzA6IFRyb3AgbWVudSBuaWUgbW+/ZSBwcm93YWR6aeYgZG8gcG9kbWVudSIKIApAQCAtNDk5OSw2ICs1MDIwLDcgQEAKIG1zZ2lkICJTb3JyeSwgb25seSAlbGQgc3VnZ2VzdGlvbnMiCiBtc2dzdHIgIlByenlrcm8gbWksIHR5bGtvICVsZCBwb2Rwb3dpZWR6aSIKIAorIy4gZm9yIHdoZW4gJ2NtZGhlaWdodCcgPiAxCiAjLiBhdm9pZCBtb3JlIHByb21wdAogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGFuZ2UgXCIlLipzXCIgdG86IgpAQCAtNTQyMyw2ICs1NDQ1LDEzIEBACiAKIG1zZ2lkICIiCiAiXG4iCisiTVMtV2luZG93cyA2NCBiaXQgR1VJIHZlcnNpb24iCittc2dzdHIgIiIKKyJcbiIKKyI2NCBiaXRvd2Egd2Vyc2phIEdVSSBkbGEgTVMtV2luZG93cyIKKworbXNnaWQgIiIKKyJcbiIKICJNUy1XaW5kb3dzIDMyIGJpdCBHVUkgdmVyc2lvbiIKIG1zZ3N0ciAiIgogIlxuIgpAQCAtNjAxNiw4ICs2MDQ1LDggQEAKIG1zZ3N0ciAiRTQ2OiBOaWUgbW9n6iB6bWllbmnmIHptaWVubmVqIHR5bGtvIGRvIG9kY3p5dHUgXCIlc1wiIgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIkU0NjogQ2Fubm90IHNldCB2YXJpYWJsZSBpbiB0aGUgc2FuZGJveDogXCIlc1wiIgotbXNnc3RyICJFNDY6IE5pZSBtb2fqIHVzdGF3aeYgem1pZW5uZWogdyBwaWFza293bmljeTogXCIlc1wiIgorbXNnaWQgIkU3OTQ6IENhbm5vdCBzZXQgdmFyaWFibGUgaW4gdGhlIHNhbmRib3g6IFwiJXNcIiIKK21zZ3N0ciAiRTc5NDogTmllIG1vZ+ogdXN0YXdp5iB6bWllbm5laiB3IHBpYXNrb3duaWN5OiBcIiVzXCIiCiAKIG1zZ2lkICJFNDc6IEVycm9yIHdoaWxlIHJlYWRpbmcgZXJyb3JmaWxlIgogbXNnc3RyICJFNDc6IEKzsWQgdyB0cmFrY2llIGN6eXRhbmlhIHBsaWt1IGKz6mTzdyIKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9lZGl0LnBybyBiL3NyYy9wcm90by9lZGl0LnBybwppbmRleCAzYzc2YTllLi5hOTY3MDM3IDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZWRpdC5wcm8KKysrIGIvc3JjL3Byb3RvL2VkaXQucHJvCkBAIC0xLDQxICsxLDQxIEBACiAvKiBlZGl0LmMgKi8KLWV4dGVybiBpbnQgZWRpdCBfX0FSR1MoKGludCBjbWRjaGFyLCBpbnQgc3RhcnRsbiwgbG9uZyBjb3VudCkpOwotZXh0ZXJuIHZvaWQgZWRpdF9wdXRjaGFyIF9fQVJHUygoaW50IGMsIGludCBoaWdobGlnaHQpKTsKLWV4dGVybiB2b2lkIGVkaXRfdW5wdXRjaGFyIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZGlzcGxheV9kb2xsYXIgX19BUkdTKChjb2xucl9UIGNvbCkpOwotZXh0ZXJuIHZvaWQgY2hhbmdlX2luZGVudCBfX0FSR1MoKGludCB0eXBlLCBpbnQgYW1vdW50LCBpbnQgcm91bmQsIGludCByZXBsYWNlZCkpOwotZXh0ZXJuIHZvaWQgdHJ1bmNhdGVfc3BhY2VzIF9fQVJHUygoY2hhcl91ICpsaW5lKSk7Ci1leHRlcm4gdm9pZCBiYWNrc3BhY2VfdW50aWxfY29sdW1uIF9fQVJHUygoaW50IGNvbCkpOwotZXh0ZXJuIGludCB2aW1faXNfY3RybF94X2tleSBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gaW50IGluc19jb21wbF9hZGRfaW5mZXJjYXNlIF9fQVJHUygoY2hhcl91ICpzdHIsIGludCBsZW4sIGludCBpY2FzZSwgY2hhcl91ICpmbmFtZSwgaW50IGRpciwgaW50IGZsYWdzKSk7Ci1leHRlcm4gdm9pZCBzZXRfY29tcGxldGlvbiBfX0FSR1MoKGludCBzdGFydGNvbCwgbGlzdF9UICpsaXN0KSk7Ci1leHRlcm4gdm9pZCBpbnNfY29tcGxfc2hvd19wdW0gX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICpmaW5kX3dvcmRfc3RhcnQgX19BUkdTKChjaGFyX3UgKnB0cikpOwotZXh0ZXJuIGNoYXJfdSAqZmluZF93b3JkX2VuZCBfX0FSR1MoKGNoYXJfdSAqcHRyKSk7Ci1leHRlcm4gaW50IGluc19jb21wbF9hY3RpdmUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGluc19jb21wbF9hZGRfdHYgX19BUkdTKCh0eXB2YWxfVCAqdHYsIGludCBkaXIpKTsKLWV4dGVybiB2b2lkIGluc19jb21wbF9jaGVja19rZXlzIF9fQVJHUygoaW50IGZyZXF1ZW5jeSkpOwotZXh0ZXJuIGludCBnZXRfbGl0ZXJhbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGluc2VydGNoYXIgX19BUkdTKChpbnQgYywgaW50IGZsYWdzLCBpbnQgc2Vjb25kX2luZGVudCkpOwotZXh0ZXJuIHZvaWQgYXV0b19mb3JtYXQgX19BUkdTKChpbnQgdHJhaWxibGFuaywgaW50IHByZXZfbGluZSkpOwotZXh0ZXJuIGludCBjb21wX3RleHR3aWR0aCBfX0FSR1MoKGludCBmZikpOwotZXh0ZXJuIGludCBzdG9wX2Fycm93IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2V0X2xhc3RfaW5zZXJ0IF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiB2b2lkIGZyZWVfbGFzdF9pbnNlcnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICphZGRfY2hhcjJidWYgX19BUkdTKChpbnQgYywgY2hhcl91ICpzKSk7Ci1leHRlcm4gdm9pZCBiZWdpbmxpbmUgX19BUkdTKChpbnQgZmxhZ3MpKTsKLWV4dGVybiBpbnQgb25lcmlnaHQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG9uZWxlZnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGN1cnNvcl91cCBfX0FSR1MoKGxvbmcgbiwgaW50IHVwZF90b3BsaW5lKSk7Ci1leHRlcm4gaW50IGN1cnNvcl9kb3duIF9fQVJHUygobG9uZyBuLCBpbnQgdXBkX3RvcGxpbmUpKTsKLWV4dGVybiBpbnQgc3R1ZmZfaW5zZXJ0ZWQgX19BUkdTKChpbnQgYywgbG9uZyBjb3VudCwgaW50IG5vX2VzYykpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X2xhc3RfaW5zZXJ0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X2xhc3RfaW5zZXJ0X3NhdmUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCByZXBsYWNlX3B1c2ggX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIHZvaWQgZml4dGhpc2xpbmUgX19BUkdTKChpbnQgKCpnZXRfdGhlX2luZGVudCkodm9pZCkpKTsKLWV4dGVybiB2b2lkIGZpeF9pbmRlbnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGluX2NpbmtleXMgX19BUkdTKChpbnQga2V5dHlwZWQsIGludCB3aGVuLCBpbnQgbGluZV9pc19lbXB0eSkpOwotZXh0ZXJuIGludCBoa21hcCBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gdm9pZCBpbnNfc2Nyb2xsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgaW5zX2hvcnNjcm9sbCBfX0FSR1MoKHZvaWQpKTsKK2ludCBlZGl0IF9fQVJHUygoaW50IGNtZGNoYXIsIGludCBzdGFydGxuLCBsb25nIGNvdW50KSk7Cit2b2lkIGVkaXRfcHV0Y2hhciBfX0FSR1MoKGludCBjLCBpbnQgaGlnaGxpZ2h0KSk7Cit2b2lkIGVkaXRfdW5wdXRjaGFyIF9fQVJHUygodm9pZCkpOwordm9pZCBkaXNwbGF5X2RvbGxhciBfX0FSR1MoKGNvbG5yX1QgY29sKSk7Cit2b2lkIGNoYW5nZV9pbmRlbnQgX19BUkdTKChpbnQgdHlwZSwgaW50IGFtb3VudCwgaW50IHJvdW5kLCBpbnQgcmVwbGFjZWQpKTsKK3ZvaWQgdHJ1bmNhdGVfc3BhY2VzIF9fQVJHUygoY2hhcl91ICpsaW5lKSk7Cit2b2lkIGJhY2tzcGFjZV91bnRpbF9jb2x1bW4gX19BUkdTKChpbnQgY29sKSk7CitpbnQgdmltX2lzX2N0cmxfeF9rZXkgX19BUkdTKChpbnQgYykpOworaW50IGluc19jb21wbF9hZGRfaW5mZXJjYXNlIF9fQVJHUygoY2hhcl91ICpzdHIsIGludCBsZW4sIGludCBpY2FzZSwgY2hhcl91ICpmbmFtZSwgaW50IGRpciwgaW50IGZsYWdzKSk7Cit2b2lkIHNldF9jb21wbGV0aW9uIF9fQVJHUygoaW50IHN0YXJ0Y29sLCBsaXN0X1QgKmxpc3QpKTsKK3ZvaWQgaW5zX2NvbXBsX3Nob3dfcHVtIF9fQVJHUygodm9pZCkpOworY2hhcl91ICpmaW5kX3dvcmRfc3RhcnQgX19BUkdTKChjaGFyX3UgKnB0cikpOworY2hhcl91ICpmaW5kX3dvcmRfZW5kIF9fQVJHUygoY2hhcl91ICpwdHIpKTsKK2ludCBpbnNfY29tcGxfYWN0aXZlIF9fQVJHUygodm9pZCkpOworaW50IGluc19jb21wbF9hZGRfdHYgX19BUkdTKCh0eXB2YWxfVCAqdHYsIGludCBkaXIpKTsKK3ZvaWQgaW5zX2NvbXBsX2NoZWNrX2tleXMgX19BUkdTKChpbnQgZnJlcXVlbmN5KSk7CitpbnQgZ2V0X2xpdGVyYWwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGluc2VydGNoYXIgX19BUkdTKChpbnQgYywgaW50IGZsYWdzLCBpbnQgc2Vjb25kX2luZGVudCkpOwordm9pZCBhdXRvX2Zvcm1hdCBfX0FSR1MoKGludCB0cmFpbGJsYW5rLCBpbnQgcHJldl9saW5lKSk7CitpbnQgY29tcF90ZXh0d2lkdGggX19BUkdTKChpbnQgZmYpKTsKK2ludCBzdG9wX2Fycm93IF9fQVJHUygodm9pZCkpOwordm9pZCBzZXRfbGFzdF9pbnNlcnQgX19BUkdTKChpbnQgYykpOwordm9pZCBmcmVlX2xhc3RfaW5zZXJ0IF9fQVJHUygodm9pZCkpOworY2hhcl91ICphZGRfY2hhcjJidWYgX19BUkdTKChpbnQgYywgY2hhcl91ICpzKSk7Cit2b2lkIGJlZ2lubGluZSBfX0FSR1MoKGludCBmbGFncykpOworaW50IG9uZXJpZ2h0IF9fQVJHUygodm9pZCkpOworaW50IG9uZWxlZnQgX19BUkdTKCh2b2lkKSk7CitpbnQgY3Vyc29yX3VwIF9fQVJHUygobG9uZyBuLCBpbnQgdXBkX3RvcGxpbmUpKTsKK2ludCBjdXJzb3JfZG93biBfX0FSR1MoKGxvbmcgbiwgaW50IHVwZF90b3BsaW5lKSk7CitpbnQgc3R1ZmZfaW5zZXJ0ZWQgX19BUkdTKChpbnQgYywgbG9uZyBjb3VudCwgaW50IG5vX2VzYykpOworY2hhcl91ICpnZXRfbGFzdF9pbnNlcnQgX19BUkdTKCh2b2lkKSk7CitjaGFyX3UgKmdldF9sYXN0X2luc2VydF9zYXZlIF9fQVJHUygodm9pZCkpOwordm9pZCByZXBsYWNlX3B1c2ggX19BUkdTKChpbnQgYykpOwordm9pZCBmaXh0aGlzbGluZSBfX0FSR1MoKGludCAoKmdldF90aGVfaW5kZW50KSh2b2lkKSkpOwordm9pZCBmaXhfaW5kZW50IF9fQVJHUygodm9pZCkpOworaW50IGluX2NpbmtleXMgX19BUkdTKChpbnQga2V5dHlwZWQsIGludCB3aGVuLCBpbnQgbGluZV9pc19lbXB0eSkpOworaW50IGhrbWFwIF9fQVJHUygoaW50IGMpKTsKK3ZvaWQgaW5zX3Njcm9sbCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgaW5zX2hvcnNjcm9sbCBfX0FSR1MoKHZvaWQpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2V4X2NtZHMucHJvIGIvc3JjL3Byb3RvL2V4X2NtZHMucHJvCmluZGV4IDc1ODJkZmYuLjQzODJlNjUgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9leF9jbWRzLnBybworKysgYi9zcmMvcHJvdG8vZXhfY21kcy5wcm8KQEAgLTEsNTkgKzEsNTkgQEAKIC8qIGV4X2NtZHMuYyAqLwotZXh0ZXJuIHZvaWQgZG9fYXNjaWkgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2FsaWduIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9zb3J0IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9yZXRhYiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGludCBkb19tb3ZlIF9fQVJHUygobGluZW5yX1QgbGluZTEsIGxpbmVucl9UIGxpbmUyLCBsaW5lbnJfVCBkZXN0KSk7Ci1leHRlcm4gdm9pZCBleF9jb3B5IF9fQVJHUygobGluZW5yX1QgbGluZTEsIGxpbmVucl9UIGxpbmUyLCBsaW5lbnJfVCBuKSk7Ci1leHRlcm4gdm9pZCBmcmVlX3ByZXZfc2hlbGxjbWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBkb19iYW5nIF9fQVJHUygoaW50IGFkZHJfY291bnQsIGV4YXJnX1QgKmVhcCwgaW50IGZvcmNlaXQsIGludCBkb19pbiwgaW50IGRvX291dCkpOwotZXh0ZXJuIHZvaWQgZG9fc2hlbGwgX19BUkdTKChjaGFyX3UgKmNtZCwgaW50IGZsYWdzKSk7Ci1leHRlcm4gY2hhcl91ICptYWtlX2ZpbHRlcl9jbWQgX19BUkdTKChjaGFyX3UgKmNtZCwgY2hhcl91ICppdG1wLCBjaGFyX3UgKm90bXApKTsKLWV4dGVybiB2b2lkIGFwcGVuZF9yZWRpciBfX0FSR1MoKGNoYXJfdSAqYnVmLCBjaGFyX3UgKm9wdCwgY2hhcl91ICpmbmFtZSkpOwotZXh0ZXJuIGludCB2aW1pbmZvX2Vycm9yIF9fQVJHUygoY2hhciAqZXJybnVtLCBjaGFyICptZXNzYWdlLCBjaGFyX3UgKmxpbmUpKTsKLWV4dGVybiBpbnQgcmVhZF92aW1pbmZvIF9fQVJHUygoY2hhcl91ICpmaWxlLCBpbnQgd2FudF9pbmZvLCBpbnQgd2FudF9tYXJrcywgaW50IGZvcmNlaXQpKTsKLWV4dGVybiB2b2lkIHdyaXRlX3ZpbWluZm8gX19BUkdTKChjaGFyX3UgKmZpbGUsIGludCBmb3JjZWl0KSk7Ci1leHRlcm4gaW50IHZpbWluZm9fcmVhZGxpbmUgX19BUkdTKCh2aXJfVCAqdmlycCkpOwotZXh0ZXJuIGNoYXJfdSAqdmltaW5mb19yZWFkc3RyaW5nIF9fQVJHUygodmlyX1QgKnZpcnAsIGludCBvZmYsIGludCBjb252ZXJ0KSk7Ci1leHRlcm4gdm9pZCB2aW1pbmZvX3dyaXRlc3RyaW5nIF9fQVJHUygoRklMRSAqZmQsIGNoYXJfdSAqcCkpOwotZXh0ZXJuIHZvaWQgZG9fZml4ZGVsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBwcmludF9saW5lX25vX3ByZWZpeCBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGludCB1c2VfbnVtYmVyLCBpbnQgbGlzdCkpOwotZXh0ZXJuIHZvaWQgcHJpbnRfbGluZSBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGludCB1c2VfbnVtYmVyLCBpbnQgbGlzdCkpOwotZXh0ZXJuIHZvaWQgZXhfZmlsZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfdXBkYXRlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF93cml0ZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGludCBkb193cml0ZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfd25leHQgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGRvX3dxYWxsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gaW50IG5vdF93cml0aW5nIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBnZXRmaWxlIF9fQVJHUygoaW50IGZudW0sIGNoYXJfdSAqZmZuYW1lLCBjaGFyX3UgKnNmbmFtZSwgaW50IHNldHBtLCBsaW5lbnJfVCBsbnVtLCBpbnQgZm9yY2VpdCkpOwotZXh0ZXJuIGludCBkb19lY21kIF9fQVJHUygoaW50IGZudW0sIGNoYXJfdSAqZmZuYW1lLCBjaGFyX3UgKnNmbmFtZSwgZXhhcmdfVCAqZWFwLCBsaW5lbnJfVCBuZXdsbnVtLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiB2b2lkIGV4X2FwcGVuZCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfY2hhbmdlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF96IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gaW50IGNoZWNrX3Jlc3RyaWN0ZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGNoZWNrX3NlY3VyZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGRvX3N1YiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGludCBkb19zdWJfbXNnIF9fQVJHUygoaW50IGNvdW50X29ubHkpKTsKLWV4dGVybiB2b2lkIGV4X2dsb2JhbCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZ2xvYmFsX2V4ZSBfX0FSR1MoKGNoYXJfdSAqY21kKSk7Ci1leHRlcm4gaW50IHJlYWRfdmltaW5mb19zdWJfc3RyaW5nIF9fQVJHUygodmlyX1QgKnZpcnAsIGludCBmb3JjZSkpOwotZXh0ZXJuIHZvaWQgd3JpdGVfdmltaW5mb19zdWJfc3RyaW5nIF9fQVJHUygoRklMRSAqZnApKTsKLWV4dGVybiB2b2lkIGZyZWVfb2xkX3N1YiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgcHJlcGFyZV90YWdwcmV2aWV3IF9fQVJHUygoaW50IHVuZG9fc3luYykpOwotZXh0ZXJuIHZvaWQgZXhfaGVscCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGNoYXJfdSAqY2hlY2tfaGVscF9sYW5nIF9fQVJHUygoY2hhcl91ICphcmcpKTsKLWV4dGVybiBpbnQgaGVscF9oZXVyaXN0aWMgX19BUkdTKChjaGFyX3UgKm1hdGNoZWRfc3RyaW5nLCBpbnQgb2Zmc2V0LCBpbnQgd3JvbmdfY2FzZSkpOwotZXh0ZXJuIGludCBmaW5kX2hlbHBfdGFncyBfX0FSR1MoKGNoYXJfdSAqYXJnLCBpbnQgKm51bV9tYXRjaGVzLCBjaGFyX3UgKioqbWF0Y2hlcywgaW50IGtlZXBfbGFuZykpOwotZXh0ZXJuIHZvaWQgZml4X2hlbHBfYnVmZmVyIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZXhfZXh1c2FnZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfdml1c2FnZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfaGVscHRhZ3MgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X3NpZ24gX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIHNpZ25fZ3VpX3N0YXJ0ZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHNpZ25fZ2V0X2F0dHIgX19BUkdTKChpbnQgdHlwZW5yLCBpbnQgbGluZSkpOwotZXh0ZXJuIGNoYXJfdSAqc2lnbl9nZXRfdGV4dCBfX0FSR1MoKGludCB0eXBlbnIpKTsKLWV4dGVybiB2b2lkICpzaWduX2dldF9pbWFnZSBfX0FSR1MoKGludCB0eXBlbnIpKTsKLWV4dGVybiBjaGFyX3UgKnNpZ25fdHlwZW5yMm5hbWUgX19BUkdTKChpbnQgdHlwZW5yKSk7Ci1leHRlcm4gdm9pZCBleF9kcm9wIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGRvX2FzY2lpIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2FsaWduIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3NvcnQgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfcmV0YWIgX19BUkdTKChleGFyZ19UICplYXApKTsKK2ludCBkb19tb3ZlIF9fQVJHUygobGluZW5yX1QgbGluZTEsIGxpbmVucl9UIGxpbmUyLCBsaW5lbnJfVCBkZXN0KSk7Cit2b2lkIGV4X2NvcHkgX19BUkdTKChsaW5lbnJfVCBsaW5lMSwgbGluZW5yX1QgbGluZTIsIGxpbmVucl9UIG4pKTsKK3ZvaWQgZnJlZV9wcmV2X3NoZWxsY21kIF9fQVJHUygodm9pZCkpOwordm9pZCBkb19iYW5nIF9fQVJHUygoaW50IGFkZHJfY291bnQsIGV4YXJnX1QgKmVhcCwgaW50IGZvcmNlaXQsIGludCBkb19pbiwgaW50IGRvX291dCkpOwordm9pZCBkb19zaGVsbCBfX0FSR1MoKGNoYXJfdSAqY21kLCBpbnQgZmxhZ3MpKTsKK2NoYXJfdSAqbWFrZV9maWx0ZXJfY21kIF9fQVJHUygoY2hhcl91ICpjbWQsIGNoYXJfdSAqaXRtcCwgY2hhcl91ICpvdG1wKSk7Cit2b2lkIGFwcGVuZF9yZWRpciBfX0FSR1MoKGNoYXJfdSAqYnVmLCBjaGFyX3UgKm9wdCwgY2hhcl91ICpmbmFtZSkpOworaW50IHZpbWluZm9fZXJyb3IgX19BUkdTKChjaGFyICplcnJudW0sIGNoYXIgKm1lc3NhZ2UsIGNoYXJfdSAqbGluZSkpOworaW50IHJlYWRfdmltaW5mbyBfX0FSR1MoKGNoYXJfdSAqZmlsZSwgaW50IHdhbnRfaW5mbywgaW50IHdhbnRfbWFya3MsIGludCBmb3JjZWl0KSk7Cit2b2lkIHdyaXRlX3ZpbWluZm8gX19BUkdTKChjaGFyX3UgKmZpbGUsIGludCBmb3JjZWl0KSk7CitpbnQgdmltaW5mb19yZWFkbGluZSBfX0FSR1MoKHZpcl9UICp2aXJwKSk7CitjaGFyX3UgKnZpbWluZm9fcmVhZHN0cmluZyBfX0FSR1MoKHZpcl9UICp2aXJwLCBpbnQgb2ZmLCBpbnQgY29udmVydCkpOwordm9pZCB2aW1pbmZvX3dyaXRlc3RyaW5nIF9fQVJHUygoRklMRSAqZmQsIGNoYXJfdSAqcCkpOwordm9pZCBkb19maXhkZWwgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgcHJpbnRfbGluZV9ub19wcmVmaXggX19BUkdTKChsaW5lbnJfVCBsbnVtLCBpbnQgdXNlX251bWJlciwgaW50IGxpc3QpKTsKK3ZvaWQgcHJpbnRfbGluZSBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGludCB1c2VfbnVtYmVyLCBpbnQgbGlzdCkpOwordm9pZCBleF9maWxlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3VwZGF0ZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF93cml0ZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworaW50IGRvX3dyaXRlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3duZXh0IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGRvX3dxYWxsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitpbnQgbm90X3dyaXRpbmcgX19BUkdTKCh2b2lkKSk7CitpbnQgZ2V0ZmlsZSBfX0FSR1MoKGludCBmbnVtLCBjaGFyX3UgKmZmbmFtZSwgY2hhcl91ICpzZm5hbWUsIGludCBzZXRwbSwgbGluZW5yX1QgbG51bSwgaW50IGZvcmNlaXQpKTsKK2ludCBkb19lY21kIF9fQVJHUygoaW50IGZudW0sIGNoYXJfdSAqZmZuYW1lLCBjaGFyX3UgKnNmbmFtZSwgZXhhcmdfVCAqZWFwLCBsaW5lbnJfVCBuZXdsbnVtLCBpbnQgZmxhZ3MpKTsKK3ZvaWQgZXhfYXBwZW5kIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2NoYW5nZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF96IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitpbnQgY2hlY2tfcmVzdHJpY3RlZCBfX0FSR1MoKHZvaWQpKTsKK2ludCBjaGVja19zZWN1cmUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGRvX3N1YiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworaW50IGRvX3N1Yl9tc2cgX19BUkdTKChpbnQgY291bnRfb25seSkpOwordm9pZCBleF9nbG9iYWwgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZ2xvYmFsX2V4ZSBfX0FSR1MoKGNoYXJfdSAqY21kKSk7CitpbnQgcmVhZF92aW1pbmZvX3N1Yl9zdHJpbmcgX19BUkdTKCh2aXJfVCAqdmlycCwgaW50IGZvcmNlKSk7Cit2b2lkIHdyaXRlX3ZpbWluZm9fc3ViX3N0cmluZyBfX0FSR1MoKEZJTEUgKmZwKSk7Cit2b2lkIGZyZWVfb2xkX3N1YiBfX0FSR1MoKHZvaWQpKTsKK2ludCBwcmVwYXJlX3RhZ3ByZXZpZXcgX19BUkdTKChpbnQgdW5kb19zeW5jKSk7Cit2b2lkIGV4X2hlbHAgX19BUkdTKChleGFyZ19UICplYXApKTsKK2NoYXJfdSAqY2hlY2tfaGVscF9sYW5nIF9fQVJHUygoY2hhcl91ICphcmcpKTsKK2ludCBoZWxwX2hldXJpc3RpYyBfX0FSR1MoKGNoYXJfdSAqbWF0Y2hlZF9zdHJpbmcsIGludCBvZmZzZXQsIGludCB3cm9uZ19jYXNlKSk7CitpbnQgZmluZF9oZWxwX3RhZ3MgX19BUkdTKChjaGFyX3UgKmFyZywgaW50ICpudW1fbWF0Y2hlcywgY2hhcl91ICoqKm1hdGNoZXMsIGludCBrZWVwX2xhbmcpKTsKK3ZvaWQgZml4X2hlbHBfYnVmZmVyIF9fQVJHUygodm9pZCkpOwordm9pZCBleF9leHVzYWdlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3ZpdXNhZ2UgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfaGVscHRhZ3MgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfc2lnbiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBzaWduX2d1aV9zdGFydGVkIF9fQVJHUygodm9pZCkpOworaW50IHNpZ25fZ2V0X2F0dHIgX19BUkdTKChpbnQgdHlwZW5yLCBpbnQgbGluZSkpOworY2hhcl91ICpzaWduX2dldF90ZXh0IF9fQVJHUygoaW50IHR5cGVucikpOwordm9pZCAqc2lnbl9nZXRfaW1hZ2UgX19BUkdTKChpbnQgdHlwZW5yKSk7CitjaGFyX3UgKnNpZ25fdHlwZW5yMm5hbWUgX19BUkdTKChpbnQgdHlwZW5yKSk7Cit2b2lkIGV4X2Ryb3AgX19BUkdTKChleGFyZ19UICplYXApKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2V4X2NtZHMyLnBybyBiL3NyYy9wcm90by9leF9jbWRzMi5wcm8KaW5kZXggOWM4OTMyOS4uMTE0ODBmMSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2V4X2NtZHMyLnBybworKysgYi9zcmMvcHJvdG8vZXhfY21kczIucHJvCkBAIC0xLDgzICsxLDgzIEBACiAvKiBleF9jbWRzMi5jICovCi1leHRlcm4gdm9pZCBkb19kZWJ1ZyBfX0FSR1MoKGNoYXJfdSAqY21kKSk7Ci1leHRlcm4gdm9pZCBleF9kZWJ1ZyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZGJnX2NoZWNrX2JyZWFrcG9pbnQgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiBpbnQgZGJnX2NoZWNrX3NraXBwZWQgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2JyZWFrYWRkIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9kZWJ1Z2dyZWVkeSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfYnJlYWtkZWwgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2JyZWFrbGlzdCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGxpbmVucl9UIGRiZ19maW5kX2JyZWFrcG9pbnQgX19BUkdTKChpbnQgZmlsZSwgY2hhcl91ICpmbmFtZSwgbGluZW5yX1QgYWZ0ZXIpKTsKLWV4dGVybiBpbnQgaGFzX3Byb2ZpbGluZyBfX0FSR1MoKGludCBmaWxlLCBjaGFyX3UgKmZuYW1lLCBpbnQgKmZwKSk7Ci1leHRlcm4gdm9pZCBkYmdfYnJlYWtwb2ludCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgbGluZW5yX1QgbG51bSkpOwotZXh0ZXJuIHZvaWQgcHJvZmlsZV9zdGFydCBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Ci1leHRlcm4gdm9pZCBwcm9maWxlX2VuZCBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Ci1leHRlcm4gdm9pZCBwcm9maWxlX3N1YiBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtLCBwcm9mdGltZV9UICp0bTIpKTsKLWV4dGVybiBjaGFyICpwcm9maWxlX21zZyBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Ci1leHRlcm4gdm9pZCBwcm9maWxlX3plcm8gX19BUkdTKChwcm9mdGltZV9UICp0bSkpOwotZXh0ZXJuIHZvaWQgcHJvZmlsZV9hZGQgX19BUkdTKChwcm9mdGltZV9UICp0bSwgcHJvZnRpbWVfVCAqdG0yKSk7Ci1leHRlcm4gdm9pZCBwcm9maWxlX3NlbGYgX19BUkdTKChwcm9mdGltZV9UICpzZWxmLCBwcm9mdGltZV9UICp0b3RhbCwgcHJvZnRpbWVfVCAqY2hpbGRyZW4pKTsKLWV4dGVybiB2b2lkIHByb2ZpbGVfZ2V0X3dhaXQgX19BUkdTKChwcm9mdGltZV9UICp0bSkpOwotZXh0ZXJuIHZvaWQgcHJvZmlsZV9zdWJfd2FpdCBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtLCBwcm9mdGltZV9UICp0bWEpKTsKLWV4dGVybiBpbnQgcHJvZmlsZV9lcXVhbCBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtMSwgcHJvZnRpbWVfVCAqdG0yKSk7Ci1leHRlcm4gaW50IHByb2ZpbGVfY21wIF9fQVJHUygocHJvZnRpbWVfVCAqdG0xLCBwcm9mdGltZV9UICp0bTIpKTsKLWV4dGVybiB2b2lkIGV4X3Byb2ZpbGUgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIHByb2ZpbGVfZHVtcCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHNjcmlwdF9wcm9mX3NhdmUgX19BUkdTKChwcm9mdGltZV9UICp0bSkpOwotZXh0ZXJuIHZvaWQgc2NyaXB0X3Byb2ZfcmVzdG9yZSBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Ci1leHRlcm4gdm9pZCBwcm9mX2luY2hhcl9lbnRlciBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHByb2ZfaW5jaGFyX2V4aXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHByb2ZfZGVmX2Z1bmMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGF1dG93cml0ZSBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBmb3JjZWl0KSk7Ci1leHRlcm4gdm9pZCBhdXRvd3JpdGVfYWxsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBjaGVja19jaGFuZ2VkIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGNoZWNrYXcsIGludCBtdWx0X3dpbiwgaW50IGZvcmNlaXQsIGludCBhbGxidWYpKTsKLWV4dGVybiB2b2lkIGJyb3dzZV9zYXZlX2ZuYW1lIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIHZvaWQgZGlhbG9nX2NoYW5nZWQgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgY2hlY2thbGwpKTsKLWV4dGVybiBpbnQgY2FuX2FiYW5kb24gX19BUkdTKChidWZfVCAqYnVmLCBpbnQgZm9yY2VpdCkpOwotZXh0ZXJuIGludCBjaGVja19jaGFuZ2VkX2FueSBfX0FSR1MoKGludCBoaWRkZW4pKTsKLWV4dGVybiBpbnQgY2hlY2tfZm5hbWUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGJ1Zl93cml0ZV9hbGwgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgZm9yY2VpdCkpOwotZXh0ZXJuIGludCBnZXRfYXJnbGlzdCBfX0FSR1MoKGdhcnJheV9UICpnYXAsIGNoYXJfdSAqc3RyKSk7Ci1leHRlcm4gaW50IGdldF9hcmdsaXN0X2V4cCBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgKmZjb3VudHAsIGNoYXJfdSAqKipmbmFtZXNwKSk7Ci1leHRlcm4gdm9pZCBzZXRfYXJnbGlzdCBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7Ci1leHRlcm4gdm9pZCBjaGVja19hcmdfaWR4IF9fQVJHUygod2luX1QgKndpbikpOwotZXh0ZXJuIHZvaWQgZXhfYXJncyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfcHJldmlvdXMgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X3Jld2luZCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfbGFzdCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfYXJndW1lbnQgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGRvX2FyZ2ZpbGUgX19BUkdTKChleGFyZ19UICplYXAsIGludCBhcmduKSk7Ci1leHRlcm4gdm9pZCBleF9uZXh0IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9hcmdlZGl0IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9hcmdhZGQgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2FyZ2RlbGV0ZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfbGlzdGRvIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9jb21waWxlciBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfcnVudGltZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGludCBzb3VyY2VfcnVudGltZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IGFsbCkpOwotZXh0ZXJuIGludCBkb19pbl9ydW50aW1lcGF0aCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IGFsbCwgdm9pZCAoKmNhbGxiYWNrKShjaGFyX3UgKmZuYW1lLCB2b2lkICpjayksIHZvaWQgKmNvb2tpZSkpOwotZXh0ZXJuIHZvaWQgZXhfb3B0aW9ucyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfc291cmNlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gbGluZW5yX1QgKnNvdXJjZV9icmVha3BvaW50IF9fQVJHUygodm9pZCAqY29va2llKSk7Ci1leHRlcm4gaW50ICpzb3VyY2VfZGJnX3RpY2sgX19BUkdTKCh2b2lkICpjb29raWUpKTsKLWV4dGVybiBpbnQgc291cmNlX2xldmVsIF9fQVJHUygodm9pZCAqY29va2llKSk7Ci1leHRlcm4gaW50IGRvX3NvdXJjZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGludCBjaGVja19vdGhlciwgaW50IGlzX3ZpbXJjKSk7Ci1leHRlcm4gdm9pZCBleF9zY3JpcHRuYW1lcyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgc2NyaXB0bmFtZXNfc2xhc2hfYWRqdXN0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X3NjcmlwdG5hbWUgX19BUkdTKChzY2lkX1QgaWQpKTsKLWV4dGVybiB2b2lkIGZyZWVfc2NyaXB0bmFtZXMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhciAqZmdldHNfY3IgX19BUkdTKChjaGFyICpzLCBpbnQgbiwgRklMRSAqc3RyZWFtKSk7Ci1leHRlcm4gY2hhcl91ICpnZXRzb3VyY2VsaW5lIF9fQVJHUygoaW50IGMsIHZvaWQgKmNvb2tpZSwgaW50IGluZGVudCkpOwotZXh0ZXJuIHZvaWQgc2NyaXB0X2xpbmVfc3RhcnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzY3JpcHRfbGluZV9leGVjIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2NyaXB0X2xpbmVfZW5kIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZXhfc2NyaXB0ZW5jb2RpbmcgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2ZpbmlzaCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZG9fZmluaXNoIF9fQVJHUygoZXhhcmdfVCAqZWFwLCBpbnQgcmVhbmltYXRlKSk7Ci1leHRlcm4gaW50IHNvdXJjZV9maW5pc2hlZCBfX0FSR1MoKGNoYXJfdSAqKCpnZXRsaW5lKShpbnQsIHZvaWQgKiwgaW50KSwgdm9pZCAqY29va2llKSk7Ci1leHRlcm4gdm9pZCBleF9jaGVja3RpbWUgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiBjaGFyX3UgKmdldF9tZXNzX2xhbmcgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzZXRfbGFuZ192YXIgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBleF9sYW5ndWFnZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X2xhbmdfYXJnIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBpbnQgaWR4KSk7Cit2b2lkIGRvX2RlYnVnIF9fQVJHUygoY2hhcl91ICpjbWQpKTsKK3ZvaWQgZXhfZGVidWcgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZGJnX2NoZWNrX2JyZWFrcG9pbnQgX19BUkdTKChleGFyZ19UICplYXApKTsKK2ludCBkYmdfY2hlY2tfc2tpcHBlZCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9icmVha2FkZCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9kZWJ1Z2dyZWVkeSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9icmVha2RlbCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9icmVha2xpc3QgX19BUkdTKChleGFyZ19UICplYXApKTsKK2xpbmVucl9UIGRiZ19maW5kX2JyZWFrcG9pbnQgX19BUkdTKChpbnQgZmlsZSwgY2hhcl91ICpmbmFtZSwgbGluZW5yX1QgYWZ0ZXIpKTsKK2ludCBoYXNfcHJvZmlsaW5nIF9fQVJHUygoaW50IGZpbGUsIGNoYXJfdSAqZm5hbWUsIGludCAqZnApKTsKK3ZvaWQgZGJnX2JyZWFrcG9pbnQgX19BUkdTKChjaGFyX3UgKm5hbWUsIGxpbmVucl9UIGxudW0pKTsKK3ZvaWQgcHJvZmlsZV9zdGFydCBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Cit2b2lkIHByb2ZpbGVfZW5kIF9fQVJHUygocHJvZnRpbWVfVCAqdG0pKTsKK3ZvaWQgcHJvZmlsZV9zdWIgX19BUkdTKChwcm9mdGltZV9UICp0bSwgcHJvZnRpbWVfVCAqdG0yKSk7CitjaGFyICpwcm9maWxlX21zZyBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Cit2b2lkIHByb2ZpbGVfemVybyBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Cit2b2lkIHByb2ZpbGVfYWRkIF9fQVJHUygocHJvZnRpbWVfVCAqdG0sIHByb2Z0aW1lX1QgKnRtMikpOwordm9pZCBwcm9maWxlX3NlbGYgX19BUkdTKChwcm9mdGltZV9UICpzZWxmLCBwcm9mdGltZV9UICp0b3RhbCwgcHJvZnRpbWVfVCAqY2hpbGRyZW4pKTsKK3ZvaWQgcHJvZmlsZV9nZXRfd2FpdCBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Cit2b2lkIHByb2ZpbGVfc3ViX3dhaXQgX19BUkdTKChwcm9mdGltZV9UICp0bSwgcHJvZnRpbWVfVCAqdG1hKSk7CitpbnQgcHJvZmlsZV9lcXVhbCBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtMSwgcHJvZnRpbWVfVCAqdG0yKSk7CitpbnQgcHJvZmlsZV9jbXAgX19BUkdTKChwcm9mdGltZV9UICp0bTEsIHByb2Z0aW1lX1QgKnRtMikpOwordm9pZCBleF9wcm9maWxlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIHByb2ZpbGVfZHVtcCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2NyaXB0X3Byb2Zfc2F2ZSBfX0FSR1MoKHByb2Z0aW1lX1QgKnRtKSk7Cit2b2lkIHNjcmlwdF9wcm9mX3Jlc3RvcmUgX19BUkdTKChwcm9mdGltZV9UICp0bSkpOwordm9pZCBwcm9mX2luY2hhcl9lbnRlciBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgcHJvZl9pbmNoYXJfZXhpdCBfX0FSR1MoKHZvaWQpKTsKK2ludCBwcm9mX2RlZl9mdW5jIF9fQVJHUygodm9pZCkpOworaW50IGF1dG93cml0ZSBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBmb3JjZWl0KSk7Cit2b2lkIGF1dG93cml0ZV9hbGwgX19BUkdTKCh2b2lkKSk7CitpbnQgY2hlY2tfY2hhbmdlZCBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBjaGVja2F3LCBpbnQgbXVsdF93aW4sIGludCBmb3JjZWl0LCBpbnQgYWxsYnVmKSk7Cit2b2lkIGJyb3dzZV9zYXZlX2ZuYW1lIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwordm9pZCBkaWFsb2dfY2hhbmdlZCBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBjaGVja2FsbCkpOworaW50IGNhbl9hYmFuZG9uIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGZvcmNlaXQpKTsKK2ludCBjaGVja19jaGFuZ2VkX2FueSBfX0FSR1MoKGludCBoaWRkZW4pKTsKK2ludCBjaGVja19mbmFtZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBidWZfd3JpdGVfYWxsIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGZvcmNlaXQpKTsKK2ludCBnZXRfYXJnbGlzdCBfX0FSR1MoKGdhcnJheV9UICpnYXAsIGNoYXJfdSAqc3RyKSk7CitpbnQgZ2V0X2FyZ2xpc3RfZXhwIF9fQVJHUygoY2hhcl91ICpzdHIsIGludCAqZmNvdW50cCwgY2hhcl91ICoqKmZuYW1lc3ApKTsKK3ZvaWQgc2V0X2FyZ2xpc3QgX19BUkdTKChjaGFyX3UgKnN0cikpOwordm9pZCBjaGVja19hcmdfaWR4IF9fQVJHUygod2luX1QgKndpbikpOwordm9pZCBleF9hcmdzIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3ByZXZpb3VzIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3Jld2luZCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9sYXN0IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2FyZ3VtZW50IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGRvX2FyZ2ZpbGUgX19BUkdTKChleGFyZ19UICplYXAsIGludCBhcmduKSk7Cit2b2lkIGV4X25leHQgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfYXJnZWRpdCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9hcmdhZGQgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfYXJnZGVsZXRlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2xpc3RkbyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9jb21waWxlciBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9ydW50aW1lIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitpbnQgc291cmNlX3J1bnRpbWUgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBhbGwpKTsKK2ludCBkb19pbl9ydW50aW1lcGF0aCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IGFsbCwgdm9pZCAoKmNhbGxiYWNrKShjaGFyX3UgKmZuYW1lLCB2b2lkICpjayksIHZvaWQgKmNvb2tpZSkpOwordm9pZCBleF9vcHRpb25zIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3NvdXJjZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworbGluZW5yX1QgKnNvdXJjZV9icmVha3BvaW50IF9fQVJHUygodm9pZCAqY29va2llKSk7CitpbnQgKnNvdXJjZV9kYmdfdGljayBfX0FSR1MoKHZvaWQgKmNvb2tpZSkpOworaW50IHNvdXJjZV9sZXZlbCBfX0FSR1MoKHZvaWQgKmNvb2tpZSkpOworaW50IGRvX3NvdXJjZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGludCBjaGVja19vdGhlciwgaW50IGlzX3ZpbXJjKSk7Cit2b2lkIGV4X3NjcmlwdG5hbWVzIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIHNjcmlwdG5hbWVzX3NsYXNoX2FkanVzdCBfX0FSR1MoKHZvaWQpKTsKK2NoYXJfdSAqZ2V0X3NjcmlwdG5hbWUgX19BUkdTKChzY2lkX1QgaWQpKTsKK3ZvaWQgZnJlZV9zY3JpcHRuYW1lcyBfX0FSR1MoKHZvaWQpKTsKK2NoYXIgKmZnZXRzX2NyIF9fQVJHUygoY2hhciAqcywgaW50IG4sIEZJTEUgKnN0cmVhbSkpOworY2hhcl91ICpnZXRzb3VyY2VsaW5lIF9fQVJHUygoaW50IGMsIHZvaWQgKmNvb2tpZSwgaW50IGluZGVudCkpOwordm9pZCBzY3JpcHRfbGluZV9zdGFydCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2NyaXB0X2xpbmVfZXhlYyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2NyaXB0X2xpbmVfZW5kIF9fQVJHUygodm9pZCkpOwordm9pZCBleF9zY3JpcHRlbmNvZGluZyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9maW5pc2ggX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZG9fZmluaXNoIF9fQVJHUygoZXhhcmdfVCAqZWFwLCBpbnQgcmVhbmltYXRlKSk7CitpbnQgc291cmNlX2ZpbmlzaGVkIF9fQVJHUygoY2hhcl91ICooKmZnZXRsaW5lKShpbnQsIHZvaWQgKiwgaW50KSwgdm9pZCAqY29va2llKSk7Cit2b2lkIGV4X2NoZWNrdGltZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworY2hhcl91ICpnZXRfbWVzc19sYW5nIF9fQVJHUygodm9pZCkpOwordm9pZCBzZXRfbGFuZ192YXIgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGV4X2xhbmd1YWdlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitjaGFyX3UgKmdldF9sYW5nX2FyZyBfX0FSR1MoKGV4cGFuZF9UICp4cCwgaW50IGlkeCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZ3VpX2JldmFsLnBybyBiL3NyYy9wcm90by9ndWlfYmV2YWwucHJvCmluZGV4IDQyZTAwODIuLjMzYzE3MzggMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9ndWlfYmV2YWwucHJvCisrKyBiL3NyYy9wcm90by9ndWlfYmV2YWwucHJvCkBAIC0xLDExICsxLDExIEBACiAvKiBndWlfYmV2YWwuYyAqLwotZXh0ZXJuIHZvaWQgZ2VuZXJhbF9iZXZhbF9jYiBfX0FSR1MoKEJhbGxvb25FdmFsICpiZXZhbCwgaW50IHN0YXRlKSk7Ci1leHRlcm4gQmFsbG9vbkV2YWwgKmd1aV9tY2hfY3JlYXRlX2JldmFsX2FyZWEgX19BUkdTKCh2b2lkICp0YXJnZXQsIGNoYXJfdSAqbWVzZywgdm9pZCAoKm1lc2dDQikoQmFsbG9vbkV2YWwgKiwgaW50KSwgdm9pZCAqY2xpZW50RGF0YSkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9kZXN0cm95X2JldmFsX2FyZWEgX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZW5hYmxlX2JldmFsX2FyZWEgX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZGlzYWJsZV9iZXZhbF9hcmVhIF9fQVJHUygoQmFsbG9vbkV2YWwgKmJldmFsKSk7Ci1leHRlcm4gQmFsbG9vbkV2YWwgKmd1aV9tY2hfY3VycmVudGx5X3Nob3dpbmdfYmV2YWwgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGdldF9iZXZhbF9pbmZvIF9fQVJHUygoQmFsbG9vbkV2YWwgKmJldmFsLCBpbnQgZ2V0d29yZCwgd2luX1QgKip3aW5wLCBsaW5lbnJfVCAqbG51bXAsIGNoYXJfdSAqKnRleHRwLCBpbnQgKmNvbHApKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfcG9zdF9iYWxsb29uIF9fQVJHUygoQmFsbG9vbkV2YWwgKmJldmFsLCBjaGFyX3UgKm1lc2cpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfdW5wb3N0X2JhbGxvb24gX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwpKTsKK3ZvaWQgZ2VuZXJhbF9iZXZhbF9jYiBfX0FSR1MoKEJhbGxvb25FdmFsICpiZXZhbCwgaW50IHN0YXRlKSk7CitCYWxsb29uRXZhbCAqZ3VpX21jaF9jcmVhdGVfYmV2YWxfYXJlYSBfX0FSR1MoKHZvaWQgKnRhcmdldCwgY2hhcl91ICptZXNnLCB2b2lkICgqbWVzZ0NCKShCYWxsb29uRXZhbCAqLCBpbnQpLCB2b2lkICpjbGllbnREYXRhKSk7Cit2b2lkIGd1aV9tY2hfZGVzdHJveV9iZXZhbF9hcmVhIF9fQVJHUygoQmFsbG9vbkV2YWwgKmJldmFsKSk7Cit2b2lkIGd1aV9tY2hfZW5hYmxlX2JldmFsX2FyZWEgX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwpKTsKK3ZvaWQgZ3VpX21jaF9kaXNhYmxlX2JldmFsX2FyZWEgX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwpKTsKK0JhbGxvb25FdmFsICpndWlfbWNoX2N1cnJlbnRseV9zaG93aW5nX2JldmFsIF9fQVJHUygodm9pZCkpOworaW50IGdldF9iZXZhbF9pbmZvIF9fQVJHUygoQmFsbG9vbkV2YWwgKmJldmFsLCBpbnQgZ2V0d29yZCwgd2luX1QgKip3aW5wLCBsaW5lbnJfVCAqbG51bXAsIGNoYXJfdSAqKnRleHRwLCBpbnQgKmNvbHApKTsKK3ZvaWQgZ3VpX21jaF9wb3N0X2JhbGxvb24gX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwsIGNoYXJfdSAqbWVzZykpOwordm9pZCBndWlfbWNoX3VucG9zdF9iYWxsb29uIF9fQVJHUygoQmFsbG9vbkV2YWwgKmJldmFsKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9ndWlfbW90aWYucHJvIGIvc3JjL3Byb3RvL2d1aV9tb3RpZi5wcm8KaW5kZXggNTc3MTdiOS4uM2UwOGVjOSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2d1aV9tb3RpZi5wcm8KKysrIGIvc3JjL3Byb3RvL2d1aV9tb3RpZi5wcm8KQEAgLTEsNDYgKzEsNDYgQEAKIC8qIGd1aV9tb3RpZi5jICovCi1leHRlcm4gdm9pZCBndWlfeDExX2NyZWF0ZV93aWRnZXRzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX3gxMV9kZXN0cm95X3dpZGdldHMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF90ZXh0X2FyZWFfcG9zIF9fQVJHUygoaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpKTsKLWV4dGVybiB2b2lkIGd1aV94MTFfc2V0X2JhY2tfY29sb3IgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtYW5hZ2VfY2VudGVyZWQgX19BUkdTKChXaWRnZXQgZGlhbG9nX2NoaWxkKSk7Ci1leHRlcm4gWG1Gb250TGlzdCBndWlfbW90aWZfY3JlYXRlX2ZvbnRsaXN0IF9fQVJHUygoWEZvbnRTdHJ1Y3QgKmZvbnQpKTsKLWV4dGVybiBYbUZvbnRMaXN0IGd1aV9tb3RpZl9mb250c2V0MmZvbnRsaXN0IF9fQVJHUygoWEZvbnRTZXQgKmZvbnRzZXQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZW5hYmxlX21lbnUgX19BUkdTKChpbnQgZmxhZykpOwotZXh0ZXJuIHZvaWQgZ3VpX21vdGlmX3NldF9tbmVtb25pY3MgX19BUkdTKChpbnQgZW5hYmxlKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2FkZF9tZW51IF9fQVJHUygodmltbWVudV9UICptZW51LCBpbnQgaWR4KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3RvZ2dsZV90ZWFyb2ZmcyBfX0FSR1MoKGludCBlbmFibGUpKTsKLWV4dGVybiBpbnQgZ3VpX21jaF90ZXh0X2FyZWFfZXh0cmFfaGVpZ2h0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9jb21wdXRlX21lbnVfaGVpZ2h0IF9fQVJHUygoV2lkZ2V0IGlkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2FkZF9tZW51X2l0ZW0gX19BUkdTKCh2aW1tZW51X1QgKm1lbnUsIGludCBpZHgpKTsKLWV4dGVybiB2b2lkIGd1aV9tb3RpZl91cGRhdGVfbW91c2Vtb2RlbCBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9uZXdfbWVudV9jb2xvcnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX25ld19tZW51X2ZvbnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX25ld190b29sdGlwX2ZvbnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX25ld190b29sdGlwX2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZGVzdHJveV9tZW51IF9fQVJHUygodmltbWVudV9UICptZW51KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3Nob3dfcG9wdXBtZW51IF9fQVJHUygodmltbWVudV9UICptZW51KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2RlZl9jb2xvcnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9zY3JvbGxiYXJfdGh1bWIgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IsIGxvbmcgdmFsLCBsb25nIHNpemUsIGxvbmcgbWF4KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9zY3JvbGxiYXJfcG9zIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9lbmFibGVfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBpbnQgZmxhZykpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9jcmVhdGVfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBpbnQgb3JpZW50KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2Rlc3Ryb3lfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9zY3JvbGxiYXJfY29sb3JzIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiKSk7Ci1leHRlcm4gV2luZG93IGd1aV94MTFfZ2V0X3dpZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjaGFyX3UgKmd1aV9tY2hfYnJvd3NlIF9fQVJHUygoaW50IHNhdmluZywgY2hhcl91ICp0aXRsZSwgY2hhcl91ICpkZmx0LCBjaGFyX3UgKmV4dCwgY2hhcl91ICppbml0ZGlyLCBjaGFyX3UgKmZpbHRlcikpOwotZXh0ZXJuIGludCBndWlfbWNoX2RpYWxvZyBfX0FSR1MoKGludCB0eXBlLCBjaGFyX3UgKnRpdGxlLCBjaGFyX3UgKm1lc3NhZ2UsIGNoYXJfdSAqYnV0dG9uX25hbWVzLCBpbnQgZGZsdGJ1dHRvbiwgY2hhcl91ICp0ZXh0ZmllbGQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZW5hYmxlX2Zvb3RlciBfX0FSR1MoKGludCBzaG93aXQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0X2Zvb3RlciBfX0FSR1MoKGNoYXJfdSAqcykpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9zaG93X3Rvb2xiYXIgX19BUkdTKChpbnQgc2hvd2l0KSk7Ci1leHRlcm4gaW50IGd1aV9tY2hfY29tcHV0ZV90b29sYmFyX2hlaWdodCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1vdGlmX2dldF90b29sYmFyX2NvbG9ycyBfX0FSR1MoKFBpeGVsICpiZ3AsIFBpeGVsICpmZ3AsIFBpeGVsICpic3AsIFBpeGVsICp0c3AsIFBpeGVsICpoc3ApKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2hvd190YWJsaW5lIF9fQVJHUygoaW50IHNob3dpdCkpOwotZXh0ZXJuIGludCBndWlfbWNoX3Nob3dpbmdfdGFibGluZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfdXBkYXRlX3RhYmxpbmUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9jdXJ0YWIgX19BUkdTKChpbnQgbnIpKTsKLWV4dGVybiB2b2lkIGd1aV9tb3RpZl9tZW51X2ZvbnRsaXN0IF9fQVJHUygoV2lkZ2V0IGlkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2ZpbmRfZGlhbG9nIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3JlcGxhY2VfZGlhbG9nIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBndWlfbW90aWZfc3luY2hfZm9udHMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV94MTFfY3JlYXRlX3dpZGdldHMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV94MTFfZGVzdHJveV93aWRnZXRzIF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX3NldF90ZXh0X2FyZWFfcG9zIF9fQVJHUygoaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpKTsKK3ZvaWQgZ3VpX3gxMV9zZXRfYmFja19jb2xvciBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWFuYWdlX2NlbnRlcmVkIF9fQVJHUygoV2lkZ2V0IGRpYWxvZ19jaGlsZCkpOworWG1Gb250TGlzdCBndWlfbW90aWZfY3JlYXRlX2ZvbnRsaXN0IF9fQVJHUygoWEZvbnRTdHJ1Y3QgKmZvbnQpKTsKK1htRm9udExpc3QgZ3VpX21vdGlmX2ZvbnRzZXQyZm9udGxpc3QgX19BUkdTKChYRm9udFNldCAqZm9udHNldCkpOwordm9pZCBndWlfbWNoX2VuYWJsZV9tZW51IF9fQVJHUygoaW50IGZsYWcpKTsKK3ZvaWQgZ3VpX21vdGlmX3NldF9tbmVtb25pY3MgX19BUkdTKChpbnQgZW5hYmxlKSk7Cit2b2lkIGd1aV9tY2hfYWRkX21lbnUgX19BUkdTKCh2aW1tZW51X1QgKm1lbnUsIGludCBpZHgpKTsKK3ZvaWQgZ3VpX21jaF90b2dnbGVfdGVhcm9mZnMgX19BUkdTKChpbnQgZW5hYmxlKSk7CitpbnQgZ3VpX21jaF90ZXh0X2FyZWFfZXh0cmFfaGVpZ2h0IF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX2NvbXB1dGVfbWVudV9oZWlnaHQgX19BUkdTKChXaWRnZXQgaWQpKTsKK3ZvaWQgZ3VpX21jaF9hZGRfbWVudV9pdGVtIF9fQVJHUygodmltbWVudV9UICptZW51LCBpbnQgaWR4KSk7Cit2b2lkIGd1aV9tb3RpZl91cGRhdGVfbW91c2Vtb2RlbCBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSkpOwordm9pZCBndWlfbWNoX25ld19tZW51X2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9uZXdfbWVudV9mb250IF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX25ld190b29sdGlwX2ZvbnQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfbmV3X3Rvb2x0aXBfY29sb3JzIF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX2Rlc3Ryb3lfbWVudSBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSkpOwordm9pZCBndWlfbWNoX3Nob3dfcG9wdXBtZW51IF9fQVJHUygodmltbWVudV9UICptZW51KSk7Cit2b2lkIGd1aV9tY2hfZGVmX2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9zZXRfc2Nyb2xsYmFyX3RodW1iIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBsb25nIHZhbCwgbG9uZyBzaXplLCBsb25nIG1heCkpOwordm9pZCBndWlfbWNoX3NldF9zY3JvbGxiYXJfcG9zIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkpOwordm9pZCBndWlfbWNoX2VuYWJsZV9zY3JvbGxiYXIgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IsIGludCBmbGFnKSk7Cit2b2lkIGd1aV9tY2hfY3JlYXRlX3Njcm9sbGJhciBfX0FSR1MoKHNjcm9sbGJhcl9UICpzYiwgaW50IG9yaWVudCkpOwordm9pZCBndWlfbWNoX2Rlc3Ryb3lfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiKSk7Cit2b2lkIGd1aV9tY2hfc2V0X3Njcm9sbGJhcl9jb2xvcnMgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IpKTsKK1dpbmRvdyBndWlfeDExX2dldF93aWQgX19BUkdTKCh2b2lkKSk7CitjaGFyX3UgKmd1aV9tY2hfYnJvd3NlIF9fQVJHUygoaW50IHNhdmluZywgY2hhcl91ICp0aXRsZSwgY2hhcl91ICpkZmx0LCBjaGFyX3UgKmV4dCwgY2hhcl91ICppbml0ZGlyLCBjaGFyX3UgKmZpbHRlcikpOworaW50IGd1aV9tY2hfZGlhbG9nIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqbWVzc2FnZSwgY2hhcl91ICpidXR0b25fbmFtZXMsIGludCBkZmx0YnV0dG9uLCBjaGFyX3UgKnRleHRmaWVsZCkpOwordm9pZCBndWlfbWNoX2VuYWJsZV9mb290ZXIgX19BUkdTKChpbnQgc2hvd2l0KSk7Cit2b2lkIGd1aV9tY2hfc2V0X2Zvb3RlciBfX0FSR1MoKGNoYXJfdSAqcykpOwordm9pZCBndWlfbWNoX3Nob3dfdG9vbGJhciBfX0FSR1MoKGludCBzaG93aXQpKTsKK2ludCBndWlfbWNoX2NvbXB1dGVfdG9vbGJhcl9oZWlnaHQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1vdGlmX2dldF90b29sYmFyX2NvbG9ycyBfX0FSR1MoKFBpeGVsICpiZ3AsIFBpeGVsICpmZ3AsIFBpeGVsICpic3AsIFBpeGVsICp0c3AsIFBpeGVsICpoc3ApKTsKK3ZvaWQgZ3VpX21jaF9zaG93X3RhYmxpbmUgX19BUkdTKChpbnQgc2hvd2l0KSk7CitpbnQgZ3VpX21jaF9zaG93aW5nX3RhYmxpbmUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfdXBkYXRlX3RhYmxpbmUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfc2V0X2N1cnRhYiBfX0FSR1MoKGludCBucikpOwordm9pZCBndWlfbW90aWZfbWVudV9mb250bGlzdCBfX0FSR1MoKFdpZGdldCBpZCkpOwordm9pZCBndWlfbWNoX2ZpbmRfZGlhbG9nIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGd1aV9tY2hfcmVwbGFjZV9kaWFsb2cgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZ3VpX21vdGlmX3N5bmNoX2ZvbnRzIF9fQVJHUygodm9pZCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZ3VpX3gxMS5wcm8gYi9zcmMvcHJvdG8vZ3VpX3gxMS5wcm8KaW5kZXggZjhhYmIwNy4uZDBhZWM5NCAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2d1aV94MTEucHJvCisrKyBiL3NyYy9wcm90by9ndWlfeDExLnBybwpAQCAtMSw3MCArMSw3MCBAQAogLyogZ3VpX3gxMS5jICovCi1leHRlcm4gdm9pZCBndWlfeDExX2tleV9oaXRfY2IgX19BUkdTKChXaWRnZXQgdywgWHRQb2ludGVyIGR1ZCwgWEV2ZW50ICpldmVudCwgQm9vbGVhbiAqZHVtKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3ByZXBhcmUgX19BUkdTKChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2KSk7Ci1leHRlcm4gaW50IGd1aV9tY2hfaW5pdF9jaGVjayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZ3VpX21jaF9pbml0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF91bmluaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX25ld19jb2xvcnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGd1aV9tY2hfb3BlbiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9pbml0X3Rvb2x0aXBfZm9udCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9pbml0X21lbnVfZm9udCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZXhpdCBfX0FSR1MoKGludCByYykpOwotZXh0ZXJuIGludCBndWlfbWNoX2dldF93aW5wb3MgX19BUkdTKChpbnQgKngsIGludCAqeSkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9zZXRfd2lucG9zIF9fQVJHUygoaW50IHgsIGludCB5KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9zaGVsbHNpemUgX19BUkdTKChpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtaW5fd2lkdGgsIGludCBtaW5faGVpZ2h0LCBpbnQgYmFzZV93aWR0aCwgaW50IGJhc2VfaGVpZ2h0LCBpbnQgZGlyZWN0aW9uKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2dldF9zY3JlZW5fZGltZW5zaW9ucyBfX0FSR1MoKGludCAqc2NyZWVuX3csIGludCAqc2NyZWVuX2gpKTsKLWV4dGVybiBpbnQgZ3VpX21jaF9pbml0X2ZvbnQgX19BUkdTKChjaGFyX3UgKmZvbnRfbmFtZSwgaW50IGRvX2ZvbnRzZXQpKTsKLWV4dGVybiBHdWlGb250IGd1aV9tY2hfZ2V0X2ZvbnQgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBnaXZlRXJyb3JJZk1pc3NpbmcpKTsKLWV4dGVybiBjaGFyX3UgKmd1aV9tY2hfZ2V0X2ZvbnRuYW1lIF9fQVJHUygoR3VpRm9udCBmb250LCBjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgZ3VpX21jaF9hZGp1c3RfY2hhcmhlaWdodCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0X2ZvbnQgX19BUkdTKChHdWlGb250IGZvbnQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0X2ZvbnRzZXQgX19BUkdTKChHdWlGb250c2V0IGZvbnRzZXQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZnJlZV9mb250IF9fQVJHUygoR3VpRm9udCBmb250KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2ZyZWVfZm9udHNldCBfX0FSR1MoKEd1aUZvbnRzZXQgZm9udHNldCkpOwotZXh0ZXJuIEd1aUZvbnRzZXQgZ3VpX21jaF9nZXRfZm9udHNldCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IGdpdmVFcnJvcklmTWlzc2luZywgaW50IGZpeGVkX3dpZHRoKSk7Ci1leHRlcm4gaW50IGZvbnRzZXRfaGVpZ2h0IF9fQVJHUygoWEZvbnRTZXQgZnMpKTsKLWV4dGVybiBpbnQgZm9udHNldF9oZWlnaHQyIF9fQVJHUygoWEZvbnRTZXQgZnMpKTsKLWV4dGVybiBndWljb2xvcl9UIGd1aV9tY2hfZ2V0X2NvbG9yIF9fQVJHUygoY2hhcl91ICpyZXFuYW1lKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9mZ19jb2xvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0X2JnX2NvbG9yIF9fQVJHUygoZ3VpY29sb3JfVCBjb2xvcikpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9zZXRfc3BfY29sb3IgX19BUkdTKChndWljb2xvcl9UIGNvbG9yKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2RyYXdfc3RyaW5nIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCwgY2hhcl91ICpzLCBpbnQgbGVuLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiBpbnQgZ3VpX21jaF9oYXNrZXkgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgZ3VpX2dldF94MTFfd2luZGlzIF9fQVJHUygoV2luZG93ICp3aW4sIERpc3BsYXkgKipkaXMpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfYmVlcCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZmxhc2ggX19BUkdTKChpbnQgbXNlYykpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9pbnZlcnRfcmVjdGFuZ2xlIF9fQVJHUygoaW50IHIsIGludCBjLCBpbnQgbnIsIGludCBuYykpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9pY29uaWZ5IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9zZXRfZm9yZWdyb3VuZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZHJhd19ob2xsb3dfY3Vyc29yIF9fQVJHUygoZ3VpY29sb3JfVCBjb2xvcikpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9kcmF3X3BhcnRfY3Vyc29yIF9fQVJHUygoaW50IHcsIGludCBoLCBndWljb2xvcl9UIGNvbG9yKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3VwZGF0ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZ3VpX21jaF93YWl0X2Zvcl9jaGFycyBfX0FSR1MoKGxvbmcgd3RpbWUpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZmx1c2ggX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2NsZWFyX2Jsb2NrIF9fQVJHUygoaW50IHJvdzEsIGludCBjb2wxLCBpbnQgcm93MiwgaW50IGNvbDIpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfY2xlYXJfYWxsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9kZWxldGVfbGluZXMgX19BUkdTKChpbnQgcm93LCBpbnQgbnVtX2xpbmVzKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2luc2VydF9saW5lcyBfX0FSR1MoKGludCByb3csIGludCBudW1fbGluZXMpKTsKLWV4dGVybiB2b2lkIGNsaXBfbWNoX2xvc2Vfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLWV4dGVybiBpbnQgY2xpcF9tY2hfb3duX3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci1leHRlcm4gdm9pZCBjbGlwX21jaF9yZXF1ZXN0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci1leHRlcm4gdm9pZCBjbGlwX21jaF9zZXRfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfbWVudV9ncmV5IF9fQVJHUygodmltbWVudV9UICptZW51LCBpbnQgZ3JleSkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9tZW51X2hpZGRlbiBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSwgaW50IGhpZGRlbikpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9kcmF3X21lbnViYXIgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfeDExX21lbnVfY2IgX19BUkdTKChXaWRnZXQgdywgWHRQb2ludGVyIGNsaWVudF9kYXRhLCBYdFBvaW50ZXIgY2FsbF9kYXRhKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9ibGlua2luZyBfX0FSR1MoKGxvbmcgd2FpdHRpbWUsIGxvbmcgb24sIGxvbmcgb2ZmKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3N0b3BfYmxpbmsgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3N0YXJ0X2JsaW5rIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGxvbmdfdSBndWlfbWNoX2dldF9yZ2IgX19BUkdTKChndWljb2xvcl9UIHBpeGVsKSk7Ci1leHRlcm4gdm9pZCBndWlfeDExX2NhbGxiYWNrcyBfX0FSR1MoKFdpZGdldCB0ZXh0QXJlYSwgV2lkZ2V0IHZpbUZvcm0pKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZ2V0bW91c2UgX19BUkdTKChpbnQgKngsIGludCAqeSkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9zZXRtb3VzZSBfX0FSR1MoKGludCB4LCBpbnQgeSkpOwotZXh0ZXJuIFhCdXR0b25QcmVzc2VkRXZlbnQgKmd1aV94MTFfZ2V0X2xhc3RfbW91c2VfZXZlbnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2RyYXdzaWduIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCwgaW50IHR5cGVucikpOwotZXh0ZXJuIHZvaWQgKmd1aV9tY2hfcmVnaXN0ZXJfc2lnbiBfX0FSR1MoKGNoYXJfdSAqc2lnbmZpbGUpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZGVzdHJveV9zaWduIF9fQVJHUygodm9pZCAqc2lnbikpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9tb3VzZWhpZGUgX19BUkdTKChpbnQgaGlkZSkpOwotZXh0ZXJuIHZvaWQgbWNoX3NldF9tb3VzZV9zaGFwZSBfX0FSR1MoKGludCBzaGFwZSkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9tZW51X3NldF90aXAgX19BUkdTKCh2aW1tZW51X1QgKm1lbnUpKTsKK3ZvaWQgZ3VpX3gxMV9rZXlfaGl0X2NiIF9fQVJHUygoV2lkZ2V0IHcsIFh0UG9pbnRlciBkdWQsIFhFdmVudCAqZXZlbnQsIEJvb2xlYW4gKmR1bSkpOwordm9pZCBndWlfbWNoX3ByZXBhcmUgX19BUkdTKChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2KSk7CitpbnQgZ3VpX21jaF9pbml0X2NoZWNrIF9fQVJHUygodm9pZCkpOworaW50IGd1aV9tY2hfaW5pdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF91bmluaXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfbmV3X2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKK2ludCBndWlfbWNoX29wZW4gX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9pbml0X3Rvb2x0aXBfZm9udCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX2luaXRfbWVudV9mb250IF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX2V4aXQgX19BUkdTKChpbnQgcmMpKTsKK2ludCBndWlfbWNoX2dldF93aW5wb3MgX19BUkdTKChpbnQgKngsIGludCAqeSkpOwordm9pZCBndWlfbWNoX3NldF93aW5wb3MgX19BUkdTKChpbnQgeCwgaW50IHkpKTsKK3ZvaWQgZ3VpX21jaF9zZXRfc2hlbGxzaXplIF9fQVJHUygoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWluX3dpZHRoLCBpbnQgbWluX2hlaWdodCwgaW50IGJhc2Vfd2lkdGgsIGludCBiYXNlX2hlaWdodCwgaW50IGRpcmVjdGlvbikpOwordm9pZCBndWlfbWNoX2dldF9zY3JlZW5fZGltZW5zaW9ucyBfX0FSR1MoKGludCAqc2NyZWVuX3csIGludCAqc2NyZWVuX2gpKTsKK2ludCBndWlfbWNoX2luaXRfZm9udCBfX0FSR1MoKGNoYXJfdSAqZm9udF9uYW1lLCBpbnQgZG9fZm9udHNldCkpOworR3VpRm9udCBndWlfbWNoX2dldF9mb250IF9fQVJHUygoY2hhcl91ICpuYW1lLCBpbnQgZ2l2ZUVycm9ySWZNaXNzaW5nKSk7CitjaGFyX3UgKmd1aV9tY2hfZ2V0X2ZvbnRuYW1lIF9fQVJHUygoR3VpRm9udCBmb250LCBjaGFyX3UgKm5hbWUpKTsKK2ludCBndWlfbWNoX2FkanVzdF9jaGFyaGVpZ2h0IF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX3NldF9mb250IF9fQVJHUygoR3VpRm9udCBmb250KSk7Cit2b2lkIGd1aV9tY2hfc2V0X2ZvbnRzZXQgX19BUkdTKChHdWlGb250c2V0IGZvbnRzZXQpKTsKK3ZvaWQgZ3VpX21jaF9mcmVlX2ZvbnQgX19BUkdTKChHdWlGb250IGZvbnQpKTsKK3ZvaWQgZ3VpX21jaF9mcmVlX2ZvbnRzZXQgX19BUkdTKChHdWlGb250c2V0IGZvbnRzZXQpKTsKK0d1aUZvbnRzZXQgZ3VpX21jaF9nZXRfZm9udHNldCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IGdpdmVFcnJvcklmTWlzc2luZywgaW50IGZpeGVkX3dpZHRoKSk7CitpbnQgZm9udHNldF9oZWlnaHQgX19BUkdTKChYRm9udFNldCBmcykpOworaW50IGZvbnRzZXRfaGVpZ2h0MiBfX0FSR1MoKFhGb250U2V0IGZzKSk7CitndWljb2xvcl9UIGd1aV9tY2hfZ2V0X2NvbG9yIF9fQVJHUygoY2hhcl91ICpyZXFuYW1lKSk7Cit2b2lkIGd1aV9tY2hfc2V0X2ZnX2NvbG9yIF9fQVJHUygoZ3VpY29sb3JfVCBjb2xvcikpOwordm9pZCBndWlfbWNoX3NldF9iZ19jb2xvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKK3ZvaWQgZ3VpX21jaF9zZXRfc3BfY29sb3IgX19BUkdTKChndWljb2xvcl9UIGNvbG9yKSk7Cit2b2lkIGd1aV9tY2hfZHJhd19zdHJpbmcgX19BUkdTKChpbnQgcm93LCBpbnQgY29sLCBjaGFyX3UgKnMsIGludCBsZW4sIGludCBmbGFncykpOworaW50IGd1aV9tY2hfaGFza2V5IF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgZ3VpX2dldF94MTFfd2luZGlzIF9fQVJHUygoV2luZG93ICp3aW4sIERpc3BsYXkgKipkaXMpKTsKK3ZvaWQgZ3VpX21jaF9iZWVwIF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX2ZsYXNoIF9fQVJHUygoaW50IG1zZWMpKTsKK3ZvaWQgZ3VpX21jaF9pbnZlcnRfcmVjdGFuZ2xlIF9fQVJHUygoaW50IHIsIGludCBjLCBpbnQgbnIsIGludCBuYykpOwordm9pZCBndWlfbWNoX2ljb25pZnkgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfc2V0X2ZvcmVncm91bmQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfZHJhd19ob2xsb3dfY3Vyc29yIF9fQVJHUygoZ3VpY29sb3JfVCBjb2xvcikpOwordm9pZCBndWlfbWNoX2RyYXdfcGFydF9jdXJzb3IgX19BUkdTKChpbnQgdywgaW50IGgsIGd1aWNvbG9yX1QgY29sb3IpKTsKK3ZvaWQgZ3VpX21jaF91cGRhdGUgX19BUkdTKCh2b2lkKSk7CitpbnQgZ3VpX21jaF93YWl0X2Zvcl9jaGFycyBfX0FSR1MoKGxvbmcgd3RpbWUpKTsKK3ZvaWQgZ3VpX21jaF9mbHVzaCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9jbGVhcl9ibG9jayBfX0FSR1MoKGludCByb3cxLCBpbnQgY29sMSwgaW50IHJvdzIsIGludCBjb2wyKSk7Cit2b2lkIGd1aV9tY2hfY2xlYXJfYWxsIF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX2RlbGV0ZV9saW5lcyBfX0FSR1MoKGludCByb3csIGludCBudW1fbGluZXMpKTsKK3ZvaWQgZ3VpX21jaF9pbnNlcnRfbGluZXMgX19BUkdTKChpbnQgcm93LCBpbnQgbnVtX2xpbmVzKSk7Cit2b2lkIGNsaXBfbWNoX2xvc2Vfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKK2ludCBjbGlwX21jaF9vd25fc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKK3ZvaWQgY2xpcF9tY2hfcmVxdWVzdF9zZWxlY3Rpb24gX19BUkdTKChWaW1DbGlwYm9hcmQgKmNiZCkpOwordm9pZCBjbGlwX21jaF9zZXRfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKK3ZvaWQgZ3VpX21jaF9tZW51X2dyZXkgX19BUkdTKCh2aW1tZW51X1QgKm1lbnUsIGludCBncmV5KSk7Cit2b2lkIGd1aV9tY2hfbWVudV9oaWRkZW4gX19BUkdTKCh2aW1tZW51X1QgKm1lbnUsIGludCBoaWRkZW4pKTsKK3ZvaWQgZ3VpX21jaF9kcmF3X21lbnViYXIgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV94MTFfbWVudV9jYiBfX0FSR1MoKFdpZGdldCB3LCBYdFBvaW50ZXIgY2xpZW50X2RhdGEsIFh0UG9pbnRlciBjYWxsX2RhdGEpKTsKK3ZvaWQgZ3VpX21jaF9zZXRfYmxpbmtpbmcgX19BUkdTKChsb25nIHdhaXR0aW1lLCBsb25nIG9uLCBsb25nIG9mZikpOwordm9pZCBndWlfbWNoX3N0b3BfYmxpbmsgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfc3RhcnRfYmxpbmsgX19BUkdTKCh2b2lkKSk7Citsb25nX3UgZ3VpX21jaF9nZXRfcmdiIF9fQVJHUygoZ3VpY29sb3JfVCBwaXhlbCkpOwordm9pZCBndWlfeDExX2NhbGxiYWNrcyBfX0FSR1MoKFdpZGdldCB0ZXh0QXJlYSwgV2lkZ2V0IHZpbUZvcm0pKTsKK3ZvaWQgZ3VpX21jaF9nZXRtb3VzZSBfX0FSR1MoKGludCAqeCwgaW50ICp5KSk7Cit2b2lkIGd1aV9tY2hfc2V0bW91c2UgX19BUkdTKChpbnQgeCwgaW50IHkpKTsKK1hCdXR0b25QcmVzc2VkRXZlbnQgKmd1aV94MTFfZ2V0X2xhc3RfbW91c2VfZXZlbnQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfZHJhd3NpZ24gX19BUkdTKChpbnQgcm93LCBpbnQgY29sLCBpbnQgdHlwZW5yKSk7Cit2b2lkICpndWlfbWNoX3JlZ2lzdGVyX3NpZ24gX19BUkdTKChjaGFyX3UgKnNpZ25maWxlKSk7Cit2b2lkIGd1aV9tY2hfZGVzdHJveV9zaWduIF9fQVJHUygodm9pZCAqc2lnbikpOwordm9pZCBndWlfbWNoX21vdXNlaGlkZSBfX0FSR1MoKGludCBoaWRlKSk7Cit2b2lkIG1jaF9zZXRfbW91c2Vfc2hhcGUgX19BUkdTKChpbnQgc2hhcGUpKTsKK3ZvaWQgZ3VpX21jaF9tZW51X3NldF90aXAgX19BUkdTKCh2aW1tZW51X1QgKm1lbnUpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2hhbmd1bGluLnBybyBiL3NyYy9wcm90by9oYW5ndWxpbi5wcm8KaW5kZXggMzUwYjFjYi4uYWRmZGUxNCAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2hhbmd1bGluLnBybworKysgYi9zcmMvcHJvdG8vaGFuZ3VsaW4ucHJvCkBAIC0xLDkgKzEsOSBAQAogLyogaGFuZ3VsaW4uYyAqLwotZXh0ZXJuIGludCBoYW5ndWxfaW5wdXRfc3RhdGVfZ2V0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgaGFuZ3VsX2lucHV0X3N0YXRlX3NldCBfX0FSR1MoKGludCBzdGF0ZSkpOwotZXh0ZXJuIGludCBpbV9nZXRfc3RhdHVzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgaGFuZ3VsX2lucHV0X3N0YXRlX3RvZ2dsZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGhhbmd1bF9rZXlib2FyZF9zZXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGhhbmd1bF9pbnB1dF9wcm9jZXNzIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gdm9pZCBoYW5ndWxfaW5wdXRfY2xlYXIgX19BUkdTKCh2b2lkKSk7CitpbnQgaGFuZ3VsX2lucHV0X3N0YXRlX2dldCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgaGFuZ3VsX2lucHV0X3N0YXRlX3NldCBfX0FSR1MoKGludCBzdGF0ZSkpOworaW50IGltX2dldF9zdGF0dXMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGhhbmd1bF9pbnB1dF9zdGF0ZV90b2dnbGUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGhhbmd1bF9rZXlib2FyZF9zZXQgX19BUkdTKCh2b2lkKSk7CitpbnQgaGFuZ3VsX2lucHV0X3Byb2Nlc3MgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKK3ZvaWQgaGFuZ3VsX2lucHV0X2NsZWFyIF9fQVJHUygodm9pZCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vaWZfcGVybC5wcm8gYi9zcmMvcHJvdG8vaWZfcGVybC5wcm8KaW5kZXggOTFkYWI2ZC4uZmUwMzAxYiAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2lmX3BlcmwucHJvCisrKyBiL3NyYy9wcm90by9pZl9wZXJsLnBybwpAQCAtMSw4ICsxLDggQEAKIC8qIGF1dG8vaWZfcGVybC5jICovCi1leHRlcm4gaW50IHBlcmxfZW5hYmxlZCBfX0FSR1MoKGludCB2ZXJib3NlKSk7Ci1leHRlcm4gdm9pZCBwZXJsX2VuZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1zZ19zcGxpdCBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGF0dHIpKTsKLWV4dGVybiB2b2lkIHBlcmxfd2luX2ZyZWUgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIHBlcmxfYnVmX2ZyZWUgX19BUkdTKChidWZfVCAqYnApKTsKLWV4dGVybiB2b2lkIGV4X3BlcmwgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X3BlcmxkbyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworaW50IHBlcmxfZW5hYmxlZCBfX0FSR1MoKGludCB2ZXJib3NlKSk7Cit2b2lkIHBlcmxfZW5kIF9fQVJHUygodm9pZCkpOwordm9pZCBtc2dfc3BsaXQgX19BUkdTKChjaGFyX3UgKnMsIGludCBhdHRyKSk7Cit2b2lkIHBlcmxfd2luX2ZyZWUgX19BUkdTKCh3aW5fVCAqd3ApKTsKK3ZvaWQgcGVybF9idWZfZnJlZSBfX0FSR1MoKGJ1Zl9UICpicCkpOwordm9pZCBleF9wZXJsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3BlcmxkbyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2lmX3B5dGhvbi5wcm8gYi9zcmMvcHJvdG8vaWZfcHl0aG9uLnBybwppbmRleCAwOWM0YWI3Li43OTNiNmVlIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vaWZfcHl0aG9uLnBybworKysgYi9zcmMvcHJvdG8vaWZfcHl0aG9uLnBybwpAQCAtMSw4ICsxLDggQEAKIC8qIGlmX3B5dGhvbi5jICovCi1leHRlcm4gaW50IHB5dGhvbl9lbmFibGVkIF9fQVJHUygoaW50IHZlcmJvc2UpKTsKLWV4dGVybiB2b2lkIHB5dGhvbl9lbmQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBleF9weXRob24gX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X3B5ZmlsZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgcHl0aG9uX2J1ZmZlcl9mcmVlIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIHZvaWQgcHl0aG9uX3dpbmRvd19mcmVlIF9fQVJHUygod2luX1QgKndpbikpOworaW50IHB5dGhvbl9lbmFibGVkIF9fQVJHUygoaW50IHZlcmJvc2UpKTsKK3ZvaWQgcHl0aG9uX2VuZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZXhfcHl0aG9uIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3B5ZmlsZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBweXRob25fYnVmZmVyX2ZyZWUgX19BUkdTKChidWZfVCAqYnVmKSk7Cit2b2lkIHB5dGhvbl93aW5kb3dfZnJlZSBfX0FSR1MoKHdpbl9UICp3aW4pKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2lmX3J1YnkucHJvIGIvc3JjL3Byb3RvL2lmX3J1YnkucHJvCmluZGV4IDM1MmYxNTUuLjdkZWRiMjIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9pZl9ydWJ5LnBybworKysgYi9zcmMvcHJvdG8vaWZfcnVieS5wcm8KQEAgLTEsOSArMSw5IEBACiAvKiBpZl9ydWJ5LmMgKi8KLWV4dGVybiBpbnQgcnVieV9lbmFibGVkIF9fQVJHUygoaW50IHZlcmJvc2UpKTsKLWV4dGVybiB2b2lkIHJ1YnlfZW5kIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZXhfcnVieSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfcnVieWRvIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9ydWJ5ZmlsZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgcnVieV9idWZmZXJfZnJlZSBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiB2b2lkIHJ1Ynlfd2luZG93X2ZyZWUgX19BUkdTKCh3aW5fVCAqd2luKSk7CitpbnQgcnVieV9lbmFibGVkIF9fQVJHUygoaW50IHZlcmJvc2UpKTsKK3ZvaWQgcnVieV9lbmQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGV4X3J1YnkgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfcnVieWRvIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3J1YnlmaWxlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIHJ1YnlfYnVmZmVyX2ZyZWUgX19BUkdTKChidWZfVCAqYnVmKSk7Cit2b2lkIHJ1Ynlfd2luZG93X2ZyZWUgX19BUkdTKCh3aW5fVCAqd2luKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9pZl94Y21kc3J2LnBybyBiL3NyYy9wcm90by9pZl94Y21kc3J2LnBybwppbmRleCBlYmI0NWYxLi5kZDZhMTIwIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vaWZfeGNtZHNydi5wcm8KKysrIGIvc3JjL3Byb3RvL2lmX3hjbWRzcnYucHJvCkBAIC0xLDExICsxLDExIEBACiAvKiBpZl94Y21kc3J2LmMgKi8KLWV4dGVybiBpbnQgc2VydmVyUmVnaXN0ZXJOYW1lIF9fQVJHUygoRGlzcGxheSAqZHB5LCBjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiB2b2lkIHNlcnZlckNoYW5nZVJlZ2lzdGVyZWRXaW5kb3cgX19BUkdTKChEaXNwbGF5ICpkcHksIFdpbmRvdyBuZXd3aW4pKTsKLWV4dGVybiBpbnQgc2VydmVyU2VuZFRvVmltIF9fQVJHUygoRGlzcGxheSAqZHB5LCBjaGFyX3UgKm5hbWUsIGNoYXJfdSAqY21kLCBjaGFyX3UgKipyZXN1bHQsIFdpbmRvdyAqc2VydmVyLCBpbnQgYXNFeHByLCBpbnQgbG9jYWxMb29wLCBpbnQgc2lsZW50KSk7Ci1leHRlcm4gY2hhcl91ICpzZXJ2ZXJHZXRWaW1OYW1lcyBfX0FSR1MoKERpc3BsYXkgKmRweSkpOwotZXh0ZXJuIFdpbmRvdyBzZXJ2ZXJTdHJUb1dpbiBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7Ci1leHRlcm4gaW50IHNlcnZlclNlbmRSZXBseSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgY2hhcl91ICpzdHIpKTsKLWV4dGVybiBpbnQgc2VydmVyUmVhZFJlcGx5IF9fQVJHUygoRGlzcGxheSAqZHB5LCBXaW5kb3cgd2luLCBjaGFyX3UgKipzdHIsIGludCBsb2NhbExvb3ApKTsKLWV4dGVybiBpbnQgc2VydmVyUGVla1JlcGx5IF9fQVJHUygoRGlzcGxheSAqZHB5LCBXaW5kb3cgd2luLCBjaGFyX3UgKipzdHIpKTsKLWV4dGVybiB2b2lkIHNlcnZlckV2ZW50UHJvYyBfX0FSR1MoKERpc3BsYXkgKmRweSwgWEV2ZW50ICpldmVudFB0cikpOworaW50IHNlcnZlclJlZ2lzdGVyTmFtZSBfX0FSR1MoKERpc3BsYXkgKmRweSwgY2hhcl91ICpuYW1lKSk7Cit2b2lkIHNlcnZlckNoYW5nZVJlZ2lzdGVyZWRXaW5kb3cgX19BUkdTKChEaXNwbGF5ICpkcHksIFdpbmRvdyBuZXd3aW4pKTsKK2ludCBzZXJ2ZXJTZW5kVG9WaW0gX19BUkdTKChEaXNwbGF5ICpkcHksIGNoYXJfdSAqbmFtZSwgY2hhcl91ICpjbWQsIGNoYXJfdSAqKnJlc3VsdCwgV2luZG93ICpzZXJ2ZXIsIGludCBhc0V4cHIsIGludCBsb2NhbExvb3AsIGludCBzaWxlbnQpKTsKK2NoYXJfdSAqc2VydmVyR2V0VmltTmFtZXMgX19BUkdTKChEaXNwbGF5ICpkcHkpKTsKK1dpbmRvdyBzZXJ2ZXJTdHJUb1dpbiBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7CitpbnQgc2VydmVyU2VuZFJlcGx5IF9fQVJHUygoY2hhcl91ICpuYW1lLCBjaGFyX3UgKnN0cikpOworaW50IHNlcnZlclJlYWRSZXBseSBfX0FSR1MoKERpc3BsYXkgKmRweSwgV2luZG93IHdpbiwgY2hhcl91ICoqc3RyLCBpbnQgbG9jYWxMb29wKSk7CitpbnQgc2VydmVyUGVla1JlcGx5IF9fQVJHUygoRGlzcGxheSAqZHB5LCBXaW5kb3cgd2luLCBjaGFyX3UgKipzdHIpKTsKK3ZvaWQgc2VydmVyRXZlbnRQcm9jIF9fQVJHUygoRGlzcGxheSAqZHB5LCBYRXZlbnQgKmV2ZW50UHRyKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9tYnl0ZS5wcm8gYi9zcmMvcHJvdG8vbWJ5dGUucHJvCmluZGV4IDAyMGI2MGYuLjE2YTM2YzggMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9tYnl0ZS5wcm8KKysrIGIvc3JjL3Byb3RvL21ieXRlLnBybwpAQCAtMSw5MSArMSw5MSBAQAogLyogbWJ5dGUuYyAqLwotZXh0ZXJuIGludCBlbmNfY2Fub25fcHJvcHMgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBjaGFyX3UgKm1iX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGJvbWJfc2l6ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWJfZ2V0X2NsYXNzIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gaW50IGRiY3NfY2xhc3MgX19BUkdTKCh1bnNpZ25lZCBsZWFkLCB1bnNpZ25lZCB0cmFpbCkpOwotZXh0ZXJuIGludCBsYXRpbl9jaGFyMmxlbiBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gaW50IGxhdGluX2NoYXIyYnl0ZXMgX19BUkdTKChpbnQgYywgY2hhcl91ICpidWYpKTsKLWV4dGVybiBpbnQgbGF0aW5fcHRyMmxlbiBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCB1dGZfY2hhcjJjZWxscyBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gaW50IGxhdGluX3B0cjJjZWxscyBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCB1dGZfcHRyMmNlbGxzIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gaW50IGRiY3NfcHRyMmNlbGxzIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gaW50IGxhdGluX2NoYXIyY2VsbHMgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCBsYXRpbl9vZmYyY2VsbHMgX19BUkdTKCh1bnNpZ25lZCBvZmYpKTsKLWV4dGVybiBpbnQgZGJjc19vZmYyY2VsbHMgX19BUkdTKCh1bnNpZ25lZCBvZmYpKTsKLWV4dGVybiBpbnQgdXRmX29mZjJjZWxscyBfX0FSR1MoKHVuc2lnbmVkIG9mZikpOwotZXh0ZXJuIGludCBsYXRpbl9wdHIyY2hhciBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCB1dGZfcHRyMmNoYXIgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgbWJfcHRyMmNoYXJfYWR2IF9fQVJHUygoY2hhcl91ICoqcHApKTsKLWV4dGVybiBpbnQgbWJfY3B0cjJjaGFyX2FkdiBfX0FSR1MoKGNoYXJfdSAqKnBwKSk7Ci1leHRlcm4gaW50IGFyYWJpY19jb21iaW5lIF9fQVJHUygoaW50IG9uZSwgaW50IHR3bykpOwotZXh0ZXJuIGludCBhcmFiaWNfbWF5Y29tYmluZSBfX0FSR1MoKGludCB0d28pKTsKLWV4dGVybiBpbnQgdXRmX2NvbXBvc2luZ2xpa2UgX19BUkdTKChjaGFyX3UgKnAxLCBjaGFyX3UgKnAyKSk7Ci1leHRlcm4gaW50IHV0ZmNfcHRyMmNoYXIgX19BUkdTKChjaGFyX3UgKnAsIGludCAqcGNjKSk7Ci1leHRlcm4gaW50IHV0ZmNfcHRyMmNoYXJfbGVuIF9fQVJHUygoY2hhcl91ICpwLCBpbnQgKnBjYywgaW50IG1heGxlbikpOwotZXh0ZXJuIGludCB1dGZjX2NoYXIyYnl0ZXMgX19BUkdTKChpbnQgb2ZmLCBjaGFyX3UgKmJ1ZikpOwotZXh0ZXJuIGludCB1dGZfcHRyMmxlbiBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCB1dGZfYnl0ZTJsZW4gX19BUkdTKChpbnQgYikpOwotZXh0ZXJuIGludCB1dGZfcHRyMmxlbl9sZW4gX19BUkdTKChjaGFyX3UgKnAsIGludCBzaXplKSk7Ci1leHRlcm4gaW50IHV0ZmNfcHRyMmxlbiBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCB1dGZjX3B0cjJsZW5fbGVuIF9fQVJHUygoY2hhcl91ICpwLCBpbnQgc2l6ZSkpOwotZXh0ZXJuIGludCB1dGZfY2hhcjJsZW4gX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCB1dGZfY2hhcjJieXRlcyBfX0FSR1MoKGludCBjLCBjaGFyX3UgKmJ1ZikpOwotZXh0ZXJuIGludCB1dGZfaXNjb21wb3NpbmcgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCB1dGZfcHJpbnRhYmxlIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgdXRmX2NsYXNzIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgdXRmX2ZvbGQgX19BUkdTKChpbnQgYSkpOwotZXh0ZXJuIGludCB1dGZfdG91cHBlciBfX0FSR1MoKGludCBhKSk7Ci1leHRlcm4gaW50IHV0Zl9pc2xvd2VyIF9fQVJHUygoaW50IGEpKTsKLWV4dGVybiBpbnQgdXRmX3RvbG93ZXIgX19BUkdTKChpbnQgYSkpOwotZXh0ZXJuIGludCB1dGZfaXN1cHBlciBfX0FSR1MoKGludCBhKSk7Ci1leHRlcm4gaW50IG1iX3N0cm5pY21wIF9fQVJHUygoY2hhcl91ICpzMSwgY2hhcl91ICpzMiwgc2l6ZV90IG5uKSk7Ci1leHRlcm4gdm9pZCBzaG93X3V0ZjggX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGxhdGluX2hlYWRfb2ZmIF9fQVJHUygoY2hhcl91ICpiYXNlLCBjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgZGJjc19oZWFkX29mZiBfX0FSR1MoKGNoYXJfdSAqYmFzZSwgY2hhcl91ICpwKSk7Ci1leHRlcm4gaW50IGRiY3Nfc2NyZWVuX2hlYWRfb2ZmIF9fQVJHUygoY2hhcl91ICpiYXNlLCBjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgdXRmX2hlYWRfb2ZmIF9fQVJHUygoY2hhcl91ICpiYXNlLCBjaGFyX3UgKnApKTsKLWV4dGVybiB2b2lkIG1iX2NvcHlfY2hhciBfX0FSR1MoKGNoYXJfdSAqKmZwLCBjaGFyX3UgKip0cCkpOwotZXh0ZXJuIGludCBtYl9vZmZfbmV4dCBfX0FSR1MoKGNoYXJfdSAqYmFzZSwgY2hhcl91ICpwKSk7Ci1leHRlcm4gaW50IG1iX3RhaWxfb2ZmIF9fQVJHUygoY2hhcl91ICpiYXNlLCBjaGFyX3UgKnApKTsKLWV4dGVybiB2b2lkIHV0Zl9maW5kX2lsbGVnYWwgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHV0Zl92YWxpZF9zdHJpbmcgX19BUkdTKChjaGFyX3UgKnMsIGNoYXJfdSAqZW5kKSk7Ci1leHRlcm4gaW50IGRiY3Nfc2NyZWVuX3RhaWxfb2ZmIF9fQVJHUygoY2hhcl91ICpiYXNlLCBjaGFyX3UgKnApKTsKLWV4dGVybiB2b2lkIG1iX2FkanVzdF9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtYl9hZGp1c3Rwb3MgX19BUkdTKChwb3NfVCAqbHApKTsKLWV4dGVybiBjaGFyX3UgKm1iX3ByZXZwdHIgX19BUkdTKChjaGFyX3UgKmxpbmUsIGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCBtYl9jaGFybGVuIF9fQVJHUygoY2hhcl91ICpzdHIpKTsKLWV4dGVybiBpbnQgbWJfY2hhcmxlbl9sZW4gX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGxlbikpOwotZXh0ZXJuIGNoYXJfdSAqbWJfdW5lc2NhcGUgX19BUkdTKChjaGFyX3UgKipwcCkpOwotZXh0ZXJuIGludCBtYl9sZWZ0aGFsdmUgX19BUkdTKChpbnQgcm93LCBpbnQgY29sKSk7Ci1leHRlcm4gaW50IG1iX2ZpeF9jb2wgX19BUkdTKChpbnQgY29sLCBpbnQgcm93KSk7Ci1leHRlcm4gY2hhcl91ICplbmNfc2tpcCBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGNoYXJfdSAqZW5jX2Nhbm9uaXplIF9fQVJHUygoY2hhcl91ICplbmMpKTsKLWV4dGVybiBjaGFyX3UgKmVuY19sb2NhbGUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGVuY25hbWUyY29kZXBhZ2UgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiB2b2lkICpteV9pY29udl9vcGVuIF9fQVJHUygoY2hhcl91ICp0bywgY2hhcl91ICpmcm9tKSk7Ci1leHRlcm4gaW50IGljb252X2VuYWJsZWQgX19BUkdTKChpbnQgdmVyYm9zZSkpOwotZXh0ZXJuIHZvaWQgaWNvbnZfZW5kIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBpbV94aW1faXN2YWxpZF9pbWFjdGl2YXRlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgaW1fc2V0X2FjdGl2ZSBfX0FSR1MoKGludCBhY3RpdmUpKTsKLWV4dGVybiB2b2lkIHhpbV9zZXRfZm9jdXMgX19BUkdTKChpbnQgZm9jdXMpKTsKLWV4dGVybiB2b2lkIGltX3NldF9wb3NpdGlvbiBfX0FSR1MoKGludCByb3csIGludCBjb2wpKTsKLWV4dGVybiB2b2lkIHhpbV9zZXRfcHJlZWRpdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHhpbV9zZXRfc3RhdHVzX2FyZWEgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB4aW1faW5pdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHhpbV9kZWNpZGVfaW5wdXRfc3R5bGUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGltX2dldF9mZWVkYmFja19hdHRyIF9fQVJHUygoaW50IGNvbCkpOwotZXh0ZXJuIHZvaWQgeGltX3Jlc2V0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCB4aW1fcXVldWVfa2V5X3ByZXNzX2V2ZW50IF9fQVJHUygoR2RrRXZlbnRLZXkgKmV2ZW50LCBpbnQgZG93bikpOwotZXh0ZXJuIHZvaWQgeGltX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBpbV9zaHV0ZG93biBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgeGltX2dldF9zdGF0dXNfYXJlYV9oZWlnaHQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGltX2dldF9zdGF0dXMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGltX2lzX3ByZWVkaXRpbmcgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGNvbnZlcnRfc2V0dXAgX19BUkdTKCh2aW1jb252X1QgKnZjcCwgY2hhcl91ICpmcm9tLCBjaGFyX3UgKnRvKSk7Ci1leHRlcm4gaW50IGNvbnZlcnRfaW5wdXQgX19BUkdTKChjaGFyX3UgKnB0ciwgaW50IGxlbiwgaW50IG1heGxlbikpOwotZXh0ZXJuIGludCBjb252ZXJ0X2lucHV0X3NhZmUgX19BUkdTKChjaGFyX3UgKnB0ciwgaW50IGxlbiwgaW50IG1heGxlbiwgY2hhcl91ICoqcmVzdHAsIGludCAqcmVzdGxlbnApKTsKLWV4dGVybiBjaGFyX3UgKnN0cmluZ19jb252ZXJ0IF9fQVJHUygodmltY29udl9UICp2Y3AsIGNoYXJfdSAqcHRyLCBpbnQgKmxlbnApKTsKLWV4dGVybiBjaGFyX3UgKnN0cmluZ19jb252ZXJ0X2V4dCBfX0FSR1MoKHZpbWNvbnZfVCAqdmNwLCBjaGFyX3UgKnB0ciwgaW50ICpsZW5wLCBpbnQgKnVuY29udmxlbnApKTsKK2ludCBlbmNfY2Fub25fcHJvcHMgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2NoYXJfdSAqbWJfaW5pdCBfX0FSR1MoKHZvaWQpKTsKK2ludCBib21iX3NpemUgX19BUkdTKCh2b2lkKSk7CitpbnQgbWJfZ2V0X2NsYXNzIF9fQVJHUygoY2hhcl91ICpwKSk7CitpbnQgZGJjc19jbGFzcyBfX0FSR1MoKHVuc2lnbmVkIGxlYWQsIHVuc2lnbmVkIHRyYWlsKSk7CitpbnQgbGF0aW5fY2hhcjJsZW4gX19BUkdTKChpbnQgYykpOworaW50IGxhdGluX2NoYXIyYnl0ZXMgX19BUkdTKChpbnQgYywgY2hhcl91ICpidWYpKTsKK2ludCBsYXRpbl9wdHIybGVuIF9fQVJHUygoY2hhcl91ICpwKSk7CitpbnQgdXRmX2NoYXIyY2VsbHMgX19BUkdTKChpbnQgYykpOworaW50IGxhdGluX3B0cjJjZWxscyBfX0FSR1MoKGNoYXJfdSAqcCkpOworaW50IHV0Zl9wdHIyY2VsbHMgX19BUkdTKChjaGFyX3UgKnApKTsKK2ludCBkYmNzX3B0cjJjZWxscyBfX0FSR1MoKGNoYXJfdSAqcCkpOworaW50IGxhdGluX2NoYXIyY2VsbHMgX19BUkdTKChpbnQgYykpOworaW50IGxhdGluX29mZjJjZWxscyBfX0FSR1MoKHVuc2lnbmVkIG9mZikpOworaW50IGRiY3Nfb2ZmMmNlbGxzIF9fQVJHUygodW5zaWduZWQgb2ZmKSk7CitpbnQgdXRmX29mZjJjZWxscyBfX0FSR1MoKHVuc2lnbmVkIG9mZikpOworaW50IGxhdGluX3B0cjJjaGFyIF9fQVJHUygoY2hhcl91ICpwKSk7CitpbnQgdXRmX3B0cjJjaGFyIF9fQVJHUygoY2hhcl91ICpwKSk7CitpbnQgbWJfcHRyMmNoYXJfYWR2IF9fQVJHUygoY2hhcl91ICoqcHApKTsKK2ludCBtYl9jcHRyMmNoYXJfYWR2IF9fQVJHUygoY2hhcl91ICoqcHApKTsKK2ludCBhcmFiaWNfY29tYmluZSBfX0FSR1MoKGludCBvbmUsIGludCB0d28pKTsKK2ludCBhcmFiaWNfbWF5Y29tYmluZSBfX0FSR1MoKGludCB0d28pKTsKK2ludCB1dGZfY29tcG9zaW5nbGlrZSBfX0FSR1MoKGNoYXJfdSAqcDEsIGNoYXJfdSAqcDIpKTsKK2ludCB1dGZjX3B0cjJjaGFyIF9fQVJHUygoY2hhcl91ICpwLCBpbnQgKnBjYykpOworaW50IHV0ZmNfcHRyMmNoYXJfbGVuIF9fQVJHUygoY2hhcl91ICpwLCBpbnQgKnBjYywgaW50IG1heGxlbikpOworaW50IHV0ZmNfY2hhcjJieXRlcyBfX0FSR1MoKGludCBvZmYsIGNoYXJfdSAqYnVmKSk7CitpbnQgdXRmX3B0cjJsZW4gX19BUkdTKChjaGFyX3UgKnApKTsKK2ludCB1dGZfYnl0ZTJsZW4gX19BUkdTKChpbnQgYikpOworaW50IHV0Zl9wdHIybGVuX2xlbiBfX0FSR1MoKGNoYXJfdSAqcCwgaW50IHNpemUpKTsKK2ludCB1dGZjX3B0cjJsZW4gX19BUkdTKChjaGFyX3UgKnApKTsKK2ludCB1dGZjX3B0cjJsZW5fbGVuIF9fQVJHUygoY2hhcl91ICpwLCBpbnQgc2l6ZSkpOworaW50IHV0Zl9jaGFyMmxlbiBfX0FSR1MoKGludCBjKSk7CitpbnQgdXRmX2NoYXIyYnl0ZXMgX19BUkdTKChpbnQgYywgY2hhcl91ICpidWYpKTsKK2ludCB1dGZfaXNjb21wb3NpbmcgX19BUkdTKChpbnQgYykpOworaW50IHV0Zl9wcmludGFibGUgX19BUkdTKChpbnQgYykpOworaW50IHV0Zl9jbGFzcyBfX0FSR1MoKGludCBjKSk7CitpbnQgdXRmX2ZvbGQgX19BUkdTKChpbnQgYSkpOworaW50IHV0Zl90b3VwcGVyIF9fQVJHUygoaW50IGEpKTsKK2ludCB1dGZfaXNsb3dlciBfX0FSR1MoKGludCBhKSk7CitpbnQgdXRmX3RvbG93ZXIgX19BUkdTKChpbnQgYSkpOworaW50IHV0Zl9pc3VwcGVyIF9fQVJHUygoaW50IGEpKTsKK2ludCBtYl9zdHJuaWNtcCBfX0FSR1MoKGNoYXJfdSAqczEsIGNoYXJfdSAqczIsIHNpemVfdCBubikpOwordm9pZCBzaG93X3V0ZjggX19BUkdTKCh2b2lkKSk7CitpbnQgbGF0aW5faGVhZF9vZmYgX19BUkdTKChjaGFyX3UgKmJhc2UsIGNoYXJfdSAqcCkpOworaW50IGRiY3NfaGVhZF9vZmYgX19BUkdTKChjaGFyX3UgKmJhc2UsIGNoYXJfdSAqcCkpOworaW50IGRiY3Nfc2NyZWVuX2hlYWRfb2ZmIF9fQVJHUygoY2hhcl91ICpiYXNlLCBjaGFyX3UgKnApKTsKK2ludCB1dGZfaGVhZF9vZmYgX19BUkdTKChjaGFyX3UgKmJhc2UsIGNoYXJfdSAqcCkpOwordm9pZCBtYl9jb3B5X2NoYXIgX19BUkdTKChjaGFyX3UgKipmcCwgY2hhcl91ICoqdHApKTsKK2ludCBtYl9vZmZfbmV4dCBfX0FSR1MoKGNoYXJfdSAqYmFzZSwgY2hhcl91ICpwKSk7CitpbnQgbWJfdGFpbF9vZmYgX19BUkdTKChjaGFyX3UgKmJhc2UsIGNoYXJfdSAqcCkpOwordm9pZCB1dGZfZmluZF9pbGxlZ2FsIF9fQVJHUygodm9pZCkpOworaW50IHV0Zl92YWxpZF9zdHJpbmcgX19BUkdTKChjaGFyX3UgKnMsIGNoYXJfdSAqZW5kKSk7CitpbnQgZGJjc19zY3JlZW5fdGFpbF9vZmYgX19BUkdTKChjaGFyX3UgKmJhc2UsIGNoYXJfdSAqcCkpOwordm9pZCBtYl9hZGp1c3RfY3Vyc29yIF9fQVJHUygodm9pZCkpOwordm9pZCBtYl9hZGp1c3Rwb3MgX19BUkdTKChwb3NfVCAqbHApKTsKK2NoYXJfdSAqbWJfcHJldnB0ciBfX0FSR1MoKGNoYXJfdSAqbGluZSwgY2hhcl91ICpwKSk7CitpbnQgbWJfY2hhcmxlbiBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7CitpbnQgbWJfY2hhcmxlbl9sZW4gX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGxlbikpOworY2hhcl91ICptYl91bmVzY2FwZSBfX0FSR1MoKGNoYXJfdSAqKnBwKSk7CitpbnQgbWJfbGVmdGhhbHZlIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCkpOworaW50IG1iX2ZpeF9jb2wgX19BUkdTKChpbnQgY29sLCBpbnQgcm93KSk7CitjaGFyX3UgKmVuY19za2lwIF9fQVJHUygoY2hhcl91ICpwKSk7CitjaGFyX3UgKmVuY19jYW5vbml6ZSBfX0FSR1MoKGNoYXJfdSAqZW5jKSk7CitjaGFyX3UgKmVuY19sb2NhbGUgX19BUkdTKCh2b2lkKSk7CitpbnQgZW5jbmFtZTJjb2RlcGFnZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwordm9pZCAqbXlfaWNvbnZfb3BlbiBfX0FSR1MoKGNoYXJfdSAqdG8sIGNoYXJfdSAqZnJvbSkpOworaW50IGljb252X2VuYWJsZWQgX19BUkdTKChpbnQgdmVyYm9zZSkpOwordm9pZCBpY29udl9lbmQgX19BUkdTKCh2b2lkKSk7CitpbnQgaW1feGltX2lzdmFsaWRfaW1hY3RpdmF0ZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgaW1fc2V0X2FjdGl2ZSBfX0FSR1MoKGludCBhY3RpdmUpKTsKK3ZvaWQgeGltX3NldF9mb2N1cyBfX0FSR1MoKGludCBmb2N1cykpOwordm9pZCBpbV9zZXRfcG9zaXRpb24gX19BUkdTKChpbnQgcm93LCBpbnQgY29sKSk7Cit2b2lkIHhpbV9zZXRfcHJlZWRpdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgeGltX3NldF9zdGF0dXNfYXJlYSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgeGltX2luaXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHhpbV9kZWNpZGVfaW5wdXRfc3R5bGUgX19BUkdTKCh2b2lkKSk7CitpbnQgaW1fZ2V0X2ZlZWRiYWNrX2F0dHIgX19BUkdTKChpbnQgY29sKSk7Cit2b2lkIHhpbV9yZXNldCBfX0FSR1MoKHZvaWQpKTsKK2ludCB4aW1fcXVldWVfa2V5X3ByZXNzX2V2ZW50IF9fQVJHUygoR2RrRXZlbnRLZXkgKmV2ZW50LCBpbnQgZG93bikpOwordm9pZCB4aW1faW5pdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgaW1fc2h1dGRvd24gX19BUkdTKCh2b2lkKSk7CitpbnQgeGltX2dldF9zdGF0dXNfYXJlYV9oZWlnaHQgX19BUkdTKCh2b2lkKSk7CitpbnQgaW1fZ2V0X3N0YXR1cyBfX0FSR1MoKHZvaWQpKTsKK2ludCBpbV9pc19wcmVlZGl0aW5nIF9fQVJHUygodm9pZCkpOworaW50IGNvbnZlcnRfc2V0dXAgX19BUkdTKCh2aW1jb252X1QgKnZjcCwgY2hhcl91ICpmcm9tLCBjaGFyX3UgKnRvKSk7CitpbnQgY29udmVydF9pbnB1dCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgbWF4bGVuKSk7CitpbnQgY29udmVydF9pbnB1dF9zYWZlIF9fQVJHUygoY2hhcl91ICpwdHIsIGludCBsZW4sIGludCBtYXhsZW4sIGNoYXJfdSAqKnJlc3RwLCBpbnQgKnJlc3RsZW5wKSk7CitjaGFyX3UgKnN0cmluZ19jb252ZXJ0IF9fQVJHUygodmltY29udl9UICp2Y3AsIGNoYXJfdSAqcHRyLCBpbnQgKmxlbnApKTsKK2NoYXJfdSAqc3RyaW5nX2NvbnZlcnRfZXh0IF9fQVJHUygodmltY29udl9UICp2Y3AsIGNoYXJfdSAqcHRyLCBpbnQgKmxlbnAsIGludCAqdW5jb252bGVucCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vbWVtbGluZS5wcm8gYi9zcmMvcHJvdG8vbWVtbGluZS5wcm8KaW5kZXggODhmMGRhYy4uZGU3NWE3ZCAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL21lbWxpbmUucHJvCisrKyBiL3NyYy9wcm90by9tZW1saW5lLnBybwpAQCAtMSwzMyArMSwzMyBAQAogLyogbWVtbGluZS5jICovCi1leHRlcm4gaW50IG1sX29wZW4gX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCBtbF9zZXRuYW1lIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIHZvaWQgbWxfb3Blbl9maWxlcyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1sX29wZW5fZmlsZSBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiB2b2lkIGNoZWNrX25lZWRfc3dhcCBfX0FSR1MoKGludCBuZXdmaWxlKSk7Ci1leHRlcm4gdm9pZCBtbF9jbG9zZSBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBkZWxfZmlsZSkpOwotZXh0ZXJuIHZvaWQgbWxfY2xvc2VfYWxsIF9fQVJHUygoaW50IGRlbF9maWxlKSk7Ci1leHRlcm4gdm9pZCBtbF9jbG9zZV9ub3Rtb2QgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtbF90aW1lc3RhbXAgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCBtbF9yZWNvdmVyIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCByZWNvdmVyX25hbWVzIF9fQVJHUygoY2hhcl91ICoqZm5hbWUsIGludCBsaXN0LCBpbnQgbnIpKTsKLWV4dGVybiB2b2lkIG1sX3N5bmNfYWxsIF9fQVJHUygoaW50IGNoZWNrX2ZpbGUsIGludCBjaGVja19jaGFyKSk7Ci1leHRlcm4gdm9pZCBtbF9wcmVzZXJ2ZSBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBtZXNzYWdlKSk7Ci1leHRlcm4gY2hhcl91ICptbF9nZXQgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gY2hhcl91ICptbF9nZXRfcG9zIF9fQVJHUygocG9zX1QgKnBvcykpOwotZXh0ZXJuIGNoYXJfdSAqbWxfZ2V0X2N1cmxpbmUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICptbF9nZXRfY3Vyc29yIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGNoYXJfdSAqbWxfZ2V0X2J1ZiBfX0FSR1MoKGJ1Zl9UICpidWYsIGxpbmVucl9UIGxudW0sIGludCB3aWxsX2NoYW5nZSkpOwotZXh0ZXJuIGludCBtbF9saW5lX2FsbG9jZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1sX2FwcGVuZCBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGNoYXJfdSAqbGluZSwgY29sbnJfVCBsZW4sIGludCBuZXdmaWxlKSk7Ci1leHRlcm4gaW50IG1sX2FwcGVuZF9idWYgX19BUkdTKChidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtLCBjaGFyX3UgKmxpbmUsIGNvbG5yX1QgbGVuLCBpbnQgbmV3ZmlsZSkpOwotZXh0ZXJuIGludCBtbF9yZXBsYWNlIF9fQVJHUygobGluZW5yX1QgbG51bSwgY2hhcl91ICpsaW5lLCBpbnQgY29weSkpOwotZXh0ZXJuIGludCBtbF9kZWxldGUgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBpbnQgbWVzc2FnZSkpOwotZXh0ZXJuIHZvaWQgbWxfc2V0bWFya2VkIF9fQVJHUygobGluZW5yX1QgbG51bSkpOwotZXh0ZXJuIGxpbmVucl9UIG1sX2ZpcnN0bWFya2VkIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWxfY2xlYXJtYXJrZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICptYWtlc3dhcG5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKmZmbmFtZSwgYnVmX1QgKmJ1ZiwgY2hhcl91ICpkaXJfbmFtZSkpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X2ZpbGVfaW5fZGlyIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgY2hhcl91ICpkbmFtZSkpOwotZXh0ZXJuIHZvaWQgbWxfc2V0ZmxhZ3MgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gbG9uZyBtbF9maW5kX2xpbmVfb3Jfb2Zmc2V0IF9fQVJHUygoYnVmX1QgKmJ1ZiwgbGluZW5yX1QgbG51bSwgbG9uZyAqb2ZmcCkpOwotZXh0ZXJuIHZvaWQgZ290b19ieXRlIF9fQVJHUygobG9uZyBjbnQpKTsKK2ludCBtbF9vcGVuIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwordm9pZCBtbF9zZXRuYW1lIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwordm9pZCBtbF9vcGVuX2ZpbGVzIF9fQVJHUygodm9pZCkpOwordm9pZCBtbF9vcGVuX2ZpbGUgX19BUkdTKChidWZfVCAqYnVmKSk7Cit2b2lkIGNoZWNrX25lZWRfc3dhcCBfX0FSR1MoKGludCBuZXdmaWxlKSk7Cit2b2lkIG1sX2Nsb3NlIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGRlbF9maWxlKSk7Cit2b2lkIG1sX2Nsb3NlX2FsbCBfX0FSR1MoKGludCBkZWxfZmlsZSkpOwordm9pZCBtbF9jbG9zZV9ub3Rtb2QgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1sX3RpbWVzdGFtcCBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK3ZvaWQgbWxfcmVjb3ZlciBfX0FSR1MoKHZvaWQpKTsKK2ludCByZWNvdmVyX25hbWVzIF9fQVJHUygoY2hhcl91ICoqZm5hbWUsIGludCBsaXN0LCBpbnQgbnIpKTsKK3ZvaWQgbWxfc3luY19hbGwgX19BUkdTKChpbnQgY2hlY2tfZmlsZSwgaW50IGNoZWNrX2NoYXIpKTsKK3ZvaWQgbWxfcHJlc2VydmUgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgbWVzc2FnZSkpOworY2hhcl91ICptbF9nZXQgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7CitjaGFyX3UgKm1sX2dldF9wb3MgX19BUkdTKChwb3NfVCAqcG9zKSk7CitjaGFyX3UgKm1sX2dldF9jdXJsaW5lIF9fQVJHUygodm9pZCkpOworY2hhcl91ICptbF9nZXRfY3Vyc29yIF9fQVJHUygodm9pZCkpOworY2hhcl91ICptbF9nZXRfYnVmIF9fQVJHUygoYnVmX1QgKmJ1ZiwgbGluZW5yX1QgbG51bSwgaW50IHdpbGxfY2hhbmdlKSk7CitpbnQgbWxfbGluZV9hbGxvY2VkIF9fQVJHUygodm9pZCkpOworaW50IG1sX2FwcGVuZCBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGNoYXJfdSAqbGluZSwgY29sbnJfVCBsZW4sIGludCBuZXdmaWxlKSk7CitpbnQgbWxfYXBwZW5kX2J1ZiBfX0FSR1MoKGJ1Zl9UICpidWYsIGxpbmVucl9UIGxudW0sIGNoYXJfdSAqbGluZSwgY29sbnJfVCBsZW4sIGludCBuZXdmaWxlKSk7CitpbnQgbWxfcmVwbGFjZSBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGNoYXJfdSAqbGluZSwgaW50IGNvcHkpKTsKK2ludCBtbF9kZWxldGUgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBpbnQgbWVzc2FnZSkpOwordm9pZCBtbF9zZXRtYXJrZWQgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7CitsaW5lbnJfVCBtbF9maXJzdG1hcmtlZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWxfY2xlYXJtYXJrZWQgX19BUkdTKCh2b2lkKSk7CitjaGFyX3UgKm1ha2Vzd2FwbmFtZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGNoYXJfdSAqZmZuYW1lLCBidWZfVCAqYnVmLCBjaGFyX3UgKmRpcl9uYW1lKSk7CitjaGFyX3UgKmdldF9maWxlX2luX2RpciBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGNoYXJfdSAqZG5hbWUpKTsKK3ZvaWQgbWxfc2V0ZmxhZ3MgX19BUkdTKChidWZfVCAqYnVmKSk7Citsb25nIG1sX2ZpbmRfbGluZV9vcl9vZmZzZXQgX19BUkdTKChidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtLCBsb25nICpvZmZwKSk7Cit2b2lkIGdvdG9fYnl0ZSBfX0FSR1MoKGxvbmcgY250KSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9taXNjMS5wcm8gYi9zcmMvcHJvdG8vbWlzYzEucHJvCmluZGV4IDdkODA0YjkuLmU5YmMzMmMgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9taXNjMS5wcm8KKysrIGIvc3JjL3Byb3RvL21pc2MxLnBybwpAQCAtMSw5NSArMSw5NSBAQAogLyogbWlzYzEuYyAqLwotZXh0ZXJuIGludCBnZXRfaW5kZW50IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBnZXRfaW5kZW50X2xudW0gX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gaW50IGdldF9pbmRlbnRfYnVmIF9fQVJHUygoYnVmX1QgKmJ1ZiwgbGluZW5yX1QgbG51bSkpOwotZXh0ZXJuIGludCBnZXRfaW5kZW50X3N0ciBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgdHMpKTsKLWV4dGVybiBpbnQgc2V0X2luZGVudCBfX0FSR1MoKGludCBzaXplLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiBpbnQgZ2V0X251bWJlcl9pbmRlbnQgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gaW50IG9wZW5fbGluZSBfX0FSR1MoKGludCBkaXIsIGludCBmbGFncywgaW50IG9sZF9pbmRlbnQpKTsKLWV4dGVybiBpbnQgZ2V0X2xlYWRlcl9sZW4gX19BUkdTKChjaGFyX3UgKmxpbmUsIGNoYXJfdSAqKmZsYWdzLCBpbnQgYmFja3dhcmQpKTsKLWV4dGVybiBpbnQgcGxpbmVzIF9fQVJHUygobGluZW5yX1QgbG51bSkpOwotZXh0ZXJuIGludCBwbGluZXNfd2luIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtLCBpbnQgd2luaGVpZ2h0KSk7Ci1leHRlcm4gaW50IHBsaW5lc19ub2ZpbGwgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gaW50IHBsaW5lc193aW5fbm9maWxsIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtLCBpbnQgd2luaGVpZ2h0KSk7Ci1leHRlcm4gaW50IHBsaW5lc193aW5fbm9mb2xkIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gaW50IHBsaW5lc193aW5fY29sIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtLCBsb25nIGNvbHVtbikpOwotZXh0ZXJuIGludCBwbGluZXNfbV93aW4gX19BUkdTKCh3aW5fVCAqd3AsIGxpbmVucl9UIGZpcnN0LCBsaW5lbnJfVCBsYXN0KSk7Ci1leHRlcm4gdm9pZCBpbnNfYnl0ZXMgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiB2b2lkIGluc19ieXRlc19sZW4gX19BUkdTKChjaGFyX3UgKnAsIGludCBsZW4pKTsKLWV4dGVybiB2b2lkIGluc19jaGFyIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiB2b2lkIGluc19jaGFyX2J5dGVzIF9fQVJHUygoY2hhcl91ICpidWYsIGludCBjaGFybGVuKSk7Ci1leHRlcm4gdm9pZCBpbnNfc3RyIF9fQVJHUygoY2hhcl91ICpzKSk7Ci1leHRlcm4gaW50IGRlbF9jaGFyIF9fQVJHUygoaW50IGZpeHBvcykpOwotZXh0ZXJuIGludCBkZWxfY2hhcnMgX19BUkdTKChsb25nIGNvdW50LCBpbnQgZml4cG9zKSk7Ci1leHRlcm4gaW50IGRlbF9ieXRlcyBfX0FSR1MoKGxvbmcgY291bnQsIGludCBmaXhwb3NfYXJnLCBpbnQgdXNlX2RlbGNvbWJpbmUpKTsKLWV4dGVybiBpbnQgdHJ1bmNhdGVfbGluZSBfX0FSR1MoKGludCBmaXhwb3MpKTsKLWV4dGVybiB2b2lkIGRlbF9saW5lcyBfX0FSR1MoKGxvbmcgbmxpbmVzLCBpbnQgdW5kbykpOwotZXh0ZXJuIGludCBnY2hhcl9wb3MgX19BUkdTKChwb3NfVCAqcG9zKSk7Ci1leHRlcm4gaW50IGdjaGFyX2N1cnNvciBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHBjaGFyX2N1cnNvciBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gaW50IGluaW5kZW50IF9fQVJHUygoaW50IGV4dHJhKSk7Ci1leHRlcm4gY2hhcl91ICpza2lwX3RvX29wdGlvbl9wYXJ0IF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gdm9pZCBjaGFuZ2VkIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY2hhbmdlZF9ieXRlcyBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGNvbG5yX1QgY29sKSk7Ci1leHRlcm4gdm9pZCBhcHBlbmRlZF9saW5lcyBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGxvbmcgY291bnQpKTsKLWV4dGVybiB2b2lkIGFwcGVuZGVkX2xpbmVzX21hcmsgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBsb25nIGNvdW50KSk7Ci1leHRlcm4gdm9pZCBkZWxldGVkX2xpbmVzIF9fQVJHUygobGluZW5yX1QgbG51bSwgbG9uZyBjb3VudCkpOwotZXh0ZXJuIHZvaWQgZGVsZXRlZF9saW5lc19tYXJrIF9fQVJHUygobGluZW5yX1QgbG51bSwgbG9uZyBjb3VudCkpOwotZXh0ZXJuIHZvaWQgY2hhbmdlZF9saW5lcyBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGNvbG5yX1QgY29sLCBsaW5lbnJfVCBsbnVtZSwgbG9uZyB4dHJhKSk7Ci1leHRlcm4gdm9pZCB1bmNoYW5nZWQgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgZmYpKTsKLWV4dGVybiB2b2lkIGNoZWNrX3N0YXR1cyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiB2b2lkIGNoYW5nZV93YXJuaW5nIF9fQVJHUygoaW50IGNvbCkpOwotZXh0ZXJuIGludCBhc2tfeWVzbm8gX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGRpcmVjdCkpOwotZXh0ZXJuIGludCBnZXRfa2V5c3Ryb2tlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBnZXRfbnVtYmVyIF9fQVJHUygoaW50IGNvbG9uLCBpbnQgKm1vdXNlX3VzZWQpKTsKLWV4dGVybiBpbnQgcHJvbXB0X2Zvcl9udW1iZXIgX19BUkdTKChpbnQgKm1vdXNlX3VzZWQpKTsKLWV4dGVybiB2b2lkIG1zZ21vcmUgX19BUkdTKChsb25nIG4pKTsKLWV4dGVybiB2b2lkIGJlZXBfZmx1c2ggX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB2aW1fYmVlcCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGluaXRfaG9tZWRpciBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGZyZWVfaG9tZWRpciBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGV4cGFuZF9lbnYgX19BUkdTKChjaGFyX3UgKnNyYywgY2hhcl91ICpkc3QsIGludCBkc3RsZW4pKTsKLWV4dGVybiB2b2lkIGV4cGFuZF9lbnZfZXNjIF9fQVJHUygoY2hhcl91ICpzcmNwLCBjaGFyX3UgKmRzdCwgaW50IGRzdGxlbiwgaW50IGVzYywgY2hhcl91ICpzdGFydHN0cikpOwotZXh0ZXJuIGNoYXJfdSAqdmltX2dldGVudiBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50ICptdXN0ZnJlZSkpOwotZXh0ZXJuIGNoYXJfdSAqZXhwYW5kX2Vudl9zYXZlIF9fQVJHUygoY2hhcl91ICpzcmMpKTsKLWV4dGVybiB2b2lkIHZpbV9zZXRlbnYgX19BUkdTKChjaGFyX3UgKm5hbWUsIGNoYXJfdSAqdmFsKSk7Ci1leHRlcm4gY2hhcl91ICpnZXRfZW52X25hbWUgX19BUkdTKChleHBhbmRfVCAqeHAsIGludCBpZHgpKTsKLWV4dGVybiB2b2lkIGhvbWVfcmVwbGFjZSBfX0FSR1MoKGJ1Zl9UICpidWYsIGNoYXJfdSAqc3JjLCBjaGFyX3UgKmRzdCwgaW50IGRzdGxlbiwgaW50IG9uZSkpOwotZXh0ZXJuIGNoYXJfdSAqaG9tZV9yZXBsYWNlX3NhdmUgX19BUkdTKChidWZfVCAqYnVmLCBjaGFyX3UgKnNyYykpOwotZXh0ZXJuIGludCBmdWxscGF0aGNtcCBfX0FSR1MoKGNoYXJfdSAqczEsIGNoYXJfdSAqczIsIGludCBjaGVja25hbWUpKTsKLWV4dGVybiBjaGFyX3UgKmdldHRhaWwgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Ci1leHRlcm4gY2hhcl91ICpnZXR0YWlsX3NlcCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKLWV4dGVybiBjaGFyX3UgKmdldG5leHRjb21wIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X3Bhc3RfaGVhZCBfX0FSR1MoKGNoYXJfdSAqcGF0aCkpOwotZXh0ZXJuIGludCB2aW1faXNwYXRoc2VwIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgdmltX2lzcGF0aGxpc3RzZXAgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIHZvaWQgc2hvcnRlbl9kaXIgX19BUkdTKChjaGFyX3UgKnN0cikpOwotZXh0ZXJuIGludCBkaXJfb2ZfZmlsZV9leGlzdHMgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Ci1leHRlcm4gaW50IHZpbV9mbmFtZWNtcCBfX0FSR1MoKGNoYXJfdSAqeCwgY2hhcl91ICp5KSk7Ci1leHRlcm4gaW50IHZpbV9mbmFtZW5jbXAgX19BUkdTKChjaGFyX3UgKngsIGNoYXJfdSAqeSwgc2l6ZV90IGxlbikpOwotZXh0ZXJuIGNoYXJfdSAqY29uY2F0X2ZuYW1lcyBfX0FSR1MoKGNoYXJfdSAqZm5hbWUxLCBjaGFyX3UgKmZuYW1lMiwgaW50IHNlcCkpOwotZXh0ZXJuIGNoYXJfdSAqY29uY2F0X3N0ciBfX0FSR1MoKGNoYXJfdSAqc3RyMSwgY2hhcl91ICpzdHIyKSk7Ci1leHRlcm4gdm9pZCBhZGRfcGF0aHNlcCBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGNoYXJfdSAqRnVsbE5hbWVfc2F2ZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGludCBmb3JjZSkpOwotZXh0ZXJuIHBvc19UICpmaW5kX3N0YXJ0X2NvbW1lbnQgX19BUkdTKChpbnQgaW5kX21heGNvbW1lbnQpKTsKLWV4dGVybiB2b2lkIGRvX2NfZXhwcl9pbmRlbnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGNpbl9pc2xhYmVsIF9fQVJHUygoaW50IGluZF9tYXhjb21tZW50KSk7Ci1leHRlcm4gaW50IGNpbl9pc2Nhc2UgX19BUkdTKChjaGFyX3UgKnMpKTsKLWV4dGVybiBpbnQgY2luX2lzc2NvcGVkZWNsIF9fQVJHUygoY2hhcl91ICpzKSk7Ci1leHRlcm4gaW50IGdldF9jX2luZGVudCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZ2V0X2V4cHJfaW5kZW50IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBnZXRfbGlzcF9pbmRlbnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBwcmVwYXJlX3RvX2V4aXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBwcmVzZXJ2ZV9leGl0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCB2aW1fZmV4aXN0cyBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKLWV4dGVybiB2b2lkIGxpbmVfYnJlYWtjaGVjayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGZhc3RfYnJlYWtjaGVjayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZXhwYW5kX3dpbGRjYXJkcyBfX0FSR1MoKGludCBudW1fcGF0LCBjaGFyX3UgKipwYXQsIGludCAqbnVtX2ZpbGUsIGNoYXJfdSAqKipmaWxlLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiBpbnQgbWF0Y2hfc3VmZml4IF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwotZXh0ZXJuIGludCB1bml4X2V4cGFuZHBhdGggX19BUkdTKChnYXJyYXlfVCAqZ2FwLCBjaGFyX3UgKnBhdGgsIGludCB3aWxkb2ZmLCBpbnQgZmxhZ3MsIGludCBkaWRzdGFyKSk7Ci1leHRlcm4gaW50IGdlbl9leHBhbmRfd2lsZGNhcmRzIF9fQVJHUygoaW50IG51bV9wYXQsIGNoYXJfdSAqKnBhdCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUsIGludCBmbGFncykpOwotZXh0ZXJuIHZvaWQgYWRkZmlsZSBfX0FSR1MoKGdhcnJheV9UICpnYXAsIGNoYXJfdSAqZiwgaW50IGZsYWdzKSk7Ci1leHRlcm4gY2hhcl91ICpnZXRfY21kX291dHB1dCBfX0FSR1MoKGNoYXJfdSAqY21kLCBjaGFyX3UgKmluZmlsZSwgaW50IGZsYWdzKSk7Ci1leHRlcm4gdm9pZCBGcmVlV2lsZCBfX0FSR1MoKGludCBjb3VudCwgY2hhcl91ICoqZmlsZXMpKTsKLWV4dGVybiBpbnQgZ290b19pbSBfX0FSR1MoKHZvaWQpKTsKK2ludCBnZXRfaW5kZW50IF9fQVJHUygodm9pZCkpOworaW50IGdldF9pbmRlbnRfbG51bSBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKK2ludCBnZXRfaW5kZW50X2J1ZiBfX0FSR1MoKGJ1Zl9UICpidWYsIGxpbmVucl9UIGxudW0pKTsKK2ludCBnZXRfaW5kZW50X3N0ciBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgdHMpKTsKK2ludCBzZXRfaW5kZW50IF9fQVJHUygoaW50IHNpemUsIGludCBmbGFncykpOworaW50IGdldF9udW1iZXJfaW5kZW50IF9fQVJHUygobGluZW5yX1QgbG51bSkpOworaW50IG9wZW5fbGluZSBfX0FSR1MoKGludCBkaXIsIGludCBmbGFncywgaW50IG9sZF9pbmRlbnQpKTsKK2ludCBnZXRfbGVhZGVyX2xlbiBfX0FSR1MoKGNoYXJfdSAqbGluZSwgY2hhcl91ICoqZmxhZ3MsIGludCBiYWNrd2FyZCkpOworaW50IHBsaW5lcyBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKK2ludCBwbGluZXNfd2luIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtLCBpbnQgd2luaGVpZ2h0KSk7CitpbnQgcGxpbmVzX25vZmlsbCBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKK2ludCBwbGluZXNfd2luX25vZmlsbCBfX0FSR1MoKHdpbl9UICp3cCwgbGluZW5yX1QgbG51bSwgaW50IHdpbmhlaWdodCkpOworaW50IHBsaW5lc193aW5fbm9mb2xkIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7CitpbnQgcGxpbmVzX3dpbl9jb2wgX19BUkdTKCh3aW5fVCAqd3AsIGxpbmVucl9UIGxudW0sIGxvbmcgY29sdW1uKSk7CitpbnQgcGxpbmVzX21fd2luIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBmaXJzdCwgbGluZW5yX1QgbGFzdCkpOwordm9pZCBpbnNfYnl0ZXMgX19BUkdTKChjaGFyX3UgKnApKTsKK3ZvaWQgaW5zX2J5dGVzX2xlbiBfX0FSR1MoKGNoYXJfdSAqcCwgaW50IGxlbikpOwordm9pZCBpbnNfY2hhciBfX0FSR1MoKGludCBjKSk7Cit2b2lkIGluc19jaGFyX2J5dGVzIF9fQVJHUygoY2hhcl91ICpidWYsIGludCBjaGFybGVuKSk7Cit2b2lkIGluc19zdHIgX19BUkdTKChjaGFyX3UgKnMpKTsKK2ludCBkZWxfY2hhciBfX0FSR1MoKGludCBmaXhwb3MpKTsKK2ludCBkZWxfY2hhcnMgX19BUkdTKChsb25nIGNvdW50LCBpbnQgZml4cG9zKSk7CitpbnQgZGVsX2J5dGVzIF9fQVJHUygobG9uZyBjb3VudCwgaW50IGZpeHBvc19hcmcsIGludCB1c2VfZGVsY29tYmluZSkpOworaW50IHRydW5jYXRlX2xpbmUgX19BUkdTKChpbnQgZml4cG9zKSk7Cit2b2lkIGRlbF9saW5lcyBfX0FSR1MoKGxvbmcgbmxpbmVzLCBpbnQgdW5kbykpOworaW50IGdjaGFyX3BvcyBfX0FSR1MoKHBvc19UICpwb3MpKTsKK2ludCBnY2hhcl9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHBjaGFyX2N1cnNvciBfX0FSR1MoKGludCBjKSk7CitpbnQgaW5pbmRlbnQgX19BUkdTKChpbnQgZXh0cmEpKTsKK2NoYXJfdSAqc2tpcF90b19vcHRpb25fcGFydCBfX0FSR1MoKGNoYXJfdSAqcCkpOwordm9pZCBjaGFuZ2VkIF9fQVJHUygodm9pZCkpOwordm9pZCBjaGFuZ2VkX2J5dGVzIF9fQVJHUygobGluZW5yX1QgbG51bSwgY29sbnJfVCBjb2wpKTsKK3ZvaWQgYXBwZW5kZWRfbGluZXMgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBsb25nIGNvdW50KSk7Cit2b2lkIGFwcGVuZGVkX2xpbmVzX21hcmsgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBsb25nIGNvdW50KSk7Cit2b2lkIGRlbGV0ZWRfbGluZXMgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBsb25nIGNvdW50KSk7Cit2b2lkIGRlbGV0ZWRfbGluZXNfbWFyayBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGxvbmcgY291bnQpKTsKK3ZvaWQgY2hhbmdlZF9saW5lcyBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGNvbG5yX1QgY29sLCBsaW5lbnJfVCBsbnVtZSwgbG9uZyB4dHJhKSk7Cit2b2lkIHVuY2hhbmdlZCBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBmZikpOwordm9pZCBjaGVja19zdGF0dXMgX19BUkdTKChidWZfVCAqYnVmKSk7Cit2b2lkIGNoYW5nZV93YXJuaW5nIF9fQVJHUygoaW50IGNvbCkpOworaW50IGFza195ZXNubyBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgZGlyZWN0KSk7CitpbnQgZ2V0X2tleXN0cm9rZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBnZXRfbnVtYmVyIF9fQVJHUygoaW50IGNvbG9uLCBpbnQgKm1vdXNlX3VzZWQpKTsKK2ludCBwcm9tcHRfZm9yX251bWJlciBfX0FSR1MoKGludCAqbW91c2VfdXNlZCkpOwordm9pZCBtc2dtb3JlIF9fQVJHUygobG9uZyBuKSk7Cit2b2lkIGJlZXBfZmx1c2ggX19BUkdTKCh2b2lkKSk7Cit2b2lkIHZpbV9iZWVwIF9fQVJHUygodm9pZCkpOwordm9pZCBpbml0X2hvbWVkaXIgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZyZWVfaG9tZWRpciBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZXhwYW5kX2VudiBfX0FSR1MoKGNoYXJfdSAqc3JjLCBjaGFyX3UgKmRzdCwgaW50IGRzdGxlbikpOwordm9pZCBleHBhbmRfZW52X2VzYyBfX0FSR1MoKGNoYXJfdSAqc3JjcCwgY2hhcl91ICpkc3QsIGludCBkc3RsZW4sIGludCBlc2MsIGNoYXJfdSAqc3RhcnRzdHIpKTsKK2NoYXJfdSAqdmltX2dldGVudiBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50ICptdXN0ZnJlZSkpOworY2hhcl91ICpleHBhbmRfZW52X3NhdmUgX19BUkdTKChjaGFyX3UgKnNyYykpOwordm9pZCB2aW1fc2V0ZW52IF9fQVJHUygoY2hhcl91ICpuYW1lLCBjaGFyX3UgKnZhbCkpOworY2hhcl91ICpnZXRfZW52X25hbWUgX19BUkdTKChleHBhbmRfVCAqeHAsIGludCBpZHgpKTsKK3ZvaWQgaG9tZV9yZXBsYWNlIF9fQVJHUygoYnVmX1QgKmJ1ZiwgY2hhcl91ICpzcmMsIGNoYXJfdSAqZHN0LCBpbnQgZHN0bGVuLCBpbnQgb25lKSk7CitjaGFyX3UgKmhvbWVfcmVwbGFjZV9zYXZlIF9fQVJHUygoYnVmX1QgKmJ1ZiwgY2hhcl91ICpzcmMpKTsKK2ludCBmdWxscGF0aGNtcCBfX0FSR1MoKGNoYXJfdSAqczEsIGNoYXJfdSAqczIsIGludCBjaGVja25hbWUpKTsKK2NoYXJfdSAqZ2V0dGFpbCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKK2NoYXJfdSAqZ2V0dGFpbF9zZXAgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7CitjaGFyX3UgKmdldG5leHRjb21wIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOworY2hhcl91ICpnZXRfcGFzdF9oZWFkIF9fQVJHUygoY2hhcl91ICpwYXRoKSk7CitpbnQgdmltX2lzcGF0aHNlcCBfX0FSR1MoKGludCBjKSk7CitpbnQgdmltX2lzcGF0aGxpc3RzZXAgX19BUkdTKChpbnQgYykpOwordm9pZCBzaG9ydGVuX2RpciBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7CitpbnQgZGlyX29mX2ZpbGVfZXhpc3RzIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOworaW50IHZpbV9mbmFtZWNtcCBfX0FSR1MoKGNoYXJfdSAqeCwgY2hhcl91ICp5KSk7CitpbnQgdmltX2ZuYW1lbmNtcCBfX0FSR1MoKGNoYXJfdSAqeCwgY2hhcl91ICp5LCBzaXplX3QgbGVuKSk7CitjaGFyX3UgKmNvbmNhdF9mbmFtZXMgX19BUkdTKChjaGFyX3UgKmZuYW1lMSwgY2hhcl91ICpmbmFtZTIsIGludCBzZXApKTsKK2NoYXJfdSAqY29uY2F0X3N0ciBfX0FSR1MoKGNoYXJfdSAqc3RyMSwgY2hhcl91ICpzdHIyKSk7Cit2b2lkIGFkZF9wYXRoc2VwIF9fQVJHUygoY2hhcl91ICpwKSk7CitjaGFyX3UgKkZ1bGxOYW1lX3NhdmUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBpbnQgZm9yY2UpKTsKK3Bvc19UICpmaW5kX3N0YXJ0X2NvbW1lbnQgX19BUkdTKChpbnQgaW5kX21heGNvbW1lbnQpKTsKK3ZvaWQgZG9fY19leHByX2luZGVudCBfX0FSR1MoKHZvaWQpKTsKK2ludCBjaW5faXNsYWJlbCBfX0FSR1MoKGludCBpbmRfbWF4Y29tbWVudCkpOworaW50IGNpbl9pc2Nhc2UgX19BUkdTKChjaGFyX3UgKnMpKTsKK2ludCBjaW5faXNzY29wZWRlY2wgX19BUkdTKChjaGFyX3UgKnMpKTsKK2ludCBnZXRfY19pbmRlbnQgX19BUkdTKCh2b2lkKSk7CitpbnQgZ2V0X2V4cHJfaW5kZW50IF9fQVJHUygodm9pZCkpOworaW50IGdldF9saXNwX2luZGVudCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgcHJlcGFyZV90b19leGl0IF9fQVJHUygodm9pZCkpOwordm9pZCBwcmVzZXJ2ZV9leGl0IF9fQVJHUygodm9pZCkpOworaW50IHZpbV9mZXhpc3RzIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwordm9pZCBsaW5lX2JyZWFrY2hlY2sgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZhc3RfYnJlYWtjaGVjayBfX0FSR1MoKHZvaWQpKTsKK2ludCBleHBhbmRfd2lsZGNhcmRzIF9fQVJHUygoaW50IG51bV9wYXQsIGNoYXJfdSAqKnBhdCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUsIGludCBmbGFncykpOworaW50IG1hdGNoX3N1ZmZpeCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKK2ludCB1bml4X2V4cGFuZHBhdGggX19BUkdTKChnYXJyYXlfVCAqZ2FwLCBjaGFyX3UgKnBhdGgsIGludCB3aWxkb2ZmLCBpbnQgZmxhZ3MsIGludCBkaWRzdGFyKSk7CitpbnQgZ2VuX2V4cGFuZF93aWxkY2FyZHMgX19BUkdTKChpbnQgbnVtX3BhdCwgY2hhcl91ICoqcGF0LCBpbnQgKm51bV9maWxlLCBjaGFyX3UgKioqZmlsZSwgaW50IGZsYWdzKSk7Cit2b2lkIGFkZGZpbGUgX19BUkdTKChnYXJyYXlfVCAqZ2FwLCBjaGFyX3UgKmYsIGludCBmbGFncykpOworY2hhcl91ICpnZXRfY21kX291dHB1dCBfX0FSR1MoKGNoYXJfdSAqY21kLCBjaGFyX3UgKmluZmlsZSwgaW50IGZsYWdzKSk7Cit2b2lkIEZyZWVXaWxkIF9fQVJHUygoaW50IGNvdW50LCBjaGFyX3UgKipmaWxlcykpOworaW50IGdvdG9faW0gX19BUkdTKCh2b2lkKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9tb3ZlLnBybyBiL3NyYy9wcm90by9tb3ZlLnBybwppbmRleCAyNmYzYjY1Li5kZTUxYWEyIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vbW92ZS5wcm8KKysrIGIvc3JjL3Byb3RvL21vdmUucHJvCkBAIC0xLDQwICsxLDQwIEBACiAvKiBtb3ZlLmMgKi8KLWV4dGVybiB2b2lkIHVwZGF0ZV90b3BsaW5lX3JlZHJhdyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHVwZGF0ZV90b3BsaW5lIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgdXBkYXRlX2N1cnN3YW50IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY2hlY2tfY3Vyc29yX21vdmVkIF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gdm9pZCBjaGFuZ2VkX3dpbmRvd19zZXR0aW5nIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY2hhbmdlZF93aW5kb3dfc2V0dGluZ193aW4gX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIHNldF90b3BsaW5lIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gdm9pZCBjaGFuZ2VkX2NsaW5lX2JlZl9jdXJzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY2hhbmdlZF9jbGluZV9iZWZfY3Vyc193aW4gX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIGNoYW5nZWRfbGluZV9hYnZfY3VycyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGNoYW5nZWRfbGluZV9hYnZfY3Vyc193aW4gX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIHZhbGlkYXRlX2JvdGxpbmUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBpbnZhbGlkYXRlX2JvdGxpbmUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBpbnZhbGlkYXRlX2JvdGxpbmVfd2luIF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gdm9pZCBhcHByb3hpbWF0ZV9ib3RsaW5lX3dpbiBfX0FSR1MoKHdpbl9UICp3cCkpOwotZXh0ZXJuIGludCBjdXJzb3JfdmFsaWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB2YWxpZGF0ZV9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB2YWxpZGF0ZV9jbGluZV9yb3cgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB2YWxpZGF0ZV92aXJ0Y29sIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfdmlydGNvbF93aW4gX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIHZhbGlkYXRlX2N1cnNvcl9jb2wgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHdpbl9jb2xfb2ZmIF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gaW50IGN1cndpbl9jb2xfb2ZmIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCB3aW5fY29sX29mZjIgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiBpbnQgY3Vyd2luX2NvbF9vZmYyIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY3Vyc19jb2x1bW5zIF9fQVJHUygoaW50IHNjcm9sbCkpOwotZXh0ZXJuIHZvaWQgc2Nyb2xsZG93biBfX0FSR1MoKGxvbmcgbGluZV9jb3VudCwgaW50IGJ5Zm9sZCkpOwotZXh0ZXJuIHZvaWQgc2Nyb2xsdXAgX19BUkdTKChsb25nIGxpbmVfY291bnQsIGludCBieWZvbGQpKTsKLWV4dGVybiB2b2lkIGNoZWNrX3RvcGZpbGwgX19BUkdTKCh3aW5fVCAqd3AsIGludCBkb3duKSk7Ci1leHRlcm4gdm9pZCBzY3JvbGxkb3duX2NsYW1wIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2Nyb2xsdXBfY2xhbXAgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzY3JvbGxfY3Vyc29yX3RvcCBfX0FSR1MoKGludCBtaW5fc2Nyb2xsLCBpbnQgYWx3YXlzKSk7Ci1leHRlcm4gdm9pZCBzZXRfZW1wdHlfcm93cyBfX0FSR1MoKHdpbl9UICp3cCwgaW50IHVzZWQpKTsKLWV4dGVybiB2b2lkIHNjcm9sbF9jdXJzb3JfYm90IF9fQVJHUygoaW50IG1pbl9zY3JvbGwsIGludCBzZXRfdG9wYm90KSk7Ci1leHRlcm4gdm9pZCBzY3JvbGxfY3Vyc29yX2hhbGZ3YXkgX19BUkdTKChpbnQgYXRlbmQpKTsKLWV4dGVybiB2b2lkIGN1cnNvcl9jb3JyZWN0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBvbmVwYWdlIF9fQVJHUygoaW50IGRpciwgbG9uZyBjb3VudCkpOwotZXh0ZXJuIHZvaWQgaGFsZnBhZ2UgX19BUkdTKChpbnQgZmxhZywgbGluZW5yX1QgUHJlbnVtKSk7Cit2b2lkIHVwZGF0ZV90b3BsaW5lX3JlZHJhdyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgdXBkYXRlX3RvcGxpbmUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHVwZGF0ZV9jdXJzd2FudCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgY2hlY2tfY3Vyc29yX21vdmVkIF9fQVJHUygod2luX1QgKndwKSk7Cit2b2lkIGNoYW5nZWRfd2luZG93X3NldHRpbmcgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGNoYW5nZWRfd2luZG93X3NldHRpbmdfd2luIF9fQVJHUygod2luX1QgKndwKSk7Cit2b2lkIHNldF90b3BsaW5lIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7Cit2b2lkIGNoYW5nZWRfY2xpbmVfYmVmX2N1cnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGNoYW5nZWRfY2xpbmVfYmVmX2N1cnNfd2luIF9fQVJHUygod2luX1QgKndwKSk7Cit2b2lkIGNoYW5nZWRfbGluZV9hYnZfY3VycyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgY2hhbmdlZF9saW5lX2Fidl9jdXJzX3dpbiBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCB2YWxpZGF0ZV9ib3RsaW5lIF9fQVJHUygodm9pZCkpOwordm9pZCBpbnZhbGlkYXRlX2JvdGxpbmUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGludmFsaWRhdGVfYm90bGluZV93aW4gX19BUkdTKCh3aW5fVCAqd3ApKTsKK3ZvaWQgYXBwcm94aW1hdGVfYm90bGluZV93aW4gX19BUkdTKCh3aW5fVCAqd3ApKTsKK2ludCBjdXJzb3JfdmFsaWQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHZhbGlkYXRlX2N1cnNvciBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgdmFsaWRhdGVfY2xpbmVfcm93IF9fQVJHUygodm9pZCkpOwordm9pZCB2YWxpZGF0ZV92aXJ0Y29sIF9fQVJHUygodm9pZCkpOwordm9pZCB2YWxpZGF0ZV92aXJ0Y29sX3dpbiBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCB2YWxpZGF0ZV9jdXJzb3JfY29sIF9fQVJHUygodm9pZCkpOworaW50IHdpbl9jb2xfb2ZmIF9fQVJHUygod2luX1QgKndwKSk7CitpbnQgY3Vyd2luX2NvbF9vZmYgX19BUkdTKCh2b2lkKSk7CitpbnQgd2luX2NvbF9vZmYyIF9fQVJHUygod2luX1QgKndwKSk7CitpbnQgY3Vyd2luX2NvbF9vZmYyIF9fQVJHUygodm9pZCkpOwordm9pZCBjdXJzX2NvbHVtbnMgX19BUkdTKChpbnQgc2Nyb2xsKSk7Cit2b2lkIHNjcm9sbGRvd24gX19BUkdTKChsb25nIGxpbmVfY291bnQsIGludCBieWZvbGQpKTsKK3ZvaWQgc2Nyb2xsdXAgX19BUkdTKChsb25nIGxpbmVfY291bnQsIGludCBieWZvbGQpKTsKK3ZvaWQgY2hlY2tfdG9wZmlsbCBfX0FSR1MoKHdpbl9UICp3cCwgaW50IGRvd24pKTsKK3ZvaWQgc2Nyb2xsZG93bl9jbGFtcCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2Nyb2xsdXBfY2xhbXAgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNjcm9sbF9jdXJzb3JfdG9wIF9fQVJHUygoaW50IG1pbl9zY3JvbGwsIGludCBhbHdheXMpKTsKK3ZvaWQgc2V0X2VtcHR5X3Jvd3MgX19BUkdTKCh3aW5fVCAqd3AsIGludCB1c2VkKSk7Cit2b2lkIHNjcm9sbF9jdXJzb3JfYm90IF9fQVJHUygoaW50IG1pbl9zY3JvbGwsIGludCBzZXRfdG9wYm90KSk7Cit2b2lkIHNjcm9sbF9jdXJzb3JfaGFsZndheSBfX0FSR1MoKGludCBhdGVuZCkpOwordm9pZCBjdXJzb3JfY29ycmVjdCBfX0FSR1MoKHZvaWQpKTsKK2ludCBvbmVwYWdlIF9fQVJHUygoaW50IGRpciwgbG9uZyBjb3VudCkpOwordm9pZCBoYWxmcGFnZSBfX0FSR1MoKGludCBmbGFnLCBsaW5lbnJfVCBQcmVudW0pKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL29zX21zZG9zLnBybyBiL3NyYy9wcm90by9vc19tc2Rvcy5wcm8KaW5kZXggNWNjY2JkNi4uYTg2N2YzZCAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL29zX21zZG9zLnBybworKysgYi9zcmMvcHJvdG8vb3NfbXNkb3MucHJvCkBAIC0xLDQ4ICsxLDQ4IEBACiAvKiBvc19tc2Rvcy5jICovCi1leHRlcm4gdm9pZCBtY2hfc2V0X25vcm1hbF9jb2xvcnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfdXBkYXRlX2N1cnNvciBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBsb25nX3UgbWNoX2F2YWlsX21lbSBfX0FSR1MoKGludCBzcGVjaWFsKSk7Ci1leHRlcm4gdm9pZCBtY2hfZGVsYXkgX19BUkdTKChsb25nIG1zZWMsIGludCBpZ25vcmVpbnB1dCkpOwotZXh0ZXJuIHZvaWQgbWNoX3dyaXRlIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gaW50IG1jaF9pbmNoYXIgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IG1heGxlbiwgbG9uZyB0aW1lLCBpbnQgdGJfY2hhbmdlX2NudCkpOwotZXh0ZXJuIGludCBtY2hfY2hhcl9hdmFpbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1jaF9zdXNwZW5kIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1jaF9jaGVja193aW4gX19BUkdTKChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsKLWV4dGVybiBpbnQgbWNoX2lucHV0X2lzYXR0eSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGZuYW1lX2Nhc2UgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBsZW4pKTsKLWV4dGVybiBsb25nIG1jaF9nZXRfcGlkIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbiwgaW50IGZvcmNlKSk7Ci1leHRlcm4gdm9pZCBzbGFzaF9hZGp1c3QgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgbWNoX2lzRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Ci1leHRlcm4gdm9pZCBtY2hfZWFybHlfaW5pdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1jaF9leGl0IF9fQVJHUygoaW50IHIpKTsKLWV4dGVybiB2b2lkIG1jaF9zZXR0bW9kZSBfX0FSR1MoKGludCB0bW9kZSkpOwotZXh0ZXJuIHZvaWQgbWNoX3NldG1vdXNlIF9fQVJHUygoaW50IG9uKSk7Ci1leHRlcm4gaW50IG1jaF9zY3JlZW5tb2RlIF9fQVJHUygoY2hhcl91ICphcmcpKTsKLWV4dGVybiBpbnQgbWNoX2dldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1jaF9uZXdfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX2NoZWNrX2NvbHVtbnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1jaF9jYWxsX3NoZWxsIF9fQVJHUygoY2hhcl91ICpjbWQsIGludCBvcHRpb25zKSk7Ci1leHRlcm4gdm9pZCBtY2hfYnJlYWtjaGVjayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWNoX2hhc19leHBfd2lsZGNhcmQgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgbWNoX2hhc193aWxkY2FyZCBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCBtY2hfY2hkaXIgX19BUkdTKChjaGFyICpwYXRoKSk7Ci1leHRlcm4gY2hhciAqZGpncHBfc2V0bG9jYWxlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBjbGlwX21jaF9vd25fc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLWV4dGVybiB2b2lkIGNsaXBfbWNoX2xvc2Vfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLWV4dGVybiB2b2lkIGNsaXBfbWNoX3JlcXVlc3Rfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLWV4dGVybiB2b2lkIGNsaXBfbWNoX3NldF9zZWxlY3Rpb24gX19BUkdTKChWaW1DbGlwYm9hcmQgKmNiZCkpOwotZXh0ZXJuIGxvbmcgbWNoX2dldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgbWNoX3NldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUsIGxvbmcgcGVybSkpOwotZXh0ZXJuIHZvaWQgbWNoX2hpZGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgbWNoX2lzZGlyIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF9jYW5fZXhlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF9ub2RldHlwZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCBtY2hfZGlybmFtZSBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgbGVuKSk7Ci1leHRlcm4gaW50IG1jaF9yZW1vdmUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBjaGFyX3UgKm1jaF9nZXRlbnYgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgbWNoX2dldF91c2VyX25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKLWV4dGVybiB2b2lkIG1jaF9nZXRfaG9zdF9uYW1lIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Cit2b2lkIG1jaF9zZXRfbm9ybWFsX2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX3VwZGF0ZV9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Citsb25nX3UgbWNoX2F2YWlsX21lbSBfX0FSR1MoKGludCBzcGVjaWFsKSk7Cit2b2lkIG1jaF9kZWxheSBfX0FSR1MoKGxvbmcgbXNlYywgaW50IGlnbm9yZWlucHV0KSk7Cit2b2lkIG1jaF93cml0ZSBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxlbikpOworaW50IG1jaF9pbmNoYXIgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IG1heGxlbiwgbG9uZyB0aW1lLCBpbnQgdGJfY2hhbmdlX2NudCkpOworaW50IG1jaF9jaGFyX2F2YWlsIF9fQVJHUygodm9pZCkpOwordm9pZCBtY2hfc3VzcGVuZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7CitpbnQgbWNoX2NoZWNrX3dpbiBfX0FSR1MoKGludCBhcmdjLCBjaGFyICoqYXJndikpOworaW50IG1jaF9pbnB1dF9pc2F0dHkgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZuYW1lX2Nhc2UgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBsZW4pKTsKK2xvbmcgbWNoX2dldF9waWQgX19BUkdTKCh2b2lkKSk7CitpbnQgbWNoX0Z1bGxOYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgY2hhcl91ICpidWYsIGludCBsZW4sIGludCBmb3JjZSkpOwordm9pZCBzbGFzaF9hZGp1c3QgX19BUkdTKChjaGFyX3UgKnApKTsKK2ludCBtY2hfaXNGdWxsTmFtZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKK3ZvaWQgbWNoX2Vhcmx5X2luaXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9leGl0IF9fQVJHUygoaW50IHIpKTsKK3ZvaWQgbWNoX3NldHRtb2RlIF9fQVJHUygoaW50IHRtb2RlKSk7Cit2b2lkIG1jaF9zZXRtb3VzZSBfX0FSR1MoKGludCBvbikpOworaW50IG1jaF9zY3JlZW5tb2RlIF9fQVJHUygoY2hhcl91ICphcmcpKTsKK2ludCBtY2hfZ2V0X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX3NldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9uZXdfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwordm9pZCBtY2hfY2hlY2tfY29sdW1ucyBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfY2FsbF9zaGVsbCBfX0FSR1MoKGNoYXJfdSAqY21kLCBpbnQgb3B0aW9ucykpOwordm9pZCBtY2hfYnJlYWtjaGVjayBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfaGFzX2V4cF93aWxkY2FyZCBfX0FSR1MoKGNoYXJfdSAqcCkpOworaW50IG1jaF9oYXNfd2lsZGNhcmQgX19BUkdTKChjaGFyX3UgKnApKTsKK2ludCBtY2hfY2hkaXIgX19BUkdTKChjaGFyICpwYXRoKSk7CitjaGFyICpkamdwcF9zZXRsb2NhbGUgX19BUkdTKCh2b2lkKSk7CitpbnQgY2xpcF9tY2hfb3duX3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Cit2b2lkIGNsaXBfbWNoX2xvc2Vfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKK3ZvaWQgY2xpcF9tY2hfcmVxdWVzdF9zZWxlY3Rpb24gX19BUkdTKChWaW1DbGlwYm9hcmQgKmNiZCkpOwordm9pZCBjbGlwX21jaF9zZXRfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKK2xvbmcgbWNoX2dldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBtY2hfc2V0cGVybSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgbG9uZyBwZXJtKSk7Cit2b2lkIG1jaF9oaWRlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgbWNoX2lzZGlyIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgbWNoX2Nhbl9leGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBtY2hfbm9kZXR5cGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBtY2hfZGlybmFtZSBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgbGVuKSk7CitpbnQgbWNoX3JlbW92ZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOworY2hhcl91ICptY2hfZ2V0ZW52IF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgbWNoX2dldF91c2VyX25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKK3ZvaWQgbWNoX2dldF9ob3N0X25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL29zX3VuaXgucHJvIGIvc3JjL3Byb3RvL29zX3VuaXgucHJvCmluZGV4IDhlYzNkYjYuLjViZjZjOGEgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9vc191bml4LnBybworKysgYi9zcmMvcHJvdG8vb3NfdW5peC5wcm8KQEAgLTEsNzMgKzEsNzMgQEAKIC8qIG9zX3VuaXguYyAqLwotZXh0ZXJuIHZvaWQgbWNoX3dyaXRlIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gaW50IG1jaF9pbmNoYXIgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IG1heGxlbiwgbG9uZyB3dGltZSwgaW50IHRiX2NoYW5nZV9jbnQpKTsKLWV4dGVybiBpbnQgbWNoX2NoYXJfYXZhaWwgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gbG9uZ191IG1jaF90b3RhbF9tZW0gX19BUkdTKChpbnQgc3BlY2lhbCkpOwotZXh0ZXJuIHZvaWQgbWNoX2RlbGF5IF9fQVJHUygobG9uZyBtc2VjLCBpbnQgaWdub3JlaW5wdXQpKTsKLWV4dGVybiBpbnQgbWNoX3N0YWNrY2hlY2sgX19BUkdTKChjaGFyICpwKSk7Ci1leHRlcm4gdm9pZCBtY2hfc3RhcnRqbXAgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfZW5kam1wIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX2RpZGptcCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1jaF9zdXNwZW5kIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCByZXNldF9zaWduYWxzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCB2aW1faGFuZGxlX3NpZ25hbCBfX0FSR1MoKGludCBzaWcpKTsKLWV4dGVybiBpbnQgbWNoX2NoZWNrX3dpbiBfX0FSR1MoKGludCBhcmdjLCBjaGFyICoqYXJndikpOwotZXh0ZXJuIGludCBtY2hfaW5wdXRfaXNhdHR5IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfY2FuX3Jlc3RvcmVfdGl0bGUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1jaF9jYW5fcmVzdG9yZV9pY29uIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX3NldHRpdGxlIF9fQVJHUygoY2hhcl91ICp0aXRsZSwgY2hhcl91ICppY29uKSk7Ci1leHRlcm4gdm9pZCBtY2hfcmVzdG9yZV90aXRsZSBfX0FSR1MoKGludCB3aGljaCkpOwotZXh0ZXJuIGludCB2aW1faXNfeHRlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgdXNlX3h0ZXJtX21vdXNlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCB2aW1faXNfaXJpcyBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCB2aW1faXNfdnQzMDAgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgdmltX2lzX2Zhc3R0ZXJtIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF9nZXRfdXNlcl9uYW1lIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gaW50IG1jaF9nZXRfdW5hbWUgX19BUkdTKCh1aWRfdCB1aWQsIGNoYXJfdSAqcywgaW50IGxlbikpOwotZXh0ZXJuIHZvaWQgbWNoX2dldF9ob3N0X25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKLWV4dGVybiBsb25nIG1jaF9nZXRfcGlkIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfZGlybmFtZSBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgbGVuKSk7Ci1leHRlcm4gdm9pZCBzbGFzaF9hZGp1c3QgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgbWNoX0Z1bGxOYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgY2hhcl91ICpidWYsIGludCBsZW4sIGludCBmb3JjZSkpOwotZXh0ZXJuIGludCBtY2hfaXNGdWxsTmFtZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKLWV4dGVybiB2b2lkIGZuYW1lX2Nhc2UgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBsZW4pKTsKLWV4dGVybiBsb25nIG1jaF9nZXRwZXJtIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF9zZXRwZXJtIF9fQVJHUygoY2hhcl91ICpuYW1lLCBsb25nIHBlcm0pKTsKLWV4dGVybiB2aW1fYWNsX1QgbWNoX2dldF9hY2wgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Ci1leHRlcm4gdm9pZCBtY2hfc2V0X2FjbCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIHZpbV9hY2xfVCBhY2xlbnQpKTsKLWV4dGVybiB2b2lkIG1jaF9mcmVlX2FjbCBfX0FSR1MoKHZpbV9hY2xfVCBhY2xlbnQpKTsKLWV4dGVybiB2b2lkIG1jaF9oaWRlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF9pc2RpciBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCBtY2hfY2FuX2V4ZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCBtY2hfbm9kZXR5cGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiB2b2lkIG1jaF9lYXJseV9pbml0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX2ZyZWVfbWVtIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX2V4aXQgX19BUkdTKChpbnQgcikpOwotZXh0ZXJuIHZvaWQgbWNoX3NldHRtb2RlIF9fQVJHUygoaW50IHRtb2RlKSk7Ci1leHRlcm4gdm9pZCBnZXRfc3R0eSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1jaF9zZXRtb3VzZSBfX0FSR1MoKGludCBvbikpOwotZXh0ZXJuIHZvaWQgY2hlY2tfbW91c2VfdGVybWNvZGUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1jaF9zY3JlZW5tb2RlIF9fQVJHUygoY2hhcl91ICphcmcpKTsKLWV4dGVybiBpbnQgbWNoX2dldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1jaF9uZXdfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfY2FsbF9zaGVsbCBfX0FSR1MoKGNoYXJfdSAqY21kLCBpbnQgb3B0aW9ucykpOwotZXh0ZXJuIHZvaWQgbWNoX2JyZWFrY2hlY2sgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1jaF9leHBhbmRwYXRoIF9fQVJHUygoZ2FycmF5X1QgKmdhcCwgY2hhcl91ICpwYXRoLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiBpbnQgbWNoX2V4cGFuZF93aWxkY2FyZHMgX19BUkdTKChpbnQgbnVtX3BhdCwgY2hhcl91ICoqcGF0LCBpbnQgKm51bV9maWxlLCBjaGFyX3UgKioqZmlsZSwgaW50IGZsYWdzKSk7Ci1leHRlcm4gaW50IG1jaF9oYXNfZXhwX3dpbGRjYXJkIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gaW50IG1jaF9oYXNfd2lsZGNhcmQgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgbWNoX2xpYmNhbGwgX19BUkdTKChjaGFyX3UgKmxpYm5hbWUsIGNoYXJfdSAqZnVuY25hbWUsIGNoYXJfdSAqYXJnc3RyaW5nLCBpbnQgYXJnaW50LCBjaGFyX3UgKipzdHJpbmdfcmVzdWx0LCBpbnQgKm51bWJlcl9yZXN1bHQpKTsKLWV4dGVybiB2b2lkIHNldHVwX3Rlcm1fY2xpcCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHN0YXJ0X3h0ZXJtX3RyYWNlIF9fQVJHUygoaW50IGJ1dHRvbikpOwotZXh0ZXJuIHZvaWQgc3RvcF94dGVybV90cmFjZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGNsZWFyX3h0ZXJtX2NsaXAgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGNsaXBfeHRlcm1fb3duX3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci1leHRlcm4gdm9pZCBjbGlwX3h0ZXJtX2xvc2Vfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLWV4dGVybiB2b2lkIGNsaXBfeHRlcm1fcmVxdWVzdF9zZWxlY3Rpb24gX19BUkdTKChWaW1DbGlwYm9hcmQgKmNiZCkpOwotZXh0ZXJuIHZvaWQgY2xpcF94dGVybV9zZXRfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLWV4dGVybiBpbnQgeHNtcF9oYW5kbGVfcmVxdWVzdHMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB4c21wX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB4c21wX2Nsb3NlIF9fQVJHUygodm9pZCkpOwordm9pZCBtY2hfd3JpdGUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKK2ludCBtY2hfaW5jaGFyIF9fQVJHUygoY2hhcl91ICpidWYsIGludCBtYXhsZW4sIGxvbmcgd3RpbWUsIGludCB0Yl9jaGFuZ2VfY250KSk7CitpbnQgbWNoX2NoYXJfYXZhaWwgX19BUkdTKCh2b2lkKSk7Citsb25nX3UgbWNoX3RvdGFsX21lbSBfX0FSR1MoKGludCBzcGVjaWFsKSk7Cit2b2lkIG1jaF9kZWxheSBfX0FSR1MoKGxvbmcgbXNlYywgaW50IGlnbm9yZWlucHV0KSk7CitpbnQgbWNoX3N0YWNrY2hlY2sgX19BUkdTKChjaGFyICpwKSk7Cit2b2lkIG1jaF9zdGFydGptcCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX2VuZGptcCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX2RpZGptcCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX3N1c3BlbmQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9pbml0IF9fQVJHUygodm9pZCkpOwordm9pZCByZXNldF9zaWduYWxzIF9fQVJHUygodm9pZCkpOworaW50IHZpbV9oYW5kbGVfc2lnbmFsIF9fQVJHUygoaW50IHNpZykpOworaW50IG1jaF9jaGVja193aW4gX19BUkdTKChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsKK2ludCBtY2hfaW5wdXRfaXNhdHR5IF9fQVJHUygodm9pZCkpOworaW50IG1jaF9jYW5fcmVzdG9yZV90aXRsZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfY2FuX3Jlc3RvcmVfaWNvbiBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX3NldHRpdGxlIF9fQVJHUygoY2hhcl91ICp0aXRsZSwgY2hhcl91ICppY29uKSk7Cit2b2lkIG1jaF9yZXN0b3JlX3RpdGxlIF9fQVJHUygoaW50IHdoaWNoKSk7CitpbnQgdmltX2lzX3h0ZXJtIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgdXNlX3h0ZXJtX21vdXNlIF9fQVJHUygodm9pZCkpOworaW50IHZpbV9pc19pcmlzIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgdmltX2lzX3Z0MzAwIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgdmltX2lzX2Zhc3R0ZXJtIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgbWNoX2dldF91c2VyX25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKK2ludCBtY2hfZ2V0X3VuYW1lIF9fQVJHUygodWlkX3QgdWlkLCBjaGFyX3UgKnMsIGludCBsZW4pKTsKK3ZvaWQgbWNoX2dldF9ob3N0X25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKK2xvbmcgbWNoX2dldF9waWQgX19BUkdTKCh2b2lkKSk7CitpbnQgbWNoX2Rpcm5hbWUgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGxlbikpOwordm9pZCBzbGFzaF9hZGp1c3QgX19BUkdTKChjaGFyX3UgKnApKTsKK2ludCBtY2hfRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbiwgaW50IGZvcmNlKSk7CitpbnQgbWNoX2lzRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Cit2b2lkIGZuYW1lX2Nhc2UgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBsZW4pKTsKK2xvbmcgbWNoX2dldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBtY2hfc2V0cGVybSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgbG9uZyBwZXJtKSk7Cit2aW1fYWNsX1QgbWNoX2dldF9hY2wgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Cit2b2lkIG1jaF9zZXRfYWNsIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgdmltX2FjbF9UIGFjbGVudCkpOwordm9pZCBtY2hfZnJlZV9hY2wgX19BUkdTKCh2aW1fYWNsX1QgYWNsZW50KSk7Cit2b2lkIG1jaF9oaWRlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgbWNoX2lzZGlyIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgbWNoX2Nhbl9leGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBtY2hfbm9kZXR5cGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK3ZvaWQgbWNoX2Vhcmx5X2luaXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9mcmVlX21lbSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX2V4aXQgX19BUkdTKChpbnQgcikpOwordm9pZCBtY2hfc2V0dG1vZGUgX19BUkdTKChpbnQgdG1vZGUpKTsKK3ZvaWQgZ2V0X3N0dHkgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9zZXRtb3VzZSBfX0FSR1MoKGludCBvbikpOwordm9pZCBjaGVja19tb3VzZV90ZXJtY29kZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfc2NyZWVubW9kZSBfX0FSR1MoKGNoYXJfdSAqYXJnKSk7CitpbnQgbWNoX2dldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9zZXRfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwordm9pZCBtY2hfbmV3X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfY2FsbF9zaGVsbCBfX0FSR1MoKGNoYXJfdSAqY21kLCBpbnQgb3B0aW9ucykpOwordm9pZCBtY2hfYnJlYWtjaGVjayBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfZXhwYW5kcGF0aCBfX0FSR1MoKGdhcnJheV9UICpnYXAsIGNoYXJfdSAqcGF0aCwgaW50IGZsYWdzKSk7CitpbnQgbWNoX2V4cGFuZF93aWxkY2FyZHMgX19BUkdTKChpbnQgbnVtX3BhdCwgY2hhcl91ICoqcGF0LCBpbnQgKm51bV9maWxlLCBjaGFyX3UgKioqZmlsZSwgaW50IGZsYWdzKSk7CitpbnQgbWNoX2hhc19leHBfd2lsZGNhcmQgX19BUkdTKChjaGFyX3UgKnApKTsKK2ludCBtY2hfaGFzX3dpbGRjYXJkIF9fQVJHUygoY2hhcl91ICpwKSk7CitpbnQgbWNoX2xpYmNhbGwgX19BUkdTKChjaGFyX3UgKmxpYm5hbWUsIGNoYXJfdSAqZnVuY25hbWUsIGNoYXJfdSAqYXJnc3RyaW5nLCBpbnQgYXJnaW50LCBjaGFyX3UgKipzdHJpbmdfcmVzdWx0LCBpbnQgKm51bWJlcl9yZXN1bHQpKTsKK3ZvaWQgc2V0dXBfdGVybV9jbGlwIF9fQVJHUygodm9pZCkpOwordm9pZCBzdGFydF94dGVybV90cmFjZSBfX0FSR1MoKGludCBidXR0b24pKTsKK3ZvaWQgc3RvcF94dGVybV90cmFjZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgY2xlYXJfeHRlcm1fY2xpcCBfX0FSR1MoKHZvaWQpKTsKK2ludCBjbGlwX3h0ZXJtX293bl9zZWxlY3Rpb24gX19BUkdTKChWaW1DbGlwYm9hcmQgKmNiZCkpOwordm9pZCBjbGlwX3h0ZXJtX2xvc2Vfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKK3ZvaWQgY2xpcF94dGVybV9yZXF1ZXN0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Cit2b2lkIGNsaXBfeHRlcm1fc2V0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7CitpbnQgeHNtcF9oYW5kbGVfcmVxdWVzdHMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHhzbXBfaW5pdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgeHNtcF9jbG9zZSBfX0FSR1MoKHZvaWQpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL29zX3dpbjMyLnBybyBiL3NyYy9wcm90by9vc193aW4zMi5wcm8KaW5kZXggZDJmNWQwOC4uNWNhODVjNyAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL29zX3dpbjMyLnBybworKysgYi9zcmMvcHJvdG8vb3Nfd2luMzIucHJvCkBAIC0xLDU0ICsxLDU0IEBACiAvKiBvc193aW4zMi5jICovCi1leHRlcm4gaW50IGR5bl9saWJpbnRsX2luaXQgX19BUkdTKChjaGFyICpsaWJuYW1lKSk7Ci1leHRlcm4gdm9pZCBkeW5fbGliaW50bF9lbmQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBQbGF0Zm9ybUlkIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfd2luZG93czk1IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX3NldG1vdXNlIF9fQVJHUygoaW50IG9uKSk7Ci1leHRlcm4gdm9pZCBtY2hfdXBkYXRlX2N1cnNvciBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWNoX2NoYXJfYXZhaWwgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1jaF9pbmNoYXIgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IG1heGxlbiwgbG9uZyB0aW1lLCBpbnQgdGJfY2hhbmdlX2NudCkpOwotZXh0ZXJuIHZvaWQgbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfZXhpdCBfX0FSR1MoKGludCByKSk7Ci1leHRlcm4gaW50IG1jaF9jaGVja193aW4gX19BUkdTKChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsKLWV4dGVybiB2b2lkIGZuYW1lX2Nhc2UgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBsZW4pKTsKLWV4dGVybiBpbnQgbWNoX2dldF91c2VyX25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKLWV4dGVybiB2b2lkIG1jaF9nZXRfaG9zdF9uYW1lIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gbG9uZyBtY2hfZ2V0X3BpZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWNoX2Rpcm5hbWUgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGxlbikpOwotZXh0ZXJuIGxvbmcgbWNoX2dldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgbWNoX3NldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUsIGxvbmcgcGVybSkpOwotZXh0ZXJuIHZvaWQgbWNoX2hpZGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgbWNoX2lzZGlyIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF9pc19saW5rZWQgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF93cml0YWJsZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCBtY2hfY2FuX2V4ZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCBtY2hfbm9kZXR5cGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiB2aW1fYWNsX1QgbWNoX2dldF9hY2wgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Ci1leHRlcm4gdm9pZCBtY2hfc2V0X2FjbCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIHZpbV9hY2xfVCBhY2wpKTsKLWV4dGVybiB2b2lkIG1jaF9mcmVlX2FjbCBfX0FSR1MoKHZpbV9hY2xfVCBhY2wpKTsKLWV4dGVybiB2b2lkIG1jaF9zZXR0bW9kZSBfX0FSR1MoKGludCB0bW9kZSkpOwotZXh0ZXJuIGludCBtY2hfZ2V0X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1jaF9zZXRfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX25ld19zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfc2V0X3dpbnNpemVfbm93IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfY2FsbF9zaGVsbCBfX0FSR1MoKGNoYXJfdSAqY21kLCBpbnQgb3B0aW9ucykpOwotZXh0ZXJuIHZvaWQgbWNoX3NldF9ub3JtYWxfY29sb3JzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX3dyaXRlIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gdm9pZCBtY2hfZGVsYXkgX19BUkdTKChsb25nIG1zZWMsIGludCBpZ25vcmVpbnB1dCkpOwotZXh0ZXJuIGludCBtY2hfcmVtb3ZlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gdm9pZCBtY2hfYnJlYWtjaGVjayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBsb25nX3UgbWNoX2F2YWlsX21lbSBfX0FSR1MoKGludCBzcGVjaWFsKSk7Ci1leHRlcm4gaW50IG1jaF93cmVuYW1lIF9fQVJHUygoV0NIQVIgKndvbGQsIFdDSEFSICp3bmV3KSk7Ci1leHRlcm4gaW50IG1jaF9yZW5hbWUgX19BUkdTKChjb25zdCBjaGFyICpwc3pPbGRGaWxlLCBjb25zdCBjaGFyICpwc3pOZXdGaWxlKSk7Ci1leHRlcm4gY2hhciAqZGVmYXVsdF9zaGVsbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWNoX2FjY2VzcyBfX0FSR1MoKGNoYXIgKm4sIGludCBwKSk7Ci1leHRlcm4gaW50IG1jaF9vcGVuIF9fQVJHUygoY2hhciAqbmFtZSwgaW50IGZsYWdzLCBpbnQgbW9kZSkpOwotZXh0ZXJuIEZJTEUgKm1jaF9mb3BlbiBfX0FSR1MoKGNoYXIgKm5hbWUsIGNoYXIgKm1vZGUpKTsKLWV4dGVybiBpbnQgbWNoX2NvcHlfZmlsZV9hdHRyaWJ1dGUgX19BUkdTKChjaGFyX3UgKmZyb20sIGNoYXJfdSAqdG8pKTsKLWV4dGVybiBpbnQgbXlyZXNldHN0a29mbHcgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGdldF9jbWRfYXJnc1cgX19BUkdTKChjaGFyICoqKmFyZ3ZwKSk7Ci1leHRlcm4gdm9pZCBmcmVlX2NtZF9hcmdzVyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHVzZWRfZmlsZV9hcmcgX19BUkdTKChjaGFyICpuYW1lLCBpbnQgbGl0ZXJhbCwgaW50IGZ1bGxfcGF0aCwgaW50IGRpZmZfbW9kZSkpOwotZXh0ZXJuIHZvaWQgc2V0X2FsaXN0X2NvdW50IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZml4X2FyZ19lbmMgX19BUkdTKCh2b2lkKSk7CitpbnQgZHluX2xpYmludGxfaW5pdCBfX0FSR1MoKGNoYXIgKmxpYm5hbWUpKTsKK3ZvaWQgZHluX2xpYmludGxfZW5kIF9fQVJHUygodm9pZCkpOwordm9pZCBQbGF0Zm9ybUlkIF9fQVJHUygodm9pZCkpOworaW50IG1jaF93aW5kb3dzOTUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9zZXRtb3VzZSBfX0FSR1MoKGludCBvbikpOwordm9pZCBtY2hfdXBkYXRlX2N1cnNvciBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfY2hhcl9hdmFpbCBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfaW5jaGFyIF9fQVJHUygoY2hhcl91ICpidWYsIGludCBtYXhsZW4sIGxvbmcgdGltZSwgaW50IHRiX2NoYW5nZV9jbnQpKTsKK3ZvaWQgbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9leGl0IF9fQVJHUygoaW50IHIpKTsKK2ludCBtY2hfY2hlY2tfd2luIF9fQVJHUygoaW50IGFyZ2MsIGNoYXIgKiphcmd2KSk7Cit2b2lkIGZuYW1lX2Nhc2UgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBsZW4pKTsKK2ludCBtY2hfZ2V0X3VzZXJfbmFtZSBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxlbikpOwordm9pZCBtY2hfZ2V0X2hvc3RfbmFtZSBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxlbikpOworbG9uZyBtY2hfZ2V0X3BpZCBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfZGlybmFtZSBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgbGVuKSk7Citsb25nIG1jaF9nZXRwZXJtIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgbWNoX3NldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUsIGxvbmcgcGVybSkpOwordm9pZCBtY2hfaGlkZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOworaW50IG1jaF9pc2RpciBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOworaW50IG1jaF9pc19saW5rZWQgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7CitpbnQgbWNoX3dyaXRhYmxlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgbWNoX2Nhbl9leGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBtY2hfbm9kZXR5cGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK3ZpbV9hY2xfVCBtY2hfZ2V0X2FjbCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKK3ZvaWQgbWNoX3NldF9hY2wgX19BUkdTKChjaGFyX3UgKmZuYW1lLCB2aW1fYWNsX1QgYWNsKSk7Cit2b2lkIG1jaF9mcmVlX2FjbCBfX0FSR1MoKHZpbV9hY2xfVCBhY2wpKTsKK3ZvaWQgbWNoX3NldHRtb2RlIF9fQVJHUygoaW50IHRtb2RlKSk7CitpbnQgbWNoX2dldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9zZXRfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwordm9pZCBtY2hfbmV3X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX3NldF93aW5zaXplX25vdyBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfY2FsbF9zaGVsbCBfX0FSR1MoKGNoYXJfdSAqY21kLCBpbnQgb3B0aW9ucykpOwordm9pZCBtY2hfc2V0X25vcm1hbF9jb2xvcnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF93cml0ZSBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxlbikpOwordm9pZCBtY2hfZGVsYXkgX19BUkdTKChsb25nIG1zZWMsIGludCBpZ25vcmVpbnB1dCkpOworaW50IG1jaF9yZW1vdmUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK3ZvaWQgbWNoX2JyZWFrY2hlY2sgX19BUkdTKCh2b2lkKSk7Citsb25nX3UgbWNoX2F2YWlsX21lbSBfX0FSR1MoKGludCBzcGVjaWFsKSk7CitpbnQgbWNoX3dyZW5hbWUgX19BUkdTKChXQ0hBUiAqd29sZCwgV0NIQVIgKnduZXcpKTsKK2ludCBtY2hfcmVuYW1lIF9fQVJHUygoY29uc3QgY2hhciAqcHN6T2xkRmlsZSwgY29uc3QgY2hhciAqcHN6TmV3RmlsZSkpOworY2hhciAqZGVmYXVsdF9zaGVsbCBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfYWNjZXNzIF9fQVJHUygoY2hhciAqbiwgaW50IHApKTsKK2ludCBtY2hfb3BlbiBfX0FSR1MoKGNoYXIgKm5hbWUsIGludCBmbGFncywgaW50IG1vZGUpKTsKK0ZJTEUgKm1jaF9mb3BlbiBfX0FSR1MoKGNoYXIgKm5hbWUsIGNoYXIgKm1vZGUpKTsKK2ludCBtY2hfY29weV9maWxlX2F0dHJpYnV0ZSBfX0FSR1MoKGNoYXJfdSAqZnJvbSwgY2hhcl91ICp0bykpOworaW50IG15cmVzZXRzdGtvZmx3IF9fQVJHUygodm9pZCkpOworaW50IGdldF9jbWRfYXJnc1cgX19BUkdTKChjaGFyICoqKmFyZ3ZwKSk7Cit2b2lkIGZyZWVfY21kX2FyZ3NXIF9fQVJHUygodm9pZCkpOwordm9pZCB1c2VkX2ZpbGVfYXJnIF9fQVJHUygoY2hhciAqbmFtZSwgaW50IGxpdGVyYWwsIGludCBmdWxsX3BhdGgsIGludCBkaWZmX21vZGUpKTsKK3ZvaWQgc2V0X2FsaXN0X2NvdW50IF9fQVJHUygodm9pZCkpOwordm9pZCBmaXhfYXJnX2VuYyBfX0FSR1MoKHZvaWQpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL3F1aWNrZml4LnBybyBiL3NyYy9wcm90by9xdWlja2ZpeC5wcm8KaW5kZXggZTkzOWRiMi4uNDA4YmY2ZCAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL3F1aWNrZml4LnBybworKysgYi9zcmMvcHJvdG8vcXVpY2tmaXgucHJvCkBAIC0xLDMwICsxLDMwIEBACiAvKiBxdWlja2ZpeC5jICovCi1leHRlcm4gaW50IHFmX2luaXQgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqZWZpbGUsIGNoYXJfdSAqZXJyb3Jmb3JtYXQsIGludCBuZXdsaXN0KSk7Ci1leHRlcm4gdm9pZCBxZl9mcmVlX2FsbCBfX0FSR1MoKHdpbl9UICp3cCkpOwotZXh0ZXJuIHZvaWQgY29weV9sb2NsaXN0IF9fQVJHUygod2luX1QgKmZyb20sIHdpbl9UICp0bykpOwotZXh0ZXJuIHZvaWQgcWZfanVtcCBfX0FSR1MoKHFmX2luZm9fVCAqcWksIGludCBkaXIsIGludCBlcnJvcm5yLCBpbnQgZm9yY2VpdCkpOwotZXh0ZXJuIHZvaWQgcWZfbGlzdCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgcWZfYWdlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBxZl9tYXJrX2FkanVzdCBfX0FSR1MoKHdpbl9UICp3cCwgbGluZW5yX1QgbGluZTEsIGxpbmVucl9UIGxpbmUyLCBsb25nIGFtb3VudCwgbG9uZyBhbW91bnRfYWZ0ZXIpKTsKLWV4dGVybiB2b2lkIGV4X2N3aW5kb3cgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2NjbG9zZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfY29wZW4gX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiBsaW5lbnJfVCBxZl9jdXJyZW50X2VudHJ5IF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gaW50IGJ0X3F1aWNrZml4IF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIGludCBidF9ub2ZpbGUgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gaW50IGJ0X2RvbnR3cml0ZSBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiBpbnQgYnRfZG9udHdyaXRlX21zZyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiBpbnQgYnVmX2hpZGUgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gaW50IGdyZXBfaW50ZXJuYWwgX19BUkdTKChjbWRpZHhfVCBjbWRpZHgpKTsKLWV4dGVybiB2b2lkIGV4X21ha2UgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2NjIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9jbmV4dCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfY2ZpbGUgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X3ZpbWdyZXAgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiBjaGFyX3UgKnNraXBfdmltZ3JlcF9wYXQgX19BUkdTKChjaGFyX3UgKnAsIGNoYXJfdSAqKnMsIGludCAqZmxhZ3MpKTsKLWV4dGVybiBpbnQgZ2V0X2Vycm9ybGlzdCBfX0FSR1MoKHdpbl9UICp3cCwgbGlzdF9UICpsaXN0KSk7Ci1leHRlcm4gaW50IHNldF9lcnJvcmxpc3QgX19BUkdTKCh3aW5fVCAqd3AsIGxpc3RfVCAqbGlzdCwgaW50IGFjdGlvbikpOwotZXh0ZXJuIHZvaWQgZXhfY2J1ZmZlciBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfY2V4cHIgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2hlbHBncmVwIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitpbnQgcWZfaW5pdCBfX0FSR1MoKHdpbl9UICp3cCwgY2hhcl91ICplZmlsZSwgY2hhcl91ICplcnJvcmZvcm1hdCwgaW50IG5ld2xpc3QpKTsKK3ZvaWQgcWZfZnJlZV9hbGwgX19BUkdTKCh3aW5fVCAqd3ApKTsKK3ZvaWQgY29weV9sb2NsaXN0IF9fQVJHUygod2luX1QgKmZyb20sIHdpbl9UICp0bykpOwordm9pZCBxZl9qdW1wIF9fQVJHUygocWZfaW5mb19UICpxaSwgaW50IGRpciwgaW50IGVycm9ybnIsIGludCBmb3JjZWl0KSk7Cit2b2lkIHFmX2xpc3QgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgcWZfYWdlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIHFmX21hcmtfYWRqdXN0IF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsaW5lMSwgbGluZW5yX1QgbGluZTIsIGxvbmcgYW1vdW50LCBsb25nIGFtb3VudF9hZnRlcikpOwordm9pZCBleF9jd2luZG93IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2NjbG9zZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9jb3BlbiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworbGluZW5yX1QgcWZfY3VycmVudF9lbnRyeSBfX0FSR1MoKHdpbl9UICp3cCkpOworaW50IGJ0X3F1aWNrZml4IF9fQVJHUygoYnVmX1QgKmJ1ZikpOworaW50IGJ0X25vZmlsZSBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2ludCBidF9kb250d3JpdGUgX19BUkdTKChidWZfVCAqYnVmKSk7CitpbnQgYnRfZG9udHdyaXRlX21zZyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2ludCBidWZfaGlkZSBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2ludCBncmVwX2ludGVybmFsIF9fQVJHUygoY21kaWR4X1QgY21kaWR4KSk7Cit2b2lkIGV4X21ha2UgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfY2MgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfY25leHQgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfY2ZpbGUgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfdmltZ3JlcCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworY2hhcl91ICpza2lwX3ZpbWdyZXBfcGF0IF9fQVJHUygoY2hhcl91ICpwLCBjaGFyX3UgKipzLCBpbnQgKmZsYWdzKSk7CitpbnQgZ2V0X2Vycm9ybGlzdCBfX0FSR1MoKHdpbl9UICp3cCwgbGlzdF9UICpsaXN0KSk7CitpbnQgc2V0X2Vycm9ybGlzdCBfX0FSR1MoKHdpbl9UICp3cCwgbGlzdF9UICpsaXN0LCBpbnQgYWN0aW9uKSk7Cit2b2lkIGV4X2NidWZmZXIgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfY2V4cHIgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfaGVscGdyZXAgX19BUkdTKChleGFyZ19UICplYXApKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL3NjcmVlbi5wcm8gYi9zcmMvcHJvdG8vc2NyZWVuLnBybwppbmRleCAyYWJmMThiLi5jNTM0YTFmIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vc2NyZWVuLnBybworKysgYi9zcmMvcHJvdG8vc2NyZWVuLnBybwpAQCAtMSw1MCArMSw1MCBAQAogLyogc2NyZWVuLmMgKi8KLWV4dGVybiB2b2lkIHJlZHJhd19sYXRlciBfX0FSR1MoKGludCB0eXBlKSk7Ci1leHRlcm4gdm9pZCByZWRyYXdfd2luX2xhdGVyIF9fQVJHUygod2luX1QgKndwLCBpbnQgdHlwZSkpOwotZXh0ZXJuIHZvaWQgcmVkcmF3X2xhdGVyX2NsZWFyIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgcmVkcmF3X2FsbF9sYXRlciBfX0FSR1MoKGludCB0eXBlKSk7Ci1leHRlcm4gdm9pZCByZWRyYXdfY3VyYnVmX2xhdGVyIF9fQVJHUygoaW50IHR5cGUpKTsKLWV4dGVybiB2b2lkIHJlZHJhd19idWZfbGF0ZXIgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgdHlwZSkpOwotZXh0ZXJuIHZvaWQgcmVkcmF3V2lubGluZSBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGludCBpbnZhbGlkKSk7Ci1leHRlcm4gdm9pZCB1cGRhdGVfY3VyYnVmIF9fQVJHUygoaW50IHR5cGUpKTsKLWV4dGVybiB2b2lkIHVwZGF0ZV9zY3JlZW4gX19BUkdTKChpbnQgdHlwZSkpOwotZXh0ZXJuIHZvaWQgdXBkYXRlX2RlYnVnX3NpZ24gX19BUkdTKChidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gdm9pZCB1cGRhdGVXaW5kb3cgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIHJsX21pcnJvciBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7Ci1leHRlcm4gdm9pZCBzdGF0dXNfcmVkcmF3X2FsbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHN0YXR1c19yZWRyYXdfY3VyYnVmIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgcmVkcmF3X3N0YXR1c2xpbmVzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd2luX3JlZHJhd19sYXN0X3N0YXR1cyBfX0FSR1MoKGZyYW1lX1QgKmZycCkpOwotZXh0ZXJuIHZvaWQgd2luX3JlZHJfc3RhdHVzX21hdGNoZXMgX19BUkdTKChleHBhbmRfVCAqeHAsIGludCBudW1fbWF0Y2hlcywgY2hhcl91ICoqbWF0Y2hlcywgaW50IG1hdGNoLCBpbnQgc2hvd3RhaWwpKTsKLWV4dGVybiB2b2lkIHdpbl9yZWRyX3N0YXR1cyBfX0FSR1MoKHdpbl9UICp3cCkpOwotZXh0ZXJuIGludCBzdGxfY29ubmVjdGVkIF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gaW50IGdldF9rZXltYXBfc3RyIF9fQVJHUygod2luX1QgKndwLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbikpOwotZXh0ZXJuIHZvaWQgc2NyZWVuX3B1dGNoYXIgX19BUkdTKChpbnQgYywgaW50IHJvdywgaW50IGNvbCwgaW50IGF0dHIpKTsKLWV4dGVybiB2b2lkIHNjcmVlbl9nZXRieXRlcyBfX0FSR1MoKGludCByb3csIGludCBjb2wsIGNoYXJfdSAqYnl0ZXMsIGludCAqYXR0cnApKTsKLWV4dGVybiB2b2lkIHNjcmVlbl9wdXRzIF9fQVJHUygoY2hhcl91ICp0ZXh0LCBpbnQgcm93LCBpbnQgY29sLCBpbnQgYXR0cikpOwotZXh0ZXJuIHZvaWQgc2NyZWVuX3B1dHNfbGVuIF9fQVJHUygoY2hhcl91ICp0ZXh0LCBpbnQgbGVuLCBpbnQgcm93LCBpbnQgY29sLCBpbnQgYXR0cikpOwotZXh0ZXJuIHZvaWQgc2NyZWVuX3N0b3BfaGlnaGxpZ2h0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgcmVzZXRfY3Rlcm1fY29sb3JzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2NyZWVuX2RyYXdfcmVjdGFuZ2xlIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCwgaW50IGhlaWdodCwgaW50IHdpZHRoLCBpbnQgaW52ZXJ0KSk7Ci1leHRlcm4gdm9pZCBzY3JlZW5fZmlsbCBfX0FSR1MoKGludCBzdGFydF9yb3csIGludCBlbmRfcm93LCBpbnQgc3RhcnRfY29sLCBpbnQgZW5kX2NvbCwgaW50IGMxLCBpbnQgYzIsIGludCBhdHRyKSk7Ci1leHRlcm4gdm9pZCBjaGVja19mb3JfZGVsYXkgX19BUkdTKChpbnQgY2hlY2tfbXNnX3Njcm9sbCkpOwotZXh0ZXJuIGludCBzY3JlZW5fdmFsaWQgX19BUkdTKChpbnQgY2xlYXIpKTsKLWV4dGVybiB2b2lkIHNjcmVlbmFsbG9jIF9fQVJHUygoaW50IGNsZWFyKSk7Ci1leHRlcm4gdm9pZCBmcmVlX3NjcmVlbmxpbmVzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2NyZWVuY2xlYXIgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGNhbl9jbGVhciBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIHZvaWQgc2NyZWVuX3N0YXJ0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd2luZGdvdG8gX19BUkdTKChpbnQgcm93LCBpbnQgY29sKSk7Ci1leHRlcm4gdm9pZCBzZXRjdXJzb3IgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHdpbl9pbnNfbGluZXMgX19BUkdTKCh3aW5fVCAqd3AsIGludCByb3csIGludCBsaW5lX2NvdW50LCBpbnQgaW52YWxpZCwgaW50IG1heWNsZWFyKSk7Ci1leHRlcm4gaW50IHdpbl9kZWxfbGluZXMgX19BUkdTKCh3aW5fVCAqd3AsIGludCByb3csIGludCBsaW5lX2NvdW50LCBpbnQgaW52YWxpZCwgaW50IG1heWNsZWFyKSk7Ci1leHRlcm4gaW50IHNjcmVlbl9pbnNfbGluZXMgX19BUkdTKChpbnQgb2ZmLCBpbnQgcm93LCBpbnQgbGluZV9jb3VudCwgaW50IGVuZCwgd2luX1QgKndwKSk7Ci1leHRlcm4gaW50IHNjcmVlbl9kZWxfbGluZXMgX19BUkdTKChpbnQgb2ZmLCBpbnQgcm93LCBpbnQgbGluZV9jb3VudCwgaW50IGVuZCwgaW50IGZvcmNlLCB3aW5fVCAqd3ApKTsKLWV4dGVybiBpbnQgc2hvd21vZGUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB1bnNob3dtb2RlIF9fQVJHUygoaW50IGZvcmNlKSk7Ci1leHRlcm4gdm9pZCBnZXRfdHJhbnNfYnVmbmFtZSBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiBpbnQgcmVkcmF3aW5nIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtZXNzYWdpbmcgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzaG93cnVsZXIgX19BUkdTKChpbnQgYWx3YXlzKSk7Ci1leHRlcm4gaW50IG51bWJlcl93aWR0aCBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCByZWRyYXdfbGF0ZXIgX19BUkdTKChpbnQgdHlwZSkpOwordm9pZCByZWRyYXdfd2luX2xhdGVyIF9fQVJHUygod2luX1QgKndwLCBpbnQgdHlwZSkpOwordm9pZCByZWRyYXdfbGF0ZXJfY2xlYXIgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHJlZHJhd19hbGxfbGF0ZXIgX19BUkdTKChpbnQgdHlwZSkpOwordm9pZCByZWRyYXdfY3VyYnVmX2xhdGVyIF9fQVJHUygoaW50IHR5cGUpKTsKK3ZvaWQgcmVkcmF3X2J1Zl9sYXRlciBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCB0eXBlKSk7Cit2b2lkIHJlZHJhd1dpbmxpbmUgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBpbnQgaW52YWxpZCkpOwordm9pZCB1cGRhdGVfY3VyYnVmIF9fQVJHUygoaW50IHR5cGUpKTsKK3ZvaWQgdXBkYXRlX3NjcmVlbiBfX0FSR1MoKGludCB0eXBlKSk7Cit2b2lkIHVwZGF0ZV9kZWJ1Z19zaWduIF9fQVJHUygoYnVmX1QgKmJ1ZiwgbGluZW5yX1QgbG51bSkpOwordm9pZCB1cGRhdGVXaW5kb3cgX19BUkdTKCh3aW5fVCAqd3ApKTsKK3ZvaWQgcmxfbWlycm9yIF9fQVJHUygoY2hhcl91ICpzdHIpKTsKK3ZvaWQgc3RhdHVzX3JlZHJhd19hbGwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHN0YXR1c19yZWRyYXdfY3VyYnVmIF9fQVJHUygodm9pZCkpOwordm9pZCByZWRyYXdfc3RhdHVzbGluZXMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHdpbl9yZWRyYXdfbGFzdF9zdGF0dXMgX19BUkdTKChmcmFtZV9UICpmcnApKTsKK3ZvaWQgd2luX3JlZHJfc3RhdHVzX21hdGNoZXMgX19BUkdTKChleHBhbmRfVCAqeHAsIGludCBudW1fbWF0Y2hlcywgY2hhcl91ICoqbWF0Y2hlcywgaW50IG1hdGNoLCBpbnQgc2hvd3RhaWwpKTsKK3ZvaWQgd2luX3JlZHJfc3RhdHVzIF9fQVJHUygod2luX1QgKndwKSk7CitpbnQgc3RsX2Nvbm5lY3RlZCBfX0FSR1MoKHdpbl9UICp3cCkpOworaW50IGdldF9rZXltYXBfc3RyIF9fQVJHUygod2luX1QgKndwLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbikpOwordm9pZCBzY3JlZW5fcHV0Y2hhciBfX0FSR1MoKGludCBjLCBpbnQgcm93LCBpbnQgY29sLCBpbnQgYXR0cikpOwordm9pZCBzY3JlZW5fZ2V0Ynl0ZXMgX19BUkdTKChpbnQgcm93LCBpbnQgY29sLCBjaGFyX3UgKmJ5dGVzLCBpbnQgKmF0dHJwKSk7Cit2b2lkIHNjcmVlbl9wdXRzIF9fQVJHUygoY2hhcl91ICp0ZXh0LCBpbnQgcm93LCBpbnQgY29sLCBpbnQgYXR0cikpOwordm9pZCBzY3JlZW5fcHV0c19sZW4gX19BUkdTKChjaGFyX3UgKnRleHQsIGludCBsZW4sIGludCByb3csIGludCBjb2wsIGludCBhdHRyKSk7Cit2b2lkIHNjcmVlbl9zdG9wX2hpZ2hsaWdodCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgcmVzZXRfY3Rlcm1fY29sb3JzIF9fQVJHUygodm9pZCkpOwordm9pZCBzY3JlZW5fZHJhd19yZWN0YW5nbGUgX19BUkdTKChpbnQgcm93LCBpbnQgY29sLCBpbnQgaGVpZ2h0LCBpbnQgd2lkdGgsIGludCBpbnZlcnQpKTsKK3ZvaWQgc2NyZWVuX2ZpbGwgX19BUkdTKChpbnQgc3RhcnRfcm93LCBpbnQgZW5kX3JvdywgaW50IHN0YXJ0X2NvbCwgaW50IGVuZF9jb2wsIGludCBjMSwgaW50IGMyLCBpbnQgYXR0cikpOwordm9pZCBjaGVja19mb3JfZGVsYXkgX19BUkdTKChpbnQgY2hlY2tfbXNnX3Njcm9sbCkpOworaW50IHNjcmVlbl92YWxpZCBfX0FSR1MoKGludCBjbGVhcikpOwordm9pZCBzY3JlZW5hbGxvYyBfX0FSR1MoKGludCBjbGVhcikpOwordm9pZCBmcmVlX3NjcmVlbmxpbmVzIF9fQVJHUygodm9pZCkpOwordm9pZCBzY3JlZW5jbGVhciBfX0FSR1MoKHZvaWQpKTsKK2ludCBjYW5fY2xlYXIgX19BUkdTKChjaGFyX3UgKnApKTsKK3ZvaWQgc2NyZWVuX3N0YXJ0IF9fQVJHUygodm9pZCkpOwordm9pZCB3aW5kZ290byBfX0FSR1MoKGludCByb3csIGludCBjb2wpKTsKK3ZvaWQgc2V0Y3Vyc29yIF9fQVJHUygodm9pZCkpOworaW50IHdpbl9pbnNfbGluZXMgX19BUkdTKCh3aW5fVCAqd3AsIGludCByb3csIGludCBsaW5lX2NvdW50LCBpbnQgaW52YWxpZCwgaW50IG1heWNsZWFyKSk7CitpbnQgd2luX2RlbF9saW5lcyBfX0FSR1MoKHdpbl9UICp3cCwgaW50IHJvdywgaW50IGxpbmVfY291bnQsIGludCBpbnZhbGlkLCBpbnQgbWF5Y2xlYXIpKTsKK2ludCBzY3JlZW5faW5zX2xpbmVzIF9fQVJHUygoaW50IG9mZiwgaW50IHJvdywgaW50IGxpbmVfY291bnQsIGludCBlbmQsIHdpbl9UICp3cCkpOworaW50IHNjcmVlbl9kZWxfbGluZXMgX19BUkdTKChpbnQgb2ZmLCBpbnQgcm93LCBpbnQgbGluZV9jb3VudCwgaW50IGVuZCwgaW50IGZvcmNlLCB3aW5fVCAqd3ApKTsKK2ludCBzaG93bW9kZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgdW5zaG93bW9kZSBfX0FSR1MoKGludCBmb3JjZSkpOwordm9pZCBnZXRfdHJhbnNfYnVmbmFtZSBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2ludCByZWRyYXdpbmcgX19BUkdTKCh2b2lkKSk7CitpbnQgbWVzc2FnaW5nIF9fQVJHUygodm9pZCkpOwordm9pZCBzaG93cnVsZXIgX19BUkdTKChpbnQgYWx3YXlzKSk7CitpbnQgbnVtYmVyX3dpZHRoIF9fQVJHUygod2luX1QgKndwKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9zZWFyY2gucHJvIGIvc3JjL3Byb3RvL3NlYXJjaC5wcm8KaW5kZXggYjRkNGRjNy4uY2VhY2EyMiAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL3NlYXJjaC5wcm8KKysrIGIvc3JjL3Byb3RvL3NlYXJjaC5wcm8KQEAgLTEsMzYgKzEsMzYgQEAKIC8qIHNlYXJjaC5jICovCi1leHRlcm4gaW50IHNlYXJjaF9yZWdjb21wIF9fQVJHUygoY2hhcl91ICpwYXQsIGludCBwYXRfc2F2ZSwgaW50IHBhdF91c2UsIGludCBvcHRpb25zLCByZWdtbWF0Y2hfVCAqcmVnbWF0Y2gpKTsKLWV4dGVybiBjaGFyX3UgKmdldF9zZWFyY2hfcGF0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2F2ZV9zZWFyY2hfcGF0dGVybnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCByZXN0b3JlX3NlYXJjaF9wYXR0ZXJucyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGZyZWVfc2VhcmNoX3BhdHRlcm5zIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBpZ25vcmVjYXNlIF9fQVJHUygoY2hhcl91ICpwYXQpKTsKLWV4dGVybiBjaGFyX3UgKmxhc3Rfc2VhcmNoX3BhdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHJlc2V0X3NlYXJjaF9kaXIgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzZXRfbGFzdF9zZWFyY2hfcGF0IF9fQVJHUygoY2hhcl91ICpzLCBpbnQgaWR4LCBpbnQgbWFnaWMsIGludCBzZXRsYXN0KSk7Ci1leHRlcm4gdm9pZCBsYXN0X3BhdF9wcm9nIF9fQVJHUygocmVnbW1hdGNoX1QgKnJlZ21hdGNoKSk7Ci1leHRlcm4gaW50IHNlYXJjaGl0IF9fQVJHUygod2luX1QgKndpbiwgYnVmX1QgKmJ1ZiwgcG9zX1QgKnBvcywgaW50IGRpciwgY2hhcl91ICpwYXQsIGxvbmcgY291bnQsIGludCBvcHRpb25zLCBpbnQgcGF0X3VzZSwgbGluZW5yX1Qgc3RvcF9sbnVtKSk7Ci1leHRlcm4gaW50IGRvX3NlYXJjaCBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgaW50IGRpcmMsIGNoYXJfdSAqcGF0LCBsb25nIGNvdW50LCBpbnQgb3B0aW9ucykpOwotZXh0ZXJuIGludCBzZWFyY2hfZm9yX2V4YWN0X2xpbmUgX19BUkdTKChidWZfVCAqYnVmLCBwb3NfVCAqcG9zLCBpbnQgZGlyLCBjaGFyX3UgKnBhdCkpOwotZXh0ZXJuIGludCBzZWFyY2hjIF9fQVJHUygoY21kYXJnX1QgKmNhcCwgaW50IHRfY21kKSk7Ci1leHRlcm4gcG9zX1QgKmZpbmRtYXRjaCBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgaW50IGluaXRjKSk7Ci1leHRlcm4gcG9zX1QgKmZpbmRtYXRjaGxpbWl0IF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgaW5pdGMsIGludCBmbGFncywgaW50IG1heHRyYXZlbCkpOwotZXh0ZXJuIHZvaWQgc2hvd21hdGNoIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgZmluZHNlbnQgX19BUkdTKChpbnQgZGlyLCBsb25nIGNvdW50KSk7Ci1leHRlcm4gaW50IGZpbmRwYXIgX19BUkdTKChpbnQgKnBpbmNsLCBpbnQgZGlyLCBsb25nIGNvdW50LCBpbnQgd2hhdCwgaW50IGJvdGgpKTsKLWV4dGVybiBpbnQgc3RhcnRQUyBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGludCBwYXJhLCBpbnQgYm90aCkpOwotZXh0ZXJuIGludCBmd2Rfd29yZCBfX0FSR1MoKGxvbmcgY291bnQsIGludCBiaWd3b3JkLCBpbnQgZW9sKSk7Ci1leHRlcm4gaW50IGJja193b3JkIF9fQVJHUygobG9uZyBjb3VudCwgaW50IGJpZ3dvcmQsIGludCBzdG9wKSk7Ci1leHRlcm4gaW50IGVuZF93b3JkIF9fQVJHUygobG9uZyBjb3VudCwgaW50IGJpZ3dvcmQsIGludCBzdG9wLCBpbnQgZW1wdHkpKTsKLWV4dGVybiBpbnQgYmNrZW5kX3dvcmQgX19BUkdTKChsb25nIGNvdW50LCBpbnQgYmlnd29yZCwgaW50IGVvbCkpOwotZXh0ZXJuIGludCBjdXJyZW50X3dvcmQgX19BUkdTKChvcGFyZ19UICpvYXAsIGxvbmcgY291bnQsIGludCBpbmNsdWRlLCBpbnQgYmlnd29yZCkpOwotZXh0ZXJuIGludCBjdXJyZW50X3NlbnQgX19BUkdTKChvcGFyZ19UICpvYXAsIGxvbmcgY291bnQsIGludCBpbmNsdWRlKSk7Ci1leHRlcm4gaW50IGN1cnJlbnRfYmxvY2sgX19BUkdTKChvcGFyZ19UICpvYXAsIGxvbmcgY291bnQsIGludCBpbmNsdWRlLCBpbnQgd2hhdCwgaW50IG90aGVyKSk7Ci1leHRlcm4gaW50IGN1cnJlbnRfdGFnYmxvY2sgX19BUkdTKChvcGFyZ19UICpvYXAsIGxvbmcgY291bnRfYXJnLCBpbnQgaW5jbHVkZSkpOwotZXh0ZXJuIGludCBjdXJyZW50X3BhciBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgbG9uZyBjb3VudCwgaW50IGluY2x1ZGUsIGludCB0eXBlKSk7Ci1leHRlcm4gaW50IGN1cnJlbnRfcXVvdGUgX19BUkdTKChvcGFyZ19UICpvYXAsIGxvbmcgY291bnQsIGludCBpbmNsdWRlLCBpbnQgcXVvdGVjaGFyKSk7Ci1leHRlcm4gaW50IGxpbmV3aGl0ZSBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKLWV4dGVybiB2b2lkIGZpbmRfcGF0dGVybl9pbl9wYXRoIF9fQVJHUygoY2hhcl91ICpwdHIsIGludCBkaXIsIGludCBsZW4sIGludCB3aG9sZSwgaW50IHNraXBfY29tbWVudHMsIGludCB0eXBlLCBsb25nIGNvdW50LCBpbnQgYWN0aW9uLCBsaW5lbnJfVCBzdGFydF9sbnVtLCBsaW5lbnJfVCBlbmRfbG51bSkpOwotZXh0ZXJuIGludCByZWFkX3ZpbWluZm9fc2VhcmNoX3BhdHRlcm4gX19BUkdTKCh2aXJfVCAqdmlycCwgaW50IGZvcmNlKSk7Ci1leHRlcm4gdm9pZCB3cml0ZV92aW1pbmZvX3NlYXJjaF9wYXR0ZXJuIF9fQVJHUygoRklMRSAqZnApKTsKK2ludCBzZWFyY2hfcmVnY29tcCBfX0FSR1MoKGNoYXJfdSAqcGF0LCBpbnQgcGF0X3NhdmUsIGludCBwYXRfdXNlLCBpbnQgb3B0aW9ucywgcmVnbW1hdGNoX1QgKnJlZ21hdGNoKSk7CitjaGFyX3UgKmdldF9zZWFyY2hfcGF0IF9fQVJHUygodm9pZCkpOwordm9pZCBzYXZlX3NlYXJjaF9wYXR0ZXJucyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgcmVzdG9yZV9zZWFyY2hfcGF0dGVybnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZyZWVfc2VhcmNoX3BhdHRlcm5zIF9fQVJHUygodm9pZCkpOworaW50IGlnbm9yZWNhc2UgX19BUkdTKChjaGFyX3UgKnBhdCkpOworY2hhcl91ICpsYXN0X3NlYXJjaF9wYXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHJlc2V0X3NlYXJjaF9kaXIgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF9sYXN0X3NlYXJjaF9wYXQgX19BUkdTKChjaGFyX3UgKnMsIGludCBpZHgsIGludCBtYWdpYywgaW50IHNldGxhc3QpKTsKK3ZvaWQgbGFzdF9wYXRfcHJvZyBfX0FSR1MoKHJlZ21tYXRjaF9UICpyZWdtYXRjaCkpOworaW50IHNlYXJjaGl0IF9fQVJHUygod2luX1QgKndpbiwgYnVmX1QgKmJ1ZiwgcG9zX1QgKnBvcywgaW50IGRpciwgY2hhcl91ICpwYXQsIGxvbmcgY291bnQsIGludCBvcHRpb25zLCBpbnQgcGF0X3VzZSwgbGluZW5yX1Qgc3RvcF9sbnVtKSk7CitpbnQgZG9fc2VhcmNoIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgZGlyYywgY2hhcl91ICpwYXQsIGxvbmcgY291bnQsIGludCBvcHRpb25zKSk7CitpbnQgc2VhcmNoX2Zvcl9leGFjdF9saW5lIF9fQVJHUygoYnVmX1QgKmJ1ZiwgcG9zX1QgKnBvcywgaW50IGRpciwgY2hhcl91ICpwYXQpKTsKK2ludCBzZWFyY2hjIF9fQVJHUygoY21kYXJnX1QgKmNhcCwgaW50IHRfY21kKSk7Citwb3NfVCAqZmluZG1hdGNoIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgaW5pdGMpKTsKK3Bvc19UICpmaW5kbWF0Y2hsaW1pdCBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgaW50IGluaXRjLCBpbnQgZmxhZ3MsIGludCBtYXh0cmF2ZWwpKTsKK3ZvaWQgc2hvd21hdGNoIF9fQVJHUygoaW50IGMpKTsKK2ludCBmaW5kc2VudCBfX0FSR1MoKGludCBkaXIsIGxvbmcgY291bnQpKTsKK2ludCBmaW5kcGFyIF9fQVJHUygoaW50ICpwaW5jbCwgaW50IGRpciwgbG9uZyBjb3VudCwgaW50IHdoYXQsIGludCBib3RoKSk7CitpbnQgc3RhcnRQUyBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGludCBwYXJhLCBpbnQgYm90aCkpOworaW50IGZ3ZF93b3JkIF9fQVJHUygobG9uZyBjb3VudCwgaW50IGJpZ3dvcmQsIGludCBlb2wpKTsKK2ludCBiY2tfd29yZCBfX0FSR1MoKGxvbmcgY291bnQsIGludCBiaWd3b3JkLCBpbnQgc3RvcCkpOworaW50IGVuZF93b3JkIF9fQVJHUygobG9uZyBjb3VudCwgaW50IGJpZ3dvcmQsIGludCBzdG9wLCBpbnQgZW1wdHkpKTsKK2ludCBiY2tlbmRfd29yZCBfX0FSR1MoKGxvbmcgY291bnQsIGludCBiaWd3b3JkLCBpbnQgZW9sKSk7CitpbnQgY3VycmVudF93b3JkIF9fQVJHUygob3BhcmdfVCAqb2FwLCBsb25nIGNvdW50LCBpbnQgaW5jbHVkZSwgaW50IGJpZ3dvcmQpKTsKK2ludCBjdXJyZW50X3NlbnQgX19BUkdTKChvcGFyZ19UICpvYXAsIGxvbmcgY291bnQsIGludCBpbmNsdWRlKSk7CitpbnQgY3VycmVudF9ibG9jayBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgbG9uZyBjb3VudCwgaW50IGluY2x1ZGUsIGludCB3aGF0LCBpbnQgb3RoZXIpKTsKK2ludCBjdXJyZW50X3RhZ2Jsb2NrIF9fQVJHUygob3BhcmdfVCAqb2FwLCBsb25nIGNvdW50X2FyZywgaW50IGluY2x1ZGUpKTsKK2ludCBjdXJyZW50X3BhciBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgbG9uZyBjb3VudCwgaW50IGluY2x1ZGUsIGludCB0eXBlKSk7CitpbnQgY3VycmVudF9xdW90ZSBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgbG9uZyBjb3VudCwgaW50IGluY2x1ZGUsIGludCBxdW90ZWNoYXIpKTsKK2ludCBsaW5ld2hpdGUgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Cit2b2lkIGZpbmRfcGF0dGVybl9pbl9wYXRoIF9fQVJHUygoY2hhcl91ICpwdHIsIGludCBkaXIsIGludCBsZW4sIGludCB3aG9sZSwgaW50IHNraXBfY29tbWVudHMsIGludCB0eXBlLCBsb25nIGNvdW50LCBpbnQgYWN0aW9uLCBsaW5lbnJfVCBzdGFydF9sbnVtLCBsaW5lbnJfVCBlbmRfbG51bSkpOworaW50IHJlYWRfdmltaW5mb19zZWFyY2hfcGF0dGVybiBfX0FSR1MoKHZpcl9UICp2aXJwLCBpbnQgZm9yY2UpKTsKK3ZvaWQgd3JpdGVfdmltaW5mb19zZWFyY2hfcGF0dGVybiBfX0FSR1MoKEZJTEUgKmZwKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by90ZXJtLnBybyBiL3NyYy9wcm90by90ZXJtLnBybwppbmRleCA5Y2U1OTRlLi42NmM0YzJlIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vdGVybS5wcm8KKysrIGIvc3JjL3Byb3RvL3Rlcm0ucHJvCkBAIC0xLDYwICsxLDYwIEBACiAvKiB0ZXJtLmMgKi8KLWV4dGVybiBpbnQgc2V0X3Rlcm1uYW1lIF9fQVJHUygoY2hhcl91ICp0ZXJtKSk7Ci1leHRlcm4gdm9pZCBzZXRfbW91c2VfdGVybWNvZGUgX19BUkdTKChpbnQgbiwgY2hhcl91ICpzKSk7Ci1leHRlcm4gdm9pZCBkZWxfbW91c2VfdGVybWNvZGUgX19BUkdTKChpbnQgbikpOwotZXh0ZXJuIHZvaWQgZ2V0bGluZWNvbCBfX0FSR1MoKGxvbmcgKmNwLCBsb25nICpycCkpOwotZXh0ZXJuIGludCBhZGRfdGVybWNhcF9lbnRyeSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IGZvcmNlKSk7Ci1leHRlcm4gaW50IHRlcm1faXNfOGJpdCBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCB0ZXJtX2lzX2d1aSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGNoYXJfdSAqdGx0b2EgX19BUkdTKCh1bnNpZ25lZCBsb25nIGkpKTsKLWV4dGVybiB2b2lkIHRlcm1jYXBpbml0IF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gdm9pZCBvdXRfZmx1c2ggX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBvdXRfZmx1c2hfY2hlY2sgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBvdXRfdHJhc2ggX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBvdXRfY2hhciBfX0FSR1MoKHVuc2lnbmVkIGMpKTsKLWV4dGVybiB2b2lkIG91dF9zdHJfbmYgX19BUkdTKChjaGFyX3UgKnMpKTsKLWV4dGVybiB2b2lkIG91dF9zdHIgX19BUkdTKChjaGFyX3UgKnMpKTsKLWV4dGVybiB2b2lkIHRlcm1fd2luZGdvdG8gX19BUkdTKChpbnQgcm93LCBpbnQgY29sKSk7Ci1leHRlcm4gdm9pZCB0ZXJtX2N1cnNvcl9yaWdodCBfX0FSR1MoKGludCBpKSk7Ci1leHRlcm4gdm9pZCB0ZXJtX2FwcGVuZF9saW5lcyBfX0FSR1MoKGludCBsaW5lX2NvdW50KSk7Ci1leHRlcm4gdm9pZCB0ZXJtX2RlbGV0ZV9saW5lcyBfX0FSR1MoKGludCBsaW5lX2NvdW50KSk7Ci1leHRlcm4gdm9pZCB0ZXJtX3NldF93aW5wb3MgX19BUkdTKChpbnQgeCwgaW50IHkpKTsKLWV4dGVybiB2b2lkIHRlcm1fc2V0X3dpbnNpemUgX19BUkdTKChpbnQgd2lkdGgsIGludCBoZWlnaHQpKTsKLWV4dGVybiB2b2lkIHRlcm1fZmdfY29sb3IgX19BUkdTKChpbnQgbikpOwotZXh0ZXJuIHZvaWQgdGVybV9iZ19jb2xvciBfX0FSR1MoKGludCBuKSk7Ci1leHRlcm4gdm9pZCB0ZXJtX3NldHRpdGxlIF9fQVJHUygoY2hhcl91ICp0aXRsZSkpOwotZXh0ZXJuIHZvaWQgdHRlc3QgX19BUkdTKChpbnQgcGFpcnMpKTsKLWV4dGVybiB2b2lkIGFkZF9sb25nX3RvX2J1ZiBfX0FSR1MoKGxvbmdfdSB2YWwsIGNoYXJfdSAqZHN0KSk7Ci1leHRlcm4gdm9pZCBjaGVja19zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3aW5fbmV3X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHNoZWxsX3Jlc2l6ZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzaGVsbF9yZXNpemVkX2NoZWNrIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG11c3RzZXQpKTsKLWV4dGVybiB2b2lkIHNldHRtb2RlIF9fQVJHUygoaW50IHRtb2RlKSk7Ci1leHRlcm4gdm9pZCBzdGFydHRlcm1jYXAgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzdG9wdGVybWNhcCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1heV9yZXFfdGVybXJlc3BvbnNlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBzd2FwcGluZ19zY3JlZW4gX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzZXRtb3VzZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbW91c2VfaGFzIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgbW91c2VfbW9kZWxfcG9wdXAgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzY3JvbGxfc3RhcnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBjdXJzb3Jfb24gX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBjdXJzb3Jfb2ZmIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgdGVybV9jdXJzb3Jfc2hhcGUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzY3JvbGxfcmVnaW9uX3NldCBfX0FSR1MoKHdpbl9UICp3cCwgaW50IG9mZikpOwotZXh0ZXJuIHZvaWQgc2Nyb2xsX3JlZ2lvbl9yZXNldCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGNsZWFyX3Rlcm1jb2RlcyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGFkZF90ZXJtY29kZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgY2hhcl91ICpzdHJpbmcsIGludCBmbGFncykpOwotZXh0ZXJuIGNoYXJfdSAqZmluZF90ZXJtY29kZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X3Rlcm1jb2RlIF9fQVJHUygoaW50IGkpKTsKLWV4dGVybiB2b2lkIGRlbF90ZXJtY29kZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIHZvaWQgc2V0X21vdXNlX3RvcGxpbmUgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiBpbnQgY2hlY2tfdGVybWNvZGUgX19BUkdTKChpbnQgbWF4X29mZnNldCwgY2hhcl91ICpidWYsIGludCBidWZsZW4pKTsKLWV4dGVybiBjaGFyX3UgKnJlcGxhY2VfdGVybWNvZGVzIF9fQVJHUygoY2hhcl91ICpmcm9tLCBjaGFyX3UgKipidWZwLCBpbnQgZnJvbV9wYXJ0LCBpbnQgZG9fbHQsIGludCBzcGVjaWFsKSk7Ci1leHRlcm4gaW50IGZpbmRfdGVybV9ieWtleXMgX19BUkdTKChjaGFyX3UgKnNyYykpOwotZXh0ZXJuIHZvaWQgc2hvd190ZXJtY29kZXMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHNob3dfb25lX3Rlcm1jb2RlIF9fQVJHUygoY2hhcl91ICpuYW1lLCBjaGFyX3UgKmNvZGUsIGludCBwcmludGl0KSk7Ci1leHRlcm4gY2hhcl91ICp0cmFuc2xhdGVfbWFwcGluZyBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgZXhwbWFwKSk7Ci1leHRlcm4gdm9pZCB1cGRhdGVfdGNhcCBfX0FSR1MoKGludCBhdHRyKSk7CitpbnQgc2V0X3Rlcm1uYW1lIF9fQVJHUygoY2hhcl91ICp0ZXJtKSk7Cit2b2lkIHNldF9tb3VzZV90ZXJtY29kZSBfX0FSR1MoKGludCBuLCBjaGFyX3UgKnMpKTsKK3ZvaWQgZGVsX21vdXNlX3Rlcm1jb2RlIF9fQVJHUygoaW50IG4pKTsKK3ZvaWQgZ2V0bGluZWNvbCBfX0FSR1MoKGxvbmcgKmNwLCBsb25nICpycCkpOworaW50IGFkZF90ZXJtY2FwX2VudHJ5IF9fQVJHUygoY2hhcl91ICpuYW1lLCBpbnQgZm9yY2UpKTsKK2ludCB0ZXJtX2lzXzhiaXQgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCB0ZXJtX2lzX2d1aSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOworY2hhcl91ICp0bHRvYSBfX0FSR1MoKHVuc2lnbmVkIGxvbmcgaSkpOwordm9pZCB0ZXJtY2FwaW5pdCBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwordm9pZCBvdXRfZmx1c2ggX19BUkdTKCh2b2lkKSk7Cit2b2lkIG91dF9mbHVzaF9jaGVjayBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgb3V0X3RyYXNoIF9fQVJHUygodm9pZCkpOwordm9pZCBvdXRfY2hhciBfX0FSR1MoKHVuc2lnbmVkIGMpKTsKK3ZvaWQgb3V0X3N0cl9uZiBfX0FSR1MoKGNoYXJfdSAqcykpOwordm9pZCBvdXRfc3RyIF9fQVJHUygoY2hhcl91ICpzKSk7Cit2b2lkIHRlcm1fd2luZGdvdG8gX19BUkdTKChpbnQgcm93LCBpbnQgY29sKSk7Cit2b2lkIHRlcm1fY3Vyc29yX3JpZ2h0IF9fQVJHUygoaW50IGkpKTsKK3ZvaWQgdGVybV9hcHBlbmRfbGluZXMgX19BUkdTKChpbnQgbGluZV9jb3VudCkpOwordm9pZCB0ZXJtX2RlbGV0ZV9saW5lcyBfX0FSR1MoKGludCBsaW5lX2NvdW50KSk7Cit2b2lkIHRlcm1fc2V0X3dpbnBvcyBfX0FSR1MoKGludCB4LCBpbnQgeSkpOwordm9pZCB0ZXJtX3NldF93aW5zaXplIF9fQVJHUygoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSk7Cit2b2lkIHRlcm1fZmdfY29sb3IgX19BUkdTKChpbnQgbikpOwordm9pZCB0ZXJtX2JnX2NvbG9yIF9fQVJHUygoaW50IG4pKTsKK3ZvaWQgdGVybV9zZXR0aXRsZSBfX0FSR1MoKGNoYXJfdSAqdGl0bGUpKTsKK3ZvaWQgdHRlc3QgX19BUkdTKChpbnQgcGFpcnMpKTsKK3ZvaWQgYWRkX2xvbmdfdG9fYnVmIF9fQVJHUygobG9uZ191IHZhbCwgY2hhcl91ICpkc3QpKTsKK3ZvaWQgY2hlY2tfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwordm9pZCB3aW5fbmV3X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2hlbGxfcmVzaXplZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2hlbGxfcmVzaXplZF9jaGVjayBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG11c3RzZXQpKTsKK3ZvaWQgc2V0dG1vZGUgX19BUkdTKChpbnQgdG1vZGUpKTsKK3ZvaWQgc3RhcnR0ZXJtY2FwIF9fQVJHUygodm9pZCkpOwordm9pZCBzdG9wdGVybWNhcCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWF5X3JlcV90ZXJtcmVzcG9uc2UgX19BUkdTKCh2b2lkKSk7CitpbnQgc3dhcHBpbmdfc2NyZWVuIF9fQVJHUygodm9pZCkpOwordm9pZCBzZXRtb3VzZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBtb3VzZV9oYXMgX19BUkdTKChpbnQgYykpOworaW50IG1vdXNlX21vZGVsX3BvcHVwIF9fQVJHUygodm9pZCkpOwordm9pZCBzY3JvbGxfc3RhcnQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGN1cnNvcl9vbiBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgY3Vyc29yX29mZiBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgdGVybV9jdXJzb3Jfc2hhcGUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNjcm9sbF9yZWdpb25fc2V0IF9fQVJHUygod2luX1QgKndwLCBpbnQgb2ZmKSk7Cit2b2lkIHNjcm9sbF9yZWdpb25fcmVzZXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGNsZWFyX3Rlcm1jb2RlcyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgYWRkX3Rlcm1jb2RlIF9fQVJHUygoY2hhcl91ICpuYW1lLCBjaGFyX3UgKnN0cmluZywgaW50IGZsYWdzKSk7CitjaGFyX3UgKmZpbmRfdGVybWNvZGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2NoYXJfdSAqZ2V0X3Rlcm1jb2RlIF9fQVJHUygoaW50IGkpKTsKK3ZvaWQgZGVsX3Rlcm1jb2RlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Cit2b2lkIHNldF9tb3VzZV90b3BsaW5lIF9fQVJHUygod2luX1QgKndwKSk7CitpbnQgY2hlY2tfdGVybWNvZGUgX19BUkdTKChpbnQgbWF4X29mZnNldCwgY2hhcl91ICpidWYsIGludCBidWZsZW4pKTsKK2NoYXJfdSAqcmVwbGFjZV90ZXJtY29kZXMgX19BUkdTKChjaGFyX3UgKmZyb20sIGNoYXJfdSAqKmJ1ZnAsIGludCBmcm9tX3BhcnQsIGludCBkb19sdCwgaW50IHNwZWNpYWwpKTsKK2ludCBmaW5kX3Rlcm1fYnlrZXlzIF9fQVJHUygoY2hhcl91ICpzcmMpKTsKK3ZvaWQgc2hvd190ZXJtY29kZXMgX19BUkdTKCh2b2lkKSk7CitpbnQgc2hvd19vbmVfdGVybWNvZGUgX19BUkdTKChjaGFyX3UgKm5hbWUsIGNoYXJfdSAqY29kZSwgaW50IHByaW50aXQpKTsKK2NoYXJfdSAqdHJhbnNsYXRlX21hcHBpbmcgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGV4cG1hcCkpOwordm9pZCB1cGRhdGVfdGNhcCBfX0FSR1MoKGludCBhdHRyKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by90ZXJtbGliLnBybyBiL3NyYy9wcm90by90ZXJtbGliLnBybwppbmRleCA0NjRiNzNiLi40MzY5ZWNmIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vdGVybWxpYi5wcm8KKysrIGIvc3JjL3Byb3RvL3Rlcm1saWIucHJvCkBAIC0xLDggKzEsOCBAQAogLyogdGVybWxpYi5jICovCi1leHRlcm4gaW50IHRnZXRlbnQgX19BUkdTKChjaGFyICp0YnVmLCBjaGFyICp0ZXJtKSk7Ci1leHRlcm4gaW50IHRnZXRmbGFnIF9fQVJHUygoY2hhciAqaWQpKTsKLWV4dGVybiBpbnQgdGdldG51bSBfX0FSR1MoKGNoYXIgKmlkKSk7Ci1leHRlcm4gY2hhciAqdGdldHN0ciBfX0FSR1MoKGNoYXIgKmlkLCBjaGFyICoqYnVmKSk7Ci1leHRlcm4gY2hhciAqdGdvdG8gX19BUkdTKChjaGFyICpjbSwgaW50IGNvbCwgaW50IGxpbmUpKTsKLWV4dGVybiBpbnQgdHB1dHMgX19BUkdTKChjaGFyICpjcCwgaW50IGFmZmNudCwgdm9pZCAoKm91dGMpKHVuc2lnbmVkIGludCkpKTsKK2ludCB0Z2V0ZW50IF9fQVJHUygoY2hhciAqdGJ1ZiwgY2hhciAqdGVybSkpOworaW50IHRnZXRmbGFnIF9fQVJHUygoY2hhciAqaWQpKTsKK2ludCB0Z2V0bnVtIF9fQVJHUygoY2hhciAqaWQpKTsKK2NoYXIgKnRnZXRzdHIgX19BUkdTKChjaGFyICppZCwgY2hhciAqKmJ1ZikpOworY2hhciAqdGdvdG8gX19BUkdTKChjaGFyICpjbSwgaW50IGNvbCwgaW50IGxpbmUpKTsKK2ludCB0cHV0cyBfX0FSR1MoKGNoYXIgKmNwLCBpbnQgYWZmY250LCB2b2lkICgqb3V0YykodW5zaWduZWQgaW50KSkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0NTUuaW4gYi9zcmMvdGVzdGRpci90ZXN0NTUuaW4KaW5kZXggZDdjZDRkOS4uYjIwYzZjNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdDU1LmluCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3Q1NS5pbgpAQCAtMzM0LDYgKzMzNCwxNCBAQAogOiRwdXQgPXN0cmluZyhzcGxpdCgnYWJjJywgJ1x6cycpKQogOiRwdXQgPXN0cmluZyhzcGxpdCgnYWJjJywgJ1x6cycsIDEpKQogOiIKKzoiIGNvbXBhcmUgcmVjdXJzaXZlbHkgbGlua2VkIGxpc3QgYW5kIGRpY3QKKzpsZXQgbCA9IFsxLCAyLCAzLCA0XQorOmxldCBkID0geycxJzogMSwgJzInOiBsLCAnMyc6IDN9Cis6bGV0IGxbMV0gPSBkCis6JHB1dCA9KGwgPT0gbCkKKzokcHV0ID0oZCA9PSBkKQorOiRwdXQgPShsICE9IGRlZXBjb3B5KGwpKQorOiRwdXQgPShkICE9IGRlZXBjb3B5KGQpKQogOmVuZGZ1bgogOmNhbGwgVGVzdCgxLCAyLCBbMywgNF0sIHs1OiA2fSkgICIgVGhpcyBtYXkgdGFrZSBhIHdoaWxlCiA6Igo=