0x60806040526001600360146101000a81548160ff021916908360ff1602179055506001600360156101000a81548160ff021916908360ff1602179055503480156200004957600080fd5b50604051620041a5380380620041a583398181016040528101906200006f91906200046d565b6200008f62000083620001b360201b60201c565b620001bb60201b60201c565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b8151811015620001aa576001600260008484815181106200013b576200013a620004d3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620001a1906200053b565b91505062000115565b50505062000588565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002c08262000293565b9050919050565b620002d281620002b3565b8114620002de57600080fd5b50565b600081519050620002f281620002c7565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200034882620002fd565b810181811067ffffffffffffffff821117156200036a57620003696200030e565b5b80604052505050565b60006200037f6200027f565b90506200038d82826200033d565b919050565b600067ffffffffffffffff821115620003b057620003af6200030e565b5b602082029050602081019050919050565b600080fd5b6000620003dd620003d78462000392565b62000373565b90508083825260208201905060208402830185811115620004035762000402620003c1565b5b835b818110156200043057806200041b8882620002e1565b84526020840193505060208101905062000405565b5050509392505050565b600082601f830112620004525762000451620002f8565b5b815162000464848260208601620003c6565b91505092915050565b6000806040838503121562000487576200048662000289565b5b60006200049785828601620002e1565b925050602083015167ffffffffffffffff811115620004bb57620004ba6200028e565b5b620004c9858286016200043a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000620005488262000531565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200057d576200057c62000502565b5b600182019050919050565b613c0d80620005986000396000f3fe6080604052600436106100a05760003560e01c806390d49b9d1161006457806390d49b9d1461014c5780639a1f340614610175578063eaa6062b1461019e578063f25f4b56146101ce578063f2fde38b146101f9578063fa461e3314610222576100a7565b8063046f7da2146100ac5780636d12c339146100c3578063715018a6146100f35780638456cb591461010a5780638da5cb5b14610121576100a7565b366100a757005b600080fd5b3480156100b857600080fd5b506100c161024b565b005b6100dd60048036038101906100d89190612696565b610339565b6040516100ea9190612763565b60405180910390f35b3480156100ff57600080fd5b506101086104bb565b005b34801561011657600080fd5b5061011f6104cf565b005b34801561012d57600080fd5b506101366105bd565b604051610143919061278d565b60405180910390f35b34801561015857600080fd5b50610173600480360381019061016e91906127a8565b6105e6565b005b34801561018157600080fd5b5061019c6004803603810190610197919061280d565b6106fa565b005b6101b860048036038101906101b3919061288b565b61075d565b6040516101c59190612763565b60405180910390f35b3480156101da57600080fd5b506101e36109b4565b6040516101f0919061278d565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b91906127a8565b6109da565b005b34801561022e57600080fd5b5061024960048036038101906102449190612a07565b610a5d565b005b6102536105bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102dc575060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61031b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031290612afe565b60405180910390fd5b6001600360156101000a81548160ff021916908360ff160217905550565b60006001600360149054906101000a900460ff1660ff1614610390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038790612b6a565b60405180910390fd5b6001600360159054906101000a900460ff1660ff16146103e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dc90612bd6565b60405180910390fd5b6002600360146101000a81548160ff021916908360ff16021790555061041088888888888888610bcb565b90508573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2db5ddd0b42bdbca0d69ea16f234a870a485854ae0d91f16643d6f317d8b8994868b8a8760405161048c9493929190612bf6565b60405180910390a46001600360146101000a81548160ff021916908360ff160217905550979650505050505050565b6104c3611107565b6104cd6000611185565b565b6104d76105bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610560575060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690612afe565b60405180910390fd5b6002600360156101000a81548160ff021916908360ff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105ee6105bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610677575060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6106b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ad90612afe565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610702611107565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006001600360149054906101000a900460ff1660ff16146107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90612b6a565b60405180910390fd5b6001600360159054906101000a900460ff1660ff1614610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090612bd6565b60405180910390fd5b6002600360146101000a81548160ff021916908360ff1602179055506000808b73ffffffffffffffffffffffffffffffffffffffff168b60405161084c90612c6c565b60006040518083038185875af1925050503d8060008114610889576040519150601f19603f3d011682016040523d82523d6000602084013e61088e565b606091505b509150915081816040516020016108a59190612ce7565b604051602081830303815290604052906108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec9190612d42565b60405180910390fd5b506109058a8a8a8a8a8a8a610bcb565b92508773ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2db5ddd0b42bdbca0d69ea16f234a870a485854ae0d91f16643d6f317d8b8994888d8c896040516109819493929190612bf6565b60405180910390a450506001600360146101000a81548160ff021916908360ff1602179055509998505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e2611107565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4890612dd6565b60405180910390fd5b610a5a81611185565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490612e68565b60405180910390fd5b6001600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008282810190610b409190612e88565b90506000808613610b515784610b53565b855b905060008113610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612f27565b60405180910390fd5b610bc333828473ffffffffffffffffffffffffffffffffffffffff166112499092919063ffffffff16565b505050505050565b60008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614610c94578873ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610c4e919061278d565b602060405180830381865afa158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f9190612f5c565b610c96565b475b9050600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610d60578773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d1a919061278d565b602060405180830381865afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b9190612f5c565b610d62565b475b90506000610d6f856112cf565b90505b610d7b816112f0565b15610e51576000610d8b8261130c565b905060018160ff1603610da657610da182611323565b610e4b565b60028160ff1603610dc057610dbb828c6113cf565b610e4a565b60038160ff1603610dd957610dd4826113ed565b610e49565b60048160ff1603610df257610ded82611416565b610e48565b60058160ff1603610e0c57610e078c83611434565b610e47565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90612ffb565b60405180910390fd5b5b5b5b5b50610d72565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614610f19578b73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610ed3919061278d565b602060405180830381865afa158015610ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f149190612f5c565b610f1b565b475b9050838b82610f2a919061304a565b1015610f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f62906130f0565b60405180910390fd5b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611033578a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fed919061278d565b602060405180830381865afa15801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e9190612f5c565b61104c565b3073ffffffffffffffffffffffffffffffffffffffff16315b9050898461105a919061304a565b81101561109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390613182565b60405180910390fd5b83816110a891906131a2565b95506110c08b898b896110bb91906131a2565b6114b3565b60008911156110f7576110f68b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b6114b3565b5b5050505050979650505050505050565b61110f6115dd565b73ffffffffffffffffffffffffffffffffffffffff1661112d6105bd565b73ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a90613222565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112ca8363a9059cbb60e01b8484604051602401611268929190613242565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115e5565b505050565b60006040519050604081016040528181528151808301602083015250919050565b6000806000835191506020840151905080821092505050919050565b600081516001810190508051915080835250919050565b600061132e826116ad565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161136b919061278d565b602060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac9190612f5c565b905060008111156113be576001810390505b6113ca833084846116c4565b505050565b60006113da836116ad565b90506113e8833383856116c4565b505050565b6000479050611412823073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee846116c4565b5050565b6000611421826116ad565b9050611430823083600061172f565b5050565b600061143f826117d4565b9050600061144c836117d4565b905060006114598461130c565b90506000611466856117eb565b90506000611473866117eb565b90506114aa333087878787878e73ffffffffffffffffffffffffffffffffffffffff1661180290979695949392919063ffffffff16565b50505050505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ac5760008273ffffffffffffffffffffffffffffffffffffffff168260405161152090612c6c565b60006040518083038185875af1925050503d806000811461155d576040519150601f19603f3d011682016040523d82523d6000602084013e611562565b606091505b50509050806115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d906132dd565b60405180910390fd5b506115d8565b6115d782828573ffffffffffffffffffffffffffffffffffffffff166112499092919063ffffffff16565b5b505050565b600033905090565b6000611647826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166119cf9092919063ffffffff16565b90506000815114806116695750808060200190518101906116689190613312565b5b6116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169f906133b1565b60405180910390fd5b505050565b600081516014810190508051915080835250919050565b60006116cf8561130c565b905060005b8160ff168110156117275760006116ea876119e7565b9050600061ffff8261ffff16860281611706576117056133d1565b5b049050808503945061171a8888888461172f565b50508060010190506116d4565b505050505050565b600061173a8561130c565b905060008160ff160361175857611753858585856119fe565b6117cd565b60018160ff16036117745761176f85858585611d7f565b6117cc565b60028160ff16036117905761178b85858585612036565b6117cb565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c290613472565b60405180910390fd5b5b5b5050505050565b600081516020810190508051915080835250919050565b600081516020810190508051915080835250919050565b60008873ffffffffffffffffffffffffffffffffffffffff16637ecebe00896040518263ffffffff1660e01b815260040161183d919061278d565b602060405180830381865afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190612f5c565b90508873ffffffffffffffffffffffffffffffffffffffff1663d505accf898989898989896040518863ffffffff1660e01b81526004016118c597969594939291906134c7565b600060405180830381600087803b1580156118df57600080fd5b505af11580156118f3573d6000803e3d6000fd5b5050505060008973ffffffffffffffffffffffffffffffffffffffff16637ecebe008a6040518263ffffffff1660e01b8152600401611932919061278d565b602060405180830381865afa15801561194f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119739190612f5c565b9050600182611982919061304a565b81146119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba906135a8565b60405180910390fd5b50505050505050505050565b60606119de848460008561226a565b90509392505050565b600081516002810190508051915080835250919050565b6000611a09856116ad565b90506000611a168661130c565b90506000611a23876116ad565b90506000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a97919061364a565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600082118015611acc5750600081115b611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906136e9565b60405180910390fd5b60008060018660ff1614611b20578284611b23565b83835b9150915060008814611bc5573073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603611b9257611b8d87898b73ffffffffffffffffffffffffffffffffffffffff166112499092919063ffffffff16565b611bc0565b611bbf8a888a8c73ffffffffffffffffffffffffffffffffffffffff16612337909392919063ffffffff16565b5b611c4d565b818973ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401611bff919061278d565b602060405180830381865afa158015611c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c409190612f5c565b611c4a91906131a2565b97505b60006103e589611c5d9190613709565b90506000816103e885611c709190613709565b611c7a919061304a565b8383611c869190613709565b611c90919061374b565b905060008060018a60ff1614611ca857826000611cac565b6000835b915091508a73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838c600067ffffffffffffffff811115611cea57611ce961256b565b5b6040519080825280601f01601f191660200182016040528015611d1c5781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401611d3c94939291906137c6565b600060405180830381600087803b158015611d5657600080fd5b505af1158015611d6a573d6000803e3d6000fd5b50505050505050505050505050505050505050565b6000611d8a856116ad565b9050600080611d988761130c565b60ff161190506000611da9876116ad565b90503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611e7a573373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613884565b60405180910390fd5b611e793330868873ffffffffffffffffffffffffffffffffffffffff16612337909392919063ffffffff16565b5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1663128acb0882848786611f0557600173fffd8963efd1fc6a506488495d951d5263988d26611f0091906138a4565b611f18565b60016401000276a3611f1791906138ec565b5b8a604051602001611f29919061278d565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611f58959493929190613961565b60408051808303816000875af1158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9a91906139d0565b5050600173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490613a82565b60405180910390fd5b50505050505050565b60006120418561130c565b9050600061204e866116ad565b9050600180831660ff160361213f576000612068876116ad565b905060006002841660ff16036120da578073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156120c057600080fd5b505af11580156120d4573d6000803e3d6000fd5b50505050505b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121395761213882858373ffffffffffffffffffffffffffffffffffffffff166112499092919063ffffffff16565b5b50612262565b60006002831660ff160361221a573073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146121ae576121ad8530858773ffffffffffffffffffffffffffffffffffffffff16612337909392919063ffffffff16565b5b8373ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846040518263ffffffff1660e01b81526004016121e79190612763565b600060405180830381600087803b15801561220157600080fd5b505af1158015612215573d6000803e3d6000fd5b505050505b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612260573d6000803e3d6000fd5b505b505050505050565b6060824710156122af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a690613b14565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122d89190612ce7565b60006040518083038185875af1925050503d8060008114612315576040519150601f19603f3d011682016040523d82523d6000602084013e61231a565b606091505b509150915061232b878383876123c0565b92505050949350505050565b6123ba846323b872dd60e01b85858560405160240161235893929190613b34565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115e5565b50505050565b6060831561242257600083510361241a576123da85612435565b612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090613bb7565b60405180910390fd5b5b82905061242d565b61242c8383612458565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561246b5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249f9190612d42565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124e7826124bc565b9050919050565b6124f7816124dc565b811461250257600080fd5b50565b600081359050612514816124ee565b92915050565b6000819050919050565b61252d8161251a565b811461253857600080fd5b50565b60008135905061254a81612524565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125a38261255a565b810181811067ffffffffffffffff821117156125c2576125c161256b565b5b80604052505050565b60006125d56124a8565b90506125e1828261259a565b919050565b600067ffffffffffffffff8211156126015761260061256b565b5b61260a8261255a565b9050602081019050919050565b82818337600083830152505050565b6000612639612634846125e6565b6125cb565b90508281526020810184848401111561265557612654612555565b5b612660848285612617565b509392505050565b600082601f83011261267d5761267c612550565b5b813561268d848260208601612626565b91505092915050565b600080600080600080600060e0888a0312156126b5576126b46124b2565b5b60006126c38a828b01612505565b97505060206126d48a828b0161253b565b96505060406126e58a828b01612505565b95505060606126f68a828b0161253b565b94505060806127078a828b0161253b565b93505060a06127188a828b01612505565b92505060c088013567ffffffffffffffff811115612739576127386124b7565b5b6127458a828b01612668565b91505092959891949750929550565b61275d8161251a565b82525050565b60006020820190506127786000830184612754565b92915050565b612787816124dc565b82525050565b60006020820190506127a2600083018461277e565b92915050565b6000602082840312156127be576127bd6124b2565b5b60006127cc84828501612505565b91505092915050565b60008115159050919050565b6127ea816127d5565b81146127f557600080fd5b50565b600081359050612807816127e1565b92915050565b60008060408385031215612824576128236124b2565b5b600061283285828601612505565b9250506020612843858286016127f8565b9150509250929050565b6000612858826124bc565b9050919050565b6128688161284d565b811461287357600080fd5b50565b6000813590506128858161285f565b92915050565b60008060008060008060008060006101208a8c0312156128ae576128ad6124b2565b5b60006128bc8c828d01612876565b99505060206128cd8c828d0161253b565b98505060406128de8c828d01612505565b97505060606128ef8c828d0161253b565b96505060806129008c828d01612505565b95505060a06129118c828d0161253b565b94505060c06129228c828d0161253b565b93505060e06129338c828d01612505565b9250506101008a013567ffffffffffffffff811115612955576129546124b7565b5b6129618c828d01612668565b9150509295985092959850929598565b6000819050919050565b61298481612971565b811461298f57600080fd5b50565b6000813590506129a18161297b565b92915050565b600080fd5b600080fd5b60008083601f8401126129c7576129c6612550565b5b8235905067ffffffffffffffff8111156129e4576129e36129a7565b5b602083019150836001820283011115612a00576129ff6129ac565b5b9250929050565b60008060008060608587031215612a2157612a206124b2565b5b6000612a2f87828801612992565b9450506020612a4087828801612992565b935050604085013567ffffffffffffffff811115612a6157612a606124b7565b5b612a6d878288016129b1565b925092505092959194509250565b600082825260208201905092915050565b7f52503a2063616c6c6572206973206e6f7420746865206f776e6572206f72206160008201527f2070726976696c65646765642075736572000000000000000000000000000000602082015250565b6000612ae8603183612a7b565b9150612af382612a8c565b604082019050919050565b60006020820190508181036000830152612b1781612adb565b9050919050565b7f526f75746550726f636573736f72206973206c6f636b65640000000000000000600082015250565b6000612b54601883612a7b565b9150612b5f82612b1e565b602082019050919050565b60006020820190508181036000830152612b8381612b47565b9050919050565b7f526f75746550726f636573736f72206973207061757365640000000000000000600082015250565b6000612bc0601883612a7b565b9150612bcb82612b8a565b602082019050919050565b60006020820190508181036000830152612bef81612bb3565b9050919050565b6000608082019050612c0b600083018761277e565b612c186020830186612754565b612c256040830185612754565b612c326060830184612754565b95945050505050565b600081905092915050565b50565b6000612c56600083612c3b565b9150612c6182612c46565b600082019050919050565b6000612c7782612c49565b9150819050919050565b600081519050919050565b60005b83811015612caa578082015181840152602081019050612c8f565b60008484015250505050565b6000612cc182612c81565b612ccb8185612c3b565b9350612cdb818560208601612c8c565b80840191505092915050565b6000612cf38284612cb6565b915081905092915050565b600081519050919050565b6000612d1482612cfe565b612d1e8185612a7b565b9350612d2e818560208601612c8c565b612d378161255a565b840191505092915050565b60006020820190508181036000830152612d5c8184612d09565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612dc0602683612a7b565b9150612dcb82612d64565b604082019050919050565b60006020820190508181036000830152612def81612db3565b9050919050565b7f526f75746550726f636573736f722e756e697377617056335377617043616c6c60008201527f6261636b3a2063616c6c2066726f6d20756e6b6e6f776e20736f757263650000602082015250565b6000612e52603e83612a7b565b9150612e5d82612df6565b604082019050919050565b60006020820190508181036000830152612e8181612e45565b9050919050565b600060208284031215612e9e57612e9d6124b2565b5b6000612eac84828501612876565b91505092915050565b7f526f75746550726f636573736f722e756e697377617056335377617043616c6c60008201527f6261636b3a206e6f7420706f73697469766520616d6f756e7400000000000000602082015250565b6000612f11603983612a7b565b9150612f1c82612eb5565b604082019050919050565b60006020820190508181036000830152612f4081612f04565b9050919050565b600081519050612f5681612524565b92915050565b600060208284031215612f7257612f716124b2565b5b6000612f8084828501612f47565b91505092915050565b7f526f75746550726f636573736f723a20556e6b6e6f776e20636f6d6d616e642060008201527f636f646500000000000000000000000000000000000000000000000000000000602082015250565b6000612fe5602483612a7b565b9150612ff082612f89565b604082019050919050565b6000602082019050818103600083015261301481612fd8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130558261251a565b91506130608361251a565b92508282019050808211156130785761307761301b565b5b92915050565b7f526f75746550726f636573736f723a204d696e696d616c20696d70757420626160008201527f6c616e63652076696f6c6174696f6e0000000000000000000000000000000000602082015250565b60006130da602f83612a7b565b91506130e58261307e565b604082019050919050565b60006020820190508181036000830152613109816130cd565b9050919050565b7f526f75746550726f636573736f723a204d696e696d616c206f7570757420626160008201527f6c616e63652076696f6c6174696f6e0000000000000000000000000000000000602082015250565b600061316c602f83612a7b565b915061317782613110565b604082019050919050565b6000602082019050818103600083015261319b8161315f565b9050919050565b60006131ad8261251a565b91506131b88361251a565b92508282039050818111156131d0576131cf61301b565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061320c602083612a7b565b9150613217826131d6565b602082019050919050565b6000602082019050818103600083015261323b816131ff565b9050919050565b6000604082019050613257600083018561277e565b6132646020830184612754565b9392505050565b7f5472616e736665722048656c7065723a204661696c656420746f207472616e7360008201527f6665722045544800000000000000000000000000000000000000000000000000602082015250565b60006132c7602783612a7b565b91506132d28261326b565b604082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b60008151905061330c816127e1565b92915050565b600060208284031215613328576133276124b2565b5b6000613336848285016132fd565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061339b602a83612a7b565b91506133a68261333f565b604082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f526f75746550726f636573736f723a20556e6b6e6f776e20706f6f6c2074797060008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061345c602183612a7b565b915061346782613400565b604082019050919050565b6000602082019050818103600083015261348b8161344f565b9050919050565b600060ff82169050919050565b6134a881613492565b82525050565b6000819050919050565b6134c1816134ae565b82525050565b600060e0820190506134dc600083018a61277e565b6134e9602083018961277e565b6134f66040830188612754565b6135036060830187612754565b613510608083018661349f565b61351d60a08301856134b8565b61352a60c08301846134b8565b98975050505050505050565b7f5361666545524332303a207065726d697420646964206e6f742073756363656560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613592602183612a7b565b915061359d82613536565b604082019050919050565b600060208201905081810360008301526135c181613585565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b6135eb816135c8565b81146135f657600080fd5b50565b600081519050613608816135e2565b92915050565b600063ffffffff82169050919050565b6136278161360e565b811461363257600080fd5b50565b6000815190506136448161361e565b92915050565b600080600060608486031215613663576136626124b2565b5b6000613671868287016135f9565b9350506020613682868287016135f9565b925050604061369386828701613635565b9150509250925092565b7f57726f6e6720706f6f6c20726573657276657300000000000000000000000000600082015250565b60006136d3601383612a7b565b91506136de8261369d565b602082019050919050565b60006020820190508181036000830152613702816136c6565b9050919050565b60006137148261251a565b915061371f8361251a565b925082820261372d8161251a565b915082820484148315176137445761374361301b565b5b5092915050565b60006137568261251a565b91506137618361251a565b925082613771576137706133d1565b5b828204905092915050565b600082825260208201905092915050565b600061379882612c81565b6137a2818561377c565b93506137b2818560208601612c8c565b6137bb8161255a565b840191505092915050565b60006080820190506137db6000830187612754565b6137e86020830186612754565b6137f5604083018561277e565b8181036060830152613807818461378d565b905095945050505050565b7f73776170556e6956333a20756e65787065637465642066726f6d20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061386e602283612a7b565b915061387982613812565b604082019050919050565b6000602082019050818103600083015261389d81613861565b9050919050565b60006138af826124bc565b91506138ba836124bc565b9250828203905073ffffffffffffffffffffffffffffffffffffffff8111156138e6576138e561301b565b5b92915050565b60006138f7826124bc565b9150613902836124bc565b9250828201905073ffffffffffffffffffffffffffffffffffffffff81111561392e5761392d61301b565b5b92915050565b61393d816127d5565b82525050565b61394c81612971565b82525050565b61395b816124bc565b82525050565b600060a082019050613976600083018861277e565b6139836020830187613934565b6139906040830186613943565b61399d6060830185613952565b81810360808301526139af818461378d565b90509695505050505050565b6000815190506139ca8161297b565b92915050565b600080604083850312156139e7576139e66124b2565b5b60006139f5858286016139bb565b9250506020613a06858286016139bb565b9150509250929050565b7f526f75746550726f636573736f722e73776170556e6956333a20756e6578706560008201527f6374656400000000000000000000000000000000000000000000000000000000602082015250565b6000613a6c602483612a7b565b9150613a7782613a10565b604082019050919050565b60006020820190508181036000830152613a9b81613a5f565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613afe602683612a7b565b9150613b0982613aa2565b604082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b6000606082019050613b49600083018661277e565b613b56602083018561277e565b613b636040830184612754565b949350505050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613ba1601d83612a7b565b9150613bac82613b6b565b602082019050919050565b60006020820190508181036000830152613bd081613b94565b905091905056fea26469706673582212205429e06861f322f14e89ce6194ad06516227d4d3e1c33c8de152669bca6e899864736f6c63430008130033000000000000000000000000d52c556ecbd260cf3bf5b78f3f94d6878939adf700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000d52c556ecbd260cf3bf5b78f3f94d6878939adf7000000000000000000000000367db1215bf0effdbc9a10d9fd4dd9dd896f670e
0x6080604052600436106100a05760003560e01c806390d49b9d1161006457806390d49b9d1461014c5780639a1f340614610175578063eaa6062b1461019e578063f25f4b56146101ce578063f2fde38b146101f9578063fa461e3314610222576100a7565b8063046f7da2146100ac5780636d12c339146100c3578063715018a6146100f35780638456cb591461010a5780638da5cb5b14610121576100a7565b366100a757005b600080fd5b3480156100b857600080fd5b506100c161024b565b005b6100dd60048036038101906100d89190612696565b610339565b6040516100ea9190612763565b60405180910390f35b3480156100ff57600080fd5b506101086104bb565b005b34801561011657600080fd5b5061011f6104cf565b005b34801561012d57600080fd5b506101366105bd565b604051610143919061278d565b60405180910390f35b34801561015857600080fd5b50610173600480360381019061016e91906127a8565b6105e6565b005b34801561018157600080fd5b5061019c6004803603810190610197919061280d565b6106fa565b005b6101b860048036038101906101b3919061288b565b61075d565b6040516101c59190612763565b60405180910390f35b3480156101da57600080fd5b506101e36109b4565b6040516101f0919061278d565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b91906127a8565b6109da565b005b34801561022e57600080fd5b5061024960048036038101906102449190612a07565b610a5d565b005b6102536105bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102dc575060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61031b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031290612afe565b60405180910390fd5b6001600360156101000a81548160ff021916908360ff160217905550565b60006001600360149054906101000a900460ff1660ff1614610390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038790612b6a565b60405180910390fd5b6001600360159054906101000a900460ff1660ff16146103e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dc90612bd6565b60405180910390fd5b6002600360146101000a81548160ff021916908360ff16021790555061041088888888888888610bcb565b90508573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2db5ddd0b42bdbca0d69ea16f234a870a485854ae0d91f16643d6f317d8b8994868b8a8760405161048c9493929190612bf6565b60405180910390a46001600360146101000a81548160ff021916908360ff160217905550979650505050505050565b6104c3611107565b6104cd6000611185565b565b6104d76105bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610560575060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690612afe565b60405180910390fd5b6002600360156101000a81548160ff021916908360ff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105ee6105bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610677575060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6106b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ad90612afe565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610702611107565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006001600360149054906101000a900460ff1660ff16146107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90612b6a565b60405180910390fd5b6001600360159054906101000a900460ff1660ff1614610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090612bd6565b60405180910390fd5b6002600360146101000a81548160ff021916908360ff1602179055506000808b73ffffffffffffffffffffffffffffffffffffffff168b60405161084c90612c6c565b60006040518083038185875af1925050503d8060008114610889576040519150601f19603f3d011682016040523d82523d6000602084013e61088e565b606091505b509150915081816040516020016108a59190612ce7565b604051602081830303815290604052906108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec9190612d42565b60405180910390fd5b506109058a8a8a8a8a8a8a610bcb565b92508773ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2db5ddd0b42bdbca0d69ea16f234a870a485854ae0d91f16643d6f317d8b8994888d8c896040516109819493929190612bf6565b60405180910390a450506001600360146101000a81548160ff021916908360ff1602179055509998505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e2611107565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4890612dd6565b60405180910390fd5b610a5a81611185565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490612e68565b60405180910390fd5b6001600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008282810190610b409190612e88565b90506000808613610b515784610b53565b855b905060008113610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612f27565b60405180910390fd5b610bc333828473ffffffffffffffffffffffffffffffffffffffff166112499092919063ffffffff16565b505050505050565b60008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614610c94578873ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610c4e919061278d565b602060405180830381865afa158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f9190612f5c565b610c96565b475b9050600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610d60578773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d1a919061278d565b602060405180830381865afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b9190612f5c565b610d62565b475b90506000610d6f856112cf565b90505b610d7b816112f0565b15610e51576000610d8b8261130c565b905060018160ff1603610da657610da182611323565b610e4b565b60028160ff1603610dc057610dbb828c6113cf565b610e4a565b60038160ff1603610dd957610dd4826113ed565b610e49565b60048160ff1603610df257610ded82611416565b610e48565b60058160ff1603610e0c57610e078c83611434565b610e47565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90612ffb565b60405180910390fd5b5b5b5b5b50610d72565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614610f19578b73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610ed3919061278d565b602060405180830381865afa158015610ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f149190612f5c565b610f1b565b475b9050838b82610f2a919061304a565b1015610f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f62906130f0565b60405180910390fd5b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611033578a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fed919061278d565b602060405180830381865afa15801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e9190612f5c565b61104c565b3073ffffffffffffffffffffffffffffffffffffffff16315b9050898461105a919061304a565b81101561109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390613182565b60405180910390fd5b83816110a891906131a2565b95506110c08b898b896110bb91906131a2565b6114b3565b60008911156110f7576110f68b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b6114b3565b5b5050505050979650505050505050565b61110f6115dd565b73ffffffffffffffffffffffffffffffffffffffff1661112d6105bd565b73ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a90613222565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112ca8363a9059cbb60e01b8484604051602401611268929190613242565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115e5565b505050565b60006040519050604081016040528181528151808301602083015250919050565b6000806000835191506020840151905080821092505050919050565b600081516001810190508051915080835250919050565b600061132e826116ad565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161136b919061278d565b602060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac9190612f5c565b905060008111156113be576001810390505b6113ca833084846116c4565b505050565b60006113da836116ad565b90506113e8833383856116c4565b505050565b6000479050611412823073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee846116c4565b5050565b6000611421826116ad565b9050611430823083600061172f565b5050565b600061143f826117d4565b9050600061144c836117d4565b905060006114598461130c565b90506000611466856117eb565b90506000611473866117eb565b90506114aa333087878787878e73ffffffffffffffffffffffffffffffffffffffff1661180290979695949392919063ffffffff16565b50505050505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ac5760008273ffffffffffffffffffffffffffffffffffffffff168260405161152090612c6c565b60006040518083038185875af1925050503d806000811461155d576040519150601f19603f3d011682016040523d82523d6000602084013e611562565b606091505b50509050806115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d906132dd565b60405180910390fd5b506115d8565b6115d782828573ffffffffffffffffffffffffffffffffffffffff166112499092919063ffffffff16565b5b505050565b600033905090565b6000611647826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166119cf9092919063ffffffff16565b90506000815114806116695750808060200190518101906116689190613312565b5b6116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169f906133b1565b60405180910390fd5b505050565b600081516014810190508051915080835250919050565b60006116cf8561130c565b905060005b8160ff168110156117275760006116ea876119e7565b9050600061ffff8261ffff16860281611706576117056133d1565b5b049050808503945061171a8888888461172f565b50508060010190506116d4565b505050505050565b600061173a8561130c565b905060008160ff160361175857611753858585856119fe565b6117cd565b60018160ff16036117745761176f85858585611d7f565b6117cc565b60028160ff16036117905761178b85858585612036565b6117cb565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c290613472565b60405180910390fd5b5b5b5050505050565b600081516020810190508051915080835250919050565b600081516020810190508051915080835250919050565b60008873ffffffffffffffffffffffffffffffffffffffff16637ecebe00896040518263ffffffff1660e01b815260040161183d919061278d565b602060405180830381865afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190612f5c565b90508873ffffffffffffffffffffffffffffffffffffffff1663d505accf898989898989896040518863ffffffff1660e01b81526004016118c597969594939291906134c7565b600060405180830381600087803b1580156118df57600080fd5b505af11580156118f3573d6000803e3d6000fd5b5050505060008973ffffffffffffffffffffffffffffffffffffffff16637ecebe008a6040518263ffffffff1660e01b8152600401611932919061278d565b602060405180830381865afa15801561194f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119739190612f5c565b9050600182611982919061304a565b81146119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba906135a8565b60405180910390fd5b50505050505050505050565b60606119de848460008561226a565b90509392505050565b600081516002810190508051915080835250919050565b6000611a09856116ad565b90506000611a168661130c565b90506000611a23876116ad565b90506000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a97919061364a565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600082118015611acc5750600081115b611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906136e9565b60405180910390fd5b60008060018660ff1614611b20578284611b23565b83835b9150915060008814611bc5573073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603611b9257611b8d87898b73ffffffffffffffffffffffffffffffffffffffff166112499092919063ffffffff16565b611bc0565b611bbf8a888a8c73ffffffffffffffffffffffffffffffffffffffff16612337909392919063ffffffff16565b5b611c4d565b818973ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401611bff919061278d565b602060405180830381865afa158015611c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c409190612f5c565b611c4a91906131a2565b97505b60006103e589611c5d9190613709565b90506000816103e885611c709190613709565b611c7a919061304a565b8383611c869190613709565b611c90919061374b565b905060008060018a60ff1614611ca857826000611cac565b6000835b915091508a73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838c600067ffffffffffffffff811115611cea57611ce961256b565b5b6040519080825280601f01601f191660200182016040528015611d1c5781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401611d3c94939291906137c6565b600060405180830381600087803b158015611d5657600080fd5b505af1158015611d6a573d6000803e3d6000fd5b50505050505050505050505050505050505050565b6000611d8a856116ad565b9050600080611d988761130c565b60ff161190506000611da9876116ad565b90503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611e7a573373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613884565b60405180910390fd5b611e793330868873ffffffffffffffffffffffffffffffffffffffff16612337909392919063ffffffff16565b5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1663128acb0882848786611f0557600173fffd8963efd1fc6a506488495d951d5263988d26611f0091906138a4565b611f18565b60016401000276a3611f1791906138ec565b5b8a604051602001611f29919061278d565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611f58959493929190613961565b60408051808303816000875af1158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9a91906139d0565b5050600173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490613a82565b60405180910390fd5b50505050505050565b60006120418561130c565b9050600061204e866116ad565b9050600180831660ff160361213f576000612068876116ad565b905060006002841660ff16036120da578073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156120c057600080fd5b505af11580156120d4573d6000803e3d6000fd5b50505050505b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121395761213882858373ffffffffffffffffffffffffffffffffffffffff166112499092919063ffffffff16565b5b50612262565b60006002831660ff160361221a573073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146121ae576121ad8530858773ffffffffffffffffffffffffffffffffffffffff16612337909392919063ffffffff16565b5b8373ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846040518263ffffffff1660e01b81526004016121e79190612763565b600060405180830381600087803b15801561220157600080fd5b505af1158015612215573d6000803e3d6000fd5b505050505b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612260573d6000803e3d6000fd5b505b505050505050565b6060824710156122af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a690613b14565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122d89190612ce7565b60006040518083038185875af1925050503d8060008114612315576040519150601f19603f3d011682016040523d82523d6000602084013e61231a565b606091505b509150915061232b878383876123c0565b92505050949350505050565b6123ba846323b872dd60e01b85858560405160240161235893929190613b34565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115e5565b50505050565b6060831561242257600083510361241a576123da85612435565b612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090613bb7565b60405180910390fd5b5b82905061242d565b61242c8383612458565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561246b5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249f9190612d42565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124e7826124bc565b9050919050565b6124f7816124dc565b811461250257600080fd5b50565b600081359050612514816124ee565b92915050565b6000819050919050565b61252d8161251a565b811461253857600080fd5b50565b60008135905061254a81612524565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125a38261255a565b810181811067ffffffffffffffff821117156125c2576125c161256b565b5b80604052505050565b60006125d56124a8565b90506125e1828261259a565b919050565b600067ffffffffffffffff8211156126015761260061256b565b5b61260a8261255a565b9050602081019050919050565b82818337600083830152505050565b6000612639612634846125e6565b6125cb565b90508281526020810184848401111561265557612654612555565b5b612660848285612617565b509392505050565b600082601f83011261267d5761267c612550565b5b813561268d848260208601612626565b91505092915050565b600080600080600080600060e0888a0312156126b5576126b46124b2565b5b60006126c38a828b01612505565b97505060206126d48a828b0161253b565b96505060406126e58a828b01612505565b95505060606126f68a828b0161253b565b94505060806127078a828b0161253b565b93505060a06127188a828b01612505565b92505060c088013567ffffffffffffffff811115612739576127386124b7565b5b6127458a828b01612668565b91505092959891949750929550565b61275d8161251a565b82525050565b60006020820190506127786000830184612754565b92915050565b612787816124dc565b82525050565b60006020820190506127a2600083018461277e565b92915050565b6000602082840312156127be576127bd6124b2565b5b60006127cc84828501612505565b91505092915050565b60008115159050919050565b6127ea816127d5565b81146127f557600080fd5b50565b600081359050612807816127e1565b92915050565b60008060408385031215612824576128236124b2565b5b600061283285828601612505565b9250506020612843858286016127f8565b9150509250929050565b6000612858826124bc565b9050919050565b6128688161284d565b811461287357600080fd5b50565b6000813590506128858161285f565b92915050565b60008060008060008060008060006101208a8c0312156128ae576128ad6124b2565b5b60006128bc8c828d01612876565b99505060206128cd8c828d0161253b565b98505060406128de8c828d01612505565b97505060606128ef8c828d0161253b565b96505060806129008c828d01612505565b95505060a06129118c828d0161253b565b94505060c06129228c828d0161253b565b93505060e06129338c828d01612505565b9250506101008a013567ffffffffffffffff811115612955576129546124b7565b5b6129618c828d01612668565b9150509295985092959850929598565b6000819050919050565b61298481612971565b811461298f57600080fd5b50565b6000813590506129a18161297b565b92915050565b600080fd5b600080fd5b60008083601f8401126129c7576129c6612550565b5b8235905067ffffffffffffffff8111156129e4576129e36129a7565b5b602083019150836001820283011115612a00576129ff6129ac565b5b9250929050565b60008060008060608587031215612a2157612a206124b2565b5b6000612a2f87828801612992565b9450506020612a4087828801612992565b935050604085013567ffffffffffffffff811115612a6157612a606124b7565b5b612a6d878288016129b1565b925092505092959194509250565b600082825260208201905092915050565b7f52503a2063616c6c6572206973206e6f7420746865206f776e6572206f72206160008201527f2070726976696c65646765642075736572000000000000000000000000000000602082015250565b6000612ae8603183612a7b565b9150612af382612a8c565b604082019050919050565b60006020820190508181036000830152612b1781612adb565b9050919050565b7f526f75746550726f636573736f72206973206c6f636b65640000000000000000600082015250565b6000612b54601883612a7b565b9150612b5f82612b1e565b602082019050919050565b60006020820190508181036000830152612b8381612b47565b9050919050565b7f526f75746550726f636573736f72206973207061757365640000000000000000600082015250565b6000612bc0601883612a7b565b9150612bcb82612b8a565b602082019050919050565b60006020820190508181036000830152612bef81612bb3565b9050919050565b6000608082019050612c0b600083018761277e565b612c186020830186612754565b612c256040830185612754565b612c326060830184612754565b95945050505050565b600081905092915050565b50565b6000612c56600083612c3b565b9150612c6182612c46565b600082019050919050565b6000612c7782612c49565b9150819050919050565b600081519050919050565b60005b83811015612caa578082015181840152602081019050612c8f565b60008484015250505050565b6000612cc182612c81565b612ccb8185612c3b565b9350612cdb818560208601612c8c565b80840191505092915050565b6000612cf38284612cb6565b915081905092915050565b600081519050919050565b6000612d1482612cfe565b612d1e8185612a7b565b9350612d2e818560208601612c8c565b612d378161255a565b840191505092915050565b60006020820190508181036000830152612d5c8184612d09565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612dc0602683612a7b565b9150612dcb82612d64565b604082019050919050565b60006020820190508181036000830152612def81612db3565b9050919050565b7f526f75746550726f636573736f722e756e697377617056335377617043616c6c60008201527f6261636b3a2063616c6c2066726f6d20756e6b6e6f776e20736f757263650000602082015250565b6000612e52603e83612a7b565b9150612e5d82612df6565b604082019050919050565b60006020820190508181036000830152612e8181612e45565b9050919050565b600060208284031215612e9e57612e9d6124b2565b5b6000612eac84828501612876565b91505092915050565b7f526f75746550726f636573736f722e756e697377617056335377617043616c6c60008201527f6261636b3a206e6f7420706f73697469766520616d6f756e7400000000000000602082015250565b6000612f11603983612a7b565b9150612f1c82612eb5565b604082019050919050565b60006020820190508181036000830152612f4081612f04565b9050919050565b600081519050612f5681612524565b92915050565b600060208284031215612f7257612f716124b2565b5b6000612f8084828501612f47565b91505092915050565b7f526f75746550726f636573736f723a20556e6b6e6f776e20636f6d6d616e642060008201527f636f646500000000000000000000000000000000000000000000000000000000602082015250565b6000612fe5602483612a7b565b9150612ff082612f89565b604082019050919050565b6000602082019050818103600083015261301481612fd8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130558261251a565b91506130608361251a565b92508282019050808211156130785761307761301b565b5b92915050565b7f526f75746550726f636573736f723a204d696e696d616c20696d70757420626160008201527f6c616e63652076696f6c6174696f6e0000000000000000000000000000000000602082015250565b60006130da602f83612a7b565b91506130e58261307e565b604082019050919050565b60006020820190508181036000830152613109816130cd565b9050919050565b7f526f75746550726f636573736f723a204d696e696d616c206f7570757420626160008201527f6c616e63652076696f6c6174696f6e0000000000000000000000000000000000602082015250565b600061316c602f83612a7b565b915061317782613110565b604082019050919050565b6000602082019050818103600083015261319b8161315f565b9050919050565b60006131ad8261251a565b91506131b88361251a565b92508282039050818111156131d0576131cf61301b565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061320c602083612a7b565b9150613217826131d6565b602082019050919050565b6000602082019050818103600083015261323b816131ff565b9050919050565b6000604082019050613257600083018561277e565b6132646020830184612754565b9392505050565b7f5472616e736665722048656c7065723a204661696c656420746f207472616e7360008201527f6665722045544800000000000000000000000000000000000000000000000000602082015250565b60006132c7602783612a7b565b91506132d28261326b565b604082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b60008151905061330c816127e1565b92915050565b600060208284031215613328576133276124b2565b5b6000613336848285016132fd565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061339b602a83612a7b565b91506133a68261333f565b604082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f526f75746550726f636573736f723a20556e6b6e6f776e20706f6f6c2074797060008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061345c602183612a7b565b915061346782613400565b604082019050919050565b6000602082019050818103600083015261348b8161344f565b9050919050565b600060ff82169050919050565b6134a881613492565b82525050565b6000819050919050565b6134c1816134ae565b82525050565b600060e0820190506134dc600083018a61277e565b6134e9602083018961277e565b6134f66040830188612754565b6135036060830187612754565b613510608083018661349f565b61351d60a08301856134b8565b61352a60c08301846134b8565b98975050505050505050565b7f5361666545524332303a207065726d697420646964206e6f742073756363656560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613592602183612a7b565b915061359d82613536565b604082019050919050565b600060208201905081810360008301526135c181613585565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b6135eb816135c8565b81146135f657600080fd5b50565b600081519050613608816135e2565b92915050565b600063ffffffff82169050919050565b6136278161360e565b811461363257600080fd5b50565b6000815190506136448161361e565b92915050565b600080600060608486031215613663576136626124b2565b5b6000613671868287016135f9565b9350506020613682868287016135f9565b925050604061369386828701613635565b9150509250925092565b7f57726f6e6720706f6f6c20726573657276657300000000000000000000000000600082015250565b60006136d3601383612a7b565b91506136de8261369d565b602082019050919050565b60006020820190508181036000830152613702816136c6565b9050919050565b60006137148261251a565b915061371f8361251a565b925082820261372d8161251a565b915082820484148315176137445761374361301b565b5b5092915050565b60006137568261251a565b91506137618361251a565b925082613771576137706133d1565b5b828204905092915050565b600082825260208201905092915050565b600061379882612c81565b6137a2818561377c565b93506137b2818560208601612c8c565b6137bb8161255a565b840191505092915050565b60006080820190506137db6000830187612754565b6137e86020830186612754565b6137f5604083018561277e565b8181036060830152613807818461378d565b905095945050505050565b7f73776170556e6956333a20756e65787065637465642066726f6d20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061386e602283612a7b565b915061387982613812565b604082019050919050565b6000602082019050818103600083015261389d81613861565b9050919050565b60006138af826124bc565b91506138ba836124bc565b9250828203905073ffffffffffffffffffffffffffffffffffffffff8111156138e6576138e561301b565b5b92915050565b60006138f7826124bc565b9150613902836124bc565b9250828201905073ffffffffffffffffffffffffffffffffffffffff81111561392e5761392d61301b565b5b92915050565b61393d816127d5565b82525050565b61394c81612971565b82525050565b61395b816124bc565b82525050565b600060a082019050613976600083018861277e565b6139836020830187613934565b6139906040830186613943565b61399d6060830185613952565b81810360808301526139af818461378d565b90509695505050505050565b6000815190506139ca8161297b565b92915050565b600080604083850312156139e7576139e66124b2565b5b60006139f5858286016139bb565b9250506020613a06858286016139bb565b9150509250929050565b7f526f75746550726f636573736f722e73776170556e6956333a20756e6578706560008201527f6374656400000000000000000000000000000000000000000000000000000000602082015250565b6000613a6c602483612a7b565b9150613a7782613a10565b604082019050919050565b60006020820190508181036000830152613a9b81613a5f565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613afe602683612a7b565b9150613b0982613aa2565b604082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b6000606082019050613b49600083018661277e565b613b56602083018561277e565b613b636040830184612754565b949350505050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613ba1601d83612a7b565b9150613bac82613b6b565b602082019050919050565b60006020820190508181036000830152613bd081613b94565b905091905056fea26469706673582212205429e06861f322f14e89ce6194ad06516227d4d3e1c33c8de152669bca6e899864736f6c63430008130033