60806040526115b3600d5566071afd498d0000600e556014600f556003601055610fa0601155603760125534801562000036575f80fd5b50604051620043ad380380620043ad83398181016040528101906200005c9190620005a7565b6040518060400160405280600681526020017f466174426e7a00000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f46420000000000000000000000000000000000000000000000000000000000008152508160029081620000d991906200082d565b508060039081620000eb91906200082d565b50620000fc6200015760201b60201c565b5f81905550505062000123620001176200015b60201b60201c565b6200016260201b60201c565b600160098190555080601390816200013c91906200082d565b50620001503360966200022560201b60201c565b5062000a23565b5f90565b5f33905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200027782826200027b60201b60201c565b5050565b6200028b6200041960201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115620002ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e39062000995565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200035d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003549062000a03565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b5f612710905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000483826200043b565b810181811067ffffffffffffffff82111715620004a557620004a46200044b565b5b80604052505050565b5f620004b962000422565b9050620004c7828262000478565b919050565b5f67ffffffffffffffff821115620004e957620004e86200044b565b5b620004f4826200043b565b9050602081019050919050565b5f5b838110156200052057808201518184015260208101905062000503565b5f8484015250505050565b5f620005416200053b84620004cc565b620004ae565b90508281526020810184848401111562000560576200055f62000437565b5b6200056d84828562000501565b509392505050565b5f82601f8301126200058c576200058b62000433565b5b81516200059e8482602086016200052b565b91505092915050565b5f60208284031215620005bf57620005be6200042b565b5b5f82015167ffffffffffffffff811115620005df57620005de6200042f565b5b620005ed8482850162000575565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200064557607f821691505b6020821081036200065b576200065a62000600565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006bf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000682565b620006cb868362000682565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007156200070f6200070984620006e3565b620006ec565b620006e3565b9050919050565b5f819050919050565b6200073083620006f5565b620007486200073f826200071c565b8484546200068e565b825550505050565b5f90565b6200075e62000750565b6200076b81848462000725565b505050565b5b818110156200079257620007865f8262000754565b60018101905062000771565b5050565b601f821115620007e157620007ab8162000661565b620007b68462000673565b81016020851015620007c6578190505b620007de620007d58562000673565b83018262000770565b50505b505050565b5f82821c905092915050565b5f620008035f1984600802620007e6565b1980831691505092915050565b5f6200081d8383620007f2565b9150826002028217905092915050565b6200083882620005f6565b67ffffffffffffffff8111156200085457620008536200044b565b5b6200086082546200062d565b6200086d82828562000796565b5f60209050601f831160018114620008a3575f84156200088e578287015190505b6200089a858262000810565b86555062000909565b601f198416620008b38662000661565b5f5b82811015620008dc57848901518255600182019150602085019450602081019050620008b5565b86831015620008fc5784890151620008f8601f891682620007f2565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c206578636565645f8201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b5f6200097d602a8362000911565b91506200098a8262000921565b604082019050919050565b5f6020820190508181035f830152620009ae816200096f565b9050919050565b7f455243323938313a20696e76616c6964207265636569766572000000000000005f82015250565b5f620009eb60198362000911565b9150620009f882620009b5565b602082019050919050565b5f6020820190508181035f83015262000a1c81620009dd565b9050919050565b61397c8062000a315f395ff3fe608060405260043610610203575f3560e01c80636352211e1161011757806395d89b411161009f578063b88d4fde1161006e578063b88d4fde146106c2578063c87b56dd146106de578063de314a591461071a578063e985e9c514610744578063f2fde38b1461078057610203565b806395d89b411461062a5780639cb57d2014610654578063a0712d681461067e578063a22cb4651461069a57610203565b8063715018a6116100e6578063715018a6146105845780637c69e2071461059a5780638da5cb5b146105b057806391b7f5ed146105da57806392910eec1461060257610203565b80636352211e146104ba57806367a4f4a9146104f65780636c0360eb1461051e57806370a082311461054857610203565b8063190866921161019a5780633ccfd60b116101695780633ccfd60b1461041857806341c66d0a1461042257806342842e0e1461044c57806355f804b3146104685780635e1c4b601461049057610203565b8063190866921461036b57806322f4596f1461039557806323b872dd146103bf5780632a55205a146103db57610203565b8063081812fc116101d6578063081812fc146102bf578063095ea7b3146102fb5780630afb04db1461031757806318160ddd1461034157610203565b806301ffc9a7146102075780630387da421461024357806304634d8d1461026d57806306fdde0314610295575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190612725565b6107a8565b60405161023a919061276a565b60405180910390f35b34801561024e575f80fd5b506102576108a1565b604051610264919061279b565b60405180910390f35b348015610278575f80fd5b50610293600480360381019061028e919061284f565b6108a7565b005b3480156102a0575f80fd5b506102a96108f5565b6040516102b69190612917565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e09190612961565b610985565b6040516102f2919061299b565b60405180910390f35b610315600480360381019061031091906129b4565b6109ff565b005b348015610322575f80fd5b5061032b610b3e565b604051610338919061279b565b60405180910390f35b34801561034c575f80fd5b50610355610b44565b604051610362919061279b565b60405180910390f35b348015610376575f80fd5b5061037f610b59565b60405161038c919061299b565b60405180910390f35b3480156103a0575f80fd5b506103a9610b7e565b6040516103b6919061279b565b60405180910390f35b6103d960048036038101906103d491906129f2565b610b84565b005b3480156103e6575f80fd5b5061040160048036038101906103fc9190612a42565b610e92565b60405161040f929190612a80565b60405180910390f35b610420610ed1565b005b34801561042d575f80fd5b50610436610f5d565b604051610443919061279b565b60405180910390f35b610466600480360381019061046191906129f2565b610f63565b005b348015610473575f80fd5b5061048e60048036038101906104899190612bd3565b610f82565b005b34801561049b575f80fd5b506104a4610f9d565b6040516104b1919061279b565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db9190612961565b610fa3565b6040516104ed919061299b565b60405180910390f35b348015610501575f80fd5b5061051c60048036038101906105179190612c1a565b610fb4565b005b348015610529575f80fd5b50610532610fec565b60405161053f9190612917565b60405180910390f35b348015610553575f80fd5b5061056e60048036038101906105699190612c58565b611078565b60405161057b919061279b565b60405180910390f35b34801561058f575f80fd5b5061059861112d565b005b3480156105a5575f80fd5b506105ae611140565b005b3480156105bb575f80fd5b506105c46111b6565b6040516105d1919061299b565b60405180910390f35b3480156105e5575f80fd5b5061060060048036038101906105fb9190612961565b6111de565b005b34801561060d575f80fd5b5061062860048036038101906106239190612961565b6111f0565b005b348015610635575f80fd5b5061063e611202565b60405161064b9190612917565b60405180910390f35b34801561065f575f80fd5b50610668611292565b604051610675919061279b565b60405180910390f35b61069860048036038101906106939190612961565b611298565b005b3480156106a5575f80fd5b506106c060048036038101906106bb9190612cad565b6114d7565b005b6106dc60048036038101906106d79190612d89565b6115dd565b005b3480156106e9575f80fd5b5061070460048036038101906106ff9190612961565b61164f565b6040516107119190612917565b60405180910390f35b348015610725575f80fd5b5061072e6116cb565b60405161073b919061279b565b60405180910390f35b34801561074f575f80fd5b5061076a60048036038101906107659190612e09565b6116d1565b604051610777919061276a565b60405180910390f35b34801561078b575f80fd5b506107a660048036038101906107a19190612c58565b611734565b005b5f7f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061083a57506301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061086a57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061089a5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600e5481565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108f182826117b6565b5050565b60606002805461090490612e74565b80601f016020809104026020016040519081016040528092919081815260200182805461093090612e74565b801561097b5780601f106109525761010080835404028352916020019161097b565b820191905f5260205f20905b81548152906001019060200180831161095e57829003601f168201915b5050505050905090565b5f61098f82611946565b6109c5576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610a0982610fa3565b90508073ffffffffffffffffffffffffffffffffffffffff16610a2a6119a0565b73ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a5681610a516119a0565b6116d1565b610a8c576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8260065f8481526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600c5481565b5f610b4d6119a7565b6001545f540303905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b5f610b8e826119ab565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80610c0084611a6e565b91509150610c168187610c116119a0565b611a91565b610c6257610c2b86610c266119a0565b6116d1565b610c61576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610cc7576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cd48686866001611ad4565b8015610cde575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815460010191905081905550610da685610d82888887611ada565b7c020000000000000000000000000000000000000000000000000000000017611b01565b60045f8681526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000841603610e22575f6001850190505f60045f8381526020019081526020015f205403610e20575f548114610e1f578360045f8381526020019081526020015f20819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610e8a8686866001611b2b565b505050505050565b5f805f610e9f8585611b31565b91505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168192509250509250929050565b610ed9611d0d565b610ee1611d8b565b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051610f0690612ed1565b5f6040518083038185875af1925050503d805f8114610f40576040519150601f19603f3d011682016040523d82523d5f602084013e610f45565b606091505b5050905080610f52575f80fd5b50610f5b611dda565b565b60125481565b610f7d83838360405180602001604052805f8152506115dd565b505050565b610f8a611d0d565b8060139081610f999190613082565b5050565b60115481565b5f610fad826119ab565b9050919050565b610fbc611d0d565b610fe88260155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611de4565b5050565b60138054610ff990612e74565b80601f016020809104026020016040519081016040528092919081815260200182805461102590612e74565b80156110705780601f1061104757610100808354040283529160200191611070565b820191905f5260205f20905b81548152906001019060200180831161105357829003601f168201915b505050505081565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110de576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b611135611d0d565b61113e5f611f84565b565b611148611d0d565b601254600c5f82825461115b919061317e565b925050819055507f8d8664e4328cbcd16b52db004cff5622d17995140cefada9f4578b857f9b204e61118b612047565b600c546012546040516111a0939291906131b1565b60405180910390a16111b43360125461204e565b565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111e6611d0d565b80600e8190555050565b6111f8611d0d565b8060118190555050565b60606003805461121190612e74565b80601f016020809104026020016040519081016040528092919081815260200182805461123d90612e74565b80156112885780601f1061125f57610100808354040283529160200191611288565b820191905f5260205f20905b81548152906001019060200180831161126b57829003601f168201915b5050505050905090565b60105481565b5f600e5490505f60016011546112ae919061317e565b836112b7610b44565b6112c1919061317e565b10801561131857506010548360145f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611315919061317e565b11155b8061135557506113266111b6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b90508015611361575f91505b818361136d91906131e6565b3410156113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690613271565b60405180910390fd5b6001601254600d546113c1919061328f565b6113cb919061317e565b836113d4610b44565b6113de919061317e565b1061141e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114159061330c565b60405180910390fd5b6001600f5461142d919061317e565b831061146e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146590613374565b60405180910390fd5b80156114c8578260145f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114c0919061317e565b925050819055505b6114d2338461204e565b505050565b8060075f6114e36119a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661158c6119a0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115d1919061276a565b60405180910390a35050565b6115e8848484610b84565b5f8373ffffffffffffffffffffffffffffffffffffffff163b14611649576116128484848461206b565b611648576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b606061165a82611946565b611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090613402565b60405180910390fd5b60136116a4836121b6565b6040516020016116b5929190613524565b6040516020818303038152906040529050919050565b600f5481565b5f73f849de01b080adc3a814fabe1e2087475cf2e35473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611721575f905061172e565b61172b8383612280565b90505b92915050565b61173c611d0d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a1906135c2565b60405180910390fd5b6117b381611f84565b50565b6117be61230e565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111561181c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181390613650565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611881906136b8565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b5f816119506119a7565b1115801561195e57505f5482105b801561199957505f7c010000000000000000000000000000000000000000000000000000000060045f8581526020019081526020015f205416145b9050919050565b5f33905090565b5f90565b5f80829050806119b96119a7565b11611a37575f54811015611a36575f60045f8381526020019081526020015f205490505f7c0100000000000000000000000000000000000000000000000000000000821603611a34575b5f8103611a2a5760045f836001900393508381526020019081526020015f20549050611a03565b8092505050611a69565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b5f8060e883901c905060e8611af0868684612317565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b5f805f600b5f8681526020019081526020015f206040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603611cba57600a6040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b5f611cc361230e565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686611cef91906131e6565b611cf99190613703565b9050815f0151819350935050509250929050565b611d15612047565b73ffffffffffffffffffffffffffffffffffffffff16611d336111b6565b73ffffffffffffffffffffffffffffffffffffffff1614611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d809061377d565b60405180910390fd5b565b600260095403611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc7906137e5565b60405180910390fd5b6002600981905550565b6001600981905550565b611dec61230e565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4190613650565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf9061384d565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600b5f8581526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b612067828260405180602001604052805f81525061231f565b5050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a026120906119a0565b8786866040518563ffffffff1660e01b81526004016120b294939291906138bd565b6020604051808303815f875af19250505080156120ed57506040513d601f19601f820116820180604052508101906120ea919061391b565b60015b612163573d805f811461211b576040519150601f19603f3d011682016040523d82523d5f602084013e612120565b606091505b505f81510361215b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60605f60016121c4846123b6565b0190505f8167ffffffffffffffff8111156121e2576121e1612aaf565b5b6040519080825280601f01601f1916602001820160405280156122145781602001600182028036833780820191505090505b5090505f82602001820190505b600115612275578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161226a576122696136d6565b5b0494505f8503612221575b819350505050919050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f612710905090565b5f9392505050565b6123298383612507565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146123b1575f805490505f83820390505b6123655f86838060010194508661206b565b61239b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061235357815f54146123ae575f80fd5b50505b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612412577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612408576124076136d6565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061244f576d04ee2d6d415b85acef81000000008381612445576124446136d6565b5b0492506020810190505b662386f26fc10000831061247e57662386f26fc100008381612474576124736136d6565b5b0492506010810190505b6305f5e10083106124a7576305f5e100838161249d5761249c6136d6565b5b0492506008810190505b61271083106124cc5761271083816124c2576124c16136d6565b5b0492506004810190505b606483106124ef57606483816124e5576124e46136d6565b5b0492506002810190505b600a83106124fe576001810190505b80915050919050565b5f805490505f8203612545576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125515f848385611ad4565b600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055506125c3836125b45f865f611ada565b6125bd856126b0565b17611b01565b60045f8381526020019081526020015f20819055505f80838301905073ffffffffffffffffffffffffffffffffffffffff8516915082825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600183015b81811461265d5780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600181019050612624565b505f8203612697576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f8190555050506126ab5f848385611b2b565b505050565b5f6001821460e11b9050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612704816126d0565b811461270e575f80fd5b50565b5f8135905061271f816126fb565b92915050565b5f6020828403121561273a576127396126c8565b5b5f61274784828501612711565b91505092915050565b5f8115159050919050565b61276481612750565b82525050565b5f60208201905061277d5f83018461275b565b92915050565b5f819050919050565b61279581612783565b82525050565b5f6020820190506127ae5f83018461278c565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127dd826127b4565b9050919050565b6127ed816127d3565b81146127f7575f80fd5b50565b5f81359050612808816127e4565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b61282e8161280e565b8114612838575f80fd5b50565b5f8135905061284981612825565b92915050565b5f8060408385031215612865576128646126c8565b5b5f612872858286016127fa565b92505060206128838582860161283b565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128c45780820151818401526020810190506128a9565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128e98261288d565b6128f38185612897565b93506129038185602086016128a7565b61290c816128cf565b840191505092915050565b5f6020820190508181035f83015261292f81846128df565b905092915050565b61294081612783565b811461294a575f80fd5b50565b5f8135905061295b81612937565b92915050565b5f60208284031215612976576129756126c8565b5b5f6129838482850161294d565b91505092915050565b612995816127d3565b82525050565b5f6020820190506129ae5f83018461298c565b92915050565b5f80604083850312156129ca576129c96126c8565b5b5f6129d7858286016127fa565b92505060206129e88582860161294d565b9150509250929050565b5f805f60608486031215612a0957612a086126c8565b5b5f612a16868287016127fa565b9350506020612a27868287016127fa565b9250506040612a388682870161294d565b9150509250925092565b5f8060408385031215612a5857612a576126c8565b5b5f612a658582860161294d565b9250506020612a768582860161294d565b9150509250929050565b5f604082019050612a935f83018561298c565b612aa0602083018461278c565b9392505050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ae5826128cf565b810181811067ffffffffffffffff82111715612b0457612b03612aaf565b5b80604052505050565b5f612b166126bf565b9050612b228282612adc565b919050565b5f67ffffffffffffffff821115612b4157612b40612aaf565b5b612b4a826128cf565b9050602081019050919050565b828183375f83830152505050565b5f612b77612b7284612b27565b612b0d565b905082815260208101848484011115612b9357612b92612aab565b5b612b9e848285612b57565b509392505050565b5f82601f830112612bba57612bb9612aa7565b5b8135612bca848260208601612b65565b91505092915050565b5f60208284031215612be857612be76126c8565b5b5f82013567ffffffffffffffff811115612c0557612c046126cc565b5b612c1184828501612ba6565b91505092915050565b5f8060408385031215612c3057612c2f6126c8565b5b5f612c3d8582860161294d565b9250506020612c4e8582860161283b565b9150509250929050565b5f60208284031215612c6d57612c6c6126c8565b5b5f612c7a848285016127fa565b91505092915050565b612c8c81612750565b8114612c96575f80fd5b50565b5f81359050612ca781612c83565b92915050565b5f8060408385031215612cc357612cc26126c8565b5b5f612cd0858286016127fa565b9250506020612ce185828601612c99565b9150509250929050565b5f67ffffffffffffffff821115612d0557612d04612aaf565b5b612d0e826128cf565b9050602081019050919050565b5f612d2d612d2884612ceb565b612b0d565b905082815260208101848484011115612d4957612d48612aab565b5b612d54848285612b57565b509392505050565b5f82601f830112612d7057612d6f612aa7565b5b8135612d80848260208601612d1b565b91505092915050565b5f805f8060808587031215612da157612da06126c8565b5b5f612dae878288016127fa565b9450506020612dbf878288016127fa565b9350506040612dd08782880161294d565b925050606085013567ffffffffffffffff811115612df157612df06126cc565b5b612dfd87828801612d5c565b91505092959194509250565b5f8060408385031215612e1f57612e1e6126c8565b5b5f612e2c858286016127fa565b9250506020612e3d858286016127fa565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e8b57607f821691505b602082108103612e9e57612e9d612e47565b5b50919050565b5f81905092915050565b50565b5f612ebc5f83612ea4565b9150612ec782612eae565b5f82019050919050565b5f612edb82612eb1565b9150819050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612f417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612f06565b612f4b8683612f06565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612f86612f81612f7c84612783565b612f63565b612783565b9050919050565b5f819050919050565b612f9f83612f6c565b612fb3612fab82612f8d565b848454612f12565b825550505050565b5f90565b612fc7612fbb565b612fd2818484612f96565b505050565b5b81811015612ff557612fea5f82612fbf565b600181019050612fd8565b5050565b601f82111561303a5761300b81612ee5565b61301484612ef7565b81016020851015613023578190505b61303761302f85612ef7565b830182612fd7565b50505b505050565b5f82821c905092915050565b5f61305a5f198460080261303f565b1980831691505092915050565b5f613072838361304b565b9150826002028217905092915050565b61308b8261288d565b67ffffffffffffffff8111156130a4576130a3612aaf565b5b6130ae8254612e74565b6130b9828285612ff9565b5f60209050601f8311600181146130ea575f84156130d8578287015190505b6130e28582613067565b865550613149565b601f1984166130f886612ee5565b5f5b8281101561311f578489015182556001820191506020850194506020810190506130fa565b8683101561313c5784890151613138601f89168261304b565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61318882612783565b915061319383612783565b92508282019050808211156131ab576131aa613151565b5b92915050565b5f6060820190506131c45f83018661298c565b6131d1602083018561278c565b6131de604083018461278c565b949350505050565b5f6131f082612783565b91506131fb83612783565b925082820261320981612783565b915082820484148315176132205761321f613151565b5b5092915050565b7f506c656173652073656e642074686520657861637420616d6f756e742e0000005f82015250565b5f61325b601d83612897565b915061326682613227565b602082019050919050565b5f6020820190508181035f8301526132888161324f565b9050919050565b5f61329982612783565b91506132a483612783565b92508282039050818111156132bc576132bb613151565b5b92915050565b7f536f6c64206f75742100000000000000000000000000000000000000000000005f82015250565b5f6132f6600983612897565b9150613301826132c2565b602082019050919050565b5f6020820190508181035f830152613323816132ea565b9050919050565b7f4d61782070657220545820726561636865642e000000000000000000000000005f82015250565b5f61335e601383612897565b91506133698261332a565b602082019050919050565b5f6020820190508181035f83015261338b81613352565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f6133ec602f83612897565b91506133f782613392565b604082019050919050565b5f6020820190508181035f830152613419816133e0565b9050919050565b5f81905092915050565b5f815461343681612e74565b6134408186613420565b9450600182165f811461345a576001811461346f576134a1565b60ff19831686528115158202860193506134a1565b61347885612ee5565b5f5b838110156134995781548189015260018201915060208101905061347a565b838801955050505b50505092915050565b5f6134b48261288d565b6134be8185613420565b93506134ce8185602086016128a7565b80840191505092915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f61350e600583613420565b9150613519826134da565b600582019050919050565b5f61352f828561342a565b915061353b82846134aa565b915061354682613502565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135ac602683612897565b91506135b782613552565b604082019050919050565b5f6020820190508181035f8301526135d9816135a0565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c206578636565645f8201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b5f61363a602a83612897565b9150613645826135e0565b604082019050919050565b5f6020820190508181035f8301526136678161362e565b9050919050565b7f455243323938313a20696e76616c6964207265636569766572000000000000005f82015250565b5f6136a2601983612897565b91506136ad8261366e565b602082019050919050565b5f6020820190508181035f8301526136cf81613696565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61370d82612783565b915061371883612783565b925082613728576137276136d6565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613767602083612897565b915061377282613733565b602082019050919050565b5f6020820190508181035f8301526137948161375b565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6137cf601f83612897565b91506137da8261379b565b602082019050919050565b5f6020820190508181035f8301526137fc816137c3565b9050919050565b7f455243323938313a20496e76616c696420706172616d657465727300000000005f82015250565b5f613837601b83612897565b915061384282613803565b602082019050919050565b5f6020820190508181035f8301526138648161382b565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f61388f8261386b565b6138998185613875565b93506138a98185602086016128a7565b6138b2816128cf565b840191505092915050565b5f6080820190506138d05f83018761298c565b6138dd602083018661298c565b6138ea604083018561278c565b81810360608301526138fc8184613885565b905095945050505050565b5f81519050613915816126fb565b92915050565b5f602082840312156139305761392f6126c8565b5b5f61393d84828501613907565b9150509291505056fea26469706673582212203f0518512822f6b1574c924d133457b7c06fe86d052e2302106e1044580311e764736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5331704c52384b546848583651425031546563427575547642735a51596937646668704738476931416673742f00000000000000000000