6080604052611f40600955600b805460ff191690553480156200002157600080fd5b506040516200345838038062003458833981016040819052620000449162000381565b82826002620000548382620004a1565b506003620000638282620004a1565b5061037960008190555050508251600003620000af57604051635c9ab6bb60e01b81526020600482015260056024820152645f6e616d6560d81b60448201526064015b60405180910390fd5b8151600003620000ed57604051635c9ab6bb60e01b815260206004820152600760248201526617dcde5b589bdb60ca1b6044820152606401620000a6565b80516000036200013157604051635c9ab6bb60e01b815260206004820152600d60248201526c5f62617365546f6b656e55524960981b6044820152606401620000a6565b600a6200013f8282620004a1565b506200015b6000805160206200343883398151915233620001c4565b620001766000805160206200341883398151915233620001c4565b620001a0600080516020620034188339815191526000805160206200343883398151915262000269565b620001bb600080516020620034388339815191528062000269565b5050506200056d565b60008281526008602090815260408083206001600160a01b038516845290915290205460ff16620002655760008281526008602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002243390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600082815260086020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002dc57600080fd5b81516001600160401b0380821115620002f957620002f9620002b4565b604051601f8301601f19908116603f01168101908282118183101715620003245762000324620002b4565b816040528381526020925086838588010111156200034157600080fd5b600091505b8382101562000365578582018301518183018401529082019062000346565b83821115620003775760008385830101525b9695505050505050565b6000806000606084860312156200039757600080fd5b83516001600160401b0380821115620003af57600080fd5b620003bd87838801620002ca565b94506020860151915080821115620003d457600080fd5b620003e287838801620002ca565b93506040860151915080821115620003f957600080fd5b506200040886828701620002ca565b9150509250925092565b600181811c908216806200042757607f821691505b6020821081036200044857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200049c57600081815260208120601f850160051c81016020861015620004775750805b601f850160051c820191505b81811015620004985782815560010162000483565b5050505b505050565b81516001600160401b03811115620004bd57620004bd620002b4565b620004d581620004ce845462000412565b846200044e565b602080601f8311600181146200050d5760008415620004f45750858301515b600019600386901b1c1916600185901b17855562000498565b600085815260208120601f198616915b828110156200053e578886015182559484019460019091019084016200051d565b50858210156200055d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612e9b806200057d6000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c806375b238fc1161012a578063b88d4fde116100bd578063d547741f1161008c578063d5abeb0111610071578063d5abeb011461053b578063e985e9c514610544578063f19e75d41461058d57600080fd5b8063d547741f14610520578063d547cfb71461053357600080fd5b8063b88d4fde146104b3578063c23dc68f146104c6578063c87b56dd146104e6578063d5391393146104f957600080fd5b806395d89b41116100f957806395d89b411461047d57806399a2557a14610485578063a217fddf14610498578063a22cb465146104a057600080fd5b806375b238fc146103e35780638456cb591461040a5780638462151c1461041757806391d148541461043757600080fd5b806331b5b907116101bd57806342842e0e1161018c5780635ee441ae116101715780635ee441ae146103aa5780636352211e146103bd57806370a08231146103d057600080fd5b806342842e0e146103775780635bbb21771461038a57600080fd5b806331b5b9071461033657806336568abe14610349578063385df6491461035c57806340c10f191461036457600080fd5b806318160ddd116101f957806318160ddd146102b557806323b872dd146102ed578063248a9ca3146103005780632f2ff15d1461032357600080fd5b806301ffc9a71461022b57806306fdde0314610253578063081812fc14610268578063095ea7b3146102a0575b600080fd5b61023e610239366004612445565b6105a0565b60405190151581526020015b60405180910390f35b61025b6105cf565b60405161024a91906124d8565b61027b6102763660046124eb565b610661565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024a565b6102b36102ae36600461252d565b6106cb565b005b600154600054037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc87015b60405190815260200161024a565b6102b36102fb366004612557565b6107b6565b6102df61030e3660046124eb565b60009081526008602052604090206001015490565b6102b3610331366004612593565b610a46565b6102b36103443660046126b3565b610a70565b6102b3610357366004612593565b610ae8565b6102b3610b9c565b6102b361037236600461252d565b610c36565b6102b3610385366004612557565b610d5d565b61039d6103983660046126fc565b610d78565b60405161024a91906127a2565b6102b36103b836600461282c565b610e64565b61027b6103cb3660046124eb565b610f23565b6102df6103de36600461282c565b610f2e565b6102df7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4281565b600b5461023e9060ff1681565b61042a61042536600461282c565b610fb0565b60405161024a9190612847565b61023e610445366004612593565b600091825260086020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61025b6110dc565b61042a61049336600461287f565b6110eb565b6102df600081565b6102b36104ae3660046128b2565b6112b5565b6102b36104c13660046128ee565b61139b565b6104d96104d43660046124eb565b61140b565b60405161024a919061296a565b61025b6104f43660046124eb565b611494565b6102df7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b6102b361052e366004612593565b61153d565b61025b611562565b6102df60095481565b61023e6105523660046129bc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b6102b361059b3660046124eb565b6115f0565b60006105ab826116da565b806105ba57506105ba826117bb565b806105c957506105c9826117bb565b92915050565b6060600280546105de906129e6565b80601f016020809104026020016040519081016040528092919081815260200182805461060a906129e6565b80156106575780601f1061062c57610100808354040283529160200191610657565b820191906000526020600020905b81548152906001019060200180831161063a57829003601f168201915b5050505050905090565b600061066c82611852565b6106a2576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006106d682610f23565b90503373ffffffffffffffffffffffffffffffffffffffff821614610735576106ff8133610552565b610735576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006107c1826118a1565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610828576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff88169091141761089b576108658633610552565b61089b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166108e8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156108f357600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000841690036109e2576001840160008181526004602052604081205490036109e05760005481146109e05760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b600082815260086020526040902060010154610a6181611961565b610a6b838361196b565b505050565b3360009081527ffce6366092b990ebe6f8aeaa98777f7ccb437410013179322ff4021e3d932d33602052604090205460ff16610ad8576040517f7bfa4b9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a610ae48282612a7f565b5050565b73ffffffffffffffffffffffffffffffffffffffff81163314610b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610ae48282611a5f565b3360009081527ffce6366092b990ebe6f8aeaa98777f7ccb437410013179322ff4021e3d932d33602052604090205460ff16610c04576040517f7bfa4b9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b8060095481610c6c6001546000547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc879190030190565b610c769190612bc8565b1115610cae576040517f86e8e30700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b5460ff1615610ceb576040517f98a814ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081527fba682078eba37bca8662ade60eacd8e3fb6b879f4ad882618e7fd467572c020a602052604090205460ff16610d53576040517ff8d2906c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6b8383611b1a565b610a6b8383836040518060200160405280600081525061139b565b805160609060008167ffffffffffffffff811115610d9857610d986125bf565b604051908082528060200260200182016040528015610e0857816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610db65790505b50905060005b828114610e5c57610e37858281518110610e2a57610e2a612be0565b602002602001015161140b565b828281518110610e4957610e49612be0565b6020908102919091010152600101610e0e565b509392505050565b3360009081527ffce6366092b990ebe6f8aeaa98777f7ccb437410013179322ff4021e3d932d33602052604090205460ff16610ecc576040517f7bfa4b9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef67fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4282610a46565b610f207fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec423361153d565b50565b60006105c9826118a1565b600073ffffffffffffffffffffffffffffffffffffffff8216610f7d576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b60606000806000610fc085610f2e565b905060008167ffffffffffffffff811115610fdd57610fdd6125bf565b604051908082528060200260200182016040528015611006578160200160208202803683370190505b506040805160808101825260008082526020820181905291810182905260608101919091529091506103795b8386146110d05761104281611b34565b915081604001516110c857815173ffffffffffffffffffffffffffffffffffffffff161561106f57815194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110c857808387806001019850815181106110bb576110bb612be0565b6020026020010181815250505b600101611032565b50909695505050505050565b6060600380546105de906129e6565b6060818310611126576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061113260005490565b90506103798510156111445761037994505b80841115611150578093505b600061115b87610f2e565b90508486101561117a5785850381811015611174578091505b5061117e565b5060005b60008167ffffffffffffffff811115611199576111996125bf565b6040519080825280602002602001820160405280156111c2578160200160208202803683370190505b509050816000036111d85793506112ae92505050565b60006111e38861140b565b9050600081604001516111f4575080515b885b8881141580156112065750848714155b156112a25761121481611b34565b9250826040015161129a57825173ffffffffffffffffffffffffffffffffffffffff161561124157825191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361129a578084888060010199508151811061128d5761128d612be0565b6020026020010181815250505b6001016111f6565b50505092835250909150505b9392505050565b3373ffffffffffffffffffffffffffffffffffffffff831603611304576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6113a68484846107b6565b73ffffffffffffffffffffffffffffffffffffffff83163b15611405576113cf84848484611bd9565b611405576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60408051608081018252600080825260208201819052918101829052606081019190915260408051608081018252600080825260208201819052918101829052606081019190915261037983108061146557506000548310155b156114705792915050565b61147983611b34565b905080604001511561148b5792915050565b6112ae83611d53565b606061149f82611852565b611505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e006044820152606401610b89565b61150d611df1565b61151683611e00565b604051602001611527929190612c0f565b6040516020818303038152906040529050919050565b60008281526008602052604090206001015461155881611961565b610a6b8383611a5f565b600a805461156f906129e6565b80601f016020809104026020016040519081016040528092919081815260200182805461159b906129e6565b80156115e85780601f106115bd576101008083540402835291602001916115e8565b820191906000526020600020905b8154815290600101906020018083116115cb57829003601f168201915b505050505081565b80600954816116266001546000547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc879190030190565b6116309190612bc8565b1115611668576040517f86e8e30700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081527ffce6366092b990ebe6f8aeaa98777f7ccb437410013179322ff4021e3d932d33602052604090205460ff166116d0576040517f7bfa4b9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae43383611b1a565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061176d57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105c95750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806105c957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146105c9565b60008161037911158015611867575060005482105b80156105c95750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b600081806103791161192f5760005481101561192f57600081815260046020526040812054907c01000000000000000000000000000000000000000000000000000000008216900361192d575b806000036112ae57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016000818152600460205260409020546118ee565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208133611f35565b600082815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610ae457600082815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611a013390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610ae457600082815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610ae4828260405180602001604052806000815250612007565b6040805160808101825260008082526020820181905291810182905260608101919091526000828152600460205260409020546105c9906040805160808101825273ffffffffffffffffffffffffffffffffffffffff8316815260a083901c67ffffffffffffffff1660208201527c0100000000000000000000000000000000000000000000000000000000831615159181019190915260e89190911c606082015290565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611c34903390899088908890600401612c66565b6020604051808303816000875af1925050508015611c8d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c8a91810190612caf565b60015b611d04573d808015611cbb576040519150601f19603f3d011682016040523d82523d6000602084013e611cc0565b606091505b508051600003611cfc576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b6040805160808101825260008082526020820181905291810182905260608101919091526105c9611d83836118a1565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff8316815260a083901c67ffffffffffffffff1660208201527c0100000000000000000000000000000000000000000000000000000000831615159181019190915260e89190911c606082015290565b6060600a80546105de906129e6565b606081600003611e4357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611e6d5780611e5781612ccc565b9150611e669050600a83612d33565b9150611e47565b60008167ffffffffffffffff811115611e8857611e886125bf565b6040519080825280601f01601f191660200182016040528015611eb2576020820181803683370190505b5090505b8415611d4b57611ec7600183612d47565b9150611ed4600a86612d5e565b611edf906030612bc8565b60f81b818381518110611ef457611ef4612be0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f2e600a86612d33565b9450611eb6565b600082815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610ae457611f8d8173ffffffffffffffffffffffffffffffffffffffff16601461209a565b611f9883602061209a565b604051602001611fa9929190612d72565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610b89916004016124d8565b61201183836122dd565b73ffffffffffffffffffffffffffffffffffffffff83163b15610a6b576000548281035b6120486000868380600101945086611bd9565b61207e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061203557816000541461209357600080fd5b5050505050565b606060006120a9836002612df3565b6120b4906002612bc8565b67ffffffffffffffff8111156120cc576120cc6125bf565b6040519080825280601f01601f1916602001820160405280156120f6576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061212d5761212d612be0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061219057612190612be0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006121cc846002612df3565b6121d7906001612bc8565b90505b6001811115612274577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061221857612218612be0565b1a60f81b82828151811061222e5761222e612be0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361226d81612e30565b90506121da565b5083156112ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b89565b60005473ffffffffffffffffffffffffffffffffffffffff831661232d576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003612367576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020526040902080546801000000000000000185020190554260a01b6001841460e11b1717600082815260046020526040902055808281015b60405160018301929073ffffffffffffffffffffffffffffffffffffffff8716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082106123be5760005550505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610f2057600080fd5b60006020828403121561245757600080fd5b81356112ae81612417565b60005b8381101561247d578181015183820152602001612465565b838111156114055750506000910152565b600081518084526124a6816020860160208601612462565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112ae602083018461248e565b6000602082840312156124fd57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461252857600080fd5b919050565b6000806040838503121561254057600080fd5b61254983612504565b946020939093013593505050565b60008060006060848603121561256c57600080fd5b61257584612504565b925061258360208501612504565b9150604084013590509250925092565b600080604083850312156125a657600080fd5b823591506125b660208401612504565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612635576126356125bf565b604052919050565b600067ffffffffffffffff831115612657576126576125bf565b61268860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116016125ee565b905082815283838301111561269c57600080fd5b828260208301376000602084830101529392505050565b6000602082840312156126c557600080fd5b813567ffffffffffffffff8111156126dc57600080fd5b8201601f810184136126ed57600080fd5b611d4b8482356020840161263d565b6000602080838503121561270f57600080fd5b823567ffffffffffffffff8082111561272757600080fd5b818501915085601f83011261273b57600080fd5b81358181111561274d5761274d6125bf565b8060051b915061275e8483016125ee565b818152918301840191848101908884111561277857600080fd5b938501935b838510156127965784358252938501939085019061277d565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110d05761281983855173ffffffffffffffffffffffffffffffffffffffff815116825267ffffffffffffffff602082015116602083015260408101511515604083015262ffffff60608201511660608301525050565b92840192608092909201916001016127be565b60006020828403121561283e57600080fd5b6112ae82612504565b6020808252825182820181905260009190848201906040850190845b818110156110d057835183529284019291840191600101612863565b60008060006060848603121561289457600080fd5b61289d84612504565b95602085013595506040909401359392505050565b600080604083850312156128c557600080fd5b6128ce83612504565b9150602083013580151581146128e357600080fd5b809150509250929050565b6000806000806080858703121561290457600080fd5b61290d85612504565b935061291b60208601612504565b925060408501359150606085013567ffffffffffffffff81111561293e57600080fd5b8501601f8101871361294f57600080fd5b61295e8782356020840161263d565b91505092959194509250565b815173ffffffffffffffffffffffffffffffffffffffff16815260208083015167ffffffffffffffff169082015260408083015115159082015260608083015162ffffff1690820152608081016105c9565b600080604083850312156129cf57600080fd5b6129d883612504565b91506125b660208401612504565b600181811c908216806129fa57607f821691505b602082108103612a33577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610a6b57600081815260208120601f850160051c81016020861015612a605750805b601f850160051c820191505b81811015610a3e57828155600101612a6c565b815167ffffffffffffffff811115612a9957612a996125bf565b612aad81612aa784546129e6565b84612a39565b602080601f831160018114612b005760008415612aca5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610a3e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612b4d57888601518255948401946001909101908401612b2e565b5085821015612b8957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612bdb57612bdb612b99565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008351612c21818460208801612462565b835190830190612c35818360208801612462565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612ca5608083018461248e565b9695505050505050565b600060208284031215612cc157600080fd5b81516112ae81612417565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cfd57612cfd612b99565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612d4257612d42612d04565b500490565b600082821015612d5957612d59612b99565b500390565b600082612d6d57612d6d612d04565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612daa816017850160208801612462565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612de7816028840160208801612462565b01602801949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e2b57612e2b612b99565b500290565b600081612e3f57612e3f612b99565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220511895d4225166b0ffe3812613c8cec20fd9736bd6d18fe7bd3c01fa9580bdf364736f6c634300080f0033f0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9df8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000c38696d6d6f7274616c7330320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000538494d3032000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003968747470733a2f2f31366e38696d6d2e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f6d657461646174612f00000000000000