0x6080604052348015600f57600080fd5b50600080546001600160a01b03191633179055615a19806100316000396000f3fe6080604052600436106100d65760003560e01c806391dd73461161007f578063da3e339711610059578063da3e3397146101db578063eb5a2a301461020b578063f04f27071461021e578063fa461e331461023e57600080fd5b806391dd73461461017f578063ad38fba5146101b5578063b54cc2e8146101c857600080fd5b8063613272bf116100b0578063613272bf14610137578063627dd56a1461014a57806383197ef01461016a57600080fd5b80631da0d558146100e257806338571708146100f75780633d59384c1461011757600080fd5b366100dd57005b600080fd5b6100f56100f036600461506a565b61025e565b005b34801561010357600080fd5b506100f5610112366004615096565b6103aa565b34801561012357600080fd5b506100f5610132366004615120565b61044c565b6100f5610145366004615162565b610a8a565b34801561015657600080fd5b506100f5610165366004615120565b610ef5565b34801561017657600080fd5b506100f5611373565b34801561018b57600080fd5b5061019f61019a366004615120565b61140f565b6040516101ac9190615227565b60405180910390f35b6100f56101c336600461506a565b611b8a565b6100f56101d6366004615359565b611c4e565b3480156101e757600080fd5b506101fb6101f6366004615096565b611db8565b60405190151581526020016101ac565b6100f56102193660046153a0565b611e65565b34801561022a57600080fd5b506100f5610239366004615417565b611f5e565b34801561024a57600080fd5b506100f5610259366004615552565b612694565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216f00000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810182905273420000000000000000000000000000000000000690632e1a7d4d90602401600060405180830381600087803b15801561034a57600080fd5b505af115801561035e573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff8516925083156108fc02915083906000818181858888f193505050501580156103a5573d6000803e3d6000fd5b505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216f00000000000000000000000000000000000000000000000000000000000060448201526064016102db565b6103a573ffffffffffffffffffffffffffffffffffffffff84168383612d73565b337314e5d996f5b44ae4bd1a4a4e520e3cac02fadd3a8190036105de5760006104758484612e00565b60408051600180825281830190925291925060009190602080830190803683370190505090508160000151816000815181106104b3576104b36155a5565b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050826020015181600081518110610515576105156155a5565b6020026020010181815250506000836040015151905073ba12222222228d8ba445958a75a0704d566bf2c873ffffffffffffffffffffffffffffffffffffffff16635c38449e3085858860400151866040516020016105759291906155d4565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016105a3949392919061561e565b600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116732959b884a72c33ca8a1f4e81b6edc8cfc48ae9c10361061b5760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116732aa2282a92aa6734d777c9498ec1f175cb984f7d036106585760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116732e947deb91aba1ca1f99d8686c0f82b76d66a94f036106955760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116735aa566bc8c02394c89dded04d17a0d59737f9199036106d25760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116736448644c2c1f25b35f603ee70556ff78d9a1a3660361070f5760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116736521b6f22f68e88ee9264939efc7c12f632830810361074c5760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116737188f05f30b78e8bdef709b8039affe2b91dd88e036107895760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff811673831865bef6a295d1f3c18adddc1536d6d831a6fa036107c65760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116738a8c56aad8057c4a25c12c7a9c992bb9ab944ca5036108035760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff81167390224f1bcd0131df8f401fa038d35cfdd10b5528036108405760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116739960429f7328210e0d95887892061f4642b9ea4c0361087d5760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff8116739d79fe2e1e962a4adaf9d68a995c7f4f6fe4af1f036108ba5760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff811673b3e999096cc31a957ad8b6c593023f8cd170870d036108f75760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff811673c640d60dd3e6537ad9306355ece998e932700279036109345760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff811673dac7e7d40ccb0e6bf36b5fb7482099761104012b036109715760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff811673dbf61c5cc0a8df06bf3964652f738e6656e310d6036109ae5760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff811673dcc5ca76665e691ee1c21d54e66955a099fdb21f036109eb5760006104758484612e00565b73ffffffffffffffffffffffffffffffffffffffff811673e9ace8cbe6b9843310b8107cce456626492fd0e803610a285760006104758484612e00565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f217700000000000000000000000000000000000000000000000000000000000060448201526064016102db565b337314e5d996f5b44ae4bd1a4a4e520e3cac02fadd3a819003610ab757610ab2848484612e71565b610eef565b73ffffffffffffffffffffffffffffffffffffffff8116732959b884a72c33ca8a1f4e81b6edc8cfc48ae9c103610af357610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116732aa2282a92aa6734d777c9498ec1f175cb984f7d03610b2f57610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116732e947deb91aba1ca1f99d8686c0f82b76d66a94f03610b6b57610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116735aa566bc8c02394c89dded04d17a0d59737f919903610ba757610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116736448644c2c1f25b35f603ee70556ff78d9a1a36603610be357610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116736521b6f22f68e88ee9264939efc7c12f6328308103610c1f57610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116737188f05f30b78e8bdef709b8039affe2b91dd88e03610c5b57610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff811673831865bef6a295d1f3c18adddc1536d6d831a6fa03610c9757610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116738a8c56aad8057c4a25c12c7a9c992bb9ab944ca503610cd357610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff81167390224f1bcd0131df8f401fa038d35cfdd10b552803610d0f57610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116739960429f7328210e0d95887892061f4642b9ea4c03610d4b57610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff8116739d79fe2e1e962a4adaf9d68a995c7f4f6fe4af1f03610d8757610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff811673b3e999096cc31a957ad8b6c593023f8cd170870d03610dc357610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff811673c640d60dd3e6537ad9306355ece998e93270027903610dff57610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff811673dac7e7d40ccb0e6bf36b5fb7482099761104012b03610e3b57610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff811673dbf61c5cc0a8df06bf3964652f738e6656e310d603610e7757610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff811673dcc5ca76665e691ee1c21d54e66955a099fdb21f03610eb357610ab2848484612e71565b73ffffffffffffffffffffffffffffffffffffffff811673e9ace8cbe6b9843310b8107cce456626492fd0e803610a2857610ab2848484612e71565b50505050565b337314e5d996f5b44ae4bd1a4a4e520e3cac02fadd3a819003610f29576000610f1e8484612fdf565b9050610eef816132d5565b73ffffffffffffffffffffffffffffffffffffffff8116732959b884a72c33ca8a1f4e81b6edc8cfc48ae9c103610f66576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116732aa2282a92aa6734d777c9498ec1f175cb984f7d03610fa3576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116732e947deb91aba1ca1f99d8686c0f82b76d66a94f03610fe0576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116735aa566bc8c02394c89dded04d17a0d59737f91990361101d576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116736448644c2c1f25b35f603ee70556ff78d9a1a3660361105a576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116736521b6f22f68e88ee9264939efc7c12f6328308103611097576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116737188f05f30b78e8bdef709b8039affe2b91dd88e036110d4576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff811673831865bef6a295d1f3c18adddc1536d6d831a6fa03611111576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116738a8c56aad8057c4a25c12c7a9c992bb9ab944ca50361114e576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff81167390224f1bcd0131df8f401fa038d35cfdd10b55280361118b576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116739960429f7328210e0d95887892061f4642b9ea4c036111c8576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff8116739d79fe2e1e962a4adaf9d68a995c7f4f6fe4af1f03611205576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff811673b3e999096cc31a957ad8b6c593023f8cd170870d03611242576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff811673c640d60dd3e6537ad9306355ece998e9327002790361127f576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff811673dac7e7d40ccb0e6bf36b5fb7482099761104012b036112bc576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff811673dbf61c5cc0a8df06bf3964652f738e6656e310d6036112f9576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff811673dcc5ca76665e691ee1c21d54e66955a099fdb21f03611336576000610f1e8484612fdf565b73ffffffffffffffffffffffffffffffffffffffff811673e9ace8cbe6b9843310b8107cce456626492fd0e803610a28576000610f1e8484612fdf565b60005473ffffffffffffffffffffffffffffffffffffffff1633146113f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216f00000000000000000000000000000000000000000000000000000000000060448201526064016102db565b60005473ffffffffffffffffffffffffffffffffffffffff16ff5b6060327314e5d996f5b44ae4bd1a4a4e520e3cac02fadd3a81900361146957611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b9150611b83565b73ffffffffffffffffffffffffffffffffffffffff8116732959b884a72c33ca8a1f4e81b6edc8cfc48ae9c1036114ce57611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116732aa2282a92aa6734d777c9498ec1f175cb984f7d0361153357611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116732e947deb91aba1ca1f99d8686c0f82b76d66a94f0361159857611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116735aa566bc8c02394c89dded04d17a0d59737f9199036115fd57611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116736448644c2c1f25b35f603ee70556ff78d9a1a3660361166257611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116736521b6f22f68e88ee9264939efc7c12f63283081036116c757611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116737188f05f30b78e8bdef709b8039affe2b91dd88e0361172c57611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff811673831865bef6a295d1f3c18adddc1536d6d831a6fa0361179157611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116738a8c56aad8057c4a25c12c7a9c992bb9ab944ca5036117f657611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff81167390224f1bcd0131df8f401fa038d35cfdd10b55280361185b57611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116739960429f7328210e0d95887892061f4642b9ea4c036118c057611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff8116739d79fe2e1e962a4adaf9d68a995c7f4f6fe4af1f0361192557611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff811673b3e999096cc31a957ad8b6c593023f8cd170870d0361198a57611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff811673c640d60dd3e6537ad9306355ece998e932700279036119ef57611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff811673dac7e7d40ccb0e6bf36b5fb7482099761104012b03611a5457611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff811673dbf61c5cc0a8df06bf3964652f738e6656e310d603611ab957611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff811673dcc5ca76665e691ee1c21d54e66955a099fdb21f03611b1e57611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b73ffffffffffffffffffffffffffffffffffffffff811673e9ace8cbe6b9843310b8107cce456626492fd0e803610a2857611462848473498581ff718922c3f8e6a244956af099b2652b2b734200000000000000000000000000000000000006613b33565b5092915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216f00000000000000000000000000000000000000000000000000000000000060448201526064016102db565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f193505050501580156103a5573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff163314611ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216f00000000000000000000000000000000000000000000000000000000000060448201526064016102db565b8051734200000000000000000000000000000000000006632e1a7d4d611cf5838661570f565b6040518263ffffffff1660e01b8152600401611d1391815260200190565b600060405180830381600087803b158015611d2d57600080fd5b505af1158015611d41573d6000803e3d6000fd5b5050505060005b81811015610eef57828181518110611d6257611d626155a5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611daf573d6000803e3d6000fd5b50600101611d48565b6000805473ffffffffffffffffffffffffffffffffffffffff163314611e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216f00000000000000000000000000000000000000000000000000000000000060448201526064016102db565b611e5b73ffffffffffffffffffffffffffffffffffffffff851684846142b7565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216f00000000000000000000000000000000000000000000000000000000000060448201526064016102db565b73420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f4257600080fd5b505af1158015611f56573d6000803e3d6000fd5b505050505050565b327314e5d996f5b44ae4bd1a4a4e520e3cac02fadd3a8190036120db573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b60008060028451611fac9190615726565b9050806002850101519150600060208551611fc79190615739565b611fd2906020615726565b905060006002611fe28336615726565b611fec9190615726565b9050600060028361200161ffff881636615726565b61200b9190615726565b6120159190615726565b9050600061202d61202884843685615774565b612fdf565b9050612038816132d5565b6120d073ba12222222228d8ba445958a75a0704d566bf2c88a600081518110612063576120636155a5565b60200260200101518c60008151811061207e5761207e6155a5565b6020026020010151612090919061579e565b8d6000815181106120a3576120a36155a5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16612d739092919063ffffffff16565b50505050505061268d565b73ffffffffffffffffffffffffffffffffffffffff8116732959b884a72c33ca8a1f4e81b6edc8cfc48ae9c10361212c573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116732aa2282a92aa6734d777c9498ec1f175cb984f7d0361217d573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116732e947deb91aba1ca1f99d8686c0f82b76d66a94f036121ce573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116735aa566bc8c02394c89dded04d17a0d59737f91990361221f573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116736448644c2c1f25b35f603ee70556ff78d9a1a36603612270573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116736521b6f22f68e88ee9264939efc7c12f63283081036122c1573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116737188f05f30b78e8bdef709b8039affe2b91dd88e03612312573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673831865bef6a295d1f3c18adddc1536d6d831a6fa03612363573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116738a8c56aad8057c4a25c12c7a9c992bb9ab944ca5036123b4573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff81167390224f1bcd0131df8f401fa038d35cfdd10b552803612405573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116739960429f7328210e0d95887892061f4642b9ea4c03612456573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116739d79fe2e1e962a4adaf9d68a995c7f4f6fe4af1f036124a7573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673b3e999096cc31a957ad8b6c593023f8cd170870d036124f8573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673c640d60dd3e6537ad9306355ece998e93270027903612549573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673dac7e7d40ccb0e6bf36b5fb7482099761104012b0361259a573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673dbf61c5cc0a8df06bf3964652f738e6656e310d6036125eb573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673dcc5ca76665e691ee1c21d54e66955a099fdb21f0361263c573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673e9ace8cbe6b9843310b8107cce456626492fd0e803610a28573373ba12222222228d8ba445958a75a0704d566bf2c814611f9b57600080fd5b5050505050565b327314e5d996f5b44ae4bd1a4a4e520e3cac02fadd3a8190036128635760008513806126c05750600084135b6126c957600080fd5b60006126fc8460408051606080820183528335811c82526014840135901c602082015260289092013560e81c9082015290565b905060006127178260000151836020015184604001516143e1565b905060006127397333128a8fc17869897dce68ed026d694621f6fdfd8361449d565b90503373ffffffffffffffffffffffffffffffffffffffff8216036127745761276c888885600001518660200151614547565b50505061268d565b61277d82614731565b90503373ffffffffffffffffffffffffffffffffffffffff8216036127b05761276c888885600001518660200151614547565b6127ce73c35dadb65012ec5796536bd9864ed8773abc74c48361449d565b90503373ffffffffffffffffffffffffffffffffffffffff82161461284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f217633706f6f6c0000000000000000000000000000000000000000000000000060448201526064016102db565b61276c888885600001518660200151614547565b73ffffffffffffffffffffffffffffffffffffffff8116732959b884a72c33ca8a1f4e81b6edc8cfc48ae9c1036128ab5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116732aa2282a92aa6734d777c9498ec1f175cb984f7d036128f35760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116732e947deb91aba1ca1f99d8686c0f82b76d66a94f0361293b5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116735aa566bc8c02394c89dded04d17a0d59737f9199036129835760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116736448644c2c1f25b35f603ee70556ff78d9a1a366036129cb5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116736521b6f22f68e88ee9264939efc7c12f6328308103612a135760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116737188f05f30b78e8bdef709b8039affe2b91dd88e03612a5b5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673831865bef6a295d1f3c18adddc1536d6d831a6fa03612aa35760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116738a8c56aad8057c4a25c12c7a9c992bb9ab944ca503612aeb5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff81167390224f1bcd0131df8f401fa038d35cfdd10b552803612b335760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116739960429f7328210e0d95887892061f4642b9ea4c03612b7b5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116739d79fe2e1e962a4adaf9d68a995c7f4f6fe4af1f03612bc35760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673b3e999096cc31a957ad8b6c593023f8cd170870d03612c0b5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673c640d60dd3e6537ad9306355ece998e93270027903612c535760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673dac7e7d40ccb0e6bf36b5fb7482099761104012b03612c9b5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673dbf61c5cc0a8df06bf3964652f738e6656e310d603612ce35760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673dcc5ca76665e691ee1c21d54e66955a099fdb21f03612d2b5760008513806126c05750600084136126c957600080fd5b73ffffffffffffffffffffffffffffffffffffffff811673e9ace8cbe6b9843310b8107cce456626492fd0e803610a285760008513806126c05750600084136126c957600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526103a59084906147ce565b6040805160608082018352918101829052833590911c8152601483013560901c6020820152612e328260228186615774565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050604082015292915050565b6000612e7d84846148dd565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16826020015184604051602401612eb39291906157b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f613272bf0000000000000000000000000000000000000000000000000000000017905251612f3491906157e9565b600060405180830381855af49150503d8060008114612f6f576040519150601f19603f3d011682016040523d82523d6000602084013e612f74565b606091505b505090508061268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216200000000000000000000000000000000000000000000000000000000000060448201526064016102db565b613058604051806101000160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600015158152602001606081525090565b8235609090811c8252600e840135811c6020830152601c840135901c6040820152602a830135606090811c81830152603e840135901c6080820152605283013560f890811c60a08301819052605385013590911c60c083015267ffffffffffffffff8111156130c9576130c9615241565b60405190808252806020026020018201604052801561311657816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816130e75790505b5060e0820152605460005b8260a0015160ff168110156132cd57601c82019185018035606090811c916014013560c01c9081158015613160576040519150602082016040526131cc565b6040519150601f83168015602002818401018481016020898415602002858f010101035b8183101561319d57602081843760209283019201613184565b5050848452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50828660e0015185815181106131e4576131e46155a5565b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818660e001518581518110613239576132396155a5565b60200260200101516020019067ffffffffffffffff16908167ffffffffffffffff1681525050808660e001518581518110613276576132766155a5565b6020026020010151604001819052508560e00151848151811061329b5761329b6155a5565b60200260200101516020015167ffffffffffffffff16856132bc919061579e565b945050600190920191506131219050565b505092915050565b60c081015115156001036134be5760005b8160a0015160ff168110156134bc5760008260e00151828151811061330d5761330d6155a5565b60200260200101519050600080826000015173ffffffffffffffffffffffffffffffffffffffff16836040015160405160240161334a9190615227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc64b3bb500000000000000000000000000000000000000000000000000000000179052516133cb91906157e9565b600060405180830381855af49150503d8060008114613406576040519150601f19603f3d011682016040523d82523d6000602084013e61340b565b606091505b509150915081801561341e575060008151115b1561343d576020810151801561343757505050506134b4565b5061268d565b61344684614950565b6040516020016134569190615805565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526102db91600401615227565b6001016132e6565b505b60608101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015613530573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613554919061584a565b90506000819050836080015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff161461362d5760808401516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa158015613605573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613629919061584a565b9150505b835160005b8560a0015160ff168110156137ec5760008660e001518281518110613659576136596155a5565b602002602001015190506001836136709190615726565b9250600080826000015173ffffffffffffffffffffffffffffffffffffffff168360400151866040516024016136a7929190615863565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167faf2b4aba000000000000000000000000000000000000000000000000000000001790525161372891906157e9565b600060405180830381855af49150503d8060008114613763576040519150601f19603f3d011682016040523d82523d6000602084013e613768565b606091505b509150915081801561377b575060008151115b61378485614950565b6040516020016137949190615885565b604051602081830303815290604052906137db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102db9190615227565b506020015193505050600101613632565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa15801561385a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387e919061584a565b90506000819050866080015173ffffffffffffffffffffffffffffffffffffffff16876060015173ffffffffffffffffffffffffffffffffffffffff16146139575760808701516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa15801561392f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613953919061584a565b9150505b8651613963908361579e565b8511156139cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f216962000000000000000000000000000000000000000000000000000000000060448201526064016102db565b604087015115613a4e5760408701516139e5908561579e565b811015613a4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f216f62000000000000000000000000000000000000000000000000000000000060448201526064016102db565b602087015115613b2a5760208701514790811015613af75773420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d828a60200151613aa69190615726565b6040518263ffffffff1660e01b8152600401613ac491815260200190565b600060405180830381600087803b158015613ade57600080fd5b505af1158015613af2573d6000803e3d6000fd5b505050505b6020880151604051419180156108fc02916000818181858888f19350505050158015613b27573d6000803e3d6000fd5b50505b50505050505050565b60603373ffffffffffffffffffffffffffffffffffffffff841614613b5757600080fd5b366000868187613b68602082615726565b92613b7593929190615774565b6040805160c081018252833560f81c81526001840135606090811c602083018190526015860135821c838501526029860135821c91830191909152603d85013560e890811c60808401529285013590921c60a08201529294509092508888017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001359190613c04573060208201525b80516401000276a490613c28575073fffd8963efd1fc6a506488495d951d5263988d255b60008873ffffffffffffffffffffffffffffffffffffffff1663f3cd914c6040518060a00160405280866040015173ffffffffffffffffffffffffffffffffffffffff168152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015162ffffff1681526020018660a0015160020b8152602001600073ffffffffffffffffffffffffffffffffffffffff16815250604051806060016040528087600001511515815260200188613ce9906158bd565b81526020018673ffffffffffffffffffffffffffffffffffffffff168152506040518363ffffffff1660e01b8152600401613d259291906158f5565b6020604051808303816000875af1158015613d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d68919061584a565b905060008060008560000151613d915785606001518660400151613d8c8660801d90565b613da5565b85604001518660600151613da586600f0b90565b9194509250905073ffffffffffffffffffffffffffffffffffffffff831615613ee2576040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528d169063a584119490602401600060405180830381600087803b158015613e3157600080fd5b505af1158015613e45573d6000803e3d6000fd5b50613e6b9250505073ffffffffffffffffffffffffffffffffffffffff84168d89612d73565b8b73ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613edc919061584a565b50613fd6565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff8c1690632e1a7d4d90602401600060405180830381600087803b158015613f4a57600080fd5b505af1158015613f5e573d6000803e3d6000fd5b505050508b73ffffffffffffffffffffffffffffffffffffffff166311da60b4886040518263ffffffff1660e01b815260040160206040518083038185885af1158015613faf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fd4919061584a565b505b73ffffffffffffffffffffffffffffffffffffffff82161561409e5760208601516040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291821660248201526fffffffffffffffffffffffffffffffff83166044820152908d1690630b0d9c0990606401600060405180830381600087803b15801561408157600080fd5b505af1158015614095573d6000803e3d6000fd5b50505050614262565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523060248301526fffffffffffffffffffffffffffffffff831660448301528d1690630b0d9c0990606401600060405180830381600087803b15801561412557600080fd5b505af1158015614139573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826fffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016000604051808303818588803b15801561419757600080fd5b505af11580156141ab573d6000803e3d6000fd5b5050505060208701516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526fffffffffffffffffffffffffffffffff84166024820152908d16915063a9059cbb906044016020604051808303816000875af115801561423c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061426091906159c1565b505b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b16602082015260300160405160208183030381529060405299505050505050505050505b949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526143438482614b93565b610eef576040805173ffffffffffffffffffffffffffffffffffffffff8516602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526143d79085906147ce565b610eef84826147ce565b6000828473ffffffffffffffffffffffffffffffffffffffff808316908216101561440c5750849050835b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161061444457600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff808516602083015283169181019190915262ffffff8516606082015260800160405160208183030381529060405280519060200120925050509392505050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166021820152603581018290527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460558201526000906075016040516020818303038152906040528051906020012060001c90505b92915050565b60008060008613614587578373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610856145b8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610865b915091508115611f565760408051336024820152604480820184905282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529051600091829173ffffffffffffffffffffffffffffffffffffffff881691614655916157e9565b6000604051808303816000865af19150503d8060008114614692576040519150601f19603f3d011682016040523d82523d6000602084013e614697565b606091505b50915091508180156146c15750805115806146c15750808060200190518101906146c191906159c1565b614727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f217400000000000000000000000000000000000000000000000000000000000060448201526064016102db565b5050505050505050565b604051735e7bb104d84c7cb9b682aac2f3d509f5f406809a60388201526f5af43d82803e903d91602b57fd5bf3ff602482015273ec8e5342b19977b4ef8892e02d8daecfa13158316014820152733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c8201206078820152605560439091012060009073ffffffffffffffffffffffffffffffffffffffff16614541565b6000614830826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614c559092919063ffffffff16565b905080516000148061485157508080602001905181019061485191906159c1565b6103a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102db565b604080518082019091526060602082018190528335901c815261494560146149058185615726565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929493925050614c649050565b602082015292915050565b60608160000361499357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b816001036149d457505060408051808201909152600181527f3100000000000000000000000000000000000000000000000000000000000000602082015290565b81600203614a1557505060408051808201909152600181527f3200000000000000000000000000000000000000000000000000000000000000602082015290565b81600303614a5657505060408051808201909152600181527f3300000000000000000000000000000000000000000000000000000000000000602082015290565b81600403614a9757505060408051808201909152600181527f3400000000000000000000000000000000000000000000000000000000000000602082015290565b81600503614ad857505060408051808201909152600181527f3500000000000000000000000000000000000000000000000000000000000000602082015290565b81600603614b1957505060408051808201909152600181527f3600000000000000000000000000000000000000000000000000000000000000602082015290565b81600703614b5a57505060408051808201909152600181527f3700000000000000000000000000000000000000000000000000000000000000602082015290565b505060408051808201909152600281527f3e37000000000000000000000000000000000000000000000000000000000000602082015290565b60008060008473ffffffffffffffffffffffffffffffffffffffff1684604051614bbd91906157e9565b6000604051808303816000865af19150503d8060008114614bfa576040519150601f19603f3d011682016040523d82523d6000602084013e614bff565b606091505b5091509150818015614c29575080511580614c29575080806020019051810190614c2991906159c1565b8015614c4c575060008573ffffffffffffffffffffffffffffffffffffffff163b115b95945050505050565b60606142af8484600085614e4d565b606081614c7281601f61579e565b1015614cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016102db565b82614ce5838261579e565b1015614d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016102db565b614d57828461579e565b84511015614dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016102db565b606082158015614ddc57604051915060208201604052614e44565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614e15578051835260209283019201614dfd565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606082471015614edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102db565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051614f0891906157e9565b60006040518083038185875af1925050503d8060008114614f45576040519150601f19603f3d011682016040523d82523d6000602084013e614f4a565b606091505b5091509150614f5b87838387614f66565b979650505050505050565b60608315614ffc578251600003614ff55773ffffffffffffffffffffffffffffffffffffffff85163b614ff5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102db565b50816142af565b6142af83838151156150115781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102db9190615227565b73ffffffffffffffffffffffffffffffffffffffff8116811461506757600080fd5b50565b6000806040838503121561507d57600080fd5b823561508881615045565b946020939093013593505050565b6000806000606084860312156150ab57600080fd5b83356150b681615045565b925060208401356150c681615045565b929592945050506040919091013590565b60008083601f8401126150e957600080fd5b50813567ffffffffffffffff81111561510157600080fd5b60208301915083602082850101111561511957600080fd5b9250929050565b6000806020838503121561513357600080fd5b823567ffffffffffffffff81111561514a57600080fd5b615156858286016150d7565b90969095509350505050565b60008060006040848603121561517757600080fd5b833567ffffffffffffffff81111561518e57600080fd5b61519a868287016150d7565b90945092505060208401356151ae81615045565b809150509250925092565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061523a60208301846151dd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156152b7576152b7615241565b604052919050565b600067ffffffffffffffff8211156152d9576152d9615241565b5060051b60200190565b600082601f8301126152f457600080fd5b8135615307615302826152bf565b615270565b8082825260208201915060208360051b86010192508583111561532957600080fd5b602085015b8381101561534f57803561534181615045565b83526020928301920161532e565b5095945050505050565b6000806040838503121561536c57600080fd5b82359150602083013567ffffffffffffffff81111561538a57600080fd5b615396858286016152e3565b9150509250929050565b6000602082840312156153b257600080fd5b5035919050565b600082601f8301126153ca57600080fd5b81356153d8615302826152bf565b8082825260208201915060208360051b8601019250858311156153fa57600080fd5b602085015b8381101561534f5780358352602092830192016153ff565b6000806000806080858703121561542d57600080fd5b843567ffffffffffffffff81111561544457600080fd5b615450878288016152e3565b945050602085013567ffffffffffffffff81111561546d57600080fd5b615479878288016153b9565b935050604085013567ffffffffffffffff81111561549657600080fd5b6154a2878288016153b9565b925050606085013567ffffffffffffffff8111156154bf57600080fd5b8501601f810187136154d057600080fd5b803567ffffffffffffffff8111156154ea576154ea615241565b61551b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615270565b81815288602083850101111561553057600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806000806060858703121561556857600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561558d57600080fd5b615599878288016150d7565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600083516155e68184602088016151b9565b60f09390931b7fffff000000000000000000000000000000000000000000000000000000000000169190920190815260020192915050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060208801925060005b8181101561568d57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101615659565b5050838103604085015285518082526020918201925090860190600090815b818110156156ca5783518552602094850194909301926001016156ac565b505050508281036060840152614f5b81856151dd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417614541576145416156e0565b81810381811115614541576145416156e0565b60008261576f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000808585111561578457600080fd5b8386111561579157600080fd5b5050820193919092039150565b80820180821115614541576145416156e0565b6040815260006157c460408301856151dd565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b600082516157fb8184602087016151b9565b9190910192915050565b7f216100000000000000000000000000000000000000000000000000000000000081526000825161583d8160028501602087016151b9565b9190910160020192915050565b60006020828403121561585c57600080fd5b5051919050565b60408152600061587660408301856151dd565b90508260208301529392505050565b7f217300000000000000000000000000000000000000000000000000000000000081526000825161583d8160028501602087016151b9565b60007f800000000000000000000000000000000000000000000000000000000000000082036158ee576158ee6156e0565b5060000390565b73ffffffffffffffffffffffffffffffffffffffff835116815273ffffffffffffffffffffffffffffffffffffffff602084015116602082015262ffffff6040840151166040820152606083015160020b606082015273ffffffffffffffffffffffffffffffffffffffff60808401511660808201526159a460a08201838051151582526020808201519083015260409081015173ffffffffffffffffffffffffffffffffffffffff16910152565b61012061010082015260006142af61012083016000815260200190565b6000602082840312156159d357600080fd5b8151801515811461523a57600080fdfea26469706673582212208d83adc1e2eaeecd5eec63e9abf1380c97552d952bbfca9c62423041c52ecce164736f6c634300081c0033