60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff02191690831515021790555062000065620004b660201b60201c565b600a62000073919062000868565b633b9aca00620000849190620008b9565b60085561271060056008546200009b9190620008b9565b620000a7919062000933565b60095560646003600854620000bd9190620008b9565b620000c9919062000933565b600a557354649fa3f9ec946878a6dfb8689f1135125c4959600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735e9f3bb5d1618bfecb0eca1e8b71ce769e19532c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e556004600f5560405180604001604052806000815260200160008152506010600082015181600001556020820151816001015550506040518060400160405280600081526020016000815250601260008201518160000155602082015181600101555050348015620001eb57600080fd5b506040518060400160405280600a81526020017f576164646c6520446565000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f576164646c650000000000000000000000000000000000000000000000000000815250816003908162000269919062000bdb565b5080600490816200027b919062000bdb565b5050506200029e62000292620004bf60201b60201c565b620004c760201b60201c565b620002b2336008546200058d60201b60201c565b600160146000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d99565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f69062000d49565b60405180910390fd5b6200061360008383620006c960201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006bd919062000d7c565b60405180910390a35050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200075c57808604811115620007345762000733620006ce565b5b6001851615620007445780820291505b80810290506200075485620006fd565b945062000714565b94509492505050565b6000826200077757600190506200084a565b816200078757600090506200084a565b8160018114620007a05760028114620007ab57620007e1565b60019150506200084a565b60ff841115620007c057620007bf620006ce565b5b8360020a915084821115620007da57620007d9620006ce565b5b506200084a565b5060208310610133831016604e8410600b84101617156200081b5782820a905083811115620008155762000814620006ce565b5b6200084a565b6200082a84848460016200070a565b92509050818404811115620008445762000843620006ce565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008758262000851565b915062000882836200085b565b9250620008b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000765565b905092915050565b6000620008c68262000851565b9150620008d38362000851565b9250828202620008e38162000851565b91508282048414831517620008fd57620008fc620006ce565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009408262000851565b91506200094d8362000851565b92508262000960576200095f62000904565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009ed57607f821691505b60208210810362000a035762000a02620009a5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a2e565b62000a79868362000a2e565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000abc62000ab662000ab08462000851565b62000a91565b62000851565b9050919050565b6000819050919050565b62000ad88362000a9b565b62000af062000ae78262000ac3565b84845462000a3b565b825550505050565b600090565b62000b0762000af8565b62000b1481848462000acd565b505050565b5b8181101562000b3c5762000b3060008262000afd565b60018101905062000b1a565b5050565b601f82111562000b8b5762000b558162000a09565b62000b608462000a1e565b8101602085101562000b70578190505b62000b8862000b7f8562000a1e565b83018262000b19565b50505b505050565b600082821c905092915050565b600062000bb06000198460080262000b90565b1980831691505092915050565b600062000bcb838362000b9d565b9150826002028217905092915050565b62000be6826200096b565b67ffffffffffffffff81111562000c025762000c0162000976565b5b62000c0e8254620009d4565b62000c1b82828562000b40565b600060209050601f83116001811462000c53576000841562000c3e578287015190505b62000c4a858262000bbd565b86555062000cba565b601f19841662000c638662000a09565b60005b8281101562000c8d5784890151825560018201915060208501945060208101905062000c66565b8683101562000cad578489015162000ca9601f89168262000b9d565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000d3160258362000cc2565b915062000d3e8262000cd3565b604082019050919050565b6000602082019050818103600083015262000d648162000d22565b9050919050565b62000d768162000851565b82525050565b600060208201905062000d93600083018462000d6b565b92915050565b613fd58062000da96000396000f3fe6080604052600436106101c65760003560e01c8063751039fc116100f7578063a8aa1b3111610095578063dd62ed3e11610064578063dd62ed3e14610633578063f2fde38b14610670578063f66895a314610699578063f887ea40146106c5576101cd565b8063a8aa1b31146105aa578063a9059cbb146105d5578063b97cfd7714610612578063c9567bf91461061c576101cd565b80638da5cb5b116100d15780638da5cb5b146104ee57806395d89b41146105195780639e252f0014610544578063a457c2d71461056d576101cd565b8063751039fc1461046f57806385141a771461049a5780638cd4426d146104c5576101cd565b806342b6fa111161016457806370a082311161013e57806370a08231146103b2578063715018a6146103ef578063725c99a914610406578063728f8eea14610443576101cd565b806342b6fa11146103335780634ada218b1461035c57806366a88d9614610387576101cd565b806318160ddd116101a057806318160ddd1461026357806323b872dd1461028e578063313ce567146102cb57806339509351146102f6576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631340538f1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f0565b6040516101f49190612d7d565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612e38565b610782565b6040516102319190612e93565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190612eda565b6107a0565b005b34801561026f57600080fd5b50610278610839565b6040516102859190612f16565b60405180910390f35b34801561029a57600080fd5b506102b560048036038101906102b09190612f31565b610843565b6040516102c29190612e93565b60405180910390f35b3480156102d757600080fd5b506102e0610944565b6040516102ed9190612fa0565b60405180910390f35b34801561030257600080fd5b5061031d60048036038101906103189190612e38565b61094d565b60405161032a9190612e93565b60405180910390f35b34801561033f57600080fd5b5061035a60048036038101906103559190612fbb565b6109f9565b005b34801561036857600080fd5b50610371610a9d565b60405161037e9190612e93565b60405180910390f35b34801561039357600080fd5b5061039c610ab0565b6040516103a99190612f16565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190612fe8565b610ab6565b6040516103e69190612f16565b60405180910390f35b3480156103fb57600080fd5b50610404610afe565b005b34801561041257600080fd5b5061042d60048036038101906104289190612fe8565b610b86565b60405161043a9190612e93565b60405180910390f35b34801561044f57600080fd5b50610458610ba6565b604051610466929190613015565b60405180910390f35b34801561047b57600080fd5b50610484610bb8565b6040516104919190612e93565b60405180910390f35b3480156104a657600080fd5b506104af610c46565b6040516104bc919061304d565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e79190612e38565b610c4c565b005b3480156104fa57600080fd5b50610503610d52565b604051610510919061304d565b60405180910390f35b34801561052557600080fd5b5061052e610d7c565b60405161053b9190612d7d565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190612fbb565b610e0e565b005b34801561057957600080fd5b50610594600480360381019061058f9190612e38565b610edb565b6040516105a19190612e93565b60405180910390f35b3480156105b657600080fd5b506105bf610fcf565b6040516105cc919061304d565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190612e38565b610ff5565b6040516106099190612e93565b60405180910390f35b61061a61100c565b005b34801561062857600080fd5b506106316113fd565b005b34801561063f57600080fd5b5061065a60048036038101906106559190613068565b611508565b6040516106679190612f16565b60405180910390f35b34801561067c57600080fd5b5061069760048036038101906106929190612fe8565b61158f565b005b3480156106a557600080fd5b506106ae611686565b6040516106bc929190613015565b60405180910390f35b3480156106d157600080fd5b506106da611698565b6040516106e79190613107565b60405180910390f35b6060600380546106ff90613151565b80601f016020809104026020016040519081016040528092919081815260200182805461072b90613151565b80156107785780601f1061074d57610100808354040283529160200191610778565b820191906000526020600020905b81548152906001019060200180831161075b57829003601f168201915b5050505050905090565b600061079661078f6116be565b84846116c6565b6001905092915050565b6107a86116be565b73ffffffffffffffffffffffffffffffffffffffff166107c6610d52565b73ffffffffffffffffffffffffffffffffffffffff161461081c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610813906131ce565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b600061085084848461188f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061089b6116be565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091290613260565b60405180910390fd5b610938856109276116be565b858461093391906132af565b6116c6565b60019150509392505050565b60006012905090565b60006109ef61095a6116be565b8484600160006109686116be565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ea91906132e3565b6116c6565b6001905092915050565b610a016116be565b73ffffffffffffffffffffffffffffffffffffffff16610a1f610d52565b73ffffffffffffffffffffffffffffffffffffffff1614610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c906131ce565b60405180910390fd5b610a7d610944565b600a610a89919061344a565b81610a949190613495565b60098190555050565b600760169054906101000a900460ff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b066116be565b73ffffffffffffffffffffffffffffffffffffffff16610b24610d52565b73ffffffffffffffffffffffffffffffffffffffff1614610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906131ce565b60405180910390fd5b610b84600061217f565b565b60146020528060005260406000206000915054906101000a900460ff1681565b60108060000154908060010154905082565b6000610bc26116be565b73ffffffffffffffffffffffffffffffffffffffff16610be0610d52565b73ffffffffffffffffffffffffffffffffffffffff1614610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d906131ce565b60405180910390fd5b600854600a819055506001905090565b61dead81565b610c546116be565b73ffffffffffffffffffffffffffffffffffffffff16610c72610d52565b73ffffffffffffffffffffffffffffffffffffffff1614610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf906131ce565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610cec610d52565b836040518363ffffffff1660e01b8152600401610d0a9291906134d7565b6020604051808303816000875af1158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613515565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d8b90613151565b80601f0160208091040260200160405190810160405280929190818152602001828054610db790613151565b8015610e045780601f10610dd957610100808354040283529160200191610e04565b820191906000526020600020905b815481529060010190602001808311610de757829003601f168201915b5050505050905090565b610e166116be565b73ffffffffffffffffffffffffffffffffffffffff16610e34610d52565b73ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e81906131ce565b60405180910390fd5b610e92610d52565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ed7573d6000803e3d6000fd5b5050565b60008060016000610eea6116be565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e906135b4565b60405180910390fd5b610fc4610fb26116be565b858584610fbf91906132af565b6116c6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061100233848461188f565b6001905092915050565b6110146116be565b73ffffffffffffffffffffffffffffffffffffffff16611032610d52565b73ffffffffffffffffffffffffffffffffffffffff1614611088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107f906131ce565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111291906135e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d91906135e9565b6040518363ffffffff1660e01b81526004016111ba929190613616565b6020604051808303816000875af11580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fd91906135e9565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061138d30610ab6565b60008033426040518863ffffffff1660e01b81526004016113b39695949392919061367a565b60606040518083038185885af11580156113d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113f691906136f0565b5050505050565b6114056116be565b73ffffffffffffffffffffffffffffffffffffffff16611423610d52565b73ffffffffffffffffffffffffffffffffffffffff1614611479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611470906131ce565b60405180910390fd5b600760169054906101000a900460ff16156114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c09061378f565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600d81905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115976116be565b73ffffffffffffffffffffffffffffffffffffffff166115b5610d52565b73ffffffffffffffffffffffffffffffffffffffff161461160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611602906131ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167190613821565b60405180910390fd5b6116838161217f565b50565b60128060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906138b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613945565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118829190612f16565b60405180910390a3505050565b600081116118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c9906139d7565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119765750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119cb57600760169054906101000a900460ff166119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613a43565b60405180910390fd5b5b6119d3610d52565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603611a1557611a10838383612245565b61217a565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611abc5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ad55750600760149054906101000a900460ff16155b15611b3357600a5481611ae784610ab6565b611af191906132e3565b1115611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2990613aaf565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bdb5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c315750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c4a5750600760149054906101000a900460ff16155b15611cfe57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cfd57600a5481611cb184610ab6565b611cbb91906132e3565b1115611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf390613aaf565b60405180910390fd5b5b5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d9f5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e1d57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e0657611e018383836124c2565b61217a565b633b9aca0043611e1691906132e3565b600e819055505b6000806000611e2a612cd3565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ed05750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eea5750600e54600d54611ee791906132e3565b43105b9050600760149054906101000a900460ff1680611f505750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fa45750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fb2576000925061208e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614801561200d575080155b156120325760126000015460126001015461202891906132e3565b945084935061208d565b8061207a5760106000015460106001015461204d91906132e3565b9450849350601060405180604001604052908160008201548152602001600182015481525050915061208c565b801561208b57600f549450600f5493505b5b5b5b6064848761209c9190613495565b6120a69190613afe565b9250600760159054906101000a900460ff1680156121125750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156121225761212185836126f1565b5b6121388888858961213391906132af565b612245565b60008311156121745760008511156121735760006064868861215a9190613495565b6121649190613afe565b9050612171893083612245565b505b5b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90613ba1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231a90613c33565b60405180910390fd5b61232e8383836128b7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613cc5565b60405180910390fd5b81816123c091906132af565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461245091906132e3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124b49190612f16565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252890613ba1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259790613c33565b60405180910390fd5b6125ab8383836128b7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461267f91906132e3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126e39190612f16565b60405180910390a350505050565b600760149054906101000a900460ff166128b3576001600760146101000a81548160ff021916908315150217905550600082031561289757600061273430610ab6565b9050600954811061289557600160095411156127505760095490505b600060028461275f9190613495565b90506000818460200151846127749190613495565b61277e9190613afe565b90506000818461278e91906132af565b9050600047905061279e826128bc565b600081476127ac91906132af565b905060008760200151866127c091906132af565b826127cb9190613afe565b905060008860200151826127df9190613495565b905060008111156127f5576127f48682612aff565b5b600080600e544361280691906132af565b119050600081612817576000612834565b8a600001516002856128299190613495565b6128339190613495565b5b9050600081111561288b5761288a81600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612bdf90919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff8111156128d9576128d8613ce5565b5b6040519080825280602002602001820160405280156129075781602001602082028036833780820191505090505b509050308160008151811061291f5761291e613d14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea91906135e9565b816001815181106129fe576129fd613d14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a6530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116c6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ac9959493929190613e01565b600060405180830381600087803b158015612ae357600080fd5b505af1158015612af7573d6000803e3d6000fd5b505050505050565b612b2c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116c6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612b959695949392919061367a565b60606040518083038185885af1158015612bb3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bd891906136f0565b5050505050565b80471015612c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1990613ea7565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612c4890613ef8565b60006040518083038185875af1925050503d8060008114612c85576040519150601f19603f3d011682016040523d82523d6000602084013e612c8a565b606091505b5050905080612cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc590613f7f565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d27578082015181840152602081019050612d0c565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4f82612ced565b612d598185612cf8565b9350612d69818560208601612d09565b612d7281612d33565b840191505092915050565b60006020820190508181036000830152612d978184612d44565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dcf82612da4565b9050919050565b612ddf81612dc4565b8114612dea57600080fd5b50565b600081359050612dfc81612dd6565b92915050565b6000819050919050565b612e1581612e02565b8114612e2057600080fd5b50565b600081359050612e3281612e0c565b92915050565b60008060408385031215612e4f57612e4e612d9f565b5b6000612e5d85828601612ded565b9250506020612e6e85828601612e23565b9150509250929050565b60008115159050919050565b612e8d81612e78565b82525050565b6000602082019050612ea86000830184612e84565b92915050565b612eb781612e78565b8114612ec257600080fd5b50565b600081359050612ed481612eae565b92915050565b600060208284031215612ef057612eef612d9f565b5b6000612efe84828501612ec5565b91505092915050565b612f1081612e02565b82525050565b6000602082019050612f2b6000830184612f07565b92915050565b600080600060608486031215612f4a57612f49612d9f565b5b6000612f5886828701612ded565b9350506020612f6986828701612ded565b9250506040612f7a86828701612e23565b9150509250925092565b600060ff82169050919050565b612f9a81612f84565b82525050565b6000602082019050612fb56000830184612f91565b92915050565b600060208284031215612fd157612fd0612d9f565b5b6000612fdf84828501612e23565b91505092915050565b600060208284031215612ffe57612ffd612d9f565b5b600061300c84828501612ded565b91505092915050565b600060408201905061302a6000830185612f07565b6130376020830184612f07565b9392505050565b61304781612dc4565b82525050565b6000602082019050613062600083018461303e565b92915050565b6000806040838503121561307f5761307e612d9f565b5b600061308d85828601612ded565b925050602061309e85828601612ded565b9150509250929050565b6000819050919050565b60006130cd6130c86130c384612da4565b6130a8565b612da4565b9050919050565b60006130df826130b2565b9050919050565b60006130f1826130d4565b9050919050565b613101816130e6565b82525050565b600060208201905061311c60008301846130f8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061316957607f821691505b60208210810361317c5761317b613122565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131b8602083612cf8565b91506131c382613182565b602082019050919050565b600060208201905081810360008301526131e7816131ab565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061324a602883612cf8565b9150613255826131ee565b604082019050919050565b600060208201905081810360008301526132798161323d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132ba82612e02565b91506132c583612e02565b92508282039050818111156132dd576132dc613280565b5b92915050565b60006132ee82612e02565b91506132f983612e02565b925082820190508082111561331157613310613280565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561336e5780860481111561334a57613349613280565b5b60018516156133595780820291505b808102905061336785613317565b945061332e565b94509492505050565b6000826133875760019050613443565b816133955760009050613443565b81600181146133ab57600281146133b5576133e4565b6001915050613443565b60ff8411156133c7576133c6613280565b5b8360020a9150848211156133de576133dd613280565b5b50613443565b5060208310610133831016604e8410600b84101617156134195782820a90508381111561341457613413613280565b5b613443565b6134268484846001613324565b9250905081840481111561343d5761343c613280565b5b81810290505b9392505050565b600061345582612e02565b915061346083612f84565b925061348d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613377565b905092915050565b60006134a082612e02565b91506134ab83612e02565b92508282026134b981612e02565b915082820484148315176134d0576134cf613280565b5b5092915050565b60006040820190506134ec600083018561303e565b6134f96020830184612f07565b9392505050565b60008151905061350f81612eae565b92915050565b60006020828403121561352b5761352a612d9f565b5b600061353984828501613500565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061359e602583612cf8565b91506135a982613542565b604082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b6000815190506135e381612dd6565b92915050565b6000602082840312156135ff576135fe612d9f565b5b600061360d848285016135d4565b91505092915050565b600060408201905061362b600083018561303e565b613638602083018461303e565b9392505050565b6000819050919050565b600061366461365f61365a8461363f565b6130a8565b612e02565b9050919050565b61367481613649565b82525050565b600060c08201905061368f600083018961303e565b61369c6020830188612f07565b6136a9604083018761366b565b6136b6606083018661366b565b6136c3608083018561303e565b6136d060a0830184612f07565b979650505050505050565b6000815190506136ea81612e0c565b92915050565b60008060006060848603121561370957613708612d9f565b5b6000613717868287016136db565b9350506020613728868287016136db565b9250506040613739868287016136db565b9150509250925092565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613779601a83612cf8565b915061378482613743565b602082019050919050565b600060208201905081810360008301526137a88161376c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061380b602683612cf8565b9150613816826137af565b604082019050919050565b6000602082019050818103600083015261383a816137fe565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061389d602483612cf8565b91506138a882613841565b604082019050919050565b600060208201905081810360008301526138cc81613890565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061392f602283612cf8565b915061393a826138d3565b604082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006139c1602983612cf8565b91506139cc82613965565b604082019050919050565b600060208201905081810360008301526139f0816139b4565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613a2d601383612cf8565b9150613a38826139f7565b602082019050919050565b60006020820190508181036000830152613a5c81613a20565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613a99602083612cf8565b9150613aa482613a63565b602082019050919050565b60006020820190508181036000830152613ac881613a8c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b0982612e02565b9150613b1483612e02565b925082613b2457613b23613acf565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b8b602583612cf8565b9150613b9682613b2f565b604082019050919050565b60006020820190508181036000830152613bba81613b7e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c1d602383612cf8565b9150613c2882613bc1565b604082019050919050565b60006020820190508181036000830152613c4c81613c10565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613caf602683612cf8565b9150613cba82613c53565b604082019050919050565b60006020820190508181036000830152613cde81613ca2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613d7881612dc4565b82525050565b6000613d8a8383613d6f565b60208301905092915050565b6000602082019050919050565b6000613dae82613d43565b613db88185613d4e565b9350613dc383613d5f565b8060005b83811015613df4578151613ddb8882613d7e565b9750613de683613d96565b925050600181019050613dc7565b5085935050505092915050565b600060a082019050613e166000830188612f07565b613e23602083018761366b565b8181036040830152613e358186613da3565b9050613e44606083018561303e565b613e516080830184612f07565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613e91601d83612cf8565b9150613e9c82613e5b565b602082019050919050565b60006020820190508181036000830152613ec081613e84565b9050919050565b600081905092915050565b50565b6000613ee2600083613ec7565b9150613eed82613ed2565b600082019050919050565b6000613f0382613ed5565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613f69603a83612cf8565b9150613f7482613f0d565b604082019050919050565b60006020820190508181036000830152613f9881613f5c565b905091905056fea264697066735822122000c6cc2f6245c11a376ee48fc14ae5343543bbe8e8e044754dbcb39c3e55239164736f6c63430008130033