60c060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260006101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055503480156200009c57600080fd5b506040518060400160405280601481526020017f4d6f6e73746572732c20494e432043727970746f0000000000000000000000008152506040518060400160405280600581526020017f4d4e53545200000000000000000000000000000000000000000000000000000081525081600390816200011a919062000b7b565b5080600490816200012c919062000b7b565b5050506200014f62000143620004b360201b60201c565b620004bb60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e919062000ccc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016200026c92919062000d0f565b6020604051808303816000875af11580156200028c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b2919062000ccc565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060006c01431e0fae6d7217caa00000009050606460328262000308919062000d6b565b62000314919062000de5565b60118190555060646032826200032b919062000d6b565b62000337919062000de5565b600a819055506000600b819055506000600c81905550600c54600b546200035f919062000e1d565b600d819055506000600e819055506000600f81905550600f54600e5462000387919062000e1d565b6010819055506200039d6200058160201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ff620003f16200058160201b60201c565b6001620005ab60201b60201c565b62000412306001620005ab60201b60201c565b6200042761dead6001620005ab60201b60201c565b6200043b60006001620005ab60201b60201c565b6200045d6200044f6200058160201b60201c565b60016200069560201b60201c565b620004703060016200069560201b60201c565b6200048561dead60016200069560201b60201c565b62000499600060016200069560201b60201c565b620004ab33826200077f60201b60201c565b505062000f7b565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005bb620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e16200058160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200063a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006319062000eb9565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620006a5620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006cb6200058160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000724576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071b9062000eb9565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e89062000f2b565b60405180910390fd5b6200080560008383620008f760201b60201c565b806002600082825462000819919062000e1d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000870919062000e1d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008d7919062000f5e565b60405180910390a3620008f360008383620008fc60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098357607f821691505b6020821081036200099957620009986200093b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009c4565b62000a0f8683620009c4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a5c62000a5662000a508462000a27565b62000a31565b62000a27565b9050919050565b6000819050919050565b62000a788362000a3b565b62000a9062000a878262000a63565b848454620009d1565b825550505050565b600090565b62000aa762000a98565b62000ab481848462000a6d565b505050565b5b8181101562000adc5762000ad060008262000a9d565b60018101905062000aba565b5050565b601f82111562000b2b5762000af5816200099f565b62000b0084620009b4565b8101602085101562000b10578190505b62000b2862000b1f85620009b4565b83018262000ab9565b50505b505050565b600082821c905092915050565b600062000b506000198460080262000b30565b1980831691505092915050565b600062000b6b838362000b3d565b9150826002028217905092915050565b62000b868262000901565b67ffffffffffffffff81111562000ba25762000ba16200090c565b5b62000bae82546200096a565b62000bbb82828562000ae0565b600060209050601f83116001811462000bf3576000841562000bde578287015190505b62000bea858262000b5d565b86555062000c5a565b601f19841662000c03866200099f565b60005b8281101562000c2d5784890151825560018201915060208501945060208101905062000c06565b8683101562000c4d578489015162000c49601f89168262000b3d565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c948262000c67565b9050919050565b62000ca68162000c87565b811462000cb257600080fd5b50565b60008151905062000cc68162000c9b565b92915050565b60006020828403121562000ce55762000ce462000c62565b5b600062000cf58482850162000cb5565b91505092915050565b62000d098162000c87565b82525050565b600060408201905062000d26600083018562000cfe565b62000d35602083018462000cfe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d788262000a27565b915062000d858362000a27565b925082820262000d958162000a27565b9150828204841483151762000daf5762000dae62000d3c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000df28262000a27565b915062000dff8362000a27565b92508262000e125762000e1162000db6565b5b828204905092915050565b600062000e2a8262000a27565b915062000e378362000a27565b925082820190508082111562000e525762000e5162000d3c565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ea160208362000e58565b915062000eae8262000e69565b602082019050919050565b6000602082019050818103600083015262000ed48162000e92565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f13601f8362000e58565b915062000f208262000edb565b602082019050919050565b6000602082019050818103600083015262000f468162000f04565b9050919050565b62000f588162000a27565b82525050565b600060208201905062000f75600083018462000f4d565b92915050565b60805160a051613ee062000fd960003960008181610f6101528181611f9901528181611fec015281816122df015281816124e8015281816125960152612663015260008181610bb701528181612cc60152612ced0152613ee06000f3fe6080604052600436106102605760003560e01c80638a8c523c11610144578063c0246668116100b6578063e2f456051161007a578063e2f456051461091d578063f11a24d314610948578063f2fde38b14610973578063f63743421461099c578063f8b45b05146109c7578063f931d9d2146109f257610267565b8063c024666814610826578063d257b34f1461084f578063d2fcc0011461088c578063d85ba063146108b5578063dd62ed3e146108e057610267565b8063a0d82dc511610108578063a0d82dc514610702578063a457c2d71461072d578063a5cdee051461076a578063a9059cbb14610793578063ad5c4648146107d0578063bbc0c742146107fb57610267565b80638a8c523c1461063f5780638da5cb5b146106565780638ea5220f1461068157806395d89b41146106ac5780639c3b4fdc146106d757610267565b806349bd5a5e116101dd5780636a486a8e116101a15780636a486a8e146105315780636d0b96541461055c5780636dd3d39f1461058557806370a08231146105c2578063715018a6146105ff578063839006f21461061657610267565b806349bd5a5e1461044a5780634a62bb65146104755780634fbee193146104a057806361746b49146104dd57806364c0a2f81461050657610267565b80631816467f116102245780631816467f146103535780631c499ab01461037c57806323b872dd146103a5578063313ce567146103e2578063395093511461040d57610267565b806306fdde031461026c578063095ea7b3146102975780631127ae3b146102d45780631694505e146102fd57806318160ddd1461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a1b565b60405161028e9190612e35565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190612ef0565b610aad565b6040516102cb9190612f4b565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190612f66565b610acb565b005b34801561030957600080fd5b50610312610bb5565b60405161031f9190613005565b60405180910390f35b34801561033457600080fd5b5061033d610bd9565b60405161034a919061302f565b60405180910390f35b34801561035f57600080fd5b5061037a6004803603810190610375919061304a565b610be3565b005b34801561038857600080fd5b506103a3600480360381019061039e9190613077565b610ca3565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906130a4565b610db2565b6040516103d99190612f4b565b60405180910390f35b3480156103ee57600080fd5b506103f7610eaa565b6040516104049190613113565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190612ef0565b610eb3565b6040516104419190612f4b565b60405180910390f35b34801561045657600080fd5b5061045f610f5f565b60405161046c919061313d565b60405180910390f35b34801561048157600080fd5b5061048a610f83565b6040516104979190612f4b565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c2919061304a565b610f96565b6040516104d49190612f4b565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612f66565b610fec565b005b34801561051257600080fd5b5061051b6110d6565b6040516105289190612f4b565b60405180910390f35b34801561053d57600080fd5b506105466110e9565b604051610553919061302f565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190612ef0565b6110ef565b005b34801561059157600080fd5b506105ac60048036038101906105a7919061304a565b611179565b6040516105b99190612f4b565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e4919061304a565b6111cf565b6040516105f6919061302f565b60405180910390f35b34801561060b57600080fd5b50610614611217565b005b34801561062257600080fd5b5061063d6004803603810190610638919061304a565b61129f565b005b34801561064b57600080fd5b50610654611433565b005b34801561066257600080fd5b5061066b6114cc565b604051610678919061313d565b60405180910390f35b34801561068d57600080fd5b506106966114f6565b6040516106a3919061313d565b60405180910390f35b3480156106b857600080fd5b506106c161151c565b6040516106ce9190612e35565b60405180910390f35b3480156106e357600080fd5b506106ec6115ae565b6040516106f9919061302f565b60405180910390f35b34801561070e57600080fd5b506107176115b4565b604051610724919061302f565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190612ef0565b6115ba565b6040516107619190612f4b565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190613184565b6116a5565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190612ef0565b61173e565b6040516107c79190612f4b565b60405180910390f35b3480156107dc57600080fd5b506107e561175c565b6040516107f2919061313d565b60405180910390f35b34801561080757600080fd5b50610810611782565b60405161081d9190612f4b565b60405180910390f35b34801561083257600080fd5b5061084d600480360381019061084891906131b1565b611795565b005b34801561085b57600080fd5b5061087660048036038101906108719190613077565b61186c565b6040516108839190612f4b565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae91906131b1565b6119c1565b005b3480156108c157600080fd5b506108ca611a98565b6040516108d7919061302f565b60405180910390f35b3480156108ec57600080fd5b50610907600480360381019061090291906131f1565b611a9e565b604051610914919061302f565b60405180910390f35b34801561092957600080fd5b50610932611b25565b60405161093f919061302f565b60405180910390f35b34801561095457600080fd5b5061095d611b2b565b60405161096a919061302f565b60405180910390f35b34801561097f57600080fd5b5061099a6004803603810190610995919061304a565b611b31565b005b3480156109a857600080fd5b506109b1611c28565b6040516109be919061302f565b60405180910390f35b3480156109d357600080fd5b506109dc611c2e565b6040516109e9919061302f565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190613184565b611c34565b005b606060038054610a2a90613260565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5690613260565b8015610aa35780601f10610a7857610100808354040283529160200191610aa3565b820191906000526020600020905b815481529060010190602001808311610a8657829003601f168201915b5050505050905090565b6000610ac1610aba611ccd565b8484611cd5565b6001905092915050565b610ad3611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610af16114cc565b73ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e906132dd565b60405180910390fd5b81600b8190555080600c81905550600c54600b54610b65919061332c565b600d81905550600f600d541115610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906133ac565b60405180910390fd5b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610beb611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610c096114cc565b73ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c56906132dd565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cab611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610cc96114cc565b73ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d16906132dd565b60405180910390fd5b670de0b6b3a76400006103e86005610d35610bd9565b610d3f91906133cc565b610d49919061343d565b610d53919061343d565b811015610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906134e0565b60405180910390fd5b670de0b6b3a764000081610da991906133cc565b60118190555050565b6000610dbf848484611e9e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e0a611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190613572565b60405180910390fd5b610e9e85610e96611ccd565b858403611cd5565b60019150509392505050565b60006012905090565b6000610f55610ec0611ccd565b848460016000610ece611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f50919061332c565b611cd5565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601260019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ff4611ccd565b73ffffffffffffffffffffffffffffffffffffffff166110126114cc565b73ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f906132dd565b60405180910390fd5b81600e8190555080600f81905550600f54600e54611086919061332c565b601081905550606460105411156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c9906133ac565b60405180910390fd5b5050565b601260009054906101000a900460ff1681565b60105481565b6110f7611ccd565b73ffffffffffffffffffffffffffffffffffffffff166111156114cc565b73ffffffffffffffffffffffffffffffffffffffff161461116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611162906132dd565b60405180910390fd5b61117582826126b0565b5050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61121f611ccd565b73ffffffffffffffffffffffffffffffffffffffff1661123d6114cc565b73ffffffffffffffffffffffffffffffffffffffff1614611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a906132dd565b60405180910390fd5b61129d600061280f565b565b6112a7611ccd565b73ffffffffffffffffffffffffffffffffffffffff166112c56114cc565b73ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611312906132dd565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161135b919061313d565b602060405180830381865afa158015611378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139c91906135a7565b9050600081111561142e578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6113cb611ccd565b836040518363ffffffff1660e01b81526004016113e99291906135d4565b6020604051808303816000875af1158015611408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190613612565b505b505050565b61143b611ccd565b73ffffffffffffffffffffffffffffffffffffffff166114596114cc565b73ffffffffffffffffffffffffffffffffffffffff16146114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a6906132dd565b60405180910390fd5b6001601260026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461152b90613260565b80601f016020809104026020016040519081016040528092919081815260200182805461155790613260565b80156115a45780601f10611579576101008083540402835291602001916115a4565b820191906000526020600020905b81548152906001019060200180831161158757829003601f168201915b5050505050905090565b600b5481565b600e5481565b600080600160006115c9611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d906136b1565b60405180910390fd5b61169a611691611ccd565b85858403611cd5565b600191505092915050565b6116ad611ccd565b73ffffffffffffffffffffffffffffffffffffffff166116cb6114cc565b73ffffffffffffffffffffffffffffffffffffffff1614611721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611718906132dd565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b600061175261174b611ccd565b8484611e9e565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260029054906101000a900460ff1681565b61179d611ccd565b73ffffffffffffffffffffffffffffffffffffffff166117bb6114cc565b73ffffffffffffffffffffffffffffffffffffffff1614611811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611808906132dd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611876611ccd565b73ffffffffffffffffffffffffffffffffffffffff166118946114cc565b73ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e1906132dd565b60405180910390fd5b620186a060016118f8610bd9565b61190291906133cc565b61190c919061343d565b82101561194e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119459061371d565b60405180910390fd5b606461138861195b610bd9565b61196591906133cc565b61196f919061343d565b8211156119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890613789565b60405180910390fd5b81600a8190555060019050919050565b6119c9611ccd565b73ffffffffffffffffffffffffffffffffffffffff166119e76114cc565b73ffffffffffffffffffffffffffffffffffffffff1614611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a34906132dd565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600c5481565b611b39611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611b576114cc565b73ffffffffffffffffffffffffffffffffffffffff1614611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba4906132dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c139061381b565b60405180910390fd5b611c258161280f565b50565b600f5481565b60115481565b611c3c611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611c5a6114cc565b73ffffffffffffffffffffffffffffffffffffffff1614611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca7906132dd565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3b906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa9061393f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e91919061302f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f04906139d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390613a63565b60405180910390fd5b60008103611f9557611f90838360006128d5565b6126ab565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050601260029054906101000a900460ff161580156120a25750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120f85750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213f57600061213e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213590613acf565b60405180910390fd5b5b601260019054906101000a900460ff1680156121a55750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121be5750601260039054906101000a900460ff16155b1561228d578115612222576011546121d5856111cf565b846121e0919061332c565b1115612221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221890613b3b565b60405180910390fd5b5b8115801561222e575080155b1561228c5760115461223f856111cf565b8461224a919061332c565b111561228b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228290613ba7565b60405180910390fd5b5b5b6000612298306111cf565b90506000600a5482101590508080156122bd5750601260009054906101000a900460ff165b80156122d65750601260039054906101000a900460ff16155b801561232d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156123835750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123d95750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561241d576001601260036101000a81548160ff021916908315150217905550612401612b54565b6000601260036101000a81548160ff0219169083151502179055505b6000601260039054906101000a900460ff16159050600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124d35750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124dd57600090505b6000808215612698577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614801561254357506000601054115b156125945761257060646125626010548b612b7c90919063ffffffff16565b612b9290919063ffffffff16565b9150601054600f548361258391906133cc565b61258d919061343d565b905061263f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161480156125f157506000600d54115b1561263e5761261e6064612610600d548b612b7c90919063ffffffff16565b612b9290919063ffffffff16565b9150600d54600c548361263191906133cc565b61263b919061343d565b90505b5b6000821115612654576126538a30846128d5565b5b600081111561268957612688307f0000000000000000000000000000000000000000000000000000000000000000836128d5565b5b81886126959190613bc7565b97505b6126a38a8a8a6128d5565b505050505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361271f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271690613c47565b60405180910390fd5b61272b60008383612ba8565b806002600082825461273d919061332c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612792919061332c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f7919061302f565b60405180910390a361280b60008383612bad565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293b906139d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129aa90613a63565b60405180910390fd5b6129be838383612ba8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b90613cd9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad7919061332c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b3b919061302f565b60405180910390a3612b4e848484612bad565b50505050565b6000612b5f306111cf565b905060008103612b6f5750612b7a565b612b7881612bb2565b505b565b60008183612b8a91906133cc565b905092915050565b60008183612ba0919061343d565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115612bcf57612bce613cf9565b5b604051908082528060200260200182016040528015612bfd5781602001602082028036833780820191505090505b5090503081600081518110612c1557612c14613d28565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c8657612c85613d28565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ceb307f000000000000000000000000000000000000000000000000000000000000000084611cd5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612d6f959493929190613e50565b600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ddf578082015181840152602081019050612dc4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e0782612da5565b612e118185612db0565b9350612e21818560208601612dc1565b612e2a81612deb565b840191505092915050565b60006020820190508181036000830152612e4f8184612dfc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e8782612e5c565b9050919050565b612e9781612e7c565b8114612ea257600080fd5b50565b600081359050612eb481612e8e565b92915050565b6000819050919050565b612ecd81612eba565b8114612ed857600080fd5b50565b600081359050612eea81612ec4565b92915050565b60008060408385031215612f0757612f06612e57565b5b6000612f1585828601612ea5565b9250506020612f2685828601612edb565b9150509250929050565b60008115159050919050565b612f4581612f30565b82525050565b6000602082019050612f606000830184612f3c565b92915050565b60008060408385031215612f7d57612f7c612e57565b5b6000612f8b85828601612edb565b9250506020612f9c85828601612edb565b9150509250929050565b6000819050919050565b6000612fcb612fc6612fc184612e5c565b612fa6565b612e5c565b9050919050565b6000612fdd82612fb0565b9050919050565b6000612fef82612fd2565b9050919050565b612fff81612fe4565b82525050565b600060208201905061301a6000830184612ff6565b92915050565b61302981612eba565b82525050565b60006020820190506130446000830184613020565b92915050565b6000602082840312156130605761305f612e57565b5b600061306e84828501612ea5565b91505092915050565b60006020828403121561308d5761308c612e57565b5b600061309b84828501612edb565b91505092915050565b6000806000606084860312156130bd576130bc612e57565b5b60006130cb86828701612ea5565b93505060206130dc86828701612ea5565b92505060406130ed86828701612edb565b9150509250925092565b600060ff82169050919050565b61310d816130f7565b82525050565b60006020820190506131286000830184613104565b92915050565b61313781612e7c565b82525050565b6000602082019050613152600083018461312e565b92915050565b61316181612f30565b811461316c57600080fd5b50565b60008135905061317e81613158565b92915050565b60006020828403121561319a57613199612e57565b5b60006131a88482850161316f565b91505092915050565b600080604083850312156131c8576131c7612e57565b5b60006131d685828601612ea5565b92505060206131e78582860161316f565b9150509250929050565b6000806040838503121561320857613207612e57565b5b600061321685828601612ea5565b925050602061322785828601612ea5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061327857607f821691505b60208210810361328b5761328a613231565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132c7602083612db0565b91506132d282613291565b602082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061333782612eba565b915061334283612eba565b925082820190508082111561335a576133596132fd565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000613396601d83612db0565b91506133a182613360565b602082019050919050565b600060208201905081810360008301526133c581613389565b9050919050565b60006133d782612eba565b91506133e283612eba565b92508282026133f081612eba565b91508282048414831517613407576134066132fd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344882612eba565b915061345383612eba565b9250826134635761346261340e565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006134ca602483612db0565b91506134d58261346e565b604082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061355c602883612db0565b915061356782613500565b604082019050919050565b6000602082019050818103600083015261358b8161354f565b9050919050565b6000815190506135a181612ec4565b92915050565b6000602082840312156135bd576135bc612e57565b5b60006135cb84828501613592565b91505092915050565b60006040820190506135e9600083018561312e565b6135f66020830184613020565b9392505050565b60008151905061360c81613158565b92915050565b60006020828403121561362857613627612e57565b5b6000613636848285016135fd565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061369b602583612db0565b91506136a68261363f565b604082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b7f3c20302e3030312520746f74616c20737570706c792e00000000000000000000600082015250565b6000613707601683612db0565b9150613712826136d1565b602082019050919050565b60006020820190508181036000830152613736816136fa565b9050919050565b7f3e20352520746f74616c20737570706c792e0000000000000000000000000000600082015250565b6000613773601283612db0565b915061377e8261373d565b602082019050919050565b600060208201905081810360008301526137a281613766565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613805602683612db0565b9150613810826137a9565b604082019050919050565b60006020820190508181036000830152613834816137f8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613897602483612db0565b91506138a28261383b565b604082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613929602283612db0565b9150613934826138cd565b604082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139bb602583612db0565b91506139c68261395f565b604082019050919050565b600060208201905081810360008301526139ea816139ae565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a4d602383612db0565b9150613a58826139f1565b604082019050919050565b60006020820190508181036000830152613a7c81613a40565b9050919050565b7f54726164696e6720686173206e6f742073746172746564207965740000000000600082015250565b6000613ab9601b83612db0565b9150613ac482613a83565b602082019050919050565b60006020820190508181036000830152613ae881613aac565b9050919050565b7f4d61782077616c6c657420657863656564656420286275792900000000000000600082015250565b6000613b25601983612db0565b9150613b3082613aef565b602082019050919050565b60006020820190508181036000830152613b5481613b18565b9050919050565b7f4d61782077616c6c657420657863656564656420287472616e73666572290000600082015250565b6000613b91601e83612db0565b9150613b9c82613b5b565b602082019050919050565b60006020820190508181036000830152613bc081613b84565b9050919050565b6000613bd282612eba565b9150613bdd83612eba565b9250828203905081811115613bf557613bf46132fd565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613c31601f83612db0565b9150613c3c82613bfb565b602082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613cc3602683612db0565b9150613cce82613c67565b604082019050919050565b60006020820190508181036000830152613cf281613cb6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613d7c613d77613d7284613d57565b612fa6565b612eba565b9050919050565b613d8c81613d61565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dc781612e7c565b82525050565b6000613dd98383613dbe565b60208301905092915050565b6000602082019050919050565b6000613dfd82613d92565b613e078185613d9d565b9350613e1283613dae565b8060005b83811015613e43578151613e2a8882613dcd565b9750613e3583613de5565b925050600181019050613e16565b5085935050505092915050565b600060a082019050613e656000830188613020565b613e726020830187613d83565b8181036040830152613e848186613df2565b9050613e93606083018561312e565b613ea06080830184613020565b969550505050505056fea2646970667358221220270c2a1be82a998666093d2c6000273017617925985aa444dcac0377c7b2317764736f6c63430008110033