60806040526040518060600160405280602681526020016200485660269139600790816200002e9190620006fb565b506019600a553480156200004157600080fd5b506040516200487c3803806200487c8339818101604052810190620000679190620009ab565b8383620000896200007d620000db60201b60201c565b620000e360201b60201c565b81600190816200009a9190620006fb565b508060029081620000ac9190620006fb565b505050620000c082620001a760201b60201c565b620000d181620002df60201b60201c565b5050505062000a89565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001b8816200041760201b60201c565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000240576040517f5863f78900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f2026a5648a6c7cea36ca5562a53aa63934cbb5f864c66c2c4bde086410ef15a0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620002d4919062000a6c565b60405180910390a150565b620002f0816200041760201b60201c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000378576040517f5863f78900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8eb831fe42156caaf4721a87ad40c6e662b893dbeee76d7a3ed2564a318b091c600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200040c919062000a6c565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200047e576040517f646dc6c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200050357607f821691505b602082108103620005195762000518620004bb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000544565b6200058f868362000544565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005dc620005d6620005d084620005a7565b620005b1565b620005a7565b9050919050565b6000819050919050565b620005f883620005bb565b620006106200060782620005e3565b84845462000551565b825550505050565b600090565b6200062762000618565b62000634818484620005ed565b505050565b5b818110156200065c57620006506000826200061d565b6001810190506200063a565b5050565b601f821115620006ab5762000675816200051f565b620006808462000534565b8101602085101562000690578190505b620006a86200069f8562000534565b83018262000639565b50505b505050565b600082821c905092915050565b6000620006d060001984600802620006b0565b1980831691505092915050565b6000620006eb8383620006bd565b9150826002028217905092915050565b620007068262000481565b67ffffffffffffffff8111156200072257620007216200048c565b5b6200072e8254620004ea565b6200073b82828562000660565b600060209050601f8311600181146200077357600084156200075e578287015190505b6200076a8582620006dd565b865550620007da565b601f19841662000783866200051f565b60005b82811015620007ad5784890151825560018201915060208501945060208101905062000786565b86831015620007cd5784890151620007c9601f891682620006bd565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200081c8262000800565b810181811067ffffffffffffffff821117156200083e576200083d6200048c565b5b80604052505050565b600062000853620007e2565b905062000861828262000811565b919050565b600067ffffffffffffffff8211156200088457620008836200048c565b5b6200088f8262000800565b9050602081019050919050565b60005b83811015620008bc5780820151818401526020810190506200089f565b60008484015250505050565b6000620008df620008d98462000866565b62000847565b905082815260208101848484011115620008fe57620008fd620007fb565b5b6200090b8482856200089c565b509392505050565b600082601f8301126200092b576200092a620007f6565b5b81516200093d848260208601620008c8565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009738262000946565b9050919050565b620009858162000966565b81146200099157600080fd5b50565b600081519050620009a5816200097a565b92915050565b60008060008060808587031215620009c857620009c7620007ec565b5b600085015167ffffffffffffffff811115620009e957620009e8620007f1565b5b620009f78782880162000913565b945050602085015167ffffffffffffffff81111562000a1b5762000a1a620007f1565b5b62000a298782880162000913565b935050604062000a3c8782880162000994565b925050606062000a4f8782880162000994565b91505092959194509250565b62000a668162000966565b82525050565b600060208201905062000a83600083018462000a5b565b92915050565b613dbd8062000a996000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063b88d4fde11610097578063d56ff24611610071578063d56ff246146104b7578063e985e9c5146104d3578063f2fde38b14610503578063f40a82f01461051f576101c4565b8063b88d4fde1461044f578063c87b56dd1461046b578063ccec37161461049b576101c4565b80638da5cb5b116100d35780638da5cb5b146103db57806395d89b41146103f9578063a22cb46514610417578063b3ab15fb14610433576101c4565b806370a0823114610383578063715018a6146103b3578063771282f6146103bd576101c4565b80633f3e4c111161016657806355f804b31161014057806355f804b3146102fb578063570ca735146103175780636352211e146103355780636c0360eb14610365576101c4565b80633f3e4c11146102a757806340c10f19146102c357806342842e0e146102df576101c4565b8063095ea7b3116101a2578063095ea7b31461024757806320800a001461026357806323b872dd1461026d5780632ab4d05214610289576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063081812fc14610217575b600080fd5b6101e360048036038101906101de91906126e7565b61053d565b6040516101f0919061272f565b60405180910390f35b61020161054f565b60405161020e91906127da565b60405180910390f35b610231600480360381019061022c9190612832565b6105e1565b60405161023e91906128a0565b60405180910390f35b610261600480360381019061025c91906128e7565b610627565b005b61026b61073e565b005b61028760048036038101906102829190612927565b6107fa565b005b61029161085a565b60405161029e9190612989565b60405180910390f35b6102c160048036038101906102bc9190612832565b610860565b005b6102dd60048036038101906102d891906128e7565b6108e4565b005b6102f960048036038101906102f49190612927565b6109b6565b005b61031560048036038101906103109190612ad9565b6109d6565b005b61031f610a28565b60405161032c91906128a0565b60405180910390f35b61034f600480360381019061034a9190612832565b610a4e565b60405161035c91906128a0565b60405180910390f35b61036d610ad4565b60405161037a91906127da565b60405180910390f35b61039d60048036038101906103989190612b22565b610b62565b6040516103aa9190612989565b60405180910390f35b6103bb610c19565b005b6103c5610c2d565b6040516103d29190612989565b60405180910390f35b6103e3610c33565b6040516103f091906128a0565b60405180910390f35b610401610c5c565b60405161040e91906127da565b60405180910390f35b610431600480360381019061042c9190612b7b565b610cee565b005b61044d60048036038101906104489190612b22565b610d04565b005b61046960048036038101906104649190612c5c565b610d18565b005b61048560048036038101906104809190612832565b610d7a565b60405161049291906127da565b60405180910390f35b6104b560048036038101906104b09190612b22565b610ded565b005b6104d160048036038101906104cc9190612b22565b610fb4565b005b6104ed60048036038101906104e89190612cdf565b610fc8565b6040516104fa919061272f565b60405180910390f35b61051d60048036038101906105189190612b22565b61105c565b005b6105276110df565b60405161053491906128a0565b60405180910390f35b600061054882611105565b9050919050565b60606001805461055e90612d4e565b80601f016020809104026020016040519081016040528092919081815260200182805461058a90612d4e565b80156105d75780601f106105ac576101008083540402835291602001916105d7565b820191906000526020600020905b8154815290600101906020018083116105ba57829003601f168201915b5050505050905090565b60006105ec826111e7565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061063282610a4e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069990612df1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106c1611232565b73ffffffffffffffffffffffffffffffffffffffff1614806106f057506106ef816106ea611232565b610fc8565b5b61072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072690612e83565b60405180910390fd5b610739838361123a565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661077f611232565b73ffffffffffffffffffffffffffffffffffffffff16146107cc576040517fd0769d8e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107f8600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16476112f3565b565b61080b610805611232565b82611394565b61084a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084190612f15565b60405180910390fd5b610855838383611429565b505050565b600a5481565b610868611722565b600a5481116108a3576040517f5863f78900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a819055507fcc8732e18db395a93e556ff4107c19f7e2de5134145e298359d032aa0b694259816040516108d99190612989565b60405180910390a150565b6108ec611722565b60008103610926576040517fe93b0c9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a54600b54826109379190612f64565b111561096f576040517f6457850b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109b15761098683600b546117a0565b600b600081548092919061099990612f98565b919050555080806109a990612f98565b915050610972565b505050565b6109d183838360405180602001604052806000815250610d18565b505050565b6109de611722565b80600790816109ed919061318c565b507f3ba784ab500e5837019c93f5a1c4c80fb2ce4de49924573607678a4731d335e381604051610a1d91906127da565b60405180910390a150565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610a5a836117be565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac2906132aa565b60405180910390fd5b80915050919050565b60078054610ae190612d4e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0d90612d4e565b8015610b5a5780601f10610b2f57610100808354040283529160200191610b5a565b820191906000526020600020905b815481529060010190602001808311610b3d57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc99061333c565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c21611722565b610c2b60006117fb565b565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610c6b90612d4e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9790612d4e565b8015610ce45780601f10610cb957610100808354040283529160200191610ce4565b820191906000526020600020905b815481529060010190602001808311610cc757829003601f168201915b5050505050905090565b610d00610cf9611232565b83836118bf565b5050565b610d0c611722565b610d1581611a2b565b50565b610d29610d23611232565b83611394565b610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90612f15565b60405180910390fd5b610d7484848484611b58565b50505050565b6060610d8582611bb4565b610dbb576040517ffd91bde600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007610dc683611bf5565b604051602001610dd7929190613467565b6040516020818303038152906040529050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e2e611232565b73ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517fd0769d8e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f41600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610eda91906128a0565b602060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1b91906134ab565b8373ffffffffffffffffffffffffffffffffffffffff16611d559092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f8c4e91db779d40eb9afbcebd8cf9aa9195b7b057611e32ad5dc9e4025f56ada0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610fa991906128a0565b60405180910390a250565b610fbc611722565b610fc581611ddb565b50565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611064611722565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca9061354a565b60405180910390fd5b6110dc816117fb565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111d057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806111e057506111df82611f08565b5b9050919050565b6111f081611bb4565b61122f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611226906132aa565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166112ad83610a4e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080600080600085875af1905080611341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611338906135dc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f77f67778e9529a2fd2147ffb2b10ca2e0d1efd8cb925e1f1d5702e39c5fa8da6836040516113879190612989565b60405180910390a2505050565b6000806113a083610a4e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113e257506113e18185610fc8565b5b8061142057508373ffffffffffffffffffffffffffffffffffffffff16611408846105e1565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661144982610a4e565b73ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114969061366e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613700565b60405180910390fd5b61151b8383836001611f72565b8273ffffffffffffffffffffffffffffffffffffffff1661153b82610a4e565b73ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115889061366e565b60405180910390fd5b6005600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461171d8383836001611f78565b505050565b61172a611232565b73ffffffffffffffffffffffffffffffffffffffff16611748610c33565b73ffffffffffffffffffffffffffffffffffffffff161461179e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117959061376c565b60405180910390fd5b565b6117ba828260405180602001604052806000815250611f7e565b5050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611924906137d8565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a1e919061272f565b60405180910390a3505050565b611a3481611fd9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611abb576040517f5863f78900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8eb831fe42156caaf4721a87ad40c6e662b893dbeee76d7a3ed2564a318b091c600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611b4d91906128a0565b60405180910390a150565b611b63848484611429565b611b6f84848484612042565b611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba59061386a565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff16611bd6836117be565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b606060008203611c3c576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611d50565b600082905060005b60008214611c6e578080611c5790612f98565b915050600a82611c6791906138b9565b9150611c44565b60008167ffffffffffffffff811115611c8a57611c896129ae565b5b6040519080825280601f01601f191660200182016040528015611cbc5781602001600182028036833780820191505090505b5090505b60008514611d4957600182611cd591906138ea565b9150600a85611ce4919061391e565b6030611cf09190612f64565b60f81b818381518110611d0657611d0561394f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611d4291906138b9565b9450611cc0565b8093505050505b919050565b611dd68363a9059cbb60e01b8484604051602401611d7492919061397e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121c9565b505050565b611de481611fd9565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e6b576040517f5863f78900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f2026a5648a6c7cea36ca5562a53aa63934cbb5f864c66c2c4bde086410ef15a0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611efd91906128a0565b60405180910390a150565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b50505050565b50505050565b611f888383612291565b611f956000848484612042565b611fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcb9061386a565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361203f576040517f646dc6c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60006120638473ffffffffffffffffffffffffffffffffffffffff166124ae565b156121bc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261208c611232565b8786866040518563ffffffff1660e01b81526004016120ae94939291906139fc565b6020604051808303816000875af19250505080156120ea57506040513d601f19601f820116820180604052508101906120e79190613a5d565b60015b61216c573d806000811461211a576040519150601f19603f3d011682016040523d82523d6000602084013e61211f565b606091505b506000815103612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b9061386a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506121c1565b600190505b949350505050565b600061222b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124d19092919063ffffffff16565b905060008151148061224d57508080602001905181019061224c9190613a9f565b5b61228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390613b3e565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f790613baa565b60405180910390fd5b61230981611bb4565b15612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234090613c16565b60405180910390fd5b612357600083836001611f72565b61236081611bb4565b156123a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239790613c16565b60405180910390fd5b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46124aa600083836001611f78565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606124e084846000856124e9565b90509392505050565b60608247101561252e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252590613ca8565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516125579190613d04565b60006040518083038185875af1925050503d8060008114612594576040519150601f19603f3d011682016040523d82523d6000602084013e612599565b606091505b50915091506125aa878383876125b6565b92505050949350505050565b60608315612618576000835103612610576125d0856124ae565b61260f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260690613d67565b60405180910390fd5b5b829050612623565b612622838361262b565b5b949350505050565b60008251111561263e5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267291906127da565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126c48161268f565b81146126cf57600080fd5b50565b6000813590506126e1816126bb565b92915050565b6000602082840312156126fd576126fc612685565b5b600061270b848285016126d2565b91505092915050565b60008115159050919050565b61272981612714565b82525050565b60006020820190506127446000830184612720565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612784578082015181840152602081019050612769565b60008484015250505050565b6000601f19601f8301169050919050565b60006127ac8261274a565b6127b68185612755565b93506127c6818560208601612766565b6127cf81612790565b840191505092915050565b600060208201905081810360008301526127f481846127a1565b905092915050565b6000819050919050565b61280f816127fc565b811461281a57600080fd5b50565b60008135905061282c81612806565b92915050565b60006020828403121561284857612847612685565b5b60006128568482850161281d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061288a8261285f565b9050919050565b61289a8161287f565b82525050565b60006020820190506128b56000830184612891565b92915050565b6128c48161287f565b81146128cf57600080fd5b50565b6000813590506128e1816128bb565b92915050565b600080604083850312156128fe576128fd612685565b5b600061290c858286016128d2565b925050602061291d8582860161281d565b9150509250929050565b6000806000606084860312156129405761293f612685565b5b600061294e868287016128d2565b935050602061295f868287016128d2565b92505060406129708682870161281d565b9150509250925092565b612983816127fc565b82525050565b600060208201905061299e600083018461297a565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129e682612790565b810181811067ffffffffffffffff82111715612a0557612a046129ae565b5b80604052505050565b6000612a1861267b565b9050612a2482826129dd565b919050565b600067ffffffffffffffff821115612a4457612a436129ae565b5b612a4d82612790565b9050602081019050919050565b82818337600083830152505050565b6000612a7c612a7784612a29565b612a0e565b905082815260208101848484011115612a9857612a976129a9565b5b612aa3848285612a5a565b509392505050565b600082601f830112612ac057612abf6129a4565b5b8135612ad0848260208601612a69565b91505092915050565b600060208284031215612aef57612aee612685565b5b600082013567ffffffffffffffff811115612b0d57612b0c61268a565b5b612b1984828501612aab565b91505092915050565b600060208284031215612b3857612b37612685565b5b6000612b46848285016128d2565b91505092915050565b612b5881612714565b8114612b6357600080fd5b50565b600081359050612b7581612b4f565b92915050565b60008060408385031215612b9257612b91612685565b5b6000612ba0858286016128d2565b9250506020612bb185828601612b66565b9150509250929050565b600067ffffffffffffffff821115612bd657612bd56129ae565b5b612bdf82612790565b9050602081019050919050565b6000612bff612bfa84612bbb565b612a0e565b905082815260208101848484011115612c1b57612c1a6129a9565b5b612c26848285612a5a565b509392505050565b600082601f830112612c4357612c426129a4565b5b8135612c53848260208601612bec565b91505092915050565b60008060008060808587031215612c7657612c75612685565b5b6000612c84878288016128d2565b9450506020612c95878288016128d2565b9350506040612ca68782880161281d565b925050606085013567ffffffffffffffff811115612cc757612cc661268a565b5b612cd387828801612c2e565b91505092959194509250565b60008060408385031215612cf657612cf5612685565b5b6000612d04858286016128d2565b9250506020612d15858286016128d2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d6657607f821691505b602082108103612d7957612d78612d1f565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ddb602183612755565b9150612de682612d7f565b604082019050919050565b60006020820190508181036000830152612e0a81612dce565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612e6d603d83612755565b9150612e7882612e11565b604082019050919050565b60006020820190508181036000830152612e9c81612e60565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612eff602d83612755565b9150612f0a82612ea3565b604082019050919050565b60006020820190508181036000830152612f2e81612ef2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f6f826127fc565b9150612f7a836127fc565b9250828201905080821115612f9257612f91612f35565b5b92915050565b6000612fa3826127fc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fd557612fd4612f35565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613005565b61304c8683613005565b95508019841693508086168417925050509392505050565b6000819050919050565b600061308961308461307f846127fc565b613064565b6127fc565b9050919050565b6000819050919050565b6130a38361306e565b6130b76130af82613090565b848454613012565b825550505050565b600090565b6130cc6130bf565b6130d781848461309a565b505050565b5b818110156130fb576130f06000826130c4565b6001810190506130dd565b5050565b601f8211156131405761311181612fe0565b61311a84612ff5565b81016020851015613129578190505b61313d61313585612ff5565b8301826130dc565b50505b505050565b600082821c905092915050565b600061316360001984600802613145565b1980831691505092915050565b600061317c8383613152565b9150826002028217905092915050565b6131958261274a565b67ffffffffffffffff8111156131ae576131ad6129ae565b5b6131b88254612d4e565b6131c38282856130ff565b600060209050601f8311600181146131f657600084156131e4578287015190505b6131ee8582613170565b865550613256565b601f19841661320486612fe0565b60005b8281101561322c57848901518255600182019150602085019450602081019050613207565b868310156132495784890151613245601f891682613152565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613294601883612755565b915061329f8261325e565b602082019050919050565b600060208201905081810360008301526132c381613287565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613326602983612755565b9150613331826132ca565b604082019050919050565b6000602082019050818103600083015261335581613319565b9050919050565b600081905092915050565b6000815461337481612d4e565b61337e818661335c565b9450600182166000811461339957600181146133ae576133e1565b60ff19831686528115158202860193506133e1565b6133b785612fe0565b60005b838110156133d9578154818901526001820191506020810190506133ba565b838801955050505b50505092915050565b60006133f58261274a565b6133ff818561335c565b935061340f818560208601612766565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b600061345160058361335c565b915061345c8261341b565b600582019050919050565b60006134738285613367565b915061347f82846133ea565b915061348a82613444565b91508190509392505050565b6000815190506134a581612806565b92915050565b6000602082840312156134c1576134c0612685565b5b60006134cf84828501613496565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613534602683612755565b915061353f826134d8565b604082019050919050565b6000602082019050818103600083015261356381613527565b9050919050565b7f5f7472616e736665724574683a20457468207472616e73666572206661696c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006135c6602183612755565b91506135d18261356a565b604082019050919050565b600060208201905081810360008301526135f5816135b9565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613658602583612755565b9150613663826135fc565b604082019050919050565b600060208201905081810360008301526136878161364b565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136ea602483612755565b91506136f58261368e565b604082019050919050565b60006020820190508181036000830152613719816136dd565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613756602083612755565b915061376182613720565b602082019050919050565b6000602082019050818103600083015261378581613749565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006137c2601983612755565b91506137cd8261378c565b602082019050919050565b600060208201905081810360008301526137f1816137b5565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613854603283612755565b915061385f826137f8565b604082019050919050565b6000602082019050818103600083015261388381613847565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138c4826127fc565b91506138cf836127fc565b9250826138df576138de61388a565b5b828204905092915050565b60006138f5826127fc565b9150613900836127fc565b925082820390508181111561391857613917612f35565b5b92915050565b6000613929826127fc565b9150613934836127fc565b9250826139445761394361388a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506139936000830185612891565b6139a0602083018461297a565b9392505050565b600081519050919050565b600082825260208201905092915050565b60006139ce826139a7565b6139d881856139b2565b93506139e8818560208601612766565b6139f181612790565b840191505092915050565b6000608082019050613a116000830187612891565b613a1e6020830186612891565b613a2b604083018561297a565b8181036060830152613a3d81846139c3565b905095945050505050565b600081519050613a57816126bb565b92915050565b600060208284031215613a7357613a72612685565b5b6000613a8184828501613a48565b91505092915050565b600081519050613a9981612b4f565b92915050565b600060208284031215613ab557613ab4612685565b5b6000613ac384828501613a8a565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613b28602a83612755565b9150613b3382613acc565b604082019050919050565b60006020820190508181036000830152613b5781613b1b565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613b94602083612755565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613c00601c83612755565b9150613c0b82613bca565b602082019050919050565b60006020820190508181036000830152613c2f81613bf3565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613c92602683612755565b9150613c9d82613c36565b604082019050919050565b60006020820190508181036000830152613cc181613c85565b9050919050565b600081905092915050565b6000613cde826139a7565b613ce88185613cc8565b9350613cf8818560208601612766565b80840191505092915050565b6000613d108284613cd3565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613d51601d83612755565b9150613d5c82613d1b565b602082019050919050565b60006020820190508181036000830152613d8081613d44565b905091905056fea2646970667358221220bec834597174c46dbccd360600ad7d89df4cbc8232e77f602e532a8a0469f19e64736f6c6343000812003368747470733a2f2f63646e2e6269746b6565702e7669702f6273616e2d6d657461646174612f000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000009287b8e84d972dd02f618bbed45b9a6d7ed163840000000000000000000000005db8606f2927e7173b3cab5a4c512d9f00bbf193000000000000000000000000000000000000000000000000000000000000001742697467657420536d61727420417761726473204e465400000000000000000000000000000000000000000000000000000000000000000000000000000000044253414e00000000000000000000000000000000000000000000000000000000