60c06040523480156200001157600080fd5b50604051620039ad380380620039ad83398181016040528101906200003791906200042b565b858585858580600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000a4576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350846001908162000151919062000765565b50836002908162000163919062000765565b508260ff1660808160ff1681525050608051600a620001839190620009cf565b8262000190919062000a20565b60a08181525050505050505080600c9081620001ad919062000765565b5050505050505062000a6b565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200022382620001d8565b810181811067ffffffffffffffff82111715620002455762000244620001e9565b5b80604052505050565b60006200025a620001ba565b905062000268828262000218565b919050565b600067ffffffffffffffff8211156200028b576200028a620001e9565b5b6200029682620001d8565b9050602081019050919050565b60005b83811015620002c3578082015181840152602081019050620002a6565b60008484015250505050565b6000620002e6620002e0846200026d565b6200024e565b905082815260208101848484011115620003055762000304620001d3565b5b62000312848285620002a3565b509392505050565b600082601f830112620003325762000331620001ce565b5b815162000344848260208601620002cf565b91505092915050565b600060ff82169050919050565b62000365816200034d565b81146200037157600080fd5b50565b60008151905062000385816200035a565b92915050565b6000819050919050565b620003a0816200038b565b8114620003ac57600080fd5b50565b600081519050620003c08162000395565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003f382620003c6565b9050919050565b6200040581620003e6565b81146200041157600080fd5b50565b6000815190506200042581620003fa565b92915050565b60008060008060008060c087890312156200044b576200044a620001c4565b5b600087015167ffffffffffffffff8111156200046c576200046b620001c9565b5b6200047a89828a016200031a565b965050602087015167ffffffffffffffff8111156200049e576200049d620001c9565b5b620004ac89828a016200031a565b9550506040620004bf89828a0162000374565b9450506060620004d289828a01620003af565b9350506080620004e589828a0162000414565b92505060a087015167ffffffffffffffff811115620005095762000508620001c9565b5b6200051789828a016200031a565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200057757607f821691505b6020821081036200058d576200058c6200052f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005f77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005b8565b620006038683620005b8565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000646620006406200063a846200038b565b6200061b565b6200038b565b9050919050565b6000819050919050565b620006628362000625565b6200067a62000671826200064d565b848454620005c5565b825550505050565b600090565b6200069162000682565b6200069e81848462000657565b505050565b5b81811015620006c657620006ba60008262000687565b600181019050620006a4565b5050565b601f8211156200071557620006df8162000593565b620006ea84620005a8565b81016020851015620006fa578190505b620007126200070985620005a8565b830182620006a3565b50505b505050565b600082821c905092915050565b60006200073a600019846008026200071a565b1980831691505092915050565b600062000755838362000727565b9150826002028217905092915050565b620007708262000524565b67ffffffffffffffff8111156200078c576200078b620001e9565b5b6200079882546200055e565b620007a5828285620006ca565b600060209050601f831160018114620007dd5760008415620007c8578287015190505b620007d4858262000747565b86555062000844565b601f198416620007ed8662000593565b60005b828110156200081757848901518255600182019150602085019450602081019050620007f0565b8683101562000837578489015162000833601f89168262000727565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008da57808604811115620008b257620008b16200084c565b5b6001851615620008c25780820291505b8081029050620008d2856200087b565b945062000892565b94509492505050565b600082620008f55760019050620009c8565b81620009055760009050620009c8565b81600181146200091e576002811462000929576200095f565b6001915050620009c8565b60ff8411156200093e576200093d6200084c565b5b8360020a9150848211156200095857620009576200084c565b5b50620009c8565b5060208310610133831016604e8410600b8410161715620009995782820a9050838111156200099357620009926200084c565b5b620009c8565b620009a8848484600162000888565b92509050818404811115620009c257620009c16200084c565b5b81810290505b9392505050565b6000620009dc826200038b565b9150620009e9836200034d565b925062000a187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008e3565b905092915050565b600062000a2d826200038b565b915062000a3a836200038b565b925082820262000a4a816200038b565b9150828204841483151762000a645762000a636200084c565b5b5092915050565b60805160a051612f1562000a98600039600061081901526000818161119701526119be0152612f156000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610365578063b88d4fde14610395578063c87b56dd146103b1578063dd62ed3e146103e1578063e985e9c514610411578063f2fde38b1461044157610142565b806370a08231146102ad5780638da5cb5b146102dd57806395d89b41146102fb5780639b19251a14610319578063a22cb4651461034957610142565b80632b9689581161010a5780632b968958146101ff578063313ce5671461020957806342842e0e146102275780634f02c4201461024357806353d6fd59146102615780636352211e1461027d57610142565b806306fdde0314610147578063081812fc14610165578063095ea7b31461019557806318160ddd146101c557806323b872dd146101e3575b600080fd5b61014f61045d565b60405161015c9190612463565b60405180910390f35b61017f600480360381019061017a91906124c5565b6104eb565b60405161018c9190612533565b60405180910390f35b6101af60048036038101906101aa919061257a565b61051e565b6040516101bc91906125d5565b60405180910390f35b6101cd610817565b6040516101da91906125ff565b60405180910390f35b6101fd60048036038101906101f8919061261a565b61083b565b005b610207611072565b005b610211611195565b60405161021e9190612689565b60405180910390f35b610241600480360381019061023c919061261a565b6111b9565b005b61024b6112ec565b60405161025891906125ff565b60405180910390f35b61027b600480360381019061027691906126d0565b6112f2565b005b610297600480360381019061029291906124c5565b6113d2565b6040516102a49190612533565b60405180910390f35b6102c760048036038101906102c29190612710565b611475565b6040516102d491906125ff565b60405180910390f35b6102e561148d565b6040516102f29190612533565b60405180910390f35b6103036114b1565b6040516103109190612463565b60405180910390f35b610333600480360381019061032e9190612710565b61153f565b60405161034091906125d5565b60405180910390f35b610363600480360381019061035e91906126d0565b61155f565b005b61037f600480360381019061037a919061257a565b61165c565b60405161038c91906125d5565b60405180910390f35b6103af60048036038101906103aa91906127a2565b611671565b005b6103cb60048036038101906103c691906124c5565b6117aa565b6040516103d89190612463565b60405180910390f35b6103fb60048036038101906103f6919061282a565b6117de565b60405161040891906125ff565b60405180910390f35b61042b6004803603810190610426919061282a565b611803565b60405161043891906125d5565b60405180910390f35b61045b60048036038101906104569190612710565b611832565b005b6001805461046a90612899565b80601f016020809104026020016040519081016040528092919081815260200182805461049690612899565b80156104e35780601f106104b8576101008083540402835291602001916104e3565b820191906000526020600020905b8154815290600101906020018083116104c657829003601f168201915b505050505081565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060035482111580156105325750600082115b156107265760006008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156106325750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610669576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836006600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161071891906125ff565b60405180910390a35061080d565b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161080491906125ff565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6003548111610f2a576008600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146108dc576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610942576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610a055750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610a7057506006600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610aa7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aaf6119ba565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610afd91906128f9565b92505081905550610b0c6119ba565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610c7091906128f9565b81548110610c8157610c8061292d565b5b9060005260206000200154905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a60008581526020019081526020016000205481548110610cf357610cf261292d565b5b9060005260206000200181905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610d5057610d4f61295c565b5b60019003818190600052602060002001600090559055600a600083815260200190815260200160002054600a600083815260200190815260200160002081905550600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150506001900390600052602060002001600090919091909150556001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610e4691906128f9565b600a600084815260200190815260200160002081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487610f0f6119ba565b604051610f1c91906125ff565b60405180910390a35061106d565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461105f578181610fde91906128f9565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61106a8484846119ee565b50505b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b7f000000000000000000000000000000000000000000000000000000000000000081565b6111c483838361083b565b60008273ffffffffffffffffffffffffffffffffffffffff163b141580156112b0575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b815260040161124b939291906129c2565b6020604051808303816000875af115801561126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128e9190612a64565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156112e7576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60035481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611377576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611470576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60046020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600280546114be90612899565b80601f01602080910402602001604051908101604052809291908181526020018280546114ea90612899565b80156115375780601f1061150c57610100808354040283529160200191611537565b820191906000526020600020905b81548152906001019060200180831161151a57829003601f168201915b505050505081565b600b6020528060005260406000206000915054906101000a900460ff1681565b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161165091906125d5565b60405180910390a35050565b60006116693384846119ee565b905092915050565b61167c85858561083b565b60008473ffffffffffffffffffffffffffffffffffffffff163b1415801561176c575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611707959493929190612acd565b6020604051808303816000875af1158015611726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174a9190612a64565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156117a3576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b6060600c6117b783611d59565b6040516020016117c8929190612bef565b6040516020818303038152906040529050919050565b6005602052816000526040600020602052806000526040600020600091509150505481565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361191d576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60007f0000000000000000000000000000000000000000000000000000000000000000600a6119e99190612d46565b905090565b6000806119f96119ba565b90506000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ad291906128f9565b9250508190555084600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c0657600083600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc49190612dc0565b8484611bd09190612dc0565b611bda91906128f9565b905060005b81811015611c0357611bf089611ee1565b8080611bfb90612df1565b915050611bdf565b50505b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ce65760008382611c659190612dc0565b84600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb09190612dc0565b611cba91906128f9565b905060005b81811015611ce357611cd08861213d565b8080611cdb90612df1565b915050611cbf565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148787604051611d4391906125ff565b60405180910390a3600193505050509392505050565b606060008203611da0576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611edc565b600082905060005b60008214611dd2578080611dbb90612df1565b915050600a82611dcb9190612dc0565b9150611da8565b60008167ffffffffffffffff811115611dee57611ded612e39565b5b6040519080825280601f01601f191660200182016040528015611e205781602001600182028036833780820191505090505b50905060008290505b60008614611ed457600181611e3e91906128f9565b90506000600a8088611e509190612dc0565b611e5a9190612e68565b87611e6591906128f9565b6030611e719190612eaa565b905060008160f81b905080848481518110611e8f57611e8e61292d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a88611ecb9190612dc0565b97505050611e29565b819450505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f47576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611fd791906128f9565b81548110611fe857611fe761292d565b5b90600052602060002001549050600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806120445761204361295c565b5b60019003818190600052602060002001600090559055600a6000828152602001908152602001600020600090556008600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556006600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905580600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121a3576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60036000815480929190600101919050555060006003549050600073ffffffffffffffffffffffffffffffffffffffff166008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612255576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150556001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061235c91906128f9565b600a600083815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561240d5780820151818401526020810190506123f2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612435826123d3565b61243f81856123de565b935061244f8185602086016123ef565b61245881612419565b840191505092915050565b6000602082019050818103600083015261247d818461242a565b905092915050565b600080fd5b600080fd5b6000819050919050565b6124a28161248f565b81146124ad57600080fd5b50565b6000813590506124bf81612499565b92915050565b6000602082840312156124db576124da612485565b5b60006124e9848285016124b0565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061251d826124f2565b9050919050565b61252d81612512565b82525050565b60006020820190506125486000830184612524565b92915050565b61255781612512565b811461256257600080fd5b50565b6000813590506125748161254e565b92915050565b6000806040838503121561259157612590612485565b5b600061259f85828601612565565b92505060206125b0858286016124b0565b9150509250929050565b60008115159050919050565b6125cf816125ba565b82525050565b60006020820190506125ea60008301846125c6565b92915050565b6125f98161248f565b82525050565b600060208201905061261460008301846125f0565b92915050565b60008060006060848603121561263357612632612485565b5b600061264186828701612565565b935050602061265286828701612565565b9250506040612663868287016124b0565b9150509250925092565b600060ff82169050919050565b6126838161266d565b82525050565b600060208201905061269e600083018461267a565b92915050565b6126ad816125ba565b81146126b857600080fd5b50565b6000813590506126ca816126a4565b92915050565b600080604083850312156126e7576126e6612485565b5b60006126f585828601612565565b9250506020612706858286016126bb565b9150509250929050565b60006020828403121561272657612725612485565b5b600061273484828501612565565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126127625761276161273d565b5b8235905067ffffffffffffffff81111561277f5761277e612742565b5b60208301915083600182028301111561279b5761279a612747565b5b9250929050565b6000806000806000608086880312156127be576127bd612485565b5b60006127cc88828901612565565b95505060206127dd88828901612565565b94505060406127ee888289016124b0565b935050606086013567ffffffffffffffff81111561280f5761280e61248a565b5b61281b8882890161274c565b92509250509295509295909350565b6000806040838503121561284157612840612485565b5b600061284f85828601612565565b925050602061286085828601612565565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806128b157607f821691505b6020821081036128c4576128c361286a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129048261248f565b915061290f8361248f565b9250828203905081811115612927576129266128ca565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600082825260208201905092915050565b50565b60006129ac60008361298b565b91506129b78261299c565b600082019050919050565b60006080820190506129d76000830186612524565b6129e46020830185612524565b6129f160408301846125f0565b8181036060830152612a028161299f565b9050949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a4181612a0c565b8114612a4c57600080fd5b50565b600081519050612a5e81612a38565b92915050565b600060208284031215612a7a57612a79612485565b5b6000612a8884828501612a4f565b91505092915050565b82818337600083830152505050565b6000612aac838561298b565b9350612ab9838584612a91565b612ac283612419565b840190509392505050565b6000608082019050612ae26000830188612524565b612aef6020830187612524565b612afc60408301866125f0565b8181036060830152612b0f818486612aa0565b90509695505050505050565b600081905092915050565b60008190508160005260206000209050919050565b60008154612b4881612899565b612b528186612b1b565b94506001821660008114612b6d5760018114612b8257612bb5565b60ff1983168652811515820286019350612bb5565b612b8b85612b26565b60005b83811015612bad57815481890152600182019150602081019050612b8e565b838801955050505b50505092915050565b6000612bc9826123d3565b612bd38185612b1b565b9350612be38185602086016123ef565b80840191505092915050565b6000612bfb8285612b3b565b9150612c078284612bbe565b91508190509392505050565b60008160011c9050919050565b6000808291508390505b6001851115612c6a57808604811115612c4657612c456128ca565b5b6001851615612c555780820291505b8081029050612c6385612c13565b9450612c2a565b94509492505050565b600082612c835760019050612d3f565b81612c915760009050612d3f565b8160018114612ca75760028114612cb157612ce0565b6001915050612d3f565b60ff841115612cc357612cc26128ca565b5b8360020a915084821115612cda57612cd96128ca565b5b50612d3f565b5060208310610133831016604e8410600b8410161715612d155782820a905083811115612d1057612d0f6128ca565b5b612d3f565b612d228484846001612c20565b92509050818404811115612d3957612d386128ca565b5b81810290505b9392505050565b6000612d518261248f565b9150612d5c8361266d565b9250612d897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c73565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612dcb8261248f565b9150612dd68361248f565b925082612de657612de5612d91565b5b828204905092915050565b6000612dfc8261248f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e2e57612e2d6128ca565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000612e738261248f565b9150612e7e8361248f565b9250828202612e8c8161248f565b91508282048414831517612ea357612ea26128ca565b5b5092915050565b6000612eb58261266d565b9150612ec08361266d565b9250828201905060ff811115612ed957612ed86128ca565b5b9291505056fea264697066735822122068156006fa74be10111841c40029b66314edefe166bf4f78c5f4f583831da43e64736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000f697ee9043be0b8904a14274bb71db0c92026ff40000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000463796f6600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000463796f660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000