60806040526000600d60006101000a81548160ff0219169083151502179055506604bffe92109000600e55610539600f55620164c960105560016011553480156200004957600080fd5b506040518060400160405280601581526020017f4c6565745377617020426173652041646f7074657200000000000000000000008152506040518060400160405280600481526020017f4c534241000000000000000000000000000000000000000000000000000000008152508160009081620000c7919062000493565b508060019081620000d9919062000493565b505050620000fc620000f06200014b60201b60201c565b6200015360201b60201c565b6001600b8190555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200057a565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200029b57607f821691505b602082108103620002b157620002b062000253565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002dc565b620003278683620002dc565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003746200036e62000368846200033f565b62000349565b6200033f565b9050919050565b6000819050919050565b620003908362000353565b620003a86200039f826200037b565b848454620002e9565b825550505050565b600090565b620003bf620003b0565b620003cc81848462000385565b505050565b5b81811015620003f457620003e8600082620003b5565b600181019050620003d2565b5050565b601f82111562000443576200040d81620002b7565b6200041884620002cc565b8101602085101562000428578190505b620004406200043785620002cc565b830182620003d1565b50505b505050565b600082821c905092915050565b6000620004686000198460080262000448565b1980831691505092915050565b600062000483838362000455565b9150826002028217905092915050565b6200049e8262000219565b67ffffffffffffffff811115620004ba57620004b962000224565b5b620004c6825462000282565b620004d3828285620003f8565b600060209050601f8311600181146200050b5760008415620004f6578287015190505b62000502858262000475565b86555062000572565b601f1984166200051b86620002b7565b60005b8281101562000545578489015182556001820191506020850194506020810190506200051e565b8683101562000565578489015162000561601f89168262000455565b8355505b6001600288020188555050505b505050505050565b614971806200058a6000396000f3fe6080604052600436106101f95760003560e01c80635c975abb1161010d57806395d89b41116100a0578063bc3371821161006f578063bc3371821461070e578063c87b56dd14610737578063e985e9c514610774578063f2fde38b146107b1578063f51f96dd146107da576101f9565b806395d89b4114610675578063a0712d68146106a0578063a22cb465146106bc578063b88d4fde146106e5576101f9565b8063715018a6116100dc578063715018a6146105df5780637437681e146105f65780638ba4cc3c146106215780638da5cb5b1461064a576101f9565b80635c975abb1461051157806360df8a1f1461053c5780636352211e1461056557806370a08231146105a2576101f9565b806323b872dd11610190578063428640d81161015f578063428640d81461041a578063438b6300146104575780634f6ccce7146104945780634fdd43cb146104d15780635b70ea9f146104fa576101f9565b806323b872dd146103745780632f745c591461039d5780633ccfd60b146103da57806342842e0e146103f1576101f9565b806316c38b3c116101cc57806316c38b3c146102cc57806318160ddd146102f55780631919fed7146103205780631a39d8ef14610349576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063081812fc14610266578063095ea7b3146102a3575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612e43565b610805565b6040516102329190612e8b565b60405180910390f35b34801561024757600080fd5b5061025061087f565b60405161025d9190612f36565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190612f8e565b610911565b60405161029a9190612ffc565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190613043565b610957565b005b3480156102d857600080fd5b506102f360048036038101906102ee91906130af565b610a6e565b005b34801561030157600080fd5b5061030a610a93565b60405161031791906130eb565b60405180910390f35b34801561032c57600080fd5b5061034760048036038101906103429190612f8e565b610aa0565b005b34801561035557600080fd5b5061035e610ab2565b60405161036b91906130eb565b60405180910390f35b34801561038057600080fd5b5061039b60048036038101906103969190613106565b610ab8565b005b3480156103a957600080fd5b506103c460048036038101906103bf9190613043565b610b18565b6040516103d191906130eb565b60405180910390f35b3480156103e657600080fd5b506103ef610bbd565b005b3480156103fd57600080fd5b5061041860048036038101906104139190613106565b610c74565b005b34801561042657600080fd5b50610441600480360381019061043c9190613159565b610c94565b60405161044e9190612e8b565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190613159565b610cb4565b60405161048b9190613244565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190612f8e565b610dbe565b6040516104c891906130eb565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f3919061339b565b610e2f565b005b34801561050657600080fd5b5061050f610e4a565b005b34801561051d57600080fd5b50610526610f65565b6040516105339190612e8b565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190612f8e565b610f78565b005b34801561057157600080fd5b5061058c60048036038101906105879190612f8e565b610f8a565b6040516105999190612ffc565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190613159565b611010565b6040516105d691906130eb565b60405180910390f35b3480156105eb57600080fd5b506105f46110c7565b005b34801561060257600080fd5b5061060b6110db565b60405161061891906130eb565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190613043565b6110e1565b005b34801561065657600080fd5b5061065f6111d7565b60405161066c9190612ffc565b60405180910390f35b34801561068157600080fd5b5061068a611201565b6040516106979190612f36565b60405180910390f35b6106ba60048036038101906106b59190612f8e565b611293565b005b3480156106c857600080fd5b506106e360048036038101906106de91906133e4565b61169c565b005b3480156106f157600080fd5b5061070c600480360381019061070791906134c5565b6116b2565b005b34801561071a57600080fd5b5061073560048036038101906107309190612f8e565b611714565b005b34801561074357600080fd5b5061075e60048036038101906107599190612f8e565b611726565b60405161076b9190612f36565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190613548565b61178e565b6040516107a89190612e8b565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190613159565b611822565b005b3480156107e657600080fd5b506107ef6118a5565b6040516107fc91906130eb565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108785750610877826118ab565b5b9050919050565b60606000805461088e906135b7565b80601f01602080910402602001604051908101604052809291908181526020018280546108ba906135b7565b80156109075780601f106108dc57610100808354040283529160200191610907565b820191906000526020600020905b8154815290600101906020018083116108ea57829003601f168201915b5050505050905090565b600061091c8261198d565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061096282610f8a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c99061365a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109f16119d8565b73ffffffffffffffffffffffffffffffffffffffff161480610a205750610a1f81610a1a6119d8565b61178e565b5b610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a56906136ec565b60405180910390fd5b610a6983836119e0565b505050565b610a76611a99565b80600d60006101000a81548160ff02191690831515021790555050565b6000600880549050905090565b610aa8611a99565b80600e8190555050565b60105481565b610ac9610ac36119d8565b82611b17565b610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff9061377e565b60405180910390fd5b610b13838383611bac565b505050565b6000610b2383611010565b8210610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90613810565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610bc5611a99565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610beb90613861565b60006040518083038185875af1925050503d8060008114610c28576040519150601f19603f3d011682016040523d82523d6000602084013e610c2d565b606091505b5050905080610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c68906138c2565b60405180910390fd5b50565b610c8f838383604051806020016040528060008152506116b2565b505050565b60126020528060005260406000206000915054906101000a900460ff1681565b60606000610cc183611010565b905060008167ffffffffffffffff811115610cdf57610cde613270565b5b604051908082528060200260200182016040528015610d0d5781602001602082028036833780820191505090505b50905060006001905060005b8381108015610d2a57506010548211155b15610db2576000610d3a83610f8a565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d9e5782848381518110610d8357610d826138e2565b5b6020026020010181815250508180610d9a90613940565b9250505b8280610da990613940565b93505050610d19565b82945050505050919050565b6000610dc8610a93565b8210610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e00906139fa565b60405180910390fd5b60088281548110610e1d57610e1c6138e2565b5b90600052602060002001549050919050565b610e37611a99565b80600c9081610e469190613bc6565b5050565b610e52611ea5565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690613d0a565b60405180910390fd5b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f4333601154611ef4565b60116000815480929190610f5690613940565b9190505550610f63611f12565b565b600d60009054906101000a900460ff1681565b610f80611a99565b8060108190555050565b600080610f9683611f1c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe90613d76565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107790613e08565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110cf611a99565b6110d96000611f59565b565b600f5481565b6110e9611a99565b600d60009054906101000a900460ff1615611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113090613e74565b60405180910390fd5b601054611144610a93565b8261114f9190613e94565b1115611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790613f14565b60405180910390fd5b60005b818110156111d2576111a783601154611ef4565b601160008154809291906111ba90613940565b919050555080806111ca90613940565b915050611193565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611210906135b7565b80601f016020809104026020016040519081016040528092919081815260200182805461123c906135b7565b80156112895780601f1061125e57610100808354040283529160200191611289565b820191906000526020600020905b81548152906001019060200180831161126c57829003601f168201915b5050505050905090565b61129b611ea5565b600d60009054906101000a900460ff16156112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613f80565b60405180910390fd5b6000811161132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590613fec565b60405180910390fd5b600f5461133a33611010565b826113459190613e94565b1115611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d90614058565b60405180910390fd5b601054611391610a93565b8261139c9190613e94565b11156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d4906140ea565b60405180910390fd5b6000600e54826113ed919061410a565b905060006113fa33611010565b111561149857600e548261140e919061410a565b341015611450576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611447906141be565b60405180910390fd5b60005b828110156114925761146733601154611ef4565b6011600081548092919061147a90613940565b9190505550808061148a90613940565b915050611453565b506115c1565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90613d0a565b60405180910390fd5b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b828110156115bf5761159433601154611ef4565b601160008154809291906115a790613940565b919050555080806115b790613940565b915050611580565b505b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161160990613861565b60006040518083038185875af1925050503d8060008114611646576040519150601f19603f3d011682016040523d82523d6000602084013e61164b565b606091505b505090508061168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690614250565b60405180910390fd5b5050611699611f12565b50565b6116ae6116a76119d8565b838361201f565b5050565b6116c36116bd6119d8565b83611b17565b611702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f99061377e565b60405180910390fd5b61170e8484848461218b565b50505050565b61171c611a99565b80600f8190555050565b60606117318261198d565b600061173b6121e7565b9050600081511161175b5760405180602001604052806000815250611786565b8061176584612279565b6040516020016117769291906142ac565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61182a611a99565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090614342565b60405180910390fd5b6118a281611f59565b50565b600e5481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061197657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611986575061198582612347565b5b9050919050565b611996816123b1565b6119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613d76565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a5383610f8a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611aa16119d8565b73ffffffffffffffffffffffffffffffffffffffff16611abf6111d7565b73ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c906143ae565b60405180910390fd5b565b600080611b2383610f8a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b655750611b64818561178e565b5b80611ba357508373ffffffffffffffffffffffffffffffffffffffff16611b8b84610911565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611bcc82610f8a565b73ffffffffffffffffffffffffffffffffffffffff1614611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990614440565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c88906144d2565b60405180910390fd5b611c9e83838360016123f2565b8273ffffffffffffffffffffffffffffffffffffffff16611cbe82610f8a565b73ffffffffffffffffffffffffffffffffffffffff1614611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b90614440565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ea08383836001612550565b505050565b6002600b5403611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee19061453e565b60405180910390fd5b6002600b81905550565b611f0e828260405180602001604052806000815250612556565b5050565b6001600b81905550565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361208d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612084906145aa565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161217e9190612e8b565b60405180910390a3505050565b612196848484611bac565b6121a2848484846125b1565b6121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d89061463c565b60405180910390fd5b50505050565b6060600c80546121f6906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054612222906135b7565b801561226f5780601f106122445761010080835404028352916020019161226f565b820191906000526020600020905b81548152906001019060200180831161225257829003601f168201915b5050505050905090565b60606000600161228884612738565b01905060008167ffffffffffffffff8111156122a7576122a6613270565b5b6040519080825280601f01601f1916602001820160405280156122d95781602001600182028036833780820191505090505b509050600082602001820190505b60011561233c578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816123305761232f61465c565b5b049450600085036122e7575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166123d383611f1c565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6123fe8484848461288b565b6001811115612442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612439906146fd565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036124895761248481612891565b6124c8565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146124c7576124c685826128da565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361250a5761250581612a47565b612549565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612548576125478482612b18565b5b5b5050505050565b50505050565b6125608383612b97565b61256d60008484846125b1565b6125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a39061463c565b60405180910390fd5b505050565b60006125d28473ffffffffffffffffffffffffffffffffffffffff16612db4565b1561272b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026125fb6119d8565b8786866040518563ffffffff1660e01b815260040161261d9493929190614772565b6020604051808303816000875af192505050801561265957506040513d601f19601f8201168201806040525081019061265691906147d3565b60015b6126db573d8060008114612689576040519150601f19603f3d011682016040523d82523d6000602084013e61268e565b606091505b5060008151036126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ca9061463c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612730565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612796577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161278c5761278b61465c565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106127d3576d04ee2d6d415b85acef810000000083816127c9576127c861465c565b5b0492506020810190505b662386f26fc10000831061280257662386f26fc1000083816127f8576127f761465c565b5b0492506010810190505b6305f5e100831061282b576305f5e10083816128215761282061465c565b5b0492506008810190505b61271083106128505761271083816128465761284561465c565b5b0492506004810190505b6064831061287357606483816128695761286861465c565b5b0492506002810190505b600a8310612882576001810190505b80915050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016128e784611010565b6128f19190614800565b90506000600760008481526020019081526020016000205490508181146129d6576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612a5b9190614800565b9050600060096000848152602001908152602001600020549050600060088381548110612a8b57612a8a6138e2565b5b906000526020600020015490508060088381548110612aad57612aac6138e2565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612afc57612afb614834565b5b6001900381819060005260206000200160009055905550505050565b6000612b2383611010565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfd906148af565b60405180910390fd5b612c0f816123b1565b15612c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c469061491b565b60405180910390fd5b612c5d6000838360016123f2565b612c66816123b1565b15612ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9d9061491b565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612db0600083836001612550565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612e2081612deb565b8114612e2b57600080fd5b50565b600081359050612e3d81612e17565b92915050565b600060208284031215612e5957612e58612de1565b5b6000612e6784828501612e2e565b91505092915050565b60008115159050919050565b612e8581612e70565b82525050565b6000602082019050612ea06000830184612e7c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee0578082015181840152602081019050612ec5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0882612ea6565b612f128185612eb1565b9350612f22818560208601612ec2565b612f2b81612eec565b840191505092915050565b60006020820190508181036000830152612f508184612efd565b905092915050565b6000819050919050565b612f6b81612f58565b8114612f7657600080fd5b50565b600081359050612f8881612f62565b92915050565b600060208284031215612fa457612fa3612de1565b5b6000612fb284828501612f79565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fe682612fbb565b9050919050565b612ff681612fdb565b82525050565b60006020820190506130116000830184612fed565b92915050565b61302081612fdb565b811461302b57600080fd5b50565b60008135905061303d81613017565b92915050565b6000806040838503121561305a57613059612de1565b5b60006130688582860161302e565b925050602061307985828601612f79565b9150509250929050565b61308c81612e70565b811461309757600080fd5b50565b6000813590506130a981613083565b92915050565b6000602082840312156130c5576130c4612de1565b5b60006130d38482850161309a565b91505092915050565b6130e581612f58565b82525050565b600060208201905061310060008301846130dc565b92915050565b60008060006060848603121561311f5761311e612de1565b5b600061312d8682870161302e565b935050602061313e8682870161302e565b925050604061314f86828701612f79565b9150509250925092565b60006020828403121561316f5761316e612de1565b5b600061317d8482850161302e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131bb81612f58565b82525050565b60006131cd83836131b2565b60208301905092915050565b6000602082019050919050565b60006131f182613186565b6131fb8185613191565b9350613206836131a2565b8060005b8381101561323757815161321e88826131c1565b9750613229836131d9565b92505060018101905061320a565b5085935050505092915050565b6000602082019050818103600083015261325e81846131e6565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132a882612eec565b810181811067ffffffffffffffff821117156132c7576132c6613270565b5b80604052505050565b60006132da612dd7565b90506132e6828261329f565b919050565b600067ffffffffffffffff82111561330657613305613270565b5b61330f82612eec565b9050602081019050919050565b82818337600083830152505050565b600061333e613339846132eb565b6132d0565b90508281526020810184848401111561335a5761335961326b565b5b61336584828561331c565b509392505050565b600082601f83011261338257613381613266565b5b813561339284826020860161332b565b91505092915050565b6000602082840312156133b1576133b0612de1565b5b600082013567ffffffffffffffff8111156133cf576133ce612de6565b5b6133db8482850161336d565b91505092915050565b600080604083850312156133fb576133fa612de1565b5b60006134098582860161302e565b925050602061341a8582860161309a565b9150509250929050565b600067ffffffffffffffff82111561343f5761343e613270565b5b61344882612eec565b9050602081019050919050565b600061346861346384613424565b6132d0565b9050828152602081018484840111156134845761348361326b565b5b61348f84828561331c565b509392505050565b600082601f8301126134ac576134ab613266565b5b81356134bc848260208601613455565b91505092915050565b600080600080608085870312156134df576134de612de1565b5b60006134ed8782880161302e565b94505060206134fe8782880161302e565b935050604061350f87828801612f79565b925050606085013567ffffffffffffffff8111156135305761352f612de6565b5b61353c87828801613497565b91505092959194509250565b6000806040838503121561355f5761355e612de1565b5b600061356d8582860161302e565b925050602061357e8582860161302e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135cf57607f821691505b6020821081036135e2576135e1613588565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613644602183612eb1565b915061364f826135e8565b604082019050919050565b6000602082019050818103600083015261367381613637565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006136d6603d83612eb1565b91506136e18261367a565b604082019050919050565b60006020820190508181036000830152613705816136c9565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613768602d83612eb1565b91506137738261370c565b604082019050919050565b600060208201905081810360008301526137978161375b565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006137fa602b83612eb1565b91506138058261379e565b604082019050919050565b60006020820190508181036000830152613829816137ed565b9050919050565b600081905092915050565b50565b600061384b600083613830565b91506138568261383b565b600082019050919050565b600061386c8261383e565b9150819050919050565b7f5769746864726177206661696c65642e00000000000000000000000000000000600082015250565b60006138ac601083612eb1565b91506138b782613876565b602082019050919050565b600060208201905081810360008301526138db8161389f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061394b82612f58565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361397d5761397c613911565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006139e4602c83612eb1565b91506139ef82613988565b604082019050919050565b60006020820190508181036000830152613a13816139d7565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613a7c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613a3f565b613a868683613a3f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613ac3613abe613ab984612f58565b613a9e565b612f58565b9050919050565b6000819050919050565b613add83613aa8565b613af1613ae982613aca565b848454613a4c565b825550505050565b600090565b613b06613af9565b613b11818484613ad4565b505050565b5b81811015613b3557613b2a600082613afe565b600181019050613b17565b5050565b601f821115613b7a57613b4b81613a1a565b613b5484613a2f565b81016020851015613b63578190505b613b77613b6f85613a2f565b830182613b16565b50505b505050565b600082821c905092915050565b6000613b9d60001984600802613b7f565b1980831691505092915050565b6000613bb68383613b8c565b9150826002028217905092915050565b613bcf82612ea6565b67ffffffffffffffff811115613be857613be7613270565b5b613bf282546135b7565b613bfd828285613b39565b600060209050601f831160018114613c305760008415613c1e578287015190505b613c288582613baa565b865550613c90565b601f198416613c3e86613a1a565b60005b82811015613c6657848901518255600182019150602085019450602081019050613c41565b86831015613c835784890151613c7f601f891682613b8c565b8355505b6001600288020188555050505b505050505050565b7f596f75206861766520616c726561647920636c61696d656420796f757220667260008201527f6565206d696e742e000000000000000000000000000000000000000000000000602082015250565b6000613cf4602883612eb1565b9150613cff82613c98565b604082019050919050565b60006020820190508181036000830152613d2381613ce7565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613d60601883612eb1565b9150613d6b82613d2a565b602082019050919050565b60006020820190508181036000830152613d8f81613d53565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613df2602983612eb1565b9150613dfd82613d96565b604082019050919050565b60006020820190508181036000830152613e2181613de5565b9050919050565b7f41697264726f7020697320706175736564210000000000000000000000000000600082015250565b6000613e5e601283612eb1565b9150613e6982613e28565b602082019050919050565b60006020820190508181036000830152613e8d81613e51565b9050919050565b6000613e9f82612f58565b9150613eaa83612f58565b9250828201905080821115613ec257613ec1613911565b5b92915050565b7f536f6c64206f7574206f7220747279206c657373207175616e746974792e0000600082015250565b6000613efe601e83612eb1565b9150613f0982613ec8565b602082019050919050565b60006020820190508181036000830152613f2d81613ef1565b9050919050565b7f4d696e74696e6720697320706175736564210000000000000000000000000000600082015250565b6000613f6a601283612eb1565b9150613f7582613f34565b602082019050919050565b60006020820190508181036000830152613f9981613f5d565b9050919050565b7f4d696e696d756d2031204e465400000000000000000000000000000000000000600082015250565b6000613fd6600d83612eb1565b9150613fe182613fa0565b602082019050919050565b6000602082019050818103600083015261400581613fc9565b9050919050565b7f4578636565646564206d6178206c696d69740000000000000000000000000000600082015250565b6000614042601283612eb1565b915061404d8261400c565b602082019050919050565b6000602082019050818103600083015261407181614035565b9050919050565b7f536f6c64206f7574206f7220747279206120736d616c6c6572207175616e746960008201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b60006140d4602283612eb1565b91506140df82614078565b604082019050919050565b60006020820190508181036000830152614103816140c7565b9050919050565b600061411582612f58565b915061412083612f58565b925082820261412e81612f58565b9150828204841483151761414557614144613911565b5b5092915050565b7f496e73756666696369656e74207061796d656e7420666f72207468652072657160008201527f756573746564207175616e746974792e00000000000000000000000000000000602082015250565b60006141a8603083612eb1565b91506141b38261414c565b604082019050919050565b600060208201905081810360008301526141d78161419b565b9050919050565b7f5061796d656e7420746f2074686520636f6e7472616374206f776e657220666160008201527f696c65642e000000000000000000000000000000000000000000000000000000602082015250565b600061423a602583612eb1565b9150614245826141de565b604082019050919050565b600060208201905081810360008301526142698161422d565b9050919050565b600081905092915050565b600061428682612ea6565b6142908185614270565b93506142a0818560208601612ec2565b80840191505092915050565b60006142b8828561427b565b91506142c4828461427b565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061432c602683612eb1565b9150614337826142d0565b604082019050919050565b6000602082019050818103600083015261435b8161431f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614398602083612eb1565b91506143a382614362565b602082019050919050565b600060208201905081810360008301526143c78161438b565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061442a602583612eb1565b9150614435826143ce565b604082019050919050565b600060208201905081810360008301526144598161441d565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144bc602483612eb1565b91506144c782614460565b604082019050919050565b600060208201905081810360008301526144eb816144af565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614528601f83612eb1565b9150614533826144f2565b602082019050919050565b600060208201905081810360008301526145578161451b565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614594601983612eb1565b915061459f8261455e565b602082019050919050565b600060208201905081810360008301526145c381614587565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614626603283612eb1565b9150614631826145ca565b604082019050919050565b6000602082019050818103600083015261465581614619565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b60006146e7603583612eb1565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006147448261471d565b61474e8185614728565b935061475e818560208601612ec2565b61476781612eec565b840191505092915050565b60006080820190506147876000830187612fed565b6147946020830186612fed565b6147a160408301856130dc565b81810360608301526147b38184614739565b905095945050505050565b6000815190506147cd81612e17565b92915050565b6000602082840312156147e9576147e8612de1565b5b60006147f7848285016147be565b91505092915050565b600061480b82612f58565b915061481683612f58565b925082820390508181111561482e5761482d613911565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614899602083612eb1565b91506148a482614863565b602082019050919050565b600060208201905081810360008301526148c88161488c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614905601c83612eb1565b9150614910826148cf565b602082019050919050565b60006020820190508181036000830152614934816148f8565b905091905056fea2646970667358221220bf51998903ad152188ddedaa0f43dd8ce2805234f4e238abde1795c7a35f419564736f6c63430008120033