0x608060405234801561001057600080fd5b506139ad806100206000396000f3fe6080604052600436106100d15760003560e01c80635342940b1161007f57806375a885841161005957806375a88584146103365780637aa2e8e91461035657806388e7ed711461037757806392ce2ffc146103a4576100d8565b80635342940b1461027c578063599ad49b1461029e5780636f0a0834146102be576100d8565b80633ac49b37116100b05780633ac49b371461022057806347e7ef24146102415780634d2301cc14610254576100d8565b8060511461016e5780610d951461018e57806338d199c9146101ae576100d8565b366100d857005b3480156100e457600080fd5b5060008054908055600181900361014357610141336101073660a4816000612b39565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103c492505050565b005b806002036101415750600180546000918290559061014190826101693660a48185612b39565b610446565b34801561017a57600080fd5b50610141610189366004612bc4565b6107a1565b34801561019a57600080fd5b506101416101a9366004612c19565b6107e6565b6101c16101bc366004612c9b565b6107f2565b6040516102179190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b60405180910390f35b61023361022e366004612d51565b610b35565b604051908152602001610217565b61014161024f366004612db8565b610e1b565b34801561026057600080fd5b5061023361026f366004612de4565b6001600160a01b03163190565b61028f61028a366004612e46565b610e77565b60405161021793929190612f3b565b3480156102aa57600080fd5b506101416102b9366004612fe8565b6110ff565b3480156102ca57600080fd5b506102de6102d936600461305a565b6111a1565b6040516102179190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b6103496103443660046130ac565b61135f565b604051610217919061310c565b61036961036436600461311f565b6114b3565b604051610217929190613193565b34801561038357600080fd5b506103976103923660046131ae565b611578565b604051610217919061320b565b3480156103b057600080fd5b506103696103bf366004612fe8565b6115e0565b600080828060200190518101906103db919061321e565b9092509050806103f46001600160a01b038416306116a6565b101561042c576040517fdd12f4bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104406001600160a01b03831685836116f3565b50505050565b600254156104f157600080306001600160a01b0316848460405161046b92919061324c565b6000604051808303816000865af19150503d80600081146104a8576040519150601f19603f3d011682016040523d82523d6000602084013e6104ad565b606091505b509150915081816040517f550004a60000000000000000000000000000000000000000000000000000000081526004016104e8929190613193565b60405180910390fd5b60008080806105028587018761325c565b929650909450925090506001600160a01b0388166105205782870396505b8287111561055a576040517f63fbda0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061056f6001600160a01b038616306116a6565b9050828110156105ab576040517f874da83900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ed6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b60808101899052610600858a8103611925565b60a082015284890182101560c082015290839003808252906106228583611925565b602082015260c0810151156106745761065e6001600160a01b038b1615610649578a61064b565b335b6001600160a01b03881690878c016116f3565b6106716001600160a01b038716306116a6565b91505b81156107175761068d6001600160a01b038716846116a6565b93506106a36001600160a01b03871684846116f3565b90935083906106bb6001600160a01b038716846116a6565b9150838210156106f7576040517f874da83900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90839003604082018190529061070d8583611925565b6060820152610721565b620f424160608201525b8060c001511561078c57600060c08201528051600355602081015160045560408101516005556060810151600655608081015160075560a0810151600855600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610795565b610795816119d8565b50505050505050505050565b6107e18383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103c492505050565b505050565b61044084848484610446565b6108326040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b846000036108895761084d6001600160a01b038716306116a6565b945084600003610889576040517f229b9b2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821561089957858252610959565b6108b96108a960208a018a612de4565b6001600160a01b038916906116a6565b90506108dc6108cb60208a018a612de4565b6001600160a01b03891690886116f3565b806108fd6108ed60208b018b612de4565b6001600160a01b038a16906116a6565b61090791906132ca565b808352610915908790611925565b6020830152815195506000869003610959576040517f229b9b2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000036109b65761097a610973368a90038a018a6133a6565b8888611a4f565b9450846000036109b6576040517fc25a332a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109c860408a0160208b01612de4565b90506109dd6001600160a01b038216306116a6565b91508315610a3257610a2d6109f7368b90038b018b6133a6565b604080516001600160a01b038c1660208201529081018a90528a908a908a90606001604051602081830303815290604052611fbb565b610a4d565b610a4d610a44368b90038b018b6133a6565b89898930612097565b81610a616001600160a01b038316306116a6565b610a6b91906132ca565b60608401819052610a7d908790611925565b60808401526001600160a01b0385163014801590610a9e5750606083015115155b15610b1757610ab66001600160a01b038216866116a6565b9150610ada858460600151836001600160a01b03166116f39092919063ffffffff16565b81610aee6001600160a01b038316876116a6565b610af891906132ca565b60a084018190526060840151610b0d91611925565b60c0840152610b21565b620f424160c08401525b505060408101939093525090949350505050565b600082600003610b5557349250610b556001600160a01b038516846124d5565b604080516020808802820181019092528681528691600091610bb4918a9085908190869085015b82821015610ba857610b99608083028601368190038101906133a6565b81526020019060010190610b7c565b5050505050878761250b565b905083818381518110610bc957610bc9613480565b60200260200101511015610c09576040517f3121b93500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4688886000818110610c1f57610c1f613480565b610c359260206080909202019081019150612de4565b6001600160a01b03881690876116f3565b6000888860018503818110610c5d57610c5d613480565b9050608002016020016020810190610c759190612de4565b9050610c9e6001600160a01b0382167359ca61a9a253bf8c9e6059d8c3f9934f947b52cd6116a6565b935060005b60008a8a83806001019450818110610cbd57610cbd613480565b905060800201803603810190610cd391906133a6565b9050610d43818a8a878681518110610ced57610ced613480565b6020026020010151898710610d16577359ca61a9a253bf8c9e6059d8c3f9934f947b52cd612097565b8f8f88818110610d2857610d28613480565b610d3e9260206080909202019081019150612de4565b612097565b838281518110610d5557610d55613480565b602002602001015197508060200151985050838110610ca357610d956001600160a01b0383167359ca61a9a253bf8c9e6059d8c3f9934f947b52cd6116a6565b9650848711610dd0576040517f8f0243bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9386039385851015610e0e576040517f0d0d810100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505095945050505050565b80600003610e605747905080600003610e60576040517f229b9b2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e736001600160a01b038316826124d5565b5050565b6060808084801580610e895750808814155b15610ec0576040517fbedd4f5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff811115610ed957610ed96132dd565b604051908082528060200260200182016040528015610f02578160200160208202803683370190505b5093508067ffffffffffffffff811115610f1e57610f1e6132dd565b604051908082528060200260200182016040528015610f5157816020015b6060815260200190600190039081610f3c5790505b5092508067ffffffffffffffff811115610f6d57610f6d6132dd565b604051908082528060200260200182016040528015610f96578160200160208202803683370190505b50915060005b60005a9050620138808111610fb157506110f2565b6000808c8c85818110610fc657610fc6613480565b9050602002016020810190610fdb9190612de4565b6001600160a01b031661c35084038c8c87818110610ffb57610ffb613480565b905060200281019061100d91906134af565b60405161101b92919061324c565b60006040518083038160008787f1925050503d8060008114611059576040519150601f19603f3d011682016040523d82523d6000602084013e61105e565b606091505b50915091505a830386858151811061107857611078613480565b6020026020010181815250508188858151811061109757611097613480565b602002602001019015159081151581525050808785815181106110bc576110bc613480565b60200260200101819052508884101580156110d45750815b156110e1575050506110f2565b505050818160010191508110610f9c575b5050955095509592505050565b611150611111368790038701876133a6565b85853086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125f292505050565b6040805160e08101825260035481526004546020820152600554918101919091526006546060820152600754608082015260085460a0820152600160c0820152611199816119d8565b505050505050565b6111e36040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b8260000361121d576040517f229b9b2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3063599ad49b868686818161123b6001600160a01b038316886116a6565b604080516001600160a01b039485166020820152908101929092526060820152908816608082015260a0016040516020818303038152906040526040518563ffffffff1660e01b81526004016112949493929190613556565b600060405180830381600087803b1580156112ae57600080fd5b505af19250505080156112bf575060015b611357573d8080156112ed576040519150601f19603f3d011682016040523d82523d6000602084013e6112f2565b606091505b50805160000361132e576040517fb2689aff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160e01461133f57805181602001fd5b808060200190518101906113539190613595565b9150505b949350505050565b60608180158061136f5750808514155b156113a6576040517fbedd4f5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8787838181106113bc576113bc613480565b90506020020160208101906113d19190612de4565b6001600160a01b03168686848181106113ec576113ec613480565b90506020028101906113fe91906134af565b60405161140c92919061324c565b6000604051808303816000865af19150503d8060008114611449576040519150601f19603f3d011682016040523d82523d6000602084013e61144e565b606091505b50945090508061149b578351600003611493576040517fb2689aff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b835184602001fd5b8282600101925082106113aa57505050949350505050565b60006060866001600160a01b0316836114cc57846114ce565b475b87876040516114de92919061324c565b60006040518083038185875af1925050503d806000811461151b576040519150601f19603f3d011682016040523d82523d6000602084013e611520565b606091505b5090925090508161156e578051600003611566576040517fb2689aff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b9550959350505050565b60606115d78585808060200260200160405190810160405280939291908181526020016000905b828210156115cb576115bc608083028601368190038101906133a6565b8152602001906001019061159f565b5050505050848461250b565b95945050505050565b60016002556040517f599ad49b000000000000000000000000000000000000000000000000000000008152600090606090309063599ad49b9061162f908a908a908a908a908a906004016135ff565b600060405180830381600087803b15801561164957600080fd5b505af192505050801561165a575060015b611695573d808015611688576040519150601f19603f3d011682016040523d82523d6000602084013e61168d565b606091505b506001925090505b600060025590969095509350505050565b60006040517f70a08231000000000000000000000000000000000000000000000000000000008152826004820152602081602483875afa6116eb573d6000803e3d6000fd5b519392505050565b6001600160a01b03821630146107e1576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081528260048201528160248201526000806044836000885af16104405760605160007f127e8e4d0000000000000000000000000000000000000000000000000000000082528360048301526001602060006024858a5afa036117ac5760005180156117aa57808511156117aa57808503602485015260008060448660008b5af191505b505b80611199576064840484036024840152600080604485828a5af1905080611199576064600a8502048403602484015260008060448560008a5af1905080611199577f9d11aaaa0000000000000000000000000000000000000000000000000000000082526001602060006004858a5afa0361185057600051801561184e57606481101561184e576064818602048503602485015260008060448660008b5af191505b505b80611199577facb2ad6f0000000000000000000000000000000000000000000000000000000082526001602060006004858a5afa036118f95760005180156118f7576127108110156118f757612710818602048503602485015260008060448660008b5af19150816118f7576103e8818602048503602485015260008060448660008b5af19150816118f7576064818602048503602485015260008060448660008b5af191505b505b80611199576064601e8502048403602484015260008060448560008a5af1611199573d6000803e3d6000fd5b6000818311611936575060006119d2565b816000036119485750620f42406119d2565b600083620f424061195985836132ca565b6119639190613656565b61196d919061369c565b90505b620f424081116119cf576000620f424061198a8387613656565b611994919061369c565b9050848111156119a457506119cf565b836119af82876132ca565b116119bc575090506119d2565b50806119c7816136d7565b915050611970565b90505b92915050565b600081604051602001611a369190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b6040516020818303038152906040529050805181602001fd5b60008084604001519050620f4241816020015110611b235760208581015160408051845160248201528484015160448201526001600160a01b038881166064830152909216608483015260a48083018790528151808403909101815260c4909201815281830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d06310000000000000000000000000000000000000000000000000000000017815290518251895193949193919284926000905af1611b18573d6000803e3d6000fd5b519250611fb4915050565b6000806000611b378460000151600161285a565b92509250925060028211611bcc5781600203611b88576040517f2e0ae37500000000000000000000000000000000000000000000000000000000815242600482015260008060248360008d515af150505b6000611b958985846128a5565b6020870151620f4240908103999099029891975091508602870187820281611bbf57611bbf61366d565b0495505050505050611fb4565b81600303611cd55760008060006040518660008114611bf0578760e01b8252611c14565b7fd66940270000000000000000000000000000000000000000000000000000000082525b5060a0816004838f515afa611c2d573d6000803e3d6000fd5b80519850602081015195506040810151935060608101519250608081015191505083611c5a578794509091905b670de0b6b3a76400008181038a0204975087830182890281611c7e57611c7e61366d565b049750848810611cc95784600003611cc2576040517fdb4ea6ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001850397505b50505050505050611fb4565b81600403611d51576000611cea8985846128a5565b909650905081611d1f576103e885602001516103e803611d0b898985612917565b0281611d1957611d1961366d565b04611d45565b611d4585602001516103e801886103e80281611d3d57611d3d61366d565b048783612917565b95505050505050611fb4565b60068211611f445782639f2859ca1480611d6e5750826357ade888145b15611e84576000886000015190506000816001600160a01b031663a382d1b96040518163ffffffff1660e01b815260040160e060405180830381865afa158015611dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de0919061370f565b905060008560e01b82308b604051602401611dfd93929190613771565b60408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317835281519193509160009190865afa611e77573d6000803e3d6000fd5b6000519750505050611f3b565b604051838015611e99578460e01b8252611ef0565b8360058114611eca577fca706bcf000000000000000000000000000000000000000000000000000000008352611eee565b7ff140a35a0000000000000000000000000000000000000000000000000000000083525b505b508260058114611f0b57886004830152876024830152611f18565b8760048301528860248301525b503060448201526020816064838c515afa611f37573d6000803e3d6000fd5b5194505b50505050611fb4565b604051838015611f59578460e01b8252611f7d565b7ff58a435f0000000000000000000000000000000000000000000000000000000082525b50876004820152602089015160248201528660448201526020816064838c515afa611fac573d6000803e3d6000fd5b519450505050505b9392505050565b620f424185604001516020015110612058576125528560400151858760200151868686604051602401611ff39695949392919061380c565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080825160208401600089515af1612053573d6000803e3d6000fd5b612090565b6000806000612070886040015160000151600061285a565b60016000559194509250905061208c888688848688308b6129b3565b5050505b5050505050565b620f424185604001516020015110612172576040858101516020808801518351835160248201529282015160448401526001600160a01b038881166064850152908116608484015260a4830187905260c48301869052841660e4808401919091528351808403909101815261010490920190925290810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d0bf2000000000000000000000000000000000000000000000000000000001781528151875160009283929183905af161216c573d6000803e3d6000fd5b50612090565b600080600061218a886040015160000151600061285a565b92509250925060058210612483576060826005036122895783156121b1578360e01b6121d3565b7f7132bb7f000000000000000000000000000000000000000000000000000000005b604080516001600160a01b038b8116602083015288168183015260026060808301919091528251808303909101815260006080830181815260a0840190945261222393919230929060c401613861565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050612460565b826006036123115783156122ce57836001146122a8578360e01b6122f0565b7fdd93f59a000000000000000000000000000000000000000000000000000000006122f0565b7fbd6015b4000000000000000000000000000000000000000000000000000000005b6040516001600160a01b038716602482015260448101899052606401612223565b826007036123a2578315612328578360e01b61234a565b7f7dc20382000000000000000000000000000000000000000000000000000000005b60208a01516040516001600160a01b03808c1660248301529182166044820152606481018a90526001608482015290871660a48201527359ca61a9a253bf8c9e6059d8c3f9934f947b52cd60c482015260e401612223565b83156123b1578360e01b6123d3565b7ff3e6ea8a000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03808b166024830152604482018a9052600160648301528716608482015260a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b60008082516020840160008d515af161247d573d6000803e3d6000fd5b5061208c565b8460000361249957612496888888611a4f565b94505b61208c8886888486888a60006040519080825280601f01601f1916602001820160405280156124cf576020820181803683370190505b506129b3565b6040517fd0e30db000000000000000000000000000000000000000000000000000000000815260008060048385875af150505050565b82516060906001810167ffffffffffffffff81111561252c5761252c6132dd565b604051908082528060200260200182016040528015612555578160200160208202803683370190505b509150828260008151811061256c5761256c613480565b60200260200101818152505060005b600086828151811061258f5761258f613480565b602002602001015190506125a4818787611a4f565b9450846000036125b457506125e9565b848483600101935083815181106125cd576125cd613480565b602002602001018181525050806020015195505081811061257b575b50509392505050565b604085015160200151620f4241811061267557631c06785c866040015186886020015187878760405160240161262d969594939291906138a8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061283d565b600080600061268d896040015160000151600061285a565b6002600055919450925090506003829003612713576040517fd669402700000000000000000000000000000000000000000000000000000000815260a0816004838d515afa6126e0573d6000803e3d6000fd5b608001519350670de0b6b3a7640000849003878502816127025761270261366d565b048701600101600181905550612752565b8160061480612720575083155b1561272f576001879055612752565b83620f424003848802816127455761274561366d565b0487016001016001819055505b60008161275e57506000965b6001841115612770578360e01b6127c0565b8260061461279e577f022c0d9f000000000000000000000000000000000000000000000000000000006127c0565b7fd0a494e4000000000000000000000000000000000000000000000000000000005b888230896040516024016127d794939291906138f3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529550505050505b60008083516020850160008a515af1611199573d6000803e3d6000fd5b60008060008315612880576402540be4006103e88604069250600a808604069150612895565b6509184e72a00085049250600a606486040691505b600a850660011490509250925092565b60008060405184600081146128bf578560e01b82526128e3565b7f0902f1ac0000000000000000000000000000000000000000000000000000000082525b5060408160048389515afa6128fc573d6000803e3d6000fd5b8051925060208101519150508261290f57905b935093915050565b600083600003612953576040517f098fb56100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158061295e575081155b15612995576040517fbb55fd2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61299f8484613921565b6129a98386613656565b611357919061369c565b836002036129d05787602001516001600160a01b031695506129e5565b84156129e05760009695506129e5565b600095505b60018311156129f7578260e01b612aa3565b83600114612a815783600214612a5b5783600614612a35577f022c0d9f00000000000000000000000000000000000000000000000000000000612aa3565b7fd0a494e400000000000000000000000000000000000000000000000000000000612aa3565b7fe9dcafaa00000000000000000000000000000000000000000000000000000000612aa3565b7f6d9a640a000000000000000000000000000000000000000000000000000000005b878784846000604051602401612abd959493929190613934565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217825280518a51919350600092839283905af161208c573d6000803e3d6000fd5b60008085851115612b4957600080fd5b83861115612b5657600080fd5b5050820193919092039150565b6001600160a01b0381168114612b7857600080fd5b50565b60008083601f840112612b8d57600080fd5b50813567ffffffffffffffff811115612ba557600080fd5b602083019150836020828501011115612bbd57600080fd5b9250929050565b600080600060408486031215612bd957600080fd5b8335612be481612b63565b9250602084013567ffffffffffffffff811115612c0057600080fd5b612c0c86828701612b7b565b9497909650939450505050565b60008060008060608587031215612c2f57600080fd5b8435612c3a81612b63565b935060208501359250604085013567ffffffffffffffff811115612c5d57600080fd5b612c6987828801612b7b565b95989497509550505050565b600060808284031215612c8757600080fd5b50919050565b8015158114612b7857600080fd5b6000806000806000806101208789031215612cb557600080fd5b612cbf8888612c75565b95506080870135612ccf81612b63565b945060a0870135935060c0870135925060e0870135612ced81612b63565b9150610100870135612cfe81612c8d565b809150509295509295509295565b60008083601f840112612d1e57600080fd5b50813567ffffffffffffffff811115612d3657600080fd5b6020830191508360208260071b8501011115612bbd57600080fd5b600080600080600060808688031215612d6957600080fd5b853567ffffffffffffffff811115612d8057600080fd5b612d8c88828901612d0c565b9096509450506020860135612da081612b63565b94979396509394604081013594506060013592915050565b60008060408385031215612dcb57600080fd5b8235612dd681612b63565b946020939093013593505050565b600060208284031215612df657600080fd5b81356119cf81612b63565b60008083601f840112612e1357600080fd5b50813567ffffffffffffffff811115612e2b57600080fd5b6020830191508360208260051b8501011115612bbd57600080fd5b600080600080600060608688031215612e5e57600080fd5b853567ffffffffffffffff80821115612e7657600080fd5b612e8289838a01612e01565b90975095506020880135915080821115612e9b57600080fd5b50612ea888828901612e01565b96999598509660400135949350505050565b6000815180845260005b81811015612ee057602081850181015186830182015201612ec4565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b83811015612f3057815187529582019590820190600101612f14565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b82811015612f76578151151584529284019290840190600101612f58565b50505083810382850152855180825282820190600581901b8301840188850160005b83811015612fc657601f19868403018552612fb4838351612eba565b94870194925090860190600101612f98565b50508681036040880152612fda8189612f00565b9a9950505050505050505050565b600080600080600060e0868803121561300057600080fd5b61300a8787612c75565b9450608086013561301a81612b63565b935060a0860135925060c086013567ffffffffffffffff81111561303d57600080fd5b61304988828901612b7b565b969995985093965092949392505050565b60008060008060e0858703121561307057600080fd5b61307a8686612c75565b9350608085013561308a81612b63565b925060a0850135915060c08501356130a181612b63565b939692955090935050565b600080600080604085870312156130c257600080fd5b843567ffffffffffffffff808211156130da57600080fd5b6130e688838901612e01565b909650945060208701359150808211156130ff57600080fd5b50612c6987828801612e01565b602081526000611fb46020830184612eba565b60008060008060006080868803121561313757600080fd5b853561314281612b63565b9450602086013567ffffffffffffffff81111561315e57600080fd5b61316a88828901612b7b565b90955093505060408601359150606086013561318581612c8d565b809150509295509295909350565b82151581526040602082015260006113576040830184612eba565b600080600080606085870312156131c457600080fd5b843567ffffffffffffffff8111156131db57600080fd5b6131e787828801612d0c565b90955093505060208501356131fb81612b63565b9396929550929360400135925050565b602081526000611fb46020830184612f00565b6000806040838503121561323157600080fd5b825161323c81612b63565b6020939093015192949293505050565b8183823760009101908152919050565b6000806000806080858703121561327257600080fd5b843561327d81612b63565b9350602085013592506040850135915060608501356130a181612b63565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156119d2576119d261329b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613356577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60405160e0810167ffffffffffffffff81118282101715613356577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081830360808112156133b957600080fd5b6040516060810181811067ffffffffffffffff82111715613403577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052833561341181612b63565b8152602084013561342181612b63565b602082015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301121561345657600080fd5b61345e61330c565b6040858101358252606090950135602082015293810193909352509092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134e457600080fd5b83018035915067ffffffffffffffff8211156134ff57600080fd5b602001915036819003821315612bbd57600080fd5b803561351f81612b63565b6001600160a01b03908116835260208201359061353b82612b63565b16602083015260408181013590830152606090810135910152565b6135608186613514565b6001600160a01b03841660808201528260a082015260e060c0820152600061358b60e0830184612eba565b9695505050505050565b600060e082840312156135a757600080fd5b6135af61335c565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c08301516135f381612c8d565b60c08201529392505050565b6136098187613514565b6001600160a01b03851660808201528360a082015260e060c08201528160e082015260006101008385828501376000838501820152601f909301601f191690910190910195945050505050565b80820281158282048414176119d2576119d261329b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826136d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137085761370861329b565b5060010190565b600060e0828403121561372157600080fd5b61372961335c565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c0830151600381106135f357600080fd5b600061012082019050845182526020850151602083015260408501516040830152606085015160608301526080850151608083015260a085015160a083015260c0850151600381106137ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60c08301526001600160a01b039390931660e08201526101000152919050565b865181526020808801519082015260006001600160a01b0380881660408401528087166060840152508460808301528360a083015260e060c083015261385560e0830184612eba565b98975050505050505050565b6080815260006138746080830187612eba565b6001600160a01b03868116602085015285166040840152828103606084015261389d8185612eba565b979650505050505050565b865181526020808801519082015260006001600160a01b038088166040840152808716606084015285608084015280851660a08401525060e060c083015261385560e0830184612eba565b8481528360208201526001600160a01b038316604082015260806060820152600061358b6080830184612eba565b808201808211156119d2576119d261329b565b8581528460208201526001600160a01b038416604082015260a06060820152600061396260a0830185612eba565b905060ff83166080830152969550505050505056fea2646970667358221220caf3b897b71a7992c7b32ff3ea2657d33b28ff9f858d6de2184c953b2c0eb49b64736f6c63430008130033