61012060405260405180602001604052805f8152506012908161002291906116c0565b5034801561002e575f80fd5b506040516198b73803806198b783398181016040528101906100509190611972565b848484845f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100bb9190611a30565b60405180910390fd5b6100d38161027860201b60201c565b5082600390816100e391906116c0565b5081600490816100f391906116c0565b5060128160ff161015610132576040517f98790fd500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060ff1660808160ff1681525050608051600a61014f9190611ba5565b60a081815250504660c0818152505061016c61033960201b60201c565b60e0818152505050505061019b73c532a74256d3db42d0bf7a0400fefdbad769400860016103c460201b60201c565b6040516101a79061146c565b604051809103905ff0801580156101c0573d5f803e3d5ffd5b50600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405161020c90611479565b604051809103905ff080158015610225573d5f803e3d5ffd5b5060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508061010081815250505050505050611f3f565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600360405161036a9190611c8b565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016103a9959493929190611cbf565b60405160208183030381529060405280519060200120905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610429576040517fa41e3d3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156104435761043e826104ab60201b60201c565b610453565b610452826104e660201b60201c565b5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6104bb8261054c60201b60201c565b90505f5b818110156104e1576104d68361059560201b60201c565b8060010190506104bf565b505050565b5f60a0516104f98361071260201b60201c565b6105039190611d3d565b90505f6105158361054c60201b60201c565b90505f5b81836105259190611d6d565b8110156105465761053b8461075860201b60201c565b806001019050610519565b50505050565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490509050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105fa576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506106859190611d6d565b8154811061069657610695611da0565b5b905f5260205f2090601091828204019190066002029054906101000a900461ffff1661ffff167f80000000000000000000000000000000000000000000000000000000000000006106e79190611dcd565b90506106fa825f83610a0e60201b60201c565b61070e816001610e2260201b90919060201c565b5050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107bd576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6107ce6001610fd760201b60201c565b610818576107e2600161107060201b60201c565b61ffff167f80000000000000000000000000000000000000000000000000000000000000006108119190611dcd565b9050610981565b60065f815461082690611e00565b919050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065403610888576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006547f80000000000000000000000000000000000000000000000000000000000000006108b69190611dcd565b905060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a54c52f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610100514630866040518663ffffffff1660e01b815260040161093e959493929190611e47565b6020604051808303815f875af192505050801561097957506040513d601f19601f820116820180604052508101906109769190611e98565b60015b1561098057505b5b5f6109918261123f60201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a09818484610a0e60201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610c865760095f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610aff9190611d6d565b81548110610b1057610b0f611da0565b5b905f5260205f2090601091828204019190066002029054906101000a900461ffff1661ffff167f8000000000000000000000000000000000000000000000000000000000000000610b619190611dcd565b9050818114610c0b575f610b7a8361127460201b60201c565b905081600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110610bcc57610bcb611da0565b5b905f5260205f2090601091828204019190066002026101000a81548161ffff021916908361ffff160217905550610c09828261129660201b60201c565b505b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610c5857610c57611ec3565b5b600190038181905f5260205f2090601091828204019190066002026101000a81549061ffff02191690559055505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610dad57610cc9818361136460201b60201c565b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f2090601091828204019190066002029091909190916101000a81548161ffff021916908361ffff160217905550610da8816001600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610d9d9190611d6d565b61129660201b60201c565b610dc2565b600b5f8281526020019081526020015f205f90555b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f825f015f9054906101000a900467ffffffffffffffff1690505f835f0160089054906101000a900467ffffffffffffffff1690505f8167ffffffffffffffff1603610e785781600190039150600f9050610e80565b806001900390505b835f0160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16148015610ee45750835f0160189054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff16145b15610f1b576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f53846001015f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205482856113d160201b60201c565b846001015f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f208190555081845f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080845f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b5f815f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16825f0160189054906101000a900467ffffffffffffffff1667ffffffffffffffff161480156110695750815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16825f0160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16145b9050919050565b5f80825f0160109054906101000a900467ffffffffffffffff1690505f835f0160189054906101000a900467ffffffffffffffff169050835f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff1614801561110a5750835f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff16145b15611141576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8167ffffffffffffffff16036111625781600190039150600f905061116a565b806001900390505b5f846001015f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205490506111a5818361141560201b60201c565b93506111b881835f6113d160201b60201c565b856001015f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f208190555082855f0160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081855f0160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050919050565b5f80600b5f8481526020019081526020015f2054905073ffffffffffffffffffffffffffffffffffffffff8116915050919050565b5f80600b5f8481526020019081526020015f205490508060a01c915050919050565b5f600b5f8481526020019081526020015f2054905060a07fffffffffffffffffffffffff0000000000000000000000000000000000000000901c821115611309576040517ffcb3438c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffff00000000000000000000000000000000000000008260a01b1673ffffffffffffffffffffffffffffffffffffffff821601905080600b5f8581526020019081526020015f2081905550505050565b5f600b5f8481526020019081526020015f2054905073ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff0000000000000000000000000000000000000000821601905080600b5f8581526020019081526020015f2081905550505050565b5f8260106113df9190611f03565b67ffffffffffffffff168261ffff16901b6113ff8461144860201b60201c565b19851661140c9190611dcd565b90509392505050565b5f8160106114239190611f03565b67ffffffffffffffff1661143c8361144860201b60201c565b8416901c905092915050565b5f6010826114569190611f03565b67ffffffffffffffff1661ffff901b9050919050565b611c898061743383390190565b6107fb806190bc83390190565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061150157607f821691505b602082108103611514576115136114bd565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026115767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261153b565b611580868361153b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6115c46115bf6115ba84611598565b6115a1565b611598565b9050919050565b5f819050919050565b6115dd836115aa565b6115f16115e9826115cb565b848454611547565b825550505050565b5f90565b6116056115f9565b6116108184846115d4565b505050565b5b81811015611633576116285f826115fd565b600181019050611616565b5050565b601f821115611678576116498161151a565b6116528461152c565b81016020851015611661578190505b61167561166d8561152c565b830182611615565b50505b505050565b5f82821c905092915050565b5f6116985f198460080261167d565b1980831691505092915050565b5f6116b08383611689565b9150826002028217905092915050565b6116c982611486565b67ffffffffffffffff8111156116e2576116e1611490565b5b6116ec82546114ea565b6116f7828285611637565b5f60209050601f831160018114611728575f8415611716578287015190505b61172085826116a5565b865550611787565b601f1984166117368661151a565b5f5b8281101561175d57848901518255600182019150602085019450602081019050611738565b8683101561177a5784890151611776601f891682611689565b8355505b6001600288020188555050505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b6117c1826117a8565b810181811067ffffffffffffffff821117156117e0576117df611490565b5b80604052505050565b5f6117f261178f565b90506117fe82826117b8565b919050565b5f67ffffffffffffffff82111561181d5761181c611490565b5b611826826117a8565b9050602081019050919050565b8281835e5f83830152505050565b5f61185361184e84611803565b6117e9565b90508281526020810184848401111561186f5761186e6117a4565b5b61187a848285611833565b509392505050565b5f82601f830112611896576118956117a0565b5b81516118a6848260208601611841565b91505092915050565b5f60ff82169050919050565b6118c4816118af565b81146118ce575f80fd5b50565b5f815190506118df816118bb565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61190e826118e5565b9050919050565b61191e81611904565b8114611928575f80fd5b50565b5f8151905061193981611915565b92915050565b5f819050919050565b6119518161193f565b811461195b575f80fd5b50565b5f8151905061196c81611948565b92915050565b5f805f805f60a0868803121561198b5761198a611798565b5b5f86015167ffffffffffffffff8111156119a8576119a761179c565b5b6119b488828901611882565b955050602086015167ffffffffffffffff8111156119d5576119d461179c565b5b6119e188828901611882565b94505060406119f2888289016118d1565b9350506060611a038882890161192b565b9250506080611a148882890161195e565b9150509295509295909350565b611a2a81611904565b82525050565b5f602082019050611a435f830184611a21565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611acb57808604811115611aa757611aa6611a49565b5b6001851615611ab65780820291505b8081029050611ac485611a76565b9450611a8b565b94509492505050565b5f82611ae35760019050611b9e565b81611af0575f9050611b9e565b8160018114611b065760028114611b1057611b3f565b6001915050611b9e565b60ff841115611b2257611b21611a49565b5b8360020a915084821115611b3957611b38611a49565b5b50611b9e565b5060208310610133831016604e8410600b8410161715611b745782820a905083811115611b6f57611b6e611a49565b5b611b9e565b611b818484846001611a82565b92509050818404811115611b9857611b97611a49565b5b81810290505b9392505050565b5f611baf82611598565b9150611bba836118af565b9250611be77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ad4565b905092915050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f8154611c17816114ea565b611c218186611bef565b9450600182165f8114611c3b5760018114611c5057611c82565b60ff1983168652811515820286019350611c82565b611c5985611bf9565b5f5b83811015611c7a57815481890152600182019150602081019050611c5b565b838801955050505b50505092915050565b5f611c968284611c0b565b915081905092915050565b611caa8161193f565b82525050565b611cb981611598565b82525050565b5f60a082019050611cd25f830188611ca1565b611cdf6020830187611ca1565b611cec6040830186611ca1565b611cf96060830185611cb0565b611d066080830184611a21565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611d4782611598565b9150611d5283611598565b925082611d6257611d61611d10565b5b828204905092915050565b5f611d7782611598565b9150611d8283611598565b9250828203905081811115611d9a57611d99611a49565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611dd782611598565b9150611de283611598565b9250828201905080821115611dfa57611df9611a49565b5b92915050565b5f611e0a82611598565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e3c57611e3b611a49565b5b600182019050919050565b5f60a082019050611e5a5f830188611a21565b611e676020830187611ca1565b611e746040830186611cb0565b611e816060830185611a21565b611e8e6080830184611cb0565b9695505050505050565b5f60208284031215611ead57611eac611798565b5b5f611eba8482850161192b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f67ffffffffffffffff82169050919050565b5f611f0d82611ef0565b9150611f1883611ef0565b9250828202611f2681611ef0565b9150808214611f3857611f37611a49565b5b5092915050565b60805160a05160c05160e05161010051615463611fd05f395f61361501525f610d4a01525f610d1601525f81816110c4015281816111d00152818161202401528181612887015281816128b301528181612954015281816129bd01528181612a1b01528181612b6001528181612b9401528181612bdb01528181612c0701526133f101525f610cf101526154635ff3fe608060405234801561000f575f80fd5b5060043610610293575f3560e01c80637ecebe0011610165578063c30f4a5a116100cc578063dd62ed3e11610085578063dd62ed3e1461085d578063dd6376991461088d578063dfabc033146108a9578063e985e9c5146108c5578063f2fde38b146108f5578063f780bc1a1461091157610293565b8063c30f4a5a1461078b578063c5ab3ba6146107a7578063c6e672b9146107c5578063c87b56dd146107e1578063d505accf14610811578063d96ca0b91461082d57610293565b8063976a84351161011e578063976a8435146106a5578063a22cb465146106c3578063a9059cbb146106df578063b1ab93171461070f578063b3f9ea341461073f578063b88d4fde1461076f57610293565b80637ecebe00146105e357806385b12c7c1461061357806389fb4c661461062f5780638a696e501461064d5780638da5cb5b1461066957806395d89b411461068757610293565b806323b872dd116102095780634f02c420116101c25780634f02c4201461051f5780636352211e1461053d5780636e8f624b1461056d57806370a082311461058b578063715018a6146105bb5780637b103999146105c557610293565b806323b872dd14610449578063313ce567146104795780633644e5151461049757806342842e0e146104b5578063464c12f6146104d15780634d966072146104ef57610293565b806309674eb01161025b57806309674eb01461037557806309f0ef651461039357806318160ddd146103c35780631a5da6c8146103e15780631eeb33b7146103fd5780632167f0051461041957610293565b806301ffc9a71461029757806302519da3146102c757806306fdde03146102f7578063081812fc14610315578063095ea7b314610345575b5f80fd5b6102b160048036038101906102ac9190614040565b610941565b6040516102be9190614085565b60405180910390f35b6102e160048036038101906102dc91906140f8565b610a12565b6040516102ee919061413b565b60405180910390f35b6102ff610a58565b60405161030c91906141c4565b60405180910390f35b61032f600480360381019061032a919061420e565b610ae4565b60405161033c9190614248565b60405180910390f35b61035f600480360381019061035a9190614261565b610b14565b60405161036c9190614085565b60405180910390f35b61037d610b4e565b60405161038a919061413b565b60405180910390f35b6103ad60048036038101906103a891906140f8565b610b5e565b6040516103ba9190614085565b60405180910390f35b6103cb610be6565b6040516103d8919061413b565b60405180910390f35b6103fb60048036038101906103f691906142da565b610bec565b005b61041760048036038101906104129190614351565b610c37565b005b610433600480360381019061042e919061420e565b610c82565b6040516104409190614248565b60405180910390f35b610463600480360381019061045e919061437c565b610cb2565b6040516104709190614085565b60405180910390f35b610481610cef565b60405161048e91906143e7565b60405180910390f35b61049f610d13565b6040516104ac9190614418565b60405180910390f35b6104cf60048036038101906104ca919061437c565b610d6f565b005b6104d9610d8e565b6040516104e6919061448c565b60405180910390f35b61050960048036038101906105049190614261565b610db3565b6040516105169190614085565b60405180910390f35b610527610f05565b604051610534919061413b565b60405180910390f35b6105576004803603810190610552919061420e565b610f0b565b6040516105649190614248565b60405180910390f35b610575610fc0565b604051610582919061413b565b60405180910390f35b6105a560048036038101906105a091906140f8565b610fe4565b6040516105b2919061413b565b60405180910390f35b6105c3610ff9565b005b6105cd61100c565b6040516105da91906144d6565b60405180910390f35b6105fd60048036038101906105f891906140f8565b611031565b60405161060a919061413b565b60405180910390f35b61062d6004803603810190610628919061420e565b611046565b005b610637611105565b604051610644919061413b565b60405180910390f35b61066760048036038101906106629190614519565b61110e565b005b61067161111b565b60405161067e9190614248565b60405180910390f35b61068f611142565b60405161069c91906141c4565b60405180910390f35b6106ad6111ce565b6040516106ba919061413b565b60405180910390f35b6106dd60048036038101906106d89190614544565b6111f2565b005b6106f960048036038101906106f49190614261565b61134f565b6040516107069190614085565b60405180910390f35b610729600480360381019061072491906140f8565b6113c8565b6040516107369190614639565b60405180910390f35b610759600480360381019061075491906140f8565b611574565b604051610766919061413b565b60405180910390f35b61078960048036038101906107849190614785565b6115bd565b005b6107a560048036038101906107a091906148a3565b61172f565b005b6107af61174a565b6040516107bc919061413b565b60405180910390f35b6107df60048036038101906107da9190614544565b611753565b005b6107fb60048036038101906107f6919061420e565b611769565b60405161080891906141c4565b60405180910390f35b61082b6004803603810190610826919061493e565b61179d565b005b6108476004803603810190610842919061437c565b611b1d565b6040516108549190614085565b60405180910390f35b610877600480360381019061087291906149db565b611d29565b604051610884919061413b565b60405180910390f35b6108a760048036038101906108a2919061437c565b611d49565b005b6108c360048036038101906108be9190614261565b612058565b005b6108df60048036038101906108da91906149db565b612208565b6040516108ec9190614085565b60405180910390f35b61090f600480360381019061090a91906140f8565b612232565b005b61092b60048036038101906109269190614a19565b6122b6565b6040516109389190614639565b60405180910390f35b5f7fcaf91ff5000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a0b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60038054610a6590614a84565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9190614a84565b8015610adc5780601f10610ab357610100808354040283529160200191610adc565b820191905f5260205f20905b815481529060010190602001808311610abf57829003601f168201915b505050505081565b6009602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610b1e8261239f565b15610b3257610b2d8383612058565b610b43565b610b3c8383610db3565b9050610b48565b600190505b92915050565b5f610b5960016123f6565b905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610bdf5750600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b9050919050565b60055481565b610bf4612475565b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c3f612475565b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6011602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610cbc8261239f565b15610cd157610ccc848484611d49565b610ce3565b610cdc848484611b1d565b9050610ce8565b600190505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610d4857610d436124fc565b610d6a565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b610d8983838360405180602001604052805f8152506115bd565b505050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e19576040517f5461585f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ef3919061413b565b60405180910390a36001905092915050565b60065481565b5f610f1582612587565b9050610f208261239f565b610f56576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fbb576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b7f800000000000000000000000000000000000000000000000000000000000000081565b6007602052805f5260405f205f915090505481565b611001612475565b61100a5f6125bc565b565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e602052805f5260405f205f915090505481565b61104e612475565b5f611057611105565b14611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90614afe565b60405180910390fd5b6110a230600161267d565b6110c173c532a74256d3db42d0bf7a0400fefdbad7694008600161267d565b5f7f0000000000000000000000000000000000000000000000000000000000000000826110ee9190614b49565b90506111016110fb61111b565b82612758565b5050565b5f600554905090565b611118338261267d565b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6004805461114f90614a84565b80601f016020809104026020016040519081016040528092919081815260200182805461117b90614a84565b80156111c65780601f1061119d576101008083540402835291602001916111c6565b820191905f5260205f20905b8154815290600101906020018083116111a957829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611257576040517fccea9e6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113439190614085565b60405180910390a35050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b5576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c0338484612834565b905092915050565b60605f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905067ffffffffffffffff81111561142557611424614661565b5b6040519080825280602002602001820160405280156114535781602001602082028036833780820191505090505b5090505f5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905081101561156a57600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081815481106114ef576114ee614b8a565b5b905f5260205f2090601091828204019190066002029054906101000a900461ffff1661ffff167f80000000000000000000000000000000000000000000000000000000000000006115409190614bb7565b82828151811061155357611552614b8a565b5b602002602001018181525050806001019050611458565b5080915050919050565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490509050919050565b6115c68261239f565b6115fc576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611607848484610cb2565b505f8373ffffffffffffffffffffffffffffffffffffffff163b141580156116f2575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016116909493929190614c3c565b6020604051808303815f875af11580156116ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d09190614c9a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611729576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611737612475565b80601290816117469190614e59565b5050565b5f600654905090565b61175b612475565b611765828261267d565b5050565b6060601261177683612c66565b604051602001611787929190614fe2565b6040516020818303038152906040529050919050565b428410156117d7576040517f05787bdf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117e08561239f565b15611817576040517f1f3e0de800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361187c576040517f5461585f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001611887610d13565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600e5f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b60405160200161190c96959493929190615005565b604051602081830303815290604052805190602001206040516020016119339291906150ce565b604051602081830303815290604052805190602001208585856040515f81526020016040526040516119689493929190615104565b6020604051602081039080840390855afa158015611988573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806119fa57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611a31576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8560085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611b0c919061413b565b60405180910390a350505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b83576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611be8576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d14578281611c979190615147565b60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b611d1f858585612834565b9150509392505050565b6008602052815f5260405f20602052805f5260405f205f91509150505481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dae576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e13576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e1c81612587565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e80576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f3e5750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611fa6575060095f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611fdd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fe682610b5e565b1561201d576040517f5ce7539700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61204883837f0000000000000000000000000000000000000000000000000000000000000000612d30565b612053838383612e88565b505050565b5f61206282612587565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121225750600a5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612159576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260095f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600a602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b61223a612475565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122aa575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016122a19190614248565b60405180910390fd5b6122b3816125bc565b50565b60605f8267ffffffffffffffff8111156122d3576122d2614661565b5b6040519080825280602002602001820160405280156123015781602001602082028036833780820191505090505b5090505f8490505b83856123159190614bb7565b8110156123945761233081600161328490919063ffffffff16565b61ffff167f800000000000000000000000000000000000000000000000000000000000000061235f9190614bb7565b82868361236c9190615147565b8151811061237d5761237c614b8a565b5b602002602001018181525050806001019050612309565b508091505092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000821180156123ef57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b9050919050565b5f601080835f015f9054906101000a900467ffffffffffffffff16026010845f0160109054906101000a900467ffffffffffffffff1602845f0160189054906101000a900467ffffffffffffffff16855f0160089054906101000a900467ffffffffffffffff166010030101030367ffffffffffffffff169050919050565b61247d6133b8565b73ffffffffffffffffffffffffffffffffffffffff1661249b61111b565b73ffffffffffffffffffffffffffffffffffffffff16146124fa576124be6133b8565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016124f19190614248565b60405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600360405161252d9190615216565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6463060405160200161256c95949392919061522c565b60405160208183030381529060405280519060200120905090565b5f80600b5f8481526020019081526020015f2054905073ffffffffffffffffffffffffffffffffffffffff8116915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126e2576040517fa41e3d3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156126f6576126f1826133bf565b612700565b6126ff826133ee565b5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127bd576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000816005546127ec9190614bb7565b1115612824576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61282f5f8383612834565b505050565b5f8061283f85610a12565b90505f61284b85610a12565b9050612858868686612d30565b5f61286287610b5e565b90505f61286e87610b5e565b905081801561287a5750805b612c5757811561294b575f7f0000000000000000000000000000000000000000000000000000000000000000846128b191906152aa565b7f000000000000000000000000000000000000000000000000000000000000000060075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291a91906152aa565b6129249190615147565b90505f5b818110156129445761293989613460565b806001019050612928565b5050612c56565b8015612a18575f7f000000000000000000000000000000000000000000000000000000000000000060075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129bb91906152aa565b7f0000000000000000000000000000000000000000000000000000000000000000866129e791906152aa565b6129f19190615147565b90505f5b81811015612a1157612a068a61371b565b8060010190506129f5565b5050612c55565b5f7f000000000000000000000000000000000000000000000000000000000000000087612a4591906152aa565b90505f5b81811015612b5c575f6001600c5f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050612a9f9190615147565b90505f600c5f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110612af157612af0614b8a565b5b905f5260205f2090601091828204019190066002029054906101000a900461ffff1661ffff167f8000000000000000000000000000000000000000000000000000000000000000612b429190614bb7565b9050612b4f8c8c83612e88565b8260010192505050612a49565b50807f0000000000000000000000000000000000000000000000000000000000000000612b888b610a12565b612b9291906152aa565b7f000000000000000000000000000000000000000000000000000000000000000087612bbe91906152aa565b612bc89190615147565b1115612bd857612bd78961371b565b5b807f000000000000000000000000000000000000000000000000000000000000000085612c0591906152aa565b7f0000000000000000000000000000000000000000000000000000000000000000612c2f8b610a12565b612c3991906152aa565b612c439190615147565b1115612c5357612c5288613460565b5b505b5b5b60019450505050509392505050565b60605f6001612c7484613892565b0190505f8167ffffffffffffffff811115612c9257612c91614661565b5b6040519080825280601f01601f191660200182016040528015612cc45781602001600182028036833780820191505090505b5090505f82602001820190505b600115612d25578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612d1a57612d1961527d565b5b0494505f8503612cd1575b819350505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d80578060055f828254612d749190614bb7565b92505081905550612dd4565b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612dcc9190615147565b925050819055505b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e7b919061413b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146130f45760095f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050612f799190615147565b81548110612f8a57612f89614b8a565b5b905f5260205f2090601091828204019190066002029054906101000a900461ffff1661ffff167f8000000000000000000000000000000000000000000000000000000000000000612fdb9190614bb7565b9050818114613079575f612fee836139e3565b905081600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082815481106130405761303f614b8a565b5b905f5260205f2090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055506130778282613a05565b505b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054806130c6576130c56152da565b5b600190038181905f5260205f2090601091828204019190066002026101000a81549061ffff02191690559055505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461320f576131318183613ad3565b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f2090601091828204019190066002029091909190916101000a81548161ffff021916908361ffff16021790555061320a816001600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506132059190615147565b613a05565b613224565b600b5f8281526020019081526020015f205f90555b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f6010613290846123f6565b61329a9190614b49565b82106132d2576040517f580821e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133b0836001015f601085816132eb576132ea61527d565b5b0460108087816132fe576132fd61527d565b5b06885f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff160167ffffffffffffffff168161333a5761333961527d565b5b04875f015f9054906101000a900467ffffffffffffffff16010167ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2054601084865f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1601816133aa576133a961527d565b5b06613b40565b905092915050565b5f33905090565b5f6133c982611574565b90505f5b818110156133e9576133de8361371b565b8060010190506133cd565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000061341983610a12565b61342391906152aa565b90505f61342f83611574565b90505f5b818361343f9190615147565b81101561345a5761344f84613460565b806001019050613433565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036134c5576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6134d06001613b6d565b613514576134de6001613c06565b61ffff167f800000000000000000000000000000000000000000000000000000000000000061350d9190614bb7565b905061369a565b60065f815461352290615307565b919050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065403613584576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006547f80000000000000000000000000000000000000000000000000000000000000006135b29190614bb7565b905060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a54c52f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000004630866040518663ffffffff1660e01b815260040161365795949392919061534e565b6020604051808303815f875af192505050801561369257506040513d601f19601f8201168201806040525081019061368f91906153b3565b60015b1561369957505b5b5f6136a482612587565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461370b576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613716818484612e88565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613780576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905061380b9190615147565b8154811061381c5761381b614b8a565b5b905f5260205f2090601091828204019190066002029054906101000a900461ffff1661ffff167f800000000000000000000000000000000000000000000000000000000000000061386d9190614bb7565b905061387a825f83612e88565b61388e816001613dc990919063ffffffff16565b5050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106138ee577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816138e4576138e361527d565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061392b576d04ee2d6d415b85acef810000000083816139215761392061527d565b5b0492506020810190505b662386f26fc10000831061395a57662386f26fc1000083816139505761394f61527d565b5b0492506010810190505b6305f5e1008310613983576305f5e10083816139795761397861527d565b5b0492506008810190505b61271083106139a857612710838161399e5761399d61527d565b5b0492506004810190505b606483106139cb57606483816139c1576139c061527d565b5b0492506002810190505b600a83106139da576001810190505b80915050919050565b5f80600b5f8481526020019081526020015f205490508060a01c915050919050565b5f600b5f8481526020019081526020015f2054905060a07fffffffffffffffffffffffff0000000000000000000000000000000000000000901c821115613a78576040517ffcb3438c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffff00000000000000000000000000000000000000008260a01b1673ffffffffffffffffffffffffffffffffffffffff821601905080600b5f8581526020019081526020015f2081905550505050565b5f600b5f8481526020019081526020015f2054905073ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff0000000000000000000000000000000000000000821601905080600b5f8581526020019081526020015f2081905550505050565b5f816010613b4e91906153f1565b67ffffffffffffffff16613b6183613f78565b8416901c905092915050565b5f815f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16825f0160189054906101000a900467ffffffffffffffff1667ffffffffffffffff16148015613bff5750815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16825f0160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16145b9050919050565b5f80825f0160109054906101000a900467ffffffffffffffff1690505f835f0160189054906101000a900467ffffffffffffffff169050835f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16148015613ca05750835f0160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff16145b15613cd7576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8167ffffffffffffffff1603613cf85781600190039150600f9050613d00565b806001900390505b5f846001015f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20549050613d358183613b40565b9350613d4281835f613f9c565b856001015f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f208190555082855f0160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081855f0160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050919050565b5f825f015f9054906101000a900467ffffffffffffffff1690505f835f0160089054906101000a900467ffffffffffffffff1690505f8167ffffffffffffffff1603613e1f5781600190039150600f9050613e27565b806001900390505b835f0160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16148015613e8b5750835f0160189054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff16145b15613ec2576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613ef4846001015f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20548285613f9c565b846001015f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f208190555081845f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080845f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b5f601082613f8691906153f1565b67ffffffffffffffff1661ffff901b9050919050565b5f826010613faa91906153f1565b67ffffffffffffffff168261ffff16901b613fc484613f78565b198516613fd19190614bb7565b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61401f81613feb565b8114614029575f80fd5b50565b5f8135905061403a81614016565b92915050565b5f6020828403121561405557614054613fe3565b5b5f6140628482850161402c565b91505092915050565b5f8115159050919050565b61407f8161406b565b82525050565b5f6020820190506140985f830184614076565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6140c78261409e565b9050919050565b6140d7816140bd565b81146140e1575f80fd5b50565b5f813590506140f2816140ce565b92915050565b5f6020828403121561410d5761410c613fe3565b5b5f61411a848285016140e4565b91505092915050565b5f819050919050565b61413581614123565b82525050565b5f60208201905061414e5f83018461412c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61419682614154565b6141a0818561415e565b93506141b081856020860161416e565b6141b98161417c565b840191505092915050565b5f6020820190508181035f8301526141dc818461418c565b905092915050565b6141ed81614123565b81146141f7575f80fd5b50565b5f81359050614208816141e4565b92915050565b5f6020828403121561422357614222613fe3565b5b5f614230848285016141fa565b91505092915050565b614242816140bd565b82525050565b5f60208201905061425b5f830184614239565b92915050565b5f806040838503121561427757614276613fe3565b5b5f614284858286016140e4565b9250506020614295858286016141fa565b9150509250929050565b5f6142a9826140bd565b9050919050565b6142b98161429f565b81146142c3575f80fd5b50565b5f813590506142d4816142b0565b92915050565b5f602082840312156142ef576142ee613fe3565b5b5f6142fc848285016142c6565b91505092915050565b5f61430f8261409e565b9050919050565b5f61432082614305565b9050919050565b61433081614316565b811461433a575f80fd5b50565b5f8135905061434b81614327565b92915050565b5f6020828403121561436657614365613fe3565b5b5f6143738482850161433d565b91505092915050565b5f805f6060848603121561439357614392613fe3565b5b5f6143a0868287016140e4565b93505060206143b1868287016140e4565b92505060406143c2868287016141fa565b9150509250925092565b5f60ff82169050919050565b6143e1816143cc565b82525050565b5f6020820190506143fa5f8301846143d8565b92915050565b5f819050919050565b61441281614400565b82525050565b5f60208201905061442b5f830184614409565b92915050565b5f819050919050565b5f61445461444f61444a8461409e565b614431565b61409e565b9050919050565b5f6144658261443a565b9050919050565b5f6144768261445b565b9050919050565b6144868161446c565b82525050565b5f60208201905061449f5f83018461447d565b92915050565b5f6144af8261443a565b9050919050565b5f6144c0826144a5565b9050919050565b6144d0816144b6565b82525050565b5f6020820190506144e95f8301846144c7565b92915050565b6144f88161406b565b8114614502575f80fd5b50565b5f81359050614513816144ef565b92915050565b5f6020828403121561452e5761452d613fe3565b5b5f61453b84828501614505565b91505092915050565b5f806040838503121561455a57614559613fe3565b5b5f614567858286016140e4565b925050602061457885828601614505565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145b481614123565b82525050565b5f6145c583836145ab565b60208301905092915050565b5f602082019050919050565b5f6145e782614582565b6145f1818561458c565b93506145fc8361459c565b805f5b8381101561462c57815161461388826145ba565b975061461e836145d1565b9250506001810190506145ff565b5085935050505092915050565b5f6020820190508181035f83015261465181846145dd565b905092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6146978261417c565b810181811067ffffffffffffffff821117156146b6576146b5614661565b5b80604052505050565b5f6146c8613fda565b90506146d4828261468e565b919050565b5f67ffffffffffffffff8211156146f3576146f2614661565b5b6146fc8261417c565b9050602081019050919050565b828183375f83830152505050565b5f614729614724846146d9565b6146bf565b9050828152602081018484840111156147455761474461465d565b5b614750848285614709565b509392505050565b5f82601f83011261476c5761476b614659565b5b813561477c848260208601614717565b91505092915050565b5f805f806080858703121561479d5761479c613fe3565b5b5f6147aa878288016140e4565b94505060206147bb878288016140e4565b93505060406147cc878288016141fa565b925050606085013567ffffffffffffffff8111156147ed576147ec613fe7565b5b6147f987828801614758565b91505092959194509250565b5f67ffffffffffffffff82111561481f5761481e614661565b5b6148288261417c565b9050602081019050919050565b5f61484761484284614805565b6146bf565b9050828152602081018484840111156148635761486261465d565b5b61486e848285614709565b509392505050565b5f82601f83011261488a57614889614659565b5b813561489a848260208601614835565b91505092915050565b5f602082840312156148b8576148b7613fe3565b5b5f82013567ffffffffffffffff8111156148d5576148d4613fe7565b5b6148e184828501614876565b91505092915050565b6148f3816143cc565b81146148fd575f80fd5b50565b5f8135905061490e816148ea565b92915050565b61491d81614400565b8114614927575f80fd5b50565b5f8135905061493881614914565b92915050565b5f805f805f805f60e0888a03121561495957614958613fe3565b5b5f6149668a828b016140e4565b97505060206149778a828b016140e4565b96505060406149888a828b016141fa565b95505060606149998a828b016141fa565b94505060806149aa8a828b01614900565b93505060a06149bb8a828b0161492a565b92505060c06149cc8a828b0161492a565b91505092959891949750929550565b5f80604083850312156149f1576149f0613fe3565b5b5f6149fe858286016140e4565b9250506020614a0f858286016140e4565b9150509250929050565b5f8060408385031215614a2f57614a2e613fe3565b5b5f614a3c858286016141fa565b9250506020614a4d858286016141fa565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614a9b57607f821691505b602082108103614aae57614aad614a57565b5b50919050565b7f416c7265616479206c61756e63686564000000000000000000000000000000005f82015250565b5f614ae860108361415e565b9150614af382614ab4565b602082019050919050565b5f6020820190508181035f830152614b1581614adc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614b5382614123565b9150614b5e83614123565b9250828202614b6c81614123565b91508282048414831517614b8357614b82614b1c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614bc182614123565b9150614bcc83614123565b9250828201905080821115614be457614be3614b1c565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f614c0e82614bea565b614c188185614bf4565b9350614c2881856020860161416e565b614c318161417c565b840191505092915050565b5f608082019050614c4f5f830187614239565b614c5c6020830186614239565b614c69604083018561412c565b8181036060830152614c7b8184614c04565b905095945050505050565b5f81519050614c9481614016565b92915050565b5f60208284031215614caf57614cae613fe3565b5b5f614cbc84828501614c86565b91505092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614d217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614ce6565b614d2b8683614ce6565b95508019841693508086168417925050509392505050565b5f614d5d614d58614d5384614123565b614431565b614123565b9050919050565b5f819050919050565b614d7683614d43565b614d8a614d8282614d64565b848454614cf2565b825550505050565b5f90565b614d9e614d92565b614da9818484614d6d565b505050565b5b81811015614dcc57614dc15f82614d96565b600181019050614daf565b5050565b601f821115614e1157614de281614cc5565b614deb84614cd7565b81016020851015614dfa578190505b614e0e614e0685614cd7565b830182614dae565b50505b505050565b5f82821c905092915050565b5f614e315f1984600802614e16565b1980831691505092915050565b5f614e498383614e22565b9150826002028217905092915050565b614e6282614154565b67ffffffffffffffff811115614e7b57614e7a614661565b5b614e858254614a84565b614e90828285614dd0565b5f60209050601f831160018114614ec1575f8415614eaf578287015190505b614eb98582614e3e565b865550614f20565b601f198416614ecf86614cc5565b5f5b82811015614ef657848901518255600182019150602085019450602081019050614ed1565b86831015614f135784890151614f0f601f891682614e22565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f8154614f3e81614a84565b614f488186614f28565b9450600182165f8114614f625760018114614f7757614fa9565b60ff1983168652811515820286019350614fa9565b614f8085614cc5565b5f5b83811015614fa157815481890152600182019150602081019050614f82565b838801955050505b50505092915050565b5f614fbc82614154565b614fc68185614f28565b9350614fd681856020860161416e565b80840191505092915050565b5f614fed8285614f32565b9150614ff98284614fb2565b91508190509392505050565b5f60c0820190506150185f830189614409565b6150256020830188614239565b6150326040830187614239565b61503f606083018661412c565b61504c608083018561412c565b61505960a083018461412c565b979650505050505050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f615098600283614f28565b91506150a382615064565b600282019050919050565b5f819050919050565b6150c86150c382614400565b6150ae565b82525050565b5f6150d88261508c565b91506150e482856150b7565b6020820191506150f482846150b7565b6020820191508190509392505050565b5f6080820190506151175f830187614409565b61512460208301866143d8565b6151316040830185614409565b61513e6060830184614409565b95945050505050565b5f61515182614123565b915061515c83614123565b925082820390508181111561517457615173614b1c565b5b92915050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f81546151a281614a84565b6151ac818661517a565b9450600182165f81146151c657600181146151db5761520d565b60ff198316865281151582028601935061520d565b6151e485615184565b5f5b83811015615205578154818901526001820191506020810190506151e6565b838801955050505b50505092915050565b5f6152218284615196565b915081905092915050565b5f60a08201905061523f5f830188614409565b61524c6020830187614409565b6152596040830186614409565b615266606083018561412c565b6152736080830184614239565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6152b482614123565b91506152bf83614123565b9250826152cf576152ce61527d565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f61531182614123565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361534357615342614b1c565b5b600182019050919050565b5f60a0820190506153615f830188614239565b61536e6020830187614409565b61537b604083018661412c565b6153886060830185614239565b615395608083018461412c565b9695505050505050565b5f815190506153ad816140ce565b92915050565b5f602082840312156153c8576153c7613fe3565b5b5f6153d58482850161539f565b91505092915050565b5f67ffffffffffffffff82169050919050565b5f6153fb826153de565b9150615406836153de565b9250828202615414816153de565b915080821461542657615425614b1c565b5b509291505056fea26469706673582212203084a87e1203386826fe08819afcc91dcfef4443588cf939f9943d000e5b16c464736f6c634300081a00336080604052348015600e575f80fd5b50611c6d8061001c5f395ff3fe608060405260043610610094575f3560e01c80638da5cb5b116100585780638da5cb5b146101bf578063bc197c81146101e9578063c19d93fb14610225578063f23a6e611461024f578063fc0c546a1461028b5761009b565b806301ffc9a71461009f578063150b7a02146100db5780631626ba7e146101175780635194544714610153578063523e3260146101835761009b565b3661009b57005b5f80fd5b3480156100aa575f80fd5b506100c560048036038101906100c09190610edd565b6102b7565b6040516100d29190610f22565b60405180910390f35b3480156100e6575f80fd5b5061010160048036038101906100fc9190611104565b6104c0565b60405161010e9190611193565b60405180910390f35b348015610122575f80fd5b5061013d600480360381019061013891906111df565b6104dd565b60405161014a9190611193565b60405180910390f35b61016d600480360381019061016891906112cc565b610517565b60405161017a91906113b0565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a491906113d0565b610642565b6040516101b69190611193565b60405180910390f35b3480156101ca575f80fd5b506101d361066e565b6040516101e0919061143c565b60405180910390f35b3480156101f4575f80fd5b5061020f600480360381019061020a9190611515565b610713565b60405161021c9190611193565b60405180910390f35b348015610230575f80fd5b50610239610727565b60405161024691906115ef565b60405180910390f35b34801561025a575f80fd5b5061027560048036038101906102709190611608565b61072c565b6040516102829190611193565b60405180910390f35b348015610296575f80fd5b5061029f610740565b6040516102ae9392919061169b565b60405180910390f35b5f7f6faff5f1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038157507f51945447000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103e957507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061045157507f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104b957507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f6104cb3384610756565b63150b7a0260e01b9050949350505050565b5f806104f16104ea61066e565b8585610aba565b9050801561050957631626ba7e60e01b915050610511565b5f60e01b9150505b92915050565b606061052233610b47565b610561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105589061172a565b60405180910390fd5b5f8260ff16146105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059d906117b8565b60405180910390fd5b5f8081546105b390611803565b919050819055505f8673ffffffffffffffffffffffffffffffffffffffff168686866040516105e3929190611878565b5f6040518083038185875af1925050503d805f811461061d576040519150601f19603f3d011682016040523d82523d5f602084013e610622565b606091505b5080935081925050508061063857815160208301fd5b5095945050505050565b5f61064c84610b47565b156106605763523e326060e01b9050610667565b5f60e01b90505b9392505050565b5f805f8061067a610740565b925092509250468314610692575f9350505050610710565b8173ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004016106cb91906115ef565b602060405180830381865afa1580156106e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070a91906118a4565b93505050505b90565b5f63bc197c8160e01b905095945050505050565b5f5481565b5f63f23a6e6160e01b905095945050505050565b5f805f61074b610b85565b925092509250909192565b5f805f610761610740565b92509250925046831415806107a257508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b806107ad5750808414155b6107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390611919565b60405180910390fd5b5f6107f561066e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90611981565b60405180910390fd5b5f5b5f8273ffffffffffffffffffffffffffffffffffffffff163b1115610ab1578173ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa9250505080156108ee57506040513d601f19601f820116820180604052508101906108eb91906119b3565b60015b15610ab157468314158061092e57508973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b806109395750888114155b610978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096f90611981565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004016109b191906115ef565b602060405180830381865afa1580156109cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f091906118a4565b94503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790611981565b60405180910390fd5b50505080600101905060058103610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa390611a4d565b60405180910390fd5b610867565b50505050505050565b5f805f610ac78585610b9c565b50915091505f6003811115610adf57610ade611a6b565b5b816003811115610af257610af1611a6b565b5b148015610b2a57508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610b3c5750610b3b868686610bf1565b5b925050509392505050565b5f610b5061066e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f805f610b9130610d10565b925092509250909192565b5f805f6041845103610bdc575f805f602087015192506040870151915060608701515f1a9050610bce88828585610d90565b955095509550505050610bea565b5f600285515f1b9250925092505b9250925092565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401610c1e929190611aa7565b604051602081830303815290604052631626ba7e60e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c709190611b05565b5f60405180830381855afa9150503d805f8114610ca8576040519150601f19603f3d011682016040523d82523d5f602084013e610cad565b606091505b5091509150818015610cc157506020815110155b8015610d055750631626ba7e60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681806020019051810190610d039190611b2f565b145b925050509392505050565b5f805f80606067ffffffffffffffff811115610d2f57610d2e610fe0565b5b6040519080825280601f01601f191660200182016040528015610d615781602001600182028036833780820191505090505b5090506060604d60208301873c80806020019051810190610d829190611b95565b935093509350509193909250565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115610dcc575f600385925092509250610e6d565b5f6001888888886040515f8152602001604052604051610def9493929190611bf4565b6020604051602081039080840390855afa158015610e0f573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e60575f60015f801b93509350935050610e6d565b805f805f1b935093509350505b9450945094915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ebc81610e88565b8114610ec6575f80fd5b50565b5f81359050610ed781610eb3565b92915050565b5f60208284031215610ef257610ef1610e80565b5b5f610eff84828501610ec9565b91505092915050565b5f8115159050919050565b610f1c81610f08565b82525050565b5f602082019050610f355f830184610f13565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f6482610f3b565b9050919050565b610f7481610f5a565b8114610f7e575f80fd5b50565b5f81359050610f8f81610f6b565b92915050565b5f819050919050565b610fa781610f95565b8114610fb1575f80fd5b50565b5f81359050610fc281610f9e565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61101682610fd0565b810181811067ffffffffffffffff8211171561103557611034610fe0565b5b80604052505050565b5f611047610e77565b9050611053828261100d565b919050565b5f67ffffffffffffffff82111561107257611071610fe0565b5b61107b82610fd0565b9050602081019050919050565b828183375f83830152505050565b5f6110a86110a384611058565b61103e565b9050828152602081018484840111156110c4576110c3610fcc565b5b6110cf848285611088565b509392505050565b5f82601f8301126110eb576110ea610fc8565b5b81356110fb848260208601611096565b91505092915050565b5f805f806080858703121561111c5761111b610e80565b5b5f61112987828801610f81565b945050602061113a87828801610f81565b935050604061114b87828801610fb4565b925050606085013567ffffffffffffffff81111561116c5761116b610e84565b5b611178878288016110d7565b91505092959194509250565b61118d81610e88565b82525050565b5f6020820190506111a65f830184611184565b92915050565b5f819050919050565b6111be816111ac565b81146111c8575f80fd5b50565b5f813590506111d9816111b5565b92915050565b5f80604083850312156111f5576111f4610e80565b5b5f611202858286016111cb565b925050602083013567ffffffffffffffff81111561122357611222610e84565b5b61122f858286016110d7565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261125657611255610fc8565b5b8235905067ffffffffffffffff81111561127357611272611239565b5b60208301915083600182028301111561128f5761128e61123d565b5b9250929050565b5f60ff82169050919050565b6112ab81611296565b81146112b5575f80fd5b50565b5f813590506112c6816112a2565b92915050565b5f805f805f608086880312156112e5576112e4610e80565b5b5f6112f288828901610f81565b955050602061130388828901610fb4565b945050604086013567ffffffffffffffff81111561132457611323610e84565b5b61133088828901611241565b93509350506060611343888289016112b8565b9150509295509295909350565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61138282611350565b61138c818561135a565b935061139c81856020860161136a565b6113a581610fd0565b840191505092915050565b5f6020820190508181035f8301526113c88184611378565b905092915050565b5f805f604084860312156113e7576113e6610e80565b5b5f6113f486828701610f81565b935050602084013567ffffffffffffffff81111561141557611414610e84565b5b61142186828701611241565b92509250509250925092565b61143681610f5a565b82525050565b5f60208201905061144f5f83018461142d565b92915050565b5f67ffffffffffffffff82111561146f5761146e610fe0565b5b602082029050602081019050919050565b5f61149261148d84611455565b61103e565b905080838252602082019050602084028301858111156114b5576114b461123d565b5b835b818110156114de57806114ca8882610fb4565b8452602084019350506020810190506114b7565b5050509392505050565b5f82601f8301126114fc576114fb610fc8565b5b813561150c848260208601611480565b91505092915050565b5f805f805f60a0868803121561152e5761152d610e80565b5b5f61153b88828901610f81565b955050602061154c88828901610f81565b945050604086013567ffffffffffffffff81111561156d5761156c610e84565b5b611579888289016114e8565b935050606086013567ffffffffffffffff81111561159a57611599610e84565b5b6115a6888289016114e8565b925050608086013567ffffffffffffffff8111156115c7576115c6610e84565b5b6115d3888289016110d7565b9150509295509295909350565b6115e981610f95565b82525050565b5f6020820190506116025f8301846115e0565b92915050565b5f805f805f60a0868803121561162157611620610e80565b5b5f61162e88828901610f81565b955050602061163f88828901610f81565b945050604061165088828901610fb4565b935050606061166188828901610fb4565b925050608086013567ffffffffffffffff81111561168257611681610e84565b5b61168e888289016110d7565b9150509295509295909350565b5f6060820190506116ae5f8301866115e0565b6116bb602083018561142d565b6116c860408301846115e0565b949350505050565b5f82825260208201905092915050565b7f496e76616c6964207369676e65720000000000000000000000000000000000005f82015250565b5f611714600e836116d0565b915061171f826116e0565b602082019050919050565b5f6020820190508181035f83015261174181611708565b9050919050565b7f4f6e6c792063616c6c206f7065726174696f6e732061726520737570706f72745f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f6117a26022836116d0565b91506117ad82611748565b604082019050919050565b5f6020820190508181035f8301526117cf81611796565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61180d82610f95565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361183f5761183e6117d6565b5b600182019050919050565b5f81905092915050565b5f61185f838561184a565b935061186c838584611088565b82840190509392505050565b5f611884828486611854565b91508190509392505050565b5f8151905061189e81610f6b565b92915050565b5f602082840312156118b9576118b8610e80565b5b5f6118c684828501611890565b91505092915050565b7f43616e6e6f74206f776e20796f757273656c66000000000000000000000000005f82015250565b5f6119036013836116d0565b915061190e826118cf565b602082019050919050565b5f6020820190508181035f830152611930816118f7565b9050919050565b7f546f6b656e20696e206f776e65727368697020636861696e00000000000000005f82015250565b5f61196b6018836116d0565b915061197682611937565b602082019050919050565b5f6020820190508181035f8301526119988161195f565b9050919050565b5f815190506119ad81610f9e565b92915050565b5f805f606084860312156119ca576119c9610e80565b5b5f6119d78682870161199f565b93505060206119e886828701611890565b92505060406119f98682870161199f565b9150509250925092565b7f4f776e65727368697020636861696e20746f6f206465657000000000000000005f82015250565b5f611a376018836116d0565b9150611a4282611a03565b602082019050919050565b5f6020820190508181035f830152611a6481611a2b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b611aa1816111ac565b82525050565b5f604082019050611aba5f830185611a98565b8181036020830152611acc8184611378565b90509392505050565b5f611adf82611350565b611ae9818561184a565b9350611af981856020860161136a565b80840191505092915050565b5f611b108284611ad5565b915081905092915050565b5f81519050611b29816111b5565b92915050565b5f60208284031215611b4457611b43610e80565b5b5f611b5184828501611b1b565b91505092915050565b5f611b6482610f3b565b9050919050565b611b7481611b5a565b8114611b7e575f80fd5b50565b5f81519050611b8f81611b6b565b92915050565b5f805f60608486031215611bac57611bab610e80565b5b5f611bb98682870161199f565b9350506020611bca86828701611b81565b9250506040611bdb8682870161199f565b9150509250925092565b611bee81611296565b82525050565b5f608082019050611c075f830187611a98565b611c146020830186611be5565b611c216040830185611a98565b611c2e6060830184611a98565b9594505050505056fea2646970667358221220b27c0efd31c2e8dbf15e0b8296e433f315e6e4fed6cd00e0bc392e2446e01a9564736f6c634300081a0033608060405234801561000f575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610081575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100789190610196565b60405180910390fd5b6100908161009660201b60201c565b506101af565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61018082610157565b9050919050565b61019081610176565b82525050565b5f6020820190506101a95f830184610187565b92915050565b61063f806101bc5f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c8063246a002114610064578063715018a6146100945780638a54c52f1461009e5780638da5cb5b146100ce578063aa3ec0a9146100ec578063f2fde38b1461010a575b5f80fd5b61007e60048036038101906100799190610517565b610126565b60405161008b919061059d565b60405180910390f35b61009c610185565b005b6100b860048036038101906100b39190610517565b610198565b6040516100c5919061059d565b60405180910390f35b6100d6610252565b6040516100e3919061059d565b60405180910390f35b6100f4610279565b60405161010191906105c5565b60405180910390f35b610124600480360381019061011f91906105de565b610280565b005b5f60806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff5f5360b76055206035523060601b6001528460155260555f2060601b60601c5f5260205ff35b61018d610304565b6101965f61038b565b565b5f6101a1610304565b60806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff5f5360b76055206035523060601b6001528460155260555f20803b610244578560b760555ff580610211576320188a595f526004601cfd5b80606c528385897f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c5f5260205ff35b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f46905090565b610288610304565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102f8575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016102ef919061059d565b60405180910390fd5b6103018161038b565b50565b61030c61044c565b73ffffffffffffffffffffffffffffffffffffffff1661032a610252565b73ffffffffffffffffffffffffffffffffffffffff16146103895761034d61044c565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610380919061059d565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61048082610457565b9050919050565b61049081610476565b811461049a575f80fd5b50565b5f813590506104ab81610487565b92915050565b5f819050919050565b6104c3816104b1565b81146104cd575f80fd5b50565b5f813590506104de816104ba565b92915050565b5f819050919050565b6104f6816104e4565b8114610500575f80fd5b50565b5f81359050610511816104ed565b92915050565b5f805f805f60a086880312156105305761052f610453565b5b5f61053d8882890161049d565b955050602061054e888289016104d0565b945050604061055f88828901610503565b93505060606105708882890161049d565b925050608061058188828901610503565b9150509295509295909350565b61059781610476565b82525050565b5f6020820190506105b05f83018461058e565b92915050565b6105bf816104e4565b82525050565b5f6020820190506105d85f8301846105b6565b92915050565b5f602082840312156105f3576105f2610453565b5b5f6106008482850161049d565b9150509291505056fea2646970667358221220d47c56e5f785923f88b43127fd9cd12061986156d2bf7d44803050b48eae62a264736f6c634300081a003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000b597ed886d25e8b65b3e42af8bfaea48cf03a8390000000000000000000000000000000000000000fd8eb4e1dca713016c518e310000000000000000000000000000000000000000000000000000000000000001540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015400000000000000000000000000000000000000000000000000000000000000