sach0x0000000000000000f9467380870cd0d1bac000008084300000008080b945da608060405234801561001057600080fd5b506145ba806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638ae20dc911610097578063b65975ec11610066578063b65975ec1461025c578063c57b22be1461028c578063f2235487146102aa578063faf4d8cb146102c8576100f5565b80638ae20dc9146101c45780639ba0d146146101f45780639beb465014610224578063b4a8498c14610240576100f5565b806359acda85116100d357806359acda8514610150578063647b59231461016c57806367708dae1461018a5780637efcfe85146101a8576100f5565b80631d179643146100fa578063264c091214610116578063595a5ebc14610134575b600080fd5b610114600480360381019061010f9190613060565b6102e6565b005b61011e6109df565b60405161012b9190613c8c565b60405180910390f35b61014e60048036038101906101499190613008565b6109f2565b005b61016a60048036038101906101659190612fdf565b610dad565b005b610174610ec4565b60405161018191906141be565b60405180910390f35b610192610eda565b60405161019f9190614202565b60405180910390f35b6101c260048036038101906101bd91906131af565b610ef4565b005b6101de60048036038101906101d99190612ef0565b6113bb565b6040516101eb9190613ca7565b60405180910390f35b61020e60048036038101906102099190613186565b6113e0565b60405161021b9190613ca7565b60405180910390f35b61023e60048036038101906102399190612f2c565b6113f8565b005b61025a60048036038101906102559190612f71565b6115b0565b005b61027660048036038101906102719190612ef0565b61190f565b60405161028391906141a3565b60405180910390f35b610294611934565b6040516102a19190614202565b60405180910390f35b6102b261194e565b6040516102bf91906141be565b60405180910390f35b6102d0611964565b6040516102dd91906141be565b60405180910390f35b60007f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf45490506001811461031957600080fd5b60027f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf45562ffffff63ffffffff168a63ffffffff16111561038f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103869061403f565b60405180910390fd5b62ffffff63ffffffff168a63ffffffff1614156103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d89061401f565b60405180910390fd5b637ffffffe63ffffffff168963ffffffff1610610433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042a90613fbf565b60405180910390fd5b600960009054906101000a900460ff16610482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990613edf565b60405180910390fd5b600860008b63ffffffff1663ffffffff16815260200190815260200160002060008a63ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900460ff161561050c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105039061407f565b60405180910390fd5b6105258c803603810190610520919061315d565b61197a565b600d6000600660089054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020019081526020016000205414610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058e90613e5f565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7e136368e608001358d8f8e8e8e8e8e8e8e8e6040518c63ffffffff1660e01b815260040161060c9b9a99989796959493929190613cc2565b60206040518083038186803b15801561062457600080fd5b505afa158015610638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065c9190612fb6565b90508061069e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069590613eff565b60405180910390fd5b61ffff63ffffffff168a63ffffffff16116107275760006106bf8d8c6119aa565b90506106cb818b6119f0565b8c73ffffffffffffffffffffffffffffffffffffffff168b61ffff167f08262c50127efaa884a8609d16fe2ed98c5fd8e4f1c393f2d7d8f9f52f602ff68c600260405161071992919061417a565b60405180910390a350610957565b6000896fffffffffffffffffffffffffffffffff16141561077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490613f5f565b60405180910390fd5b610785612afb565b6040518060c001604052808a63ffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018863ffffffff1681526020018781526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020018c63ffffffff16815250905080601260008d63ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001015560808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160020160146101000a81548163ffffffff021916908363ffffffff1602179055509050508a63ffffffff167f1d19de6753fc463923c3d90b6fb45aca536732ed7c5ca377d4b3f63dfbe4d81960405160405180910390a2505b6001600860008d63ffffffff1663ffffffff16815260200190815260200160002060008c63ffffffff1663ffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505060017f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf455505050505050505050505050565b600960009054906101000a900460ff1681565b60007f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf454905060018114610a2557600080fd5b60027f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf455610a51611b24565b601460ff168484905014610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9190613f9f565b60405180910390fd5b6000801b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008463ffffffff1663ffffffff168152602001908152602001600020541415610b7e578383604051610b11929190613c14565b6040518091039020600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008463ffffffff1663ffffffff16815260200190815260200160002081905550610d83565b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008463ffffffff1663ffffffff1681526020019081526020016000205490506000811415610c4e5742601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008563ffffffff1663ffffffff16815260200190815260200160002081905550610d81565b62015180610c658242611b7690919063ffffffff16565b1015610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d90613ebf565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008563ffffffff1663ffffffff168152602001908152602001600020819055508484604051610d18929190613c14565b6040518091039020600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008563ffffffff1663ffffffff168152602001908152602001600020819055505b505b60017f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf45550505050565b60007f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf454905060018114610de057600080fd5b60027f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf45560006015541415610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4190613e3f565b60405180910390fd5b81610e53611bc0565b14610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a9061413f565b60405180910390fd5b610e9c33611fa2565b60017f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf4555050565b600e60009054906101000a900463ffffffff1681565b600c60009054906101000a900467ffffffffffffffff1681565b60007f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf454905060018114610f2757600080fd5b60027f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf455600960009054906101000a900460ff16610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f91906140df565b60405180910390fd5b6000610fbc600c60089054906101000a900467ffffffffffffffff1686612532565b905060008167ffffffffffffffff161161100b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611002906140bf565b60405180910390fd5b600080600c60009054906101000a900467ffffffffffffffff1690505b82600c60009054906101000a900467ffffffffffffffff160167ffffffffffffffff168167ffffffffffffffff16101561130a576001600b81111561106957fe5b600f60008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600001601c9054906101000a900460ff16600b8111156110ac57fe5b141561127f57606086868467ffffffffffffffff168181106110ca57fe5b90506020028101906110dc919061421d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600f60008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900460601b6bffffffffffffffffffffffff19166111718261255f565b6bffffffffffffffffffffffff1916146111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790613e7f565b60405180910390fd5b8260010192506111ce612b72565b6111d782612576565b905060006111ed826060015183602001516119aa565b90508160400151600460008369ffffffffffffffffffff191669ffffffffffffffffffff1916815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505b600f60008267ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905560008201601c6101000a81549060ff02191690555050806001019050611028565b5081600c60008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600c60088282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505060017f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf45550505050565b600a602052816000526040600020602052806000526040600020600091509150505481565b600d6020528060005260406000206000915090505481565b60007f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf45490506001811461142b57600080fd5b60027f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf45560006015541415611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c9061405f565b60405180910390fd5b600061149f611bc0565b905060006114cb826040516020016114b79190613bf9565b6040516020818303038152906040526126a2565b6040516020016114db9190613c44565b60405160208183030381529060405280519060200120905060005b8585905081101561158457600061156d87878481811061151257fe5b9050602002810190611524919061421d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508461276d565b905061157881611fa2565b508060010190506114f6565b50505060017f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf455505050565b60007f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf4549050600181146115e357600080fd5b60027f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf45561160f611b24565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b18bd0f336040518263ffffffff1660e01b815260040161166a9190613c71565b60006040518083038186803b15801561168257600080fd5b505afa158015611696573d6000803e3d6000fd5b5050505060006006600c9054906101000a900463ffffffff16905060006116d485859050600660089054906101000a900463ffffffff1684036128a0565b90506000805b8263ffffffff168163ffffffff1610156117c8576116f6612bce565b87878363ffffffff1681811061170857fe5b905060c0020180360381019061171e919061315d565b90506117298161197a565b600d60008763ffffffff1663ffffffff1681526020019081526020016000205414611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090613e9f565b60405180910390fd5b600d60008663ffffffff1663ffffffff1681526020019081526020016000206000905584600190039450806020015183019250508060010190506116da565b50826006600c6101000a81548163ffffffff021916908363ffffffff16021790555080600c60108282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600e60009054906101000a900463ffffffff1663ffffffff166006600c9054906101000a900463ffffffff1663ffffffff161015611898576006600c9054906101000a900463ffffffff16600e60006101000a81548163ffffffff021916908363ffffffff1602179055505b7f6f3a8259cce1ea2680115053d21c971aa1764295a45850f520525f2bfdf3c9d3600660089054906101000a900463ffffffff16846040516118db9291906141d9565b60405180910390a150505060017f8e94fed44239eb2314ab7a406345e6c5a8f0ccedf3b600de3d004e672c33abf455505050565b6010602052816000526040600020602052806000526040600020600091509150505481565b600c60089054906101000a900467ffffffffffffffff1681565b600660089054906101000a900463ffffffff1681565b6006600c9054906101000a900463ffffffff1681565b60008160405160200161198d919061415f565b604051602081830303815290604052805190602001209050919050565b600060a08261ffff1675ffffffffffffffffffffffffffffffffffffffffffff16901b8373ffffffffffffffffffffffffffffffffffffffff161760501b905092915050565b6000600460008469ffffffffffffffffffff191669ffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff1690506040518060400160405280611a7184846fffffffffffffffffffffffffffffffff166128c590919063ffffffff16565b6fffffffffffffffffffffffffffffffff16815260200160ff8016815250600460008569ffffffffffffffffffff191669ffffffffffffffffffff1916815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548160ff021916908360ff160217905550905050505050565b600960009054906101000a900460ff1615611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90613fdf565b60405180910390fd5b565b6000611bb883836040518060400160405280600181526020017f760000000000000000000000000000000000000000000000000000000000000081525061293e565b905092915050565b6000807338a43f4330f24fe920f943409709fc9a6084c9399050600060608273ffffffffffffffffffffffffffffffffffffffff166000604051602401611c079190613dac565b6040516020818303038152906040527fc3d17706000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611c919190613c2d565b600060405180830381855afa9150503d8060008114611ccc576040519150601f19603f3d011682016040523d82523d6000602084013e611cd1565b606091505b5091509150600060608473ffffffffffffffffffffffffffffffffffffffff166001604051602401611d039190613dc7565b6040516020818303038152906040527fc3d17706000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d8d9190613c2d565b600060405180830381855afa9150503d8060008114611dc8576040519150601f19603f3d011682016040523d82523d6000602084013e611dcd565b606091505b5091509150600060608673ffffffffffffffffffffffffffffffffffffffff166002604051602401611dff9190613de2565b6040516020818303038152906040527fc3d17706000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611e899190613c2d565b600060405180830381855afa9150503d8060008114611ec4576040519150601f19603f3d011682016040523d82523d6000602084013e611ec9565b606091505b5091509150858015611ed85750835b8015611ee15750815b611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1790613fff565b60405180910390fd5b600085806020019051810190611f369190612ec7565b9050600084806020019051810190611f4e9190612ec7565b9050600083806020019051810190611f669190612ec7565b9050828282604051602001611f7d93929190613bbc565b604051602081830303815290604052805190602001209a505050505050505050505090565b611faa612c1d565b604051806101e0016040528073a2602ea835e03fb39ced30b43d6b6eaf6ade176973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739d5d6d4baccedf6ece1883456aa785dc996df60773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001722a5dc50bbb8d5808e418aeeb9f060a2ca1734673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017371e805ab236c945165b9cd0bf95b9f2f0a0488c373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017376c6ce74eab57254e785d1dcc3f812d274bccb1173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fbff3ff69d65a9103bf4fdbf988f5271d12b319073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173afc2f2d803479a2af3a72022d54cc0901a0ec0d673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734d1e3089042ab3a93e03ca88b566b99bd22438c673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017319ed6cc20d44e5cf4bb4894f50162f72402d856773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017339415255619783a2e71fcf7d8f708a951d92e1b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173399a6a13d298cf3f41a562966c1a450136ea52c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ee8ae1f1b4b1e1956c8bda27eebce54cf0bb5eab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e7ccd4f3fea7df88cf9b59b30f738ec1e049231f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a093284c707e207c36e3fef9e0b6325fd9d0e33b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173225d3822de44e58ee935440e0c0b829c4232086e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250905060005b600f81101561252d578273ffffffffffffffffffffffffffffffffffffffff168282600f81106123fe57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff161415612522576016600082815260200190815260200160002060009054906101000a900460ff1661251d5760016016600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff167fa7e70c4e59334e595e4a02f540b4fa25f004f37b93811499515ba05a24418bcb60405160405180910390a260096017541061251c576000601454111561251b5760006014819055507ff2b18f8abbd8a0d0c1fb8245146eedf5304887b12f6395b548ca238e054a148360145460405161251291906141a3565b60405180910390a15b5b5b61252d565b8060010190506123d2565b505050565b60008167ffffffffffffffff168367ffffffffffffffff16106125555781612557565b825b905092915050565b6000818051906020012060001c60601b9050919050565b61257e612b72565b6000600160ff1690506125918382612999565b836000018163ffffffff1663ffffffff1681525081925050506125b48382612999565b836020018163ffffffff1663ffffffff1681525081925050506125d783826129b5565b83604001816fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250819250505061261283826129d1565b836060018173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081925050506014601060048060010101010160ff16811461269c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269390613f3f565b60405180910390fd5b50919050565b606080600283510267ffffffffffffffff811180156126c057600080fd5b506040519080825280601f01601f1916602001820160405280156126f35781602001600182028036833780820191505090505b5090506020830183518101602083015b8183101561276157825160f81c6f6665646362613938373635343332313060088260041c021c60f81b82526f66656463626139383736353433323130600882600f16021c60f81b600183015250600183019250600281019050612703565b50505080915050919050565b600060418351146127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90613f1f565b60405180910390fd5b60008060006020860151925060408601519150606086015160001a90506000600186838686604051600081526020016040526040516127f59493929190613d67565b6020604051602081039080840390855afa158015612817573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90613e1f565b60405180910390fd5b8094505050505092915050565b60008163ffffffff168363ffffffff16106128bb57816128bd565b825b905092915050565b6000808284019050836fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161015612934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292b90613f7f565b60405180910390fd5b8091505092915050565b6000838311158290612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613dfd565b60405180910390fd5b5060008385039050809150509392505050565b6000806004830191506129ac84846129ed565b90509250929050565b6000806010830191506129c88484612a47565b90509250929050565b6000806014830191506129e48484612aa1565b90509250929050565b6000806004830190508084511015612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a319061411f565b60405180910390fd5b8084015191505092915050565b6000806010830190508084511015612a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8b9061409f565b60405180910390fd5b8084015191505092915050565b6000806014830190508084511015612aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae5906140ff565b60405180910390fd5b8084015191505092915050565b6040518060c00160405280600063ffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600063ffffffff16815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600063ffffffff1681525090565b6040518060800160405280600063ffffffff168152602001600063ffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6040518060c00160405280600063ffffffff168152602001600067ffffffffffffffff168152602001600080191681526020016000815260200160008019168152602001600080191681525090565b604051806101e00160405280600f90602082028036833780820191505090505090565b600081359050612c4f816144cc565b92915050565b600081519050612c64816144e3565b92915050565b60008083601f840112612c7c57600080fd5b8235905067ffffffffffffffff811115612c9557600080fd5b602083019150836020820283011115612cad57600080fd5b9250929050565b60008083601f840112612cc657600080fd5b8235905067ffffffffffffffff811115612cdf57600080fd5b6020830191508360c0820283011115612cf757600080fd5b9250929050565b60008083601f840112612d1057600080fd5b8235905067ffffffffffffffff811115612d2957600080fd5b602083019150836020820283011115612d4157600080fd5b9250929050565b600081519050612d57816144fa565b92915050565b600081359050612d6c81614511565b92915050565b60008083601f840112612d8457600080fd5b8235905067ffffffffffffffff811115612d9d57600080fd5b602083019150836001820283011115612db557600080fd5b9250929050565b600060c08284031215612dce57600080fd5b81905092915050565b600060c08284031215612de957600080fd5b612df360c0614274565b90506000612e0384828501612e9d565b6000830152506020612e1784828501612eb2565b6020830152506040612e2b84828501612d5d565b6040830152506060612e3f84828501612e88565b6060830152506080612e5384828501612d5d565b60808301525060a0612e6784828501612d5d565b60a08301525092915050565b600081359050612e8281614528565b92915050565b600081359050612e978161453f565b92915050565b600081359050612eac81614556565b92915050565b600081359050612ec18161456d565b92915050565b600060208284031215612ed957600080fd5b6000612ee784828501612c55565b91505092915050565b60008060408385031215612f0357600080fd5b6000612f1185828601612c40565b9250506020612f2285828601612e9d565b9150509250929050565b60008060208385031215612f3f57600080fd5b600083013567ffffffffffffffff811115612f5957600080fd5b612f6585828601612c6a565b92509250509250929050565b60008060208385031215612f8457600080fd5b600083013567ffffffffffffffff811115612f9e57600080fd5b612faa85828601612cb4565b92509250509250929050565b600060208284031215612fc857600080fd5b6000612fd684828501612d48565b91505092915050565b600060208284031215612ff157600080fd5b6000612fff84828501612d5d565b91505092915050565b60008060006040848603121561301d57600080fd5b600084013567ffffffffffffffff81111561303757600080fd5b61304386828701612d72565b9350935050602061305686828701612e9d565b9150509250925092565b60008060008060008060008060008060006101e08c8e03121561308257600080fd5b60006130908e828f01612dbc565b9b505060c06130a18e828f01612c40565b9a505060e06130b28e828f01612e9d565b9950506101006130c48e828f01612e9d565b9850506101206130d68e828f01612e73565b9750506101406130e88e828f01612e9d565b9650506101606130fa8e828f01612c40565b95505061018061310c8e828f01612e9d565b9450506101a061311e8e828f01612d5d565b9350506101c08c013567ffffffffffffffff81111561313c57600080fd5b6131488e828f01612cfe565b92509250509295989b509295989b9093969950565b600060c0828403121561316f57600080fd5b600061317d84828501612dd7565b91505092915050565b60006020828403121561319857600080fd5b60006131a684828501612e9d565b91505092915050565b6000806000604084860312156131c457600080fd5b60006131d286828701612eb2565b935050602084013567ffffffffffffffff8111156131ef57600080fd5b6131fb86828701612c6a565b92509250509250925092565b613210816143b3565b82525050565b61321f816142ef565b82525050565b613236613231826142ef565b614473565b82525050565b600061324883856142b7565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561327757600080fd5b602083029250613288838584614431565b82840190509392505050565b61329d81614313565b82525050565b6132ac8161431f565b82525050565b6132bb8161431f565b82525050565b6132d26132cd8261431f565b614485565b82525050565b60006132e483856142c8565b93506132f1838584614431565b82840190509392505050565b6000613308826142a1565b61331281856142c8565b9350613322818560208601614440565b80840191505092915050565b613337816143c5565b82525050565b613346816143d7565b82525050565b613355816143e9565b82525050565b613364816143fb565b82525050565b6000613375826142ac565b61337f81856142d3565b935061338f818560208601614440565b613398816144a1565b840191505092915050565b60006133b06002836142d3565b91507f70340000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006133f06002836142d3565b91507f70310000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006134306001836142d3565b91507f75000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006134706001836142d3565b91507f61000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006134b06001836142d3565b91507f72000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006134f06001836142d3565b91507f7a000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006135306001836142d3565b91507f73000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006135706001836142d3565b91507f78000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006135b06001836142d3565b91507f50000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006135f06001836142d3565b91507f4e000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006136306001836142d3565b91507f5a000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006136706002836142d3565b91507f31320000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006136b06001836142d3565b91507f79000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006136f06001836142d3565b91507f54000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006137306001836142d3565b91507f4c000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006137706002836142d3565b91507f70350000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006137b06001836142d3565b91507f76000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006137f0601d836142e4565b91507f19457468657265756d205369676e6564204d6573736167653a0a3131300000006000830152601d82019050919050565b60006138306001836142d3565b91507f65000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000613870602e836142e4565b91507f417070726f766564206e6577205a6b53796e6327732074617267657420636f6e60008301527f74726163747320686173680a30780000000000000000000000000000000000006020830152602e82019050919050565b60006138d66002836142d3565b91507f70320000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006139166001836142d3565b91507f74000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006139566001836142d3565b91507f57000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006139966001836142d3565b91507f39000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006139d66001836142d3565b91507f38000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000613a166001836142d3565b91507f52000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000613a566001836142d3565b91507f56000000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000613a966002836142d3565b91507f70330000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60c082016000820151613adf6000850182613b71565b506020820151613af26020850182613b8f565b506040820151613b0560408501826132a3565b506060820151613b186060850182613b53565b506080820151613b2b60808501826132a3565b5060a0820151613b3e60a08501826132a3565b50505050565b613b4d8161433c565b82525050565b613b5c81614378565b82525050565b613b6b81614378565b82525050565b613b7a81614382565b82525050565b613b8981614382565b82525050565b613b9881614392565b82525050565b613ba781614392565b82525050565b613bb6816143a6565b82525050565b6000613bc88286613225565b601482019150613bd88285613225565b601482019150613be88284613225565b601482019150819050949350505050565b6000613c0582846132c1565b60208201915081905092915050565b6000613c218284866132d8565b91508190509392505050565b6000613c3982846132fd565b915081905092915050565b6000613c4f826137e3565b9150613c5a82613863565b9150613c6682846132fd565b915081905092915050565b6000602082019050613c866000830184613207565b92915050565b6000602082019050613ca16000830184613294565b92915050565b6000602082019050613cbc60008301846132b2565b92915050565b600061014082019050613cd8600083018e6132b2565b613ce5602083018d613b80565b613cf2604083018c613216565b613cff606083018b613b80565b613d0c608083018a613b44565b613d1960a0830189613b80565b613d2660c0830188613216565b613d3360e0830187613b80565b613d416101008301866132b2565b818103610120830152613d5581848661323c565b90509c9b505050505050505050505050565b6000608082019050613d7c60008301876132b2565b613d896020830186613bad565b613d9660408301856132b2565b613da360608301846132b2565b95945050505050565b6000602082019050613dc1600083018461333d565b92915050565b6000602082019050613ddc600083018461334c565b92915050565b6000602082019050613df7600083018461335b565b92915050565b60006020820190508181036000830152613e17818461336a565b905092915050565b60006020820190508181036000830152613e38816133a3565b9050919050565b60006020820190508181036000830152613e58816133e3565b9050919050565b60006020820190508181036000830152613e7881613423565b9050919050565b60006020820190508181036000830152613e9881613463565b9050919050565b60006020820190508181036000830152613eb8816134a3565b9050919050565b60006020820190508181036000830152613ed8816134e3565b9050919050565b60006020820190508181036000830152613ef881613523565b9050919050565b60006020820190508181036000830152613f1881613563565b9050919050565b60006020820190508181036000830152613f38816135a3565b9050919050565b60006020820190508181036000830152613f58816135e3565b9050919050565b60006020820190508181036000830152613f7881613623565b9050919050565b60006020820190508181036000830152613f9881613663565b9050919050565b60006020820190508181036000830152613fb8816136a3565b9050919050565b60006020820190508181036000830152613fd8816136e3565b9050919050565b60006020820190508181036000830152613ff881613723565b9050919050565b6000602082019050818103600083015261401881613763565b9050919050565b60006020820190508181036000830152614038816137a3565b9050919050565b6000602082019050818103600083015261405881613823565b9050919050565b60006020820190508181036000830152614078816138c9565b9050919050565b6000602082019050818103600083015261409881613909565b9050919050565b600060208201905081810360008301526140b881613949565b9050919050565b600060208201905081810360008301526140d881613989565b9050919050565b600060208201905081810360008301526140f8816139c9565b9050919050565b6000602082019050818103600083015261411881613a09565b9050919050565b6000602082019050818103600083015261413881613a49565b9050919050565b6000602082019050818103600083015261415881613a89565b9050919050565b600060c0820190506141746000830184613ac9565b92915050565b600060408201905061418f6000830185613b44565b61419c602083018461332e565b9392505050565b60006020820190506141b86000830184613b62565b92915050565b60006020820190506141d36000830184613b80565b92915050565b60006040820190506141ee6000830185613b80565b6141fb6020830184613b80565b9392505050565b60006020820190506142176000830184613b9e565b92915050565b6000808335600160200384360303811261423657600080fd5b80840192508235915067ffffffffffffffff82111561425457600080fd5b60208301925060018202360383131561426c57600080fd5b509250929050565b6000604051905081810181811067ffffffffffffffff8211171561429757600080fd5b8060405250919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006142fa82614358565b9050919050565b600061430c82614358565b9050919050565b60008115159050919050565b6000819050919050565b6000819050614337826144bf565b919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006143be8261440d565b9050919050565b60006143d082614329565b9050919050565b60006143e2826143a6565b9050919050565b60006143f4826143a6565b9050919050565b6000614406826143a6565b9050919050565b60006144188261441f565b9050919050565b600061442a82614358565b9050919050565b82818337600083830152505050565b60005b8381101561445e578082015181840152602081019050614443565b8381111561446d576000848401525b50505050565b600061447e8261448f565b9050919050565b6000819050919050565b600061449a826144b2565b9050919050565b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106144c957fe5b50565b6144d5816142ef565b81146144e057600080fd5b50565b6144ec81614301565b81146144f757600080fd5b50565b61450381614313565b811461450e57600080fd5b50565b61451a8161431f565b811461452557600080fd5b50565b6145318161433c565b811461453c57600080fd5b50565b61454881614378565b811461455357600080fd5b50565b61455f81614382565b811461456a57600080fd5b50565b61457681614392565b811461458157600080fd5b5056fea2646970667358221220b733963b4b09dca6fb42b5db0ba69ab8d7cc5c0cc41c0d3331646eb681aec8d764736f6c63430007000033aa74623171746c366b3475776e7370676a6b7371646e63793370326c7730656c6a63673664656463743774b8584943637a5a766e6e4942446d552f61534849637868664749483670494b515167477359573651494a4877594e4c432f622f7563526c41506b63525858364936356f453630415439544e52467649777a61594964356b54593d