LyoKICogUnVzc2lhbiByZXNvdXJjZXMgZm9yIFdMREFQMzIKICoKICogQ29weXJpZ2h0IDIwMDUgRG1pdHJ5IFRpbW9zaGtvdgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1JVU1NJQU4sIFNVQkxBTkdfREVGQVVMVAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogICAgMCAi0/Hv5fUiCiAgICAxICLO+Ojh6uAg7u/l8OD26OgiCiAgICAyICLO+Ojh6uAg7/Du8u7q7uvgIgogICAgMyAiz/Dl4vv45e3uIO7j8ODt6Pfl7ejlIO/uIOLw5ezl7egiCiAgICA0ICLP8OXi+/jl7e4g7uPw4O3o9+Xt6OUg7+4g8ODn7OXw8yIKICAgIDUgItHw4OLt5e3o5SDt5eLl8O3uIgogICAgNiAi0fDg4u3l7ejlIOLl8O3uIgogICAgNyAizOXy7uQg4OLy7vDo5+D26Ogg7eUg7+7k5OXw5uji4OXy8f8iCiAgICA4ICLS8OXh8+Xy8f8g8fLw7uPg/yDg4vLu8Ojn4Pbo/yIKICAgIDkgItHx++vq4CAodjIpIgogICAgMTAgItHx++vq4CIKICAgIDExICLP8OXi+/jl7e4g7uPw4O3o9+Xt6OUg4OTs6O3o8fLw6PDu4uDt6P8iCiAgICAxMiAiyvDo8uj35fHq7uUg8ODx+Ojw5e3o5SDt5eTu8fLz7+3uIgogICAgMTMgItLw5eHz5fLx/yDq7u306OTl7fbo4Ov87e7x8vwiCiAgICAxNCAiIgogICAgMTUgIiIKICAgIDE2ICLN5fIg8uDq7uPuIODy8Ojh8/LgIgogICAgMTcgIs3l7u/w5eTl6+Xt7fvpIPLo7yIKICAgIDE4ICLN5e/u5PXu5P/55eUg8e7u8uLl8vHy4ujlIgogICAgMTkgIs3g8PP45e3o5SDu4/Dg7ej35e3o/yIKICAgIDIwICLA8vDo4fPyIOjr6CDn7eD35e3o5SDx8/nl8fLi8+XyIgogICAgMjEgIs3l4uXw7fvpIPHo7fLg6vHo8SIKICAgIDIyICIiCiAgICAyMyAiIgogICAgMjQgIiIKICAgIDI1ICIiCiAgICAyNiAiIgogICAgMjcgIiIKICAgIDI4ICIiCiAgICAyOSAiIgogICAgMzAgIiIKICAgIDMxICIiCiAgICAzMiAizeXyIPLg6u7j7iDu4frl6vLgIgogICAgMzMgIs/w7uHr5ezgIPEg7/Hl4uTu7ejs7uwiCiAgICAzNCAizeXi5fDt++kgRE4g8ejt8uDq8ejxIgogICAgMzUgIt3y7iDr6PHyIOTl8OXi4CIKICAgIDM2ICLP8O7h6+Xs4CDu4fDg+eXt6P8g7+4g7/Hl4uTu7ejs8yIKICAgIDM3ICIiCiAgICAzOCAiIgogICAgMzkgIiIKICAgIDQwICIiCiAgICA0MSAiIgogICAgNDIgIiIKICAgIDQzICIiCiAgICA0NCAiIgogICAgNDUgIiIKICAgIDQ2ICIiCiAgICA0NyAiIgogICAgNDggIs3l7+7k9e7k//ng/yDg4vLu8Ojn4Pbo/yIKICAgIDQ5ICLN5eLl8O3u5SDz5O7x8u7i5fDl7ejlIOvo9+3u8fLoIgogICAgNTAgIs3l5O7x8uDy7vft7iDv8ODiIgogICAgNTEgIsfg7f/y7iIKICAgIDUyICLN5eTu8fLz7+3uIgogICAgNTMgIs3lIObl6+Dl8iDi++/u6+3o8vwiCiAgICA1NCAizuHt4PDz5uXt7iDn4Pbo6uvo4uDt6OUiCiAgICA1NSAiIgogICAgNTYgIiIKICAgIDU3ICIiCiAgICA1OCAiIgogICAgNTkgIiIKICAgIDYwICLO8vHz8vHy4vPl8iDz7/Dg4uvl7ejlIPHu8PLo8O7i6u7pIgogICAgNjEgIs746OHq4CDk6ODv4Ofu7eAg6O3k5erx4CIKICAgIDYyICIiCiAgICA2MyAiIgogICAgNjQgIs3g8PP45e3o5SDv8ODi6Osg7eDo7OXt7uLg7ej/IgogICAgNjUgIs3g8PP45e3o5SDq6+Dx8eAg7uH65ery4CIKICAgIDY2ICLN5SDw4Ofw5fjl7e4g7eUg7eAg6+jx8uUg5OXw5eLgIgogICAgNjcgIs3lIPDg5/Dl+OXt7iDt4CBSRE4iCiAgICA2OCAi0+blIPHz+eXx8uLz5fIiCiAgICA2OSAizeXyIPDl5ujs7uIg6uvg8fHgIO7h+uXq8uAiCiAgICA3MCAi0OXn8+v88uDy+yDx6+j46u7sIOLl6+jq6CIKICAgIDcxICLC6+j/5fIg7eAg7eXx6u7r/OruIERTQSIKICAgIDcyICIiCiAgICA3MyAiIgogICAgNzQgIiIKICAgIDc1ICIiCiAgICA3NiAiIgogICAgNzcgIiIKICAgIDc4ICIiCiAgICA3OSAiIgogICAgODAgIsTw8+Pu6SIKICAgIDgxICLR5fDi5fAg7eXk7vHy8+/l7SIKICAgIDgyICLL7urg6/zt4P8g7vjo4ergIgogICAgODMgIs746OHq4CDq7uTo8O7i4O3o/yIKICAgIDg0ICLO+Ojh6uAg5OXq7uTo8O7i4O3o/yIKICAgIDg1ICLS4OnsLeDz8iIKICAgIDg2ICLN5ejn4uXx8u3g/yDg4vLu8Ojn4Pbo/yIKICAgIDg3ICLO+Ojh6uAg9Ojr/PLw4CIKICAgIDg4ICLO8uzl7eXt7iDv7uv85+7i4PLl6+XsIgogICAgODkgIs746OHq4CDv4PDg7OXy8OAiCiAgICA5MCAizeXyIO/g7P/y6CIKICAgIDkxICLN5eLu5+zu5u3uIO/u5Orr/vfo8vzx/yDqIExEQVAg8eXw4uXw8yIKICAgIDkyICLO7+Xw4Pbo/yDt5SDv7uTk5fDm6OLg5fLx/yD98u7pIOLl8PHo5ekg7/Du8u7q7uvgIExEQVAiCiAgICA5MyAi0+rg5+Dt7fvpIPPv8ODi6//++ejpIP3r5ezl7fIg7eUg7eDp5OXtIOIg8e7u4fnl7ejoIgogICAgOTQgItDl5/Pr/PLg8uAg7eXyIOIg8e7u4fnl7ejoIgogICAgOTUgIsX55SDl8fL8IPDl5/Pr/PLg8vsiCiAgICA5NiAix+D26Orr6OLg7ejlIO/w6CDu4fDg4e7y6uUg8fH76+7qIgogICAgOTcgIs/w5eTl6yD36PHr4CDv5fDl8fvr6ugg8fH76+7qIO/w5eL7+OXtIgp9Cg==