0x000000000000000000000000000000000000000000000000000000000000000060808060405234601557615c32908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630a6de2c9146128665780636fbbf6a314612263578063902648451461223857806391062e7f1461206b57806393c0ffc21461203f578063a45b3ef814611f8c578063c81c23eb14611319578063d00bbce414610def578063d2ffb82314610da7578063e8fd7f321461098f578063ec1eef21146100d45763fbc0020e146100a057600080fd5b346100cf5760206003193601126100cf5760406100c36100be61288d565b61369e565b82519182526020820152f35b600080fd5b346100cf5760606003193601126100cf576100ed61288d565b60243563ffffffff811681036100cf5763ffffffff60443516604435036100cf576040519161011b836128b7565b606083526060602084015260606040840152610135613476565b6060840152604051610146816128ef565b600081526000602082015260808401526040517f1865c57d000000000000000000000000000000000000000000000000000000008152610120816004816001600160a01b0386165afa9081156105d25763ffffffff9160e09160009161095e575b5080606087015201511663ffffffff604435168110600014610955575b63ffffffff8084169116039163ffffffff83116104ae5763ffffffff600181851601116104ae576101ff63ffffffff60018186160116612975565b61020c6040519182612944565b63ffffffff84811660010116808252601f199061022890612975565b0160005b818110610914575050602085015261024e63ffffffff600181861601166134f3565b845261026463ffffffff60018186160116612975565b6102716040519182612944565b63ffffffff84811660010116808252601f199061028d90612975565b0160005b81811061089c57505060408501526040517fb9480d4a0000000000000000000000000000000000000000000000000000000081526020816004816001600160a01b0387165afa9081156105d257600091610862575b506040517f9026b8bc0000000000000000000000000000000000000000000000000000000081526020816004816001600160a01b0388165afa80156105d257600090610822575b6001600160801b0380925060405193610345856128ef565b168352166020820152608085015260005b63ffffffff6001818616011663ffffffff8216101561063c5763ffffffff821663ffffffff82160163ffffffff81116104ae5763ffffffff604051917f22cd85a800000000000000000000000000000000000000000000000000000000835216600482015260c0816024816001600160a01b0388165afa80156105d2576104049160009161060d575b506020870151906103f663ffffffff8516836130a7565b5263ffffffff8316906130a7565b50608061041b63ffffffff831660208801516130a7565b510151604051907f3256cfa900000000000000000000000000000000000000000000000000000000825260030b600482015260e0816024816001600160a01b0388165afa80156105d257610485916000916105de575b508651906103f663ffffffff8516836130a7565b5060005b600460ff8216106104dd575063ffffffff1663ffffffff81146104ae57600101610356565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61054260208260806104f863ffffffff8716848c01516130a7565b5101516040517f9329340d00000000000000000000000000000000000000000000000000000000815260039190910b600482015260ff909116602482015291829081906044820190565b03816001600160a01b0389165afa9081156105d257600091610591575b5060ff9160019163ffffffff61057b81871660408c01516130a7565b5151911690611fe08360051b1601520116610489565b90506020813d6020116105ca575b816105ac60209383612944565b810103126100cf5760ff916105c2600192612ee4565b91509161055f565b3d915061059f565b6040513d6000823e3d90fd5b610600915060e03d60e011610606575b6105f88183612944565b810190613135565b87610471565b503d6105ee565b61062f915060c03d60c011610635575b6106278183612944565b8101906130bb565b876103df565b503d61061d565b8460405180916020825261065e81516101c060208501526101e0840190612def565b90602081015191601f198482030160408501526020808451928381520193019060005b8181106107aa57505050604081015191601f198482030160608501526020808451928381520193019060005b81811061075a5750505060808161074460606020940151838701906001600160801b038082511683526020820151166020830152604081015160070b6040830152606081015160070b606083015264ffffffffff608082015116608083015260a081015160030b60a083015260c0810151151560c083015263ffffffff60e08201511660e083015260ff6101008092015116910152565b015180516101a085015201516101c08301520390f35b9180955093909293515181906000915b6004831061078b5750505060206080600192019501910191859493926106ad565b6020806001926001600160801b0385511681520192019201919061076a565b9194509192602060c060019287516001600160801b0381511682526001600160801b038482015116848301526001600160801b03604082015116604083015260ff6060820151166060830152608081015160030b608083015263ffffffff60a080920151169082015201950191019185949392610681565b506020813d60201161085a575b8161083c60209383612944565b810103126100cf576108556001600160801b0391612eb4565b61032d565b3d915061082f565b90506020813d602011610894575b8161087d60209383612944565b810103126100cf5761088e90612eb4565b856102e6565b3d9150610870565b6040519081602081011067ffffffffffffffff6020840111176108e5578160208093016040526108cd8382016128d3565b60803684830137828101815282828601015201610291565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6020906040516109238161290b565b60008152600083820152600060408201526000606082015260006080820152600060a08201528282860101520161022c565b506044356101c4565b61098291506101203d61012011610988575b61097a8183612944565b810190612f03565b866101a7565b503d610970565b346100cf5760a06003193601126100cf576004356001600160a01b03908181168091036100cf576109bf36612a90565b91604051906109cd826128d3565b60008252602092838301606081526040840190606082526060850193600085526040517f16f0115b0000000000000000000000000000000000000000000000000000000081528781600481885afa9081156105d257600091610d71575b50168552604051907fd79924f4000000000000000000000000000000000000000000000000000000008252600082600481875afa9182156105d257600092610cd5575b5052604051907fb13c86a3000000000000000000000000000000000000000000000000000000008252600082600481865afa9182156105d257600092610c39575b50526040517f04baa00b0000000000000000000000000000000000000000000000000000000081528481600481855afa9081156105d257600091610bf8575b509060049260ff600093169052604051928380927f3d1c387b0000000000000000000000000000000000000000000000000000000082525afa9283156105d257600093610b57575b610b53610b4386868661390a565b9160409593955195869586612c68565b0390f35b909192503d806000843e610b6b8184612944565b82019181818403126100cf5780519067ffffffffffffffff82116100cf57019180601f840112156100cf578251610ba181612975565b93610baf6040519586612944565b818552838086019260051b8201019283116100cf578301905b828210610be1575092939250829150610b439050610b35565b838091610bed84612ed6565b815201910190610bc8565b9190508482813d8311610c32575b610c108183612944565b810103126100cf5760049260ff610c28600094612ef5565b9293505092610aed565b503d610c06565b9091503d806000833e610c4c8183612944565b81019086818303126100cf5780519067ffffffffffffffff82116100cf57019080601f830112156100cf578151610c8281612975565b92610c906040519485612944565b818452888085019260051b8201019283116100cf5788809101915b838310610cbd57505050509087610aae565b8190610cc884612eb4565b8152019101908890610cab565b9091503d806000833e610ce88183612944565b81019087818303126100cf5780519067ffffffffffffffff82116100cf57019080601f830112156100cf578151610d1e81612975565b92610d2c6040519485612944565b818452898085019260051b8201019283116100cf5789809101915b838310610d5957505050509088610a6d565b8190610d6484612ee4565b8152019101908990610d47565b90508781813d8311610da0575b610d888183612944565b810103126100cf575181811681036100cf5789610a2a565b503d610d7e565b346100cf5760606003193601126100cf57610dc061288d565b610dc861298d565b604435908160030b82036100cf57610ddf92613565565b90610b5360405192839283612e85565b346100cf5760406003193601126100cf57610e0861288d565b610e1061298d565b90610e19613476565b50604051917f1865c57d0000000000000000000000000000000000000000000000000000000083526101209283816004816001600160a01b0387165afa9384156105d2576000946112fa575b505060a0830190610e97610e7d835160030b856131d0565b5091610e8d81855160030b613300565b935160030b613373565b9263ffffffff610eaf610eaa8587613300565b61333b565b1692610eba846134f3565b95610ec48561303a565b90610ece8661303a565b93610ee1610edb8861303a565b9761303a565b91600096604051957fd0c93a7c0000000000000000000000000000000000000000000000000000000087526020876004816001600160a01b0388165afa9687156105d2576000976112c6575b50610f366134bb565b50975b8a60030b8960030b136110ba576040517f3256cfa90000000000000000000000000000000000000000000000000000000081528960030b600482015260e0816024816001600160a01b0389165afa9081156105d2578d918c9160009161109b575b506001600160801b038151161580611086575b61107957828c6110188680958c8f8f9a61100c611012926110739d61105d9b610fda61106d9f86906130a7565b52610fe5848c6130a7565b50610ff4848b60030b926130a7565b5260016110018a83614859565b990160030b90614859565b926130a7565b526130a7565b528d61104a846001600160801b0360206110408383611037828a6130a7565b515116976130a7565b51015116926130a7565b5190611056858c6130a7565b5192614c83565b611067828c6130a7565b52613556565b98613542565b97610f39565b5050509761107390613542565b506001600160801b0360208201511615610fad565b6110b4915060e03d60e011610606576105f88183612944565b8f610f9a565b8b9493918a8988938089528085528083528088528152604051937f2d9d1ca600000000000000000000000000000000000000000000000000000000808652600160048701526020866024816001600160a01b038b165afa9586156105d25760009661128b575b506001600160a01b03966024602092604051998a938492835260006004840152165afa9586156105d25760009661124f575b50966111a96112399361119b6111b79461118d61117f9c6040519e8f9e8f92610220808552840190612b94565b916020818403910152612def565b8c810360408e015290612c34565b908a820360608c0152612c34565b9088820360808a0152612c34565b9460a08701906001600160801b038082511683526020820151166020830152604081015160070b6040830152606081015160070b606083015264ffffffffff608082015116608083015260a081015160030b60a083015260c0810151151560c083015263ffffffff60e08201511660e083015260ff6101008092015116910152565b6101c08501526101e08401526102008301520390f35b91979095506020823d602011611283575b8161126d60209383612944565b810103126100cf579051909690946111a9611152565b3d9150611260565b9095506020813d6020116112be575b816112a760209383612944565b810103126100cf5751946001600160a01b03611120565b3d915061129a565b9096506020813d6020116112f2575b816112e260209383612944565b810103126100cf5751958c610f2d565b3d91506112d5565b611311929450803d106109885761097a8183612944565b918380610e65565b346100cf576003196040813601126100cf5767ffffffffffffffff600435116100cf576101e090600435360301126100cf576040516101e0810181811067ffffffffffffffff8211176108e557604052611377600435600401612e9f565b8152611387602460043501612e9f565b60208201526044600435013561ffff811681036100cf5760408201526113b1606460043501612dde565b60608201526113c46084600435016128a3565b60808201526113d760a4600435016128a3565b60a08201526113ea60c46004350161299d565b60c08201526113fd60e460043501612967565b60e082015260043561010481013561010083015261012481013561012083015261142a9061014401612967565b610140820152610164600435013567ffffffffffffffff81116100cf576114589060043691813501016129ab565b610160820152610184600435013567ffffffffffffffff81116100cf57611486906004369181350101612a13565b6101808201526101a460043501356101a08201526114a96101c460043501612a83565b6101c08201526001600160a01b036024351680602435036100cf5760206004916114d16133df565b50604051928380927f1de283a60000000000000000000000000000000000000000000000000000000082525afa9081156105d257600091611f52575b506115166133df565b9061ffff6040840151169061154760c08501519260016115398560030b83614859565b9460030b0160030b90614859565b90611550613785565b926040519261155e846128d3565b6000845260006020850152600060408501526000606085015261ffff6040880151168552600460206001600160a01b0360808a015116604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa80156105d257600090611f17575b6115d89150614d50565b6020860152600460206001600160a01b0360a08a015116604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa80156105d257600090611edc575b6116339150614d50565b6040860152610160870151606086015261018087015160808601526101a087015160a08601526101c0870151151560c086015260c087015160030b606085015260405161167f816128ef565b60018152602036818301376020610100880151015260c087015160030b6116ae6020610100890151015161306b565b526040516116bb816128ef565b6001815260203681830137610100870151604001526101208701518214611ed05761ffff60408801511660c088015160030b8867ffffffffffffffff815116916001600160a01b0360a0830151166004602061012061010086015195015192604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa9081156105d257600091611e8b575b5061176c61176561178492614d50565b8095614d6d565b9560016117798583614859565b940160030b90614859565b916117a2838261179c611797838b613f84565b6150e1565b98614be0565b92818311801590611e81575b611e4557506117f5611817946117f061180195856117ea866117e46117df6117fb996001600160801b039e9b6138fd565b6137d6565b926137ee565b9161518e565b6159de565b916138e7565b90615170565b60406101008b01510151906101208b015261306b565b911690526305f5e100806001600160801b0361183b60406101008b0151015161306b565b511610611de957506001600160801b0361185d6040610100890151015161306b565b5116604085015261188761187c610100890151610120890151906138fd565b604087015190614d6d565b60208501526118a0610120870151604087015190614d6d565b926118b5610100890151604088015190614d6d565b906118cd838567ffffffffffffffff8c511694614be0565b8015611dbf578415611d905761191c61190b87876117ea6118f4611923966119649c61512d565b826ec097ce7bc90715b34b9f1000000000046138fd565b93611915816138e7565b908561518e565b8093613816565b9160ff821615611d885760ff61193a921690615170565b9081811015611d8257505060005b915b828552602085015161195e83838387614c83565b93614ce6565b60e08301525b61197382614d83565b15611d585760ff610140860151169461198a6133ae565b956060850151602088015286526119a560608501515161303a565b604087015260005b60608501518051821015611b305790611aa46001926119d483606089015160030b926130a7565b5160030b146119e78360608a01516130a7565b5160030b90611a096119fd8560408a01516130a7565b5160208b015190614d6d565b89611a27611a1b8760608c01516130a7565b51604083015190614d6d565b918315611b28578a51905b8415611b1e578b886020820151965b15611b0f5760606040611a59930151955b01516130a7565b5160030b60608d015160030b1385159687801590611b06575b15611af5575050828215600014611adc57505050600019935b15611ac4575050506000195b81811090821802186150e1565b6001600160801b03611aba8360408c01516130a7565b91169052016119ad565b8287611ad79411908818028718916140ae565b611a97565b828a611aef9411908b18028a18916140ae565b93611a8b565b92509450915061179794508b615bbc565b50831515611a72565b611a5991506060600095611a52565b8b88600096611a41565b600090611a32565b505092508461014085015260405194611b48866128ef565b6001865260005b60208110611d4757506020929186611b6785936151fd565b611b708261306b565b52611b7a8161306b565b50610160870152805161018087015201516101a085015280516101c085015201516101e083015267ffffffffffffffff8151169067ffffffffffffffff6020820151169061ffff6040820151169063ffffffff606082015116906001600160a01b03608082015116906001600160a01b0360a0820151169060ff60e060c083015160030b9201511660e089015260c088015260a08701526080860152606085015260408401526020830152815260405180916020825267ffffffffffffffff815116602083015267ffffffffffffffff602082015116604083015261ffff604082015116606083015263ffffffff60608201511660808301526001600160a01b0360808201511660a08301526001600160a01b0360a08201511660c083015260c081015160030b60e083015260ff60e0820151166101008301526101008101516101e0611d1a611cd96102009384610120880152610220870190612bcb565b610120850151610140870152611d0361014086015191601f199283898303016101608a0152612bcb565b906101608601519087830301610180880152612b37565b926101808101516101a08601526101a08101516101c08601526101c0810151828601520151908301520390f35b806060602080938a01015201611b4f565b60046040517f119372dd000000000000000000000000000000000000000000000000000000008152fd5b03611948565b50509161194a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60046040517f4a13f114000000000000000000000000000000000000000000000000000000008152fd5b866064916001600160801b03611e0b6040610100808e0151950151015161306b565b5116604051927f548d796f000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b60649291604051927f5c1dad8c000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b50808310156117ae565b90506020813d602011611ec8575b81611ea660209383612944565b810103126100cf5761176c611765611ec061178493612ef5565b925050611755565b3d9150611e99565b5060e08401525061196a565b506020813d602011611f0f575b81611ef660209383612944565b810103126100cf57611f0a61163391612ef5565b611629565b3d9150611ee9565b506020813d602011611f4a575b81611f3160209383612944565b810103126100cf57611f456115d891612ef5565b6115ce565b3d9150611f24565b90506020813d602011611f84575b81611f6d60209383612944565b810103126100cf57611f7e90612ef5565b8261150d565b3d9150611f60565b346100cf5760406003193601126100cf57611fa561288d565b611fad61298d565b90604051917f1865c57d0000000000000000000000000000000000000000000000000000000083526101209283816004816001600160a01b0387165afa9384156105d257610ddf9461201c9260a092600092612022575b5050015160030b916120168184613300565b92613373565b91613565565b6120389250803d106109885761097a8183612944565b8680612004565b346100cf5760406003193601126100cf5760406100c361205d61288d565b61206561298d565b906131d0565b346100cf5760031960a0813601126100cf5760043567ffffffffffffffff8082116100cf576080809383360301126100cf57604051926120aa846128d3565b6120b6836004016128a3565b84526024808401358381116100cf57840192366023850112156100cf5760048401356120e181612975565b946120ef6040519687612944565b8186526020916024602088019160051b830101913683116100cf57602401905b82821061222157505050506020860193845260448501359081116100cf5760646121426121509260043691890101612a13565b956040880196875201612967565b606086015261215e36612a90565b9351519061216b8261303a565b9360005b83811061218457610b53610b4388888b61390a565b6001600160a01b038851169063ffffffff6121a08285516130a7565b51166040519283917f22cd85a80000000000000000000000000000000000000000000000000000000083526004830152818660c09384935afa80156105d2576001938892600092612204575b5050015160030b6121fd82896130a7565b520161216f565b61221a9250803d10610635576106278183612944565b8b806121ec565b83809161222d84612dde565b81520191019061210f565b346100cf5760206003193601126100cf57602061225b61225661288d565b612fbc565b604051908152f35b346100cf576003196020813601126100cf5760043567ffffffffffffffff918282116100cf57610100823603918201126100cf57604051916122a4836128b7565b6122b0816004016128a3565b83526122be60248201612967565b602084015260448101358481116100cf576122df90600436918401016129ab565b936040840194855260648201359081116100cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c61232660809260043691860101612a13565b936060860194855201126100cf5761236760e460405192612346846128d3565b6084810135845260a4810135602085015260c4810135604085015201612a83565b60608201526080830152612379613785565b92600460206001600160a01b03855116604051928380927fd0c93a7c0000000000000000000000000000000000000000000000000000000082525afa9081156105d257600091612834575b5084526123da6001600160a01b0384511661369e565b60408601526020850152516060840152516080830152602060808201510151908160011b91808304600214901517156104ae576001820182116104ae5761242360018301613823565b61242f60018401613898565b60808301805160600151151560c0870152516040015160a0860152825161245e906001600160a01b0316614124565b938460e08701526124a26124856001600160a01b0386511660ff60208801511690896142ce565b92906020608089015101519061249b82886130a7565b52866130a7565b5215611d585760016124b4910161303a565b926124c260e0870151614662565b6affffffffffffffffffffff6124e0602060808501510151876130a7565b9116905260005b6020608083015101518110156125ef57600190600060c089015260206125148160808601510151866130a7565b51015160a089015261256561256061255a612555608087015161253d86602083519301516138fd565b602060808a01510151888111908918028818916140ae565b613801565b8961512d565b614662565b6affffffffffffffffffffff61257b83896130a7565b911690526affffffffffffffffffffff61259582886130a7565b511660e08901526125b96001600160a01b0384511660ff602086015116908a6142ce565b91906125c584886130a7565b526125d083886130a7565b52156125dd575b016124e7565b60006125e982886130a7565b526125d7565b509092949360005b60206080840151015180821015612828578161261291613816565b6001810181116104ae57600160c0880152612635602060808601510151876130a7565b515160a08801526080840151516001830183116104ae5761256061267961255561267f93602060808a015101516001811190600118026001189060018801906140ae565b85615170565b6affffffffffffffffffffff612698600184018b6130a7565b911690526affffffffffffffffffffff6126b5600183018a6130a7565b511660e08801526126d96001600160a01b0385511660ff60208701511690896142ce565b91906126e8600185018a6130a7565b526126f660018401886130a7565b521561270557506001016125f7565b9150506affffffffffffffffffffff929394506127239150856130a7565b525b61272e816146b2565b9183519160ff83116127f057600b9460ff8416868102948115828704891417156104ae57600186018096116104ae577fff000000000000000000000000000000000000000000000000000000000000006127a061278a8861545f565b97612798604051998a612944565b80895261545f565b91601f1960208901930136843760f81b169052602185016020830160005b8381106127d75760405180610b538989898e8e86612c68565b602060018b92845160a81b8652019201920191906127be565b604483604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252600860048301526024820152fd5b50505050909150612725565b90506020813d60201161285e575b8161284f60209383612944565b810103126100cf5751856123c4565b3d9150612842565b346100cf5760206003193601126100cf57602061225b61288761225661288d565b80613f84565b600435906001600160a01b03821682036100cf57565b35906001600160a01b03821682036100cf57565b60a0810190811067ffffffffffffffff8211176108e557604052565b6080810190811067ffffffffffffffff8211176108e557604052565b6040810190811067ffffffffffffffff8211176108e557604052565b60c0810190811067ffffffffffffffff8211176108e557604052565b610120810190811067ffffffffffffffff8211176108e557604052565b90601f601f19910116810190811067ffffffffffffffff8211176108e557604052565b359060ff821682036100cf57565b67ffffffffffffffff81116108e55760051b60200190565b602435908160030b82036100cf57565b35908160030b82036100cf57565b9080601f830112156100cf5760209082356129c581612975565b936129d36040519586612944565b81855260208086019260051b8201019283116100cf57602001905b8282106129fc575050505090565b838091612a088461299d565b8152019101906129ee565b9080601f830112156100cf576020908235612a2d81612975565b93612a3b6040519586612944565b81855260208086019260051b8201019283116100cf57602001905b828210612a64575050505090565b81356001600160801b03811681036100cf578152908301908301612a56565b359081151582036100cf57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc60809101126100cf5760405190612ac7826128d3565b6024358252604435602083015260643560408301526084358281151582036100cf5760600152565b60005b838110612b025750506000910152565b8181015183820152602001612af2565b90601f19601f602093612b3081518092818752878088019101612aef565b0116010190565b90808251908181526020809101926020808460051b8301019501936000915b848310612b665750505050505090565b9091929394958480612b8483601f1986600196030187528a51612b12565b9801930193019194939290612b56565b90815180825260208080930193019160005b828110612bb4575050505090565b835160030b85529381019392810192600101612ba6565b60ff81511682526020906040612bee838301516060858701526060860190612b94565b91015192604081830391015281808451928381520193019160005b828110612c17575050505090565b83516001600160801b031685529381019392810192600101612c09565b90815180825260208080930193019160005b828110612c54575050505090565b835185529381019392810192600101612c46565b9190612c7f612c8e9160a0855260a0850190612b12565b60209284820384860152612b37565b93604094838103604085015282808651928381520195019060005b818110612dbd57505050606093838103606085015281518082528382019184808360051b8301019401926000915b838310612d8157505050505060809260808183039101528551928382528282019083808660051b8501019801956000935b868510612d1b5750505050505050505090565b909192939495969799988680612d6c8d8487612d5c8f601f198a60019a03018d5251938451845286850151878501528b81860151918501528b840190612c34565b9201519088818403910152612c34565b9b9c9a01989796919091019401929190612d08565b90919293948680612da6839c9e9d9c601f19866001969e9c9d9e030187528951612bcb565b970193019301919392909a98999a97969597612cd7565b82516affffffffffffffffffffff1687529584019591840191600101612ca9565b359063ffffffff821682036100cf57565b9081518082526020808093019301916000805b838210612e1157505050505090565b90919293948386516001600160801b03808251168452808383015116838501526040908183015116908401526060809101519083019084915b60048310612e695750505060e060019201960192019093929193612e02565b815163ffffffff16815287936001909301929182019101612e4a565b909161117f612e9c93604084526040840190612b94565b90565b359067ffffffffffffffff821682036100cf57565b51906001600160801b03821682036100cf57565b51908160070b82036100cf57565b51908160030b82036100cf57565b519063ffffffff821682036100cf57565b519060ff821682036100cf57565b90816101209103126100cf5760405190612f1c82612927565b612f2581612eb4565b8252612f3360208201612eb4565b6020830152612f4460408201612ec8565b6040830152612f5560608201612ec8565b6060830152608081015164ffffffffff811681036100cf576080830152612f7e60a08201612ed6565b60a083015260c081015180151581036100cf5760c0830152612fa260e08201612ee4565b60e0830152612fb5610100809201612ef5565b9082015290565b604051907f1865c57d00000000000000000000000000000000000000000000000000000000825261012080836004816001600160a01b0386165afa80156105d2576130199360a09260009261301d575b5050015160030b906131d0565b5090565b6130339250803d106109885761097a8183612944565b388061300c565b9061304482612975565b6130516040519182612944565b828152601f196130618294612975565b0190602036910137565b8051156130785760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156130785760209160051b010190565b908160c09103126100cf5761312d60a0604051926130d88461290b565b6130e181612eb4565b84526130ef60208201612eb4565b602085015261310060408201612eb4565b604085015261311160608201612ef5565b606085015261312260808201612ed6565b608085015201612ee4565b60a082015290565b60e0818303126100cf576040519161314c836128d3565b61315582612eb4565b835260209061316660208401612eb4565b602085015261317760408401612eb4565b604085015280607f840112156100cf5760405192613194846128d3565b839060e081019283116100cf57606001905b8282106131b95750505050606082015290565b8380916131c584612ee4565b8152019101906131a6565b6001600160a01b0316604051917fd0c93a7c000000000000000000000000000000000000000000000000000000008352602083600481855afa9283156105d2576000936132cc575b5060e06132366132288386614859565b946001840160030b90614859565b916024604051809581937f3256cfa900000000000000000000000000000000000000000000000000000000835260030b60048301525afa9081156105d2576132a8926000926132ab575b506001600160801b0360208184511693015116936132a082828786614c83565b948593614ce6565b91565b6132c591925060e03d60e011610606576105f88183612944565b9038613280565b9092506020813d6020116132f8575b816132e860209383612944565b810103126100cf57519138613218565b3d91506132db565b9060030b9060030b0390637fffffff82137fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008312176104ae57565b60030b60010190637fffffff82137fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008312176104ae57565b9060030b9060030b01907fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008212637fffffff8313176104ae57565b604051906060820182811067ffffffffffffffff8211176108e5576040526060604083600081528260208201520152565b60405190610200820182811067ffffffffffffffff8211176108e557604052816101e06000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261343a6133ae565b6101008201528261012082015261344f6133ae565b610140820152606061016082015282610180820152826101a0820152826101c08201520152565b6040519061348382612927565b816101006000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b604051906134c8826128d3565b816000815260006020820152600060408201526060604051916134ea836128d3565b60803684370152565b906134fd82612975565b61350a6040519182612944565b828152601f1961351a8294612975565b019060005b82811061352b57505050565b6020906135366134bb565b8282850101520161351f565b60030b637fffffff81146104ae5760010190565b60001981146104ae5760010190565b92919063ffffffff61357a610eaa8385613300565b169161358e613588846134f3565b9361303a565b9260009560009361359d6134bb565b50935b60038486820b910b811361368e57604080517f3256cfa900000000000000000000000000000000000000000000000000000000815282600482015260e080826024816001600160a01b038a165afa92831561368557508b92613668575b50506001600160801b0380825116159081613659575b5061364d5791613641916136479361362b83886130a7565b5261363682876130a7565b50611067828a6130a7565b94613542565b936135a0565b50509361364790613542565b90506020820151161538613613565b61367e9250803d10610606576105f88183612944565b38806135fd565b513d8d823e3d90fd5b5093505093929450508083528352565b6001600160a01b0316906040517f3ab72c100000000000000000000000000000000000000000000000000000000081526020908181600481875afa80156105d2578290600090613757575b6004925094604051928380927f21272d4c0000000000000000000000000000000000000000000000000000000082525afa9182156105d25760009261372d57505090565b90809250813d8311613750575b6137448183612944565b810103126100cf575190565b503d61373a565b5081813d831161377e575b61376c8183612944565b810103126100cf5781600491516136e9565b503d613762565b60405190610100820182811067ffffffffffffffff8211176108e5576040528160e0600091828152826020820152826040820152606080820152606060808201528260a08201528260c08201520152565b90670de0b6b3a764000091808302928304036104ae57565b818102929181159184041417156104ae57565b90670de0b6b3a764000082018092116104ae57565b919082018092116104ae57565b9061382d82612975565b61383a6040519182612944565b828152601f1961384a8294612975565b019060005b82811061385b57505050565b6020906138666133ae565b8282850101520161384f565b6040519061387f826128d3565b6060808360008152600060208201528160408201520152565b906138a282612975565b6138af6040519182612944565b828152601f196138bf8294612975565b019060005b8281106138d057505050565b6020906138db613872565b828285010152016138c4565b90670de0b6b3a76400009182039182116104ae57565b919082039182116104ae57565b909291926020840151918260011b92808404600214901517156104ae57600183018093116104ae5761393b83613823565b906139f261394885613898565b9461395c6001600160a01b03845116614124565b94602061396c818b0151876130a7565b5101526040830151604061398460208b0151876130a7565b51015260ff60608401511661399d60208a0151866130a7565b51526139ec6139d96001600160a01b038551168a886139c060208301518a6130a7565b516040890151906060604085015194015115159461473e565b60208b93929301519061249b828b6130a7565b5261303a565b926139fc81614662565b6affffffffffffffffffffff613a1660208a0151876130a7565b9116905260005b602088015180821015613b165790613a4b6020613a43600194600060608e01528a6130a7565b510151615884565b8060408b015215613b1157613a8c612560613a866125558c518d6020613a7488828401516138fd565b910151888111908918028818916140ae565b8561512d565b6affffffffffffffffffffff613aa283896130a7565b91169052613af46001600160a01b038551168a613ac36020820151896130a7565b5160408801516affffffffffffffffffffff613adf878d6130a7565b5116916060604085015194015115159461473e565b613afe838a6130a7565b52613b0982876130a7565b525b01613a1d565b613b0b565b50509495929560005b602085015180821015613f6c5781613b3691613816565b906001820182116104ae5760016060870152613b60613b596020880151896130a7565b5151615884565b80604088015215613c1e578551916001820182116104ae57613c176001613c01888a898f8f612560613bac916117fb6125558d8b9f8c60208b01518181119082180281189201906140ae565b6affffffffffffffffffffff613bc4888b01846130a7565b911690526affffffffffffffffffffff613adf6040613bf36001600160a01b03865116976020880151906130a7565b5194015192888b01906130a7565b613c0f83869396018d6130a7565b5201876130a7565b5201613b1f565b50909550866affffffffffffffffffffff9397959450613c3e92506130a7565b525b8351916020613c4e8661306b565b51015151936000915b856000198101116104ae576000198601831015613e6e5760005b613c7b84886138fd565b60001981019081116104ae57811015613e6357613ca5816020613c9d8b61306b565b5101516130a7565b516020613cb18a61306b565b5101519060018301831191826104ae57613ccf9060018501906130a7565b5160030b9060030b13613ce6575b50600101613c71565b6000905b878210613cf75750613cdd565b6020613d03838c6130a7565b510151906104ae57613d199060018401906130a7565b5160030b613d59838b613d32826020613c9d88856130a7565b5160030b6110126020613d4588856130a7565b510151926020613c9d8960018801936130a7565b526001600160801b03613db3838b83613d7b600184016040613c9d89866130a7565b511693613d8e836040613c9d89866130a7565b51166110126040613d9f88856130a7565b510151926040613c9d8960018801936130a7565b52613dc7600183016040613c9d848a6130a7565b51613e0083613ddc816040613c9d878d6130a7565b516040613de9868c6130a7565b51015190611012600184016040613c9d898f6130a7565b526001613e158184016060613c9d858b6130a7565b5191613e27846060613c9d848c6130a7565b5192613e5b858a6060613e488682613e3f82866130a7565b510151936130a7565b51015196611012600098888501906130a7565b520190613cea565b509160010191613c57565b93509491935050613e7e816146b2565b92825160ff8111613f3457600b60ff8216818102928115828504841417156104ae57600184018094116104ae577fff00000000000000000000000000000000000000000000000000000000000000613eee613ed88661545f565b95613ee66040519788612944565b80875261545f565b91601f1960208701930136843760f81b169052602183016020870160005b838110613f1b57505050505094565b602060018692845160a81b865201920192019190613f0c565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252600860048301526024820152fd5b505094505093919050613c40565b8115611d90570490565b90808202906000198184099082808310920391808303921461401257670de0b6b3a76400009082821115613fe8577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669940990828211900360ee1b910360121c170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050670de0b6b3a764000091500490565b670de0b6b3a76400009182820291600019848209938380861095039480860395146140a15784831115613fe85782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505090612e9c9250613f7a565b909182820291600019848209938380861095039480860395146140a15784831115613fe85782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b6001600160a01b031660409081517f1865c57d000000000000000000000000000000000000000000000000000000008152610120908181600481865afa9182156142a6579060a092916000926142b1575b5050015160030b8251917f3256cfa900000000000000000000000000000000000000000000000000000000835281600484015260e083602481845afa9283156142a65760009361427f575b5060206004918551928380927fd0c93a7c0000000000000000000000000000000000000000000000000000000082525afa938415614275575060009361423f575b5061422083600161421584612e9c97614859565b930160030b90614859565b906001600160801b036020818551169401511661195e83838387614c83565b92506020833d60201161426d575b8161425a60209383612944565b810103126100cf57915191614220614201565b3d915061424d565b513d6000823e3d90fd5b600491935061429e60209160e03d60e011610606576105f88183612944565b9391506141c0565b84513d6000823e3d90fd5b6142c79250803d106109885761097a8183612944565b3880614175565b92916142d86133ae565b916142e1613872565b506142eb85614d83565b91909194826060880151602087015260ff8516865261430e60608901515161303a565b604087015260005b6060890151805182101561465657906143308188936130a7565b518a600391820b6143546143488560408c01516130a7565b51602084015190614d6d565b906143726143668660608d01516130a7565b51604085015190614d6d565b9361438260e0850151838c615a07565b506001600160801b03602083979301511615801590614643575b1561462c5750916143e861443098926143c9602095516143bc8582614859565b9260018601900b90614859565b906001600160801b038851166001600160801b03878a01511690614c83565b5060405197889283927f9329340d0000000000000000000000000000000000000000000000000000000084526004840190929160ff602091604084019560030b845216910152565b03816001600160a01b038c165afa9485156105d2576000956145ed575b5063ffffffff604051957f22cd85a800000000000000000000000000000000000000000000000000000000875216600486015260c09283866024816001600160a01b038d165afa9182156105d25760019661454d956000946145ce575b50506144e36001600160801b036040860151166001600160801b03604086015116898111908a1802891890898111908a180289186137ee565b90816001600160801b038651168015156000146145b8576001600160801b03926020926145216145389386868b0151168e8111908f18028e186137ee565b8c8111908d18028c1891808d118d821802186140ae565b955b015116928361456d575b505050506150e1565b6001600160801b036145638360408c01516130a7565b9116905201614316565b6145a7936001600160801b03602061459093015116898111908a180289186137ee565b8781119088180287189180881188821802186140ae565b818110908218021838808080614544565b5050506001600160801b0360206000199561453a565b6145e5929450803d10610635576106278183612944565b9138806144aa565b90946020823d602011614624575b8161460860209383612944565b81010312614621575061461a90612ee4565b933861444d565b80fd5b3d91506145fb565b9391506001975061179794509161454d9592615bbc565b506001600160801b03865116151561439c565b50509594965092505050565b6affffffffffffffffffffff9081811161467a571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252605860048301526024820152fd5b90815191601f196146db6146c585612975565b946146d36040519687612944565b808652612975565b0160005b81811061472d5750508260005b8251811015614727578061470b614705600193866130a7565b516151fd565b61471582886130a7565b5261472081876130a7565b50016146ec565b50925050565b8060606020809388010152016146df565b9594939091929361474d6133ae565b50614756613872565b5061476285848961547b565b90801561484f5781515b15611d5857156148455751915b60406147836133ae565b946147dc61179760208501519586519660208a015260ff86511689526147a88761303a565b95858a019687526147c46001600160801b03968792015161306b565b511690600198600181119060011802600118916140ae565b826147e7855161306b565b9116905260015b848110614807575050505050509081612e9c929461547b565b859061482f6117978561481a885161306b565b51168661482785886130a7565b511690615170565b8461483b8388516130a7565b91169052016147ee565b6020015191614779565b602082015161476c565b908060030b9060008212600014614bdb5760000360030b5b63ffffffff808094169116029182168281036104ae576204eb4a10614baa576001821615614b815770ffffffffffffffffffffffffffffffffff6ffffcb933bd6fad9d3af5f0b9f25db4d65b169060028316614b65575b60048316614b49575b60088316614b2d575b60108316614b11575b60208316614af5575b60408316614ad9575b608092838116614abe575b6101008116614aa3575b6102008116614a88575b6104008116614a6d575b6108008116614a52575b6110008116614a37575b6120008116614a1c575b6140008116614a01575b61800081166149e6575b6201000081166149cb575b6202000081166149b0575b6204000016614996575b600012614987575b670de0b6b3a764000002901c90565b8015611d905760001904614978565b6d2216e584f630389b2052b8db590e909102821c90614970565b6e5d6af8dedbcb3a6ccb7ce618d14225909202831c91614966565b916f09aa508b5b7e5a9780b0cc4e25d61a5602831c9161495b565b916f31be135f97da6e09a19dc367e3b6da4002831c91614950565b916f70d869a156ddd32a39e257bc3f50aa9b02831c91614946565b916fa9f746462d8f7dd10e744d913d03333302831c9161493c565b916fd097f3bdfd254ee83bdd3f248e7e785e02831c91614932565b916fe7159475a2c578ef4f1d17b2b235d48002831c91614928565b916ff3392b0822b88206f8abe8a3b44dd9be02831c9161491e565b916ff987a7253ac4d9194200696907cf2e3702831c91614914565b916ffcbe86c7900aecf64236ab31f1f9dcb502831c9161490a565b916ffe5dee046a99d51e2cc356c2f617dbe002831c91614900565b906fff2ea16466c9838804e327cb417cafcb0260801c906148f5565b906fff973b41fa98cd2e57b660be99eb2c4a0260801c906148ec565b906fffcb9843d60f67b19e8887e0bd251eb70260801c906148e3565b906fffe5caca7e10e81259b3cddc7a0649410260801c906148da565b906ffff2e50f5f656ac9229c67059486f3890260801c906148d1565b906ffff97272373d41fd789c8cb37ffcaa1c0260801c906148c8565b70ffffffffffffffffffffffffffffffffff7001000000000000000000000000000000006148bd565b602490604051907f20ab18100000000000000000000000000000000000000000000000000000000082526004820152fd5b614871565b909160009083810391809484604e1c15614c76575b8415614c69578115614c5657614c4a614c5195614c448587614c3f633b9aca0096614c2a614c23858b6158ac565b91876158da565b0160011c97614c398980613f84565b95613f84565b6140ae565b01615912565b02016140ae565b901c90565b614c649150614c51946158da565b6158f8565b509050614c5192506158ac565b6039955093851b93614bf5565b9091928381039160009481604e1c1580614cdb575b614cca578415614c69578115614c5657614c4a614c5195614c448587614c3f633b9aca0096614c2a614c23858b6158ac565b6039955093851b9390851b90614bf5565b5084604e1c15614c98565b919293908215614d48579081859215614d4057614d15614d1c93614d2b95614d0e88866158da565b01936158ac565b01906158ac565b670de0b6b3a764000002615912565b90818111908218021890818110908218021890565b505050505090565b505050905090565b60ff8116601203614d615750600190565b60120360ff16600a0a90565b9060018103614d7a575090565b612e9c916137ee565b614d8b613872565b600191805160208201519060408301519060608401518660808601519260e087015195600096600096855193614dc08561303a565b97614dca8661303a565b978a975b878910614f84575050505050505050506060860152604085015260c08301511580159182600014614f7d57835b83614f74575b508215614f5a575b5050614f505760005b606083015151811015614f4a576040840181614e2f8183516130a7565b516001811015614f3e5750806000925b60a0870193614ea461179786519260018a118a6001180260011890614e71611797836001600160801b039788946140ae565b16614e7d8787516130a7565b5260608c0197614e8e878a516130a7565b516001811015614f3457506000905b51906140ae565b16614eb08386516130a7565b52614ebf6064938492516130a7565b51109283614f1e575b505050614f135780614eeb614ee360019360408801516130a7565b518651613816565b8552614efb8160608701516130a7565b51614f0b60208701918251613816565b905201614e12565b505050905090600090565b614f2a929350516130a7565b5110388281614ec8565b6000190190614e9d565b60001982910192614e3f565b50505091565b5050905090600090565b90915081614f6b575b503880614e09565b90501538614f63565b15925038614e01565b8093614dfb565b90919293949596979a9b61504c615057916150458e8e8b8f838f8e908e8e8d8f614fb187614fe4926130a7565b51936001600160801b03614fca89600397880b966130a7565b511694600093614fda8684614859565b9501900b90614859565b90615013898418848b11028418808410156150d35761500c615005846137d6565b91856137ee565b908661518e565b988381101561506657505050505061503a929161503461100c9260006159de565b956159de565b5261101283836130a7565b5190613816565b9c6150458d8c6130a7565b9a01969594939291908e614dce565b9498939492939192838110908161509d575050505061509461100c936117fb61503a979694615034946138fd565b966000976159de565b9161503a9897958561100c98936117f095615034989e979e1802188181106000146150ca57505090615170565b03919050615170565b61500c6150058286036137d6565b6001600160801b03908181116150f5571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252608060048301526024820152fd5b91906001811190600118029182600118906151488282614023565b93600114611d9057670de0b6b3a7640000900961516157565b90600181018091116104ae5790565b9190670de0b6b3a7640000906151868185613f84565b930961516157565b9092916001811190600118029283600118916151ab8383836140ae565b94600114611d90570961516157565b60206151fb9193929360405194816151db8793518092868087019101612aef565b82016151ef82518093868085019101612aef565b01038085520183612944565b565b9081519160409081519360207fff00000000000000000000000000000000000000000000000000000000000000809260f81b168187015260019560018152615244816128ef565b818401519687519160ff83116154285760ff8316906103fc8460021b169160049a8184048c14821517156153fa57600184018094116153fa5792909189926152a361528e8461545f565b9361529b86519586612944565b80855261545f565b968989850191601f19809a0136843760f81b1690528c886000960160218501915b8a89858a106153e1575050505050506152de9293506151ba565b9501519182519460ff86116153ab5760ff861695610ff0818c1b1660109b8882046010148915171561537d576001820180921161537d57508061532f6153266153379361545f565b9b519b8c612944565b808b5261545f565b898701930136843760f81b1690526021860191830160005b85811061536757505050505050612e9c9293506151ba565b815160801b84529289019290840190820161534f565b6011907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b60448a8760088b51927f6dfcc6500000000000000000000000000000000000000000000000000000000084528301526024820152fd5b835160e01b855298909801978e9750920191018e6152c4565b60118c7f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b6044838851907f6dfcc650000000000000000000000000000000000000000000000000000000008252600860048301526024820152fd5b67ffffffffffffffff81116108e557601f01601f191660200190565b90929192615487613872565b93602082015151916154988361303a565b60408701526154a68361303a565b606087015260005b8381106154bc575050505050565b6154ca8160208401516130a7565b516155646001600160801b036154e48460408701516130a7565b511660ff855116926020604051946154fb866128b7565b60008652600082870152600060408701526000606087015260006080870152604051809581927f9329340d0000000000000000000000000000000000000000000000000000000083528560030b6004840190929160ff602091604084019560030b845216910152565b03816001600160a01b038d165afa9283156105d257600093615848575b5063ffffffff604051937f22cd85a800000000000000000000000000000000000000000000000000000000855216600484015260c0836024816001600160a01b038d165afa9283156105d25760009361581e575b506040517fd0c93a7c000000000000000000000000000000000000000000000000000000008152906020826004816001600160a01b038e165afa80156105d25788926000916157e5575b509161564c918695949360606001999801528060030b60808701526156426134bb565b5060030b8b615a07565b50919091151560408501526001600160801b036040818181602088015116960151169382815116158015906157d6575b15615773576156c8898581891189831802821802908585850151169080891189821802811891818111908218021802906156ba82828887511661518e565b8a528560208501511661518e565b60208801525b015116615756575b505050615713828a6157006156f860206156ef8d61369e565b929088516159de565b9601516159de565b61101283606060408501519401516130a7565b5261572d6157258260408b01516130a7565b518951613816565b885261574b6157408260608b01516130a7565b5160208a0151613816565b6020890152016154ae565b61576a9286908181119082180218906158f8565b503880806156d6565b606087015161578f608089015160030b918b6142158483614859565b888401519091600091156157d0576157a8915086615170565b885282880151156157c1575060005b60208801526156ce565b6157cb908561512d565b6157b7565b506157a8565b5082602082015116151561567c565b9192506020823d602011615816575b8161580160209383612944565b8101031261462157505187919061564c61561f565b3d91506157f4565b6001600160a01b039193506158419060c03d60c011610635576106278183612944565b92906155d5565b90926020823d60201161587c575b8161586360209383612944565b81010312614621575061587590612ee4565b9138615581565b3d9150615856565b670de0ad9b58f16000908181029181830414901517156100cf57670de0b6b3a7640000900490565b670de0b6b3a7640000908181029183156158d1575b81830414901517156100cf570490565b600193506158c1565b8181029181830414901517156100cf57670de0b6b3a7640000900490565b8181029183156158d15781830414901517156100cf570490565b60b581710100000000000000000000000000000000008110156159c7575b806901000000000000000000620100009210156159ba575b650100000000008110156159ad575b63010000008110156159a0575b010260121c60019080830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c8080920410900390565b60101c9160081b91615964565b60201c9160101b91615957565b60401c9160201b91615948565b5068b500000000000000009050608082901c615930565b906001811480156159ff575b156159f3575090565b60001960019201040190565b5081156159ea565b6001600160a01b0390929192615a1b6134bb565b501692604051927f3256cfa90000000000000000000000000000000000000000000000000000000084528060030b600485015260e084602481885afa9384156105d257600094615b9b575b50600460208596604051928380927fd0c93a7c0000000000000000000000000000000000000000000000000000000082525afa80156105d257600090615b67575b615ab8915060016142158483614859565b93818410938581108015966001600160801b03928385511695615ae583826020890199888b511690614c83565b9384615af957505050505050600080925252565b918596615b4996836117979796956117ea958511858318028218948718028618818110600014615b59575050615b3461179760005b88615170565b16905280831015615b4e576117e460006137d6565b169052565b6117e48184036137d6565b615b34916117979103615b2e565b506020813d602011615b93575b81615b8160209383612944565b810103126100cf57615ab89051615aa7565b3d9150615b74565b615bb591945060e03d60e011610606576105f88183612944565b9238615a66565b615bd29094919293945160016117798583614859565b9015615bf05750612e9c925060018111906001180260011890614023565b915050612e9c91613f8456fea2646970667358221220f4dd71b475bc8b453152144dcf36238f271be1554b5090b403fa5f97163ed0ec64736f6c63430008190033