<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>34342</bug_id>
          
          <creation_ts>2010-01-29 13:01:51 -0800</creation_ts>
          <short_desc>A first step towards the Indexed Database API</short_desc>
          <delta_ts>2010-01-29 16:19:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andreip</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185939</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-01-29 13:01:51 -0800</bug_when>
    <thetext>A first step towards the Indexed Database API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185940</commentid>
    <comment_count>1</comment_count>
      <attachid>47730</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-01-29 13:06:12 -0800</bug_when>
    <thetext>Created attachment 47730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185950</commentid>
    <comment_count>2</comment_count>
      <attachid>47730</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-29 13:43:02 -0800</bug_when>
    <thetext>Comment on attachment 47730
Patch

One comment:

&gt; +    if (args.Length() &lt; 2)
&gt; +        return throwError(V8Proxy::TypeError);

Should we match http://trac.webkit.org/browser/trunk/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp#L452 and throw a SyntaxError with a similar error message?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185959</commentid>
    <comment_count>3</comment_count>
      <attachid>47730</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-29 14:17:56 -0800</bug_when>
    <thetext>Comment on attachment 47730
Patch

What is the difference between IDBDatabaseError and SQLError? They look really, really similar. Any way we could reuse one in place of another? Ditto with IDatabaseException.

The SYNTAX_ERROR change Nate suggested is good too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185962</commentid>
    <comment_count>4</comment_count>
      <attachid>47730</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-29 14:22:44 -0800</bug_when>
    <thetext>Comment on attachment 47730
Patch

I think it shouldn&apos;t stop the patch from landing though. r=me after Nate&apos;s rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185963</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-01-29 14:25:26 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 47730 [details])
&gt; I think it shouldn&apos;t stop the patch from landing though. r=me after Nate&apos;s
&gt; rename.

Rename done.  Would rather combine the 2 IDLs only if the specs themselves do (maybe a common interface could be specced in the HTML spec?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185996</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-01-29 16:19:23 -0800</bug_when>
    <thetext>Committed r54085: &lt;http://trac.webkit.org/changeset/54085&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47730</attachid>
            <date>2010-01-29 13:06:12 -0800</date>
            <delta_ts>2010-01-29 14:22:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-34342-20100129130611.patch</filename>
            <type>text/plain</type>
            <size>53529</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDU0MDc1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDEt
MjkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBmaXJzdCBzdGVwIHRvd2FyZHMgdGhl
IEluZGV4ZWQgRGF0YWJhc2UgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDM0MgorCisgICAgICAgIEFkZCBJbmRleGVkIERhdGFiYXNlIEFQSQor
CisgICAgICAgICogY29uZmlndXJlLmFjOgorCiAyMDEwLTAxLTI3ICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IGNvbmZpZ3VyZS5hYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj
b25maWd1cmUuYWMJKHJldmlzaW9uIDUzOTY1KQorKysgY29uZmlndXJlLmFjCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzEsNiArMzMxLDE0IEBAIEFDX0FSR19FTkFCTEUoZG9tX3N0b3JhZ2UsCiAgICAg
ICAgICAgICAgIFtdLFtlbmFibGVfZG9tX3N0b3JhZ2U9InllcyJdKQogQUNfTVNHX1JFU1VMVChb
JGVuYWJsZV9kb21fc3RvcmFnZV0pCiAKKyMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgdGhlIGlu
ZGV4ZWQgZGF0YWJhc2UgQVBJCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIHRo
ZSBpbmRleGVkIGRhdGFiYXNlIEFQSV0pCitBQ19BUkdfRU5BQkxFKGluZGV4ZWRfZGF0YWJhc2Us
CisgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1pbmRleGVkZGJdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIHRoZSBpbmRleGVkIGRhdGFiYXNlIEFQ
SSBbZGVmYXVsdD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2VuYWJsZV9pbmRleGVkX2RhdGFi
YXNlPSJubyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9pbmRleGVkX2RhdGFiYXNlXSkKKwog
IyBjaGVjayB3aGV0aGVyIHRvIGJ1aWxkIHdpdGggZGF0YWJhc2Ugc3VwcG9ydAogQUNfTVNHX0NI
RUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBkYXRhYmFzZSBzdG9y
YWdlIHN1cHBvcnRdKQogQUNfQVJHX0VOQUJMRShkYXRhYmFzZSwKQEAgLTc1MSw2ICs3NTksNyBA
QCBBTV9DT05ESVRJT05BTChbRU5BQkxFX0RBVEFCQVNFXSxbdGVzdCAiCiBBTV9DT05ESVRJT05B
TChbRU5BQkxFX0RBVEFMSVNUXSxbdGVzdCAiJGVuYWJsZV9kYXRhbGlzdCIgPSAieWVzIl0pCiBB
TV9DT05ESVRJT05BTChbRU5BQkxFX0VWRU5UU09VUkNFXSxbdGVzdCAiJGVuYWJsZV9ldmVudHNv
dXJjZSIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX0lDT05EQVRBQkFTRV0sW3Rl
c3QgIiRlbmFibGVfaWNvbl9kYXRhYmFzZSIgPSAieWVzIl0pCitBTV9DT05ESVRJT05BTChbRU5B
QkxFX0lOREVYRURfREFUQUJBU0VdLFt0ZXN0ICIkZW5hYmxlX2luZGV4ZWRfZGF0YWJhc2UiID0g
InllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9YSFRNTE1QXSxbdGVzdCAiJGVuYWJsZV94
aHRtbG1wIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfWFBBVEhdLFt0ZXN0ICIk
ZW5hYmxlX3hwYXRoIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfWFNMVF0sW3Rl
c3QgIiRlbmFibGVfeHNsdCIgPSAieWVzIl0pCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNTQwNzUpCisrKyBXZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDEwLTAxLTI5ICBK
ZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgZmlyc3Qgc3RlcCB0b3dhcmRzIHRoZSBJbmRl
eGVkIERhdGFiYXNlIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQzNDIKKworICAgICAgICBGbGVzaCBvdXQgdGhlIGZpcnN0IHBhcnQgb2YgSW5k
ZXhlZCBEYXRhYmFzZSBBUEkuCisgICAgICAgIEN1cnJlbnRseSBvbmx5IGNvbXBpbGVzIHdpdGgg
djggKyBjaHJvbWl1bSBmb3Igbm93LgorICAgICAgICBDb21wbGV0ZWx5IG5vbi1mdW5jdGlvbmFs
LCBidXQgaXQgc2VlbXMgYmVzdCB0byBkbworICAgICAgICB0aGlzIGluIGNodW5rcy4KKworICAg
ICAgICBObyB0ZXN0cyBiZWNhdXNlIG5vdGhpbmcgd29ya3MgeWV0LgorCisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmg6CisgICAgICAgICogYmluZGlu
Z3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvdjgv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0SW5kZXhlZERhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjppbmRleGVkRGF0YWJhc2VFbmFibGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpJbmRleGVkREJFbmFibGVkKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhJREJSZXF1ZXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWOElEQlJlcXVlc3Q6OnJlc3VsdEFjY2Vzc29yR2V0dGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmRleGVkRGF0YWJhc2VSZXF1ZXN0Q3VzdG9tLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6Om9w
ZW5DYWxsYmFjayk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdl
L0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmluZGV4ZWREQik6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5p
ZGw6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUVycm9yLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlRXJyb3I6On5JREJEYXRhYmFzZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlRXJyb3I6OmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VF
cnJvcjo6c2V0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yOjptZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I6OnNldE1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcjo6SURCRGF0YWJhc2VFcnJvcik6Cisg
ICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUVycm9yLmlkbDogQWRkZWQuCisgICAgICAgICog
c3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlRXhjZXB0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VFeGNlcHRpb246On5JREJEYXRhYmFzZUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6c2V0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6bWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6c2V0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SURCRGF0YWJhc2VFeGNlcHRpb24pOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VFeGNl
cHRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6fklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZXZlbnRUYXJn
ZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6dG9JREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRlcmVmRXZl
bnRUYXJnZXQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5pZGw6IEFkZGVkLgorICAg
ICAgICAqIHN0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0Ojp+SW5kZXhlZERh
dGFiYXNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0
OjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6cmVxdWVzdCk6CisgICAg
ICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmlkbDogQWRkZWQuCisKIDIwMTAt
MDEtMjkgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPa2F5
ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTM5NjUpCisrKyBXZWJDb3JlL1dl
YkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSwxMCBAQAogICAgICAgICAg
ICAgJ3BsdWdpbnMvUGx1Z2luLmlkbCcsCiAgICAgICAgICAgICAncGx1Z2lucy9QbHVnaW5BcnJh
eS5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2UuaWRsJywKKyAgICAgICAgICAg
ICdzdG9yYWdlL0lEQkRhdGFiYXNlRXJyb3IuaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lE
QkRhdGFiYXNlRXhjZXB0aW9uLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0
LmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmlkbCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxFcnJvci5pZGwnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvU1FMUmVzdWx0U2V0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxSZXN1bHRTZXRS
b3dMaXN0LmlkbCcsCkBAIC03MTgsNiArNzIyLDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCcsCisg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCUmVxdWVzdEN1c3RvbS5jcHAnLAor
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluZGV4ZWREYXRhYmFzZVJlcXVlc3RD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNj
cmlwdEhvc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAnLApAQCAtMzE4Myw2ICszMTg5LDEyIEBACiAg
ICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdz
dG9yYWdlL0RhdGFiYXNlVHJhY2tlci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNl
VHJhY2tlckNsaWVudC5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlRXJyb3Iu
aCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oJywKKyAgICAg
ICAgICAgICdzdG9yYWdlL0lEQlJlcXVlc3QuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lE
QlJlcXVlc3QuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0
LmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5jcHAnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0xvY2Fs
U3RvcmFnZVRocmVhZC5jcHAnLApJbmRleDogV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA1Mzk2NSkKKysrIFdlYkNvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYg
KzUxLDcgQEAgRU5BQkxFX0VWRU5UU09VUkNFID0gRU5BQkxFX0VWRU5UU09VUkNFOwogRU5BQkxF
X0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9H
RU9MT0NBVElPTjsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOwor
RU5BQkxFX0lOREVYRURfREFUQUJBU0UgPSBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRTsKIEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CiBFTkFC
TEVfTUFUSE1MID0gOwogRU5BQkxFX05PVElGSUNBVElPTlMgPSA7CkBAIC03MSw0ICs3Miw0IEBA
IEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxF
X1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FO
VkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVO
QUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAk
KEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcp
ICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVf
U1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19G
T1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hI
VE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJM
RV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQo
RU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdf
QU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19C
SU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Qp
ICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJM
RV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDUzOTY1KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMzY5LDYgKzM2
OSw3IEBAIHN1YiBHZXRJbnRlcm5hbEZpZWxkcwogICAgIHJldHVybiAoImFic3RyYWN0V29ya2Vy
Q2FjaGVJbmRleCIsICJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIlNoYXJlZFdvcmtlciI7CiAg
ICAgcmV0dXJuICgiYWJzdHJhY3RXb3JrZXJDYWNoZUluZGV4IiwgIndvcmtlckNvbnRleHRDYWNo
ZUluZGV4IiwgImNhY2hlSW5kZXgiKSBpZiAkbmFtZSBlcSAiU2hhcmVkV29ya2VyQ29udGV4dCI7
CiAgICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJOb3RpZmljYXRpb24iOwor
ICAgIHJldHVybiAoImNhY2hlSW5kZXgiKSBpZiAkbmFtZSBlcSAiSURCUmVxdWVzdCI7CiAgICAg
cmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJTVkdFbGVtZW50SW5zdGFuY2UiOwog
ICAgIHJldHVybiAoImNvbnNvbGVJbmRleCIsICJoaXN0b3J5SW5kZXgiLCAibG9jYXRpb25iYXJJ
bmRleCIsICJtZW51YmFySW5kZXgiLCAibmF2aWdhdG9ySW5kZXgiLCAicGVyc29uYWxiYXJJbmRl
eCIsCiAgICAgICAgICJzY3JlZW5JbmRleCIsICJzY3JvbGxiYXJzSW5kZXgiLCAic2VsZWN0aW9u
SW5kZXgiLCAic3RhdHVzYmFySW5kZXgiLCAidG9vbGJhckluZGV4IiwgImxvY2F0aW9uSW5kZXgi
LApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAkocmV2aXNpb24g
NTM5NjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE5OCw2ICsxOTgsMTMgQEAKICNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgog
I2luY2x1ZGUgIlBvc2l0aW9uRXJyb3IuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5oIgorI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJJbmRleGVkRGF0
YWJhc2VSZXF1ZXN0LmgiCisjZW5kaWYgLy8gREFUQUJBU0UKKwogI2lmIEVOQUJMRShTVkcpCiAj
aW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBvaW50cy5oIgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCShy
ZXZpc2lvbiA1Mzk2NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJ
bk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw2ICsyNTcsMTMgQEAKICNpbmNsdWRlICJi
aW5kaW5ncy9WOFNRTFRyYW5zYWN0aW9uLmNwcCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisjaW5jbHVkZSAiYmluZGluZ3MvVjhJREJEYXRhYmFzZUVycm9yLmNwcCIK
KyNpbmNsdWRlICJiaW5kaW5ncy9WOElEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCIKKyNpbmNsdWRl
ICJiaW5kaW5ncy9WOElEQlJlcXVlc3QuY3BwIgorI2luY2x1ZGUgImJpbmRpbmdzL1Y4SW5kZXhl
ZERhdGFiYXNlUmVxdWVzdC5jcHAiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXT1JLRVJTKQogI2lu
Y2x1ZGUgImJpbmRpbmdzL1Y4QWJzdHJhY3RXb3JrZXIuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdz
L1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJldmlzaW9uIDUzOTY1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNSArMzgsNiBAQCBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzU2Vzc2lv
blN0CiBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzTm90aWZpY2F0aW9uc0VuYWJsZWQg
PSBmYWxzZTsKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZCA9IGZhbHNlOwogYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0dlb2xvY2F0
aW9uRW5hYmxlZCA9IGZhbHNlOworYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0luZGV4
ZWREYXRhYmFzZUVuYWJsZWQgPSBmYWxzZTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHJldmlz
aW9uIDUzOTY1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIHNldEdlb2xvY2F0aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0dlb2xvY2F0aW9u
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIGdlb2xvY2F0aW9uRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzR2VvbG9jYXRpb25FbmFibGVkOyB9CiAKKyAgICBzdGF0aWMgdm9pZCBz
ZXRJbmRleGVkRGF0YWJhc2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5kZXhlZERhdGFi
YXNlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIGluZGV4ZWREYXRhYmFz
ZUVuYWJsZWQoKSB7IHJldHVybiBpc0luZGV4ZWREYXRhYmFzZUVuYWJsZWQ7IH0KKwogcHJpdmF0
ZToKICAgICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
KCkgeyB9CkBAIC02MCw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNOb3Rp
ZmljYXRpb25zRW5hYmxlZDsKICAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkOwogICAgIHN0YXRpYyBib29sIGlzR2VvbG9jYXRpb25FbmFibGVkOworICAgIHN0YXRpYyBi
b29sIGlzSW5kZXhlZERhdGFiYXNlRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAkocmV2aXNpb24gNTM5NjUpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjcsNiArNDI3
LDEzIEBACiAjaW5jbHVkZSAiVjhTUUxUcmFuc2FjdGlvbi5oIgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNpbmNsdWRlICJWOElEQkRhdGFiYXNlRXJyb3IuaCIKKyNp
bmNsdWRlICJWOElEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiVjhJREJSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiVjhJbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgiCisjZW5kaWYKKwogI2lm
IEVOQUJMRShYUEFUSCkKICNpbmNsdWRlICJWOFhQYXRoUmVzdWx0LmgiCiAjaW5jbHVkZSAiVjhY
UGF0aEV4Y2VwdGlvbi5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHJldmlzaW9uIDUzOTY1
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
Myw2ICs0NTMsMTYgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAog
I2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikKICNlbmRpZgogCisjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisjZGVmaW5lIERPTV9PQkpFQ1RfSU5ERVhFRF9EQVRBQkFTRV9U
WVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihJREJEQVRBQkFTRUVS
Uk9SLCBJREJEYXRhYmFzZUVycm9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgVihJREJEQVRBQkFTRUVYQ0VQVElPTiwgSURCRGF0YWJhc2VFeGNlcHRpb24pICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgVihJREJSRVFVRVNULCBJREJSZXF1ZXN0KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihJTkRFWEVEREFUQUJBU0VS
RVFVRVNULCBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0KQorI2Vsc2UKKyNkZWZpbmUgRE9NX09CSkVD
VF9JTkRFWEVEX0RBVEFCQVNFX1RZUEVTKFYpCisjZW5kaWYKKwogI2lmIEVOQUJMRShXT1JLRVJT
KQogI2RlZmluZSBET01fT0JKRUNUX1dPUktFUlNfVFlQRVMoVikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIFYoRVJST1JFVkVOVCwgRXJyb3JFdmVudCkKQEAgLTUy
Myw2ICs1MzMsNyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAg
ICAgRE9NX09CSkVDVF9UWVBFU18yKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgRE9NX09CSkVDVF9EQVRBQkFTRV9UWVBFUyhWKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgRE9NX09CSkVDVF9TVE9SQUdF
X1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
RE9NX09CSkVDVF9JTkRFWEVEX0RBVEFCQVNFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgRE9NX09CSkVDVF9XT1JLRVJTX1RZUEVTKFYpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgRE9NX09CSkVDVF8zRF9DQU5WQVNf
VFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgRE9N
X09CSkVDVF9YUEFUSF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01X
aW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1Mzk2NSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMw
MSwxMyBAQCBib29sIFY4RE9NV2luZG93OjpPcGVuRGF0YWJhc2VFbmFibGVkKCkKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCitib29sIFY4RE9NV2luZG93OjpJbmRl
eGVkREJFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5k
ZXhlZERhdGFiYXNlRW5hYmxlZCgpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCiBib29sIFY4RE9NV2luZG93OjpMb2NhbFN0b3JhZ2VFbmFibGVkKCkKIHsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCUmVxdWVzdEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJSZXF1ZXN0Q3VzdG9tLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCUmVxdWVzdEN1
c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVjhJREJSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SURCUmVxdWVzdDo6cmVzdWx0QWNjZXNzb3JHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgSURCUmVxdWVzdCogcmVxdWVzdCA9IFY4SURCUmVxdWVzdDo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXN1bHQgPSByZXF1ZXN0
LT5yZXN1bHQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7
CisKKyAgICByZXR1cm4gcmVzdWx0LT5kZXNlcmlhbGl6ZSgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluZGV4ZWREYXRh
YmFzZVJlcXVlc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5kZXhlZERhdGFiYXNlUmVxdWVzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluZGV4ZWREYXRhYmFzZVJlcXVlc3RDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlY4SW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6Om9wZW5DYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIEluZGV4ZWREYXRhYmFzZVJlcXVl
c3QqIGltcCA9IFY4SW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihWOFByb3h5OjpUeXBlRXJyb3IpOworICAgIFY4UGFyYW1ldGVyPD4gbmFtZSA9IGFyZ3NbMF07
CisgICAgVjhQYXJhbWV0ZXI8PiBkZXNjcmlwdGlvbiA9IGFyZ3NbMV07CisgICAgYm9vbCBtb2Rp
ZnlEYXRhYmFzZSA9IHRydWU7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKQorICAgICAgICBt
b2RpZnlEYXRhYmFzZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOworCisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgaW1wLT5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uLCBtb2RpZnlEYXRh
YmFzZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwor
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gNTM5NjUpCisrKyBXZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgbWFjcm8odG91Y2hlbmQpIFwKICAgICBtYWNybyh0b3VjaGNhbmNlbCkg
XAogICAgIFwKKyAgICBtYWNybyhzdWNjZXNzKSBcCisgICAgXAogLy8gZW5kIG9mIERPTV9FVkVO
VF9OQU1FU19GT1JfRUFDSAogCiAgICAgY2xhc3MgRXZlbnROYW1lcyA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gNTM5NjUpCisrKyBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQzLDYgKzY0MywxMyBAQCBOb3Rp
ZmljYXRpb25DZW50ZXIqIERPTVdpbmRvdzo6d2Via2l0Tm90CiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorSW5kZXhlZERhdGFiYXNlUmVxdWVzdCogRE9NV2luZG93
OjppbmRleGVkREIoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIHZvaWQg
RE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBE
T01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTWVzc2FnZVBvcnRB
cnJheSBwb3J0czsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDUzOTY1KQorKysgV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAg
Y2xhc3MgSGlzdG9yeTsKKyAgICBjbGFzcyBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OwogICAgIGNs
YXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiAgICAgY2xhc3MgTG9jYXRpb247CiAgICAgY2xh
c3MgTWVkaWE7CkBAIC0yMTYsNiArMjE3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkgY29uc3Q7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgICAgICBJbmRleGVkRGF0YWJh
c2VSZXF1ZXN0KiBpbmRleGVkREIoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgICAgIHZvaWQgcG9z
dE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0
IE1lc3NhZ2VQb3J0QXJyYXkqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93
KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlz
IHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KICAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgTWVzc2FnZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBz
b3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA1Mzk2
NSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAs
NiArMTcwLDkgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtFbmFibGVkQXRSdW50aW1lXSBOb3RpZmljYXRpb25DZW50ZXIgd2Via2l0Tm90aWZpY2F0aW9u
czsKICNlbmRpZgorI2lmIGRlZmluZWQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICYmIEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxlZEF0
UnVudGltZV0gSW5kZXhlZERhdGFiYXNlUmVxdWVzdCBpbmRleGVkREI7CisjZW5kaWYKIAogI2lm
IGRlZmluZWQoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUykgJiYgRU5BQkxFX09SSUVOVEFUSU9O
X0VWRU5UUwogICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnRlcmZhY2Ugb3JpZW50YXRpb24gaW4g
ZGVncmVlcy4gU29tZSBleGFtcGxlcyBhcmU6CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUVy
cm9yLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgSURCRGF0YWJhc2VFcnJvcl9o
CisjZGVmaW5lIElEQkRhdGFiYXNlRXJyb3JfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJREJEYXRhYmFzZUVycm9yIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJh
c2VFcnJvcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFi
YXNlRXJyb3IoKSk7CisgICAgfQorICAgIH5JREJEYXRhYmFzZUVycm9yKCkgeyB9CisKKyAgICB1
bnNpZ25lZCBzaG9ydCBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CisgICAgdm9pZCBz
ZXRDb2RlKHVuc2lnbmVkIHNob3J0IHZhbHVlKSB7IG1fY29kZSA9IHZhbHVlOyB9CisgICAgU3Ry
aW5nIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KKyAgICB2b2lkIHNldE1l
c3NhZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX21lc3NhZ2UgPSB2YWx1ZTsgfQorCitwcml2
YXRlOgorICAgIElEQkRhdGFiYXNlRXJyb3IoKSB7IH0KKworICAgIHVuc2lnbmVkIHNob3J0IG1f
Y29kZTsKKyAgICBTdHJpbmcgbV9tZXNzYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKKworI2VuZGlmIC8vIElEQkRhdGFiYXNlRXJyb3JfaAorCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlRXJyb3IuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlRXJyb3IuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KK21v
ZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKKyAgICBdIElEQkRhdGFiYXNlRXJyb3IgeworICAgICAgICBhdHRyaWJ1
dGUgdW5zaWduZWQgc2hvcnQgY29kZTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBtZXNz
YWdlOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2Vw
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlv
bi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9u
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBJREJEYXRhYmFzZUV4Y2Vw
dGlvbl9oCisjZGVmaW5lIElEQkRhdGFiYXNlRXhjZXB0aW9uX2gKKworI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgSURCRGF0YWJhc2VFeGNlcHRpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxJREJEYXRhYmFzZUV4Y2VwdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlRXhjZXB0aW9uPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUV4Y2VwdGlvbigpKTsKKyAgICB9CisgICAgfklEQkRh
dGFiYXNlRXhjZXB0aW9uKCkgeyB9CisgICAgCisgICAgdW5zaWduZWQgc2hvcnQgY29kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHZvaWQgc2V0Q29kZSh1bnNpZ25lZCBzaG9ydCB2
YWx1ZSkgeyBtX2NvZGUgPSB2YWx1ZTsgfQorICAgIFN0cmluZyBtZXNzYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXNzYWdlOyB9CisgICAgdm9pZCBzZXRNZXNzYWdlKGNvbnN0IFN0cmluZyYgdmFs
dWUpIHsgbV9tZXNzYWdlID0gdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBJREJEYXRhYmFzZUV4
Y2VwdGlvbigpIHsgfQorCisgICAgdW5zaWduZWQgc2hvcnQgbV9jb2RlOworICAgIFN0cmluZyBt
X21lc3NhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5k
aWYgLy8gSURCRGF0YWJhc2VFeGNlcHRpb25faAorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VFeGNlcHRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUV4Y2VwdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VFeGNlcHRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KK21vZHVs
ZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKKyAgICBdIElEQkRhdGFiYXNlRXhjZXB0aW9uIHsKKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgVU5LTk9XTl9FUlIgPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBOT05fVFJBTlNJRU5UX0VSUiA9IDE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IE5PVF9GT1VORF9FUlIgPSAyOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT05TVFJB
SU5UX0VSUiA9IDM7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERBVEFfRVJSID0gNDsK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9UX0FMTE9XRURfRVJSID0gNTsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0VSSUFMX0VSUiA9IDExOworICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBSRUNPVkVSQUJMRV9FUlIgPSAyMTsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgVFJBTlNJRU5UX0VSUiA9IDMxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBUSU1FT1VUX0VSUiA9IDMyOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBERUFETE9D
S19FUlIgPSAzMzsKKyAgICAgICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGNvZGU7CisgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKKyAgICB9OworCit9CkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L0lEQlJlcXVlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KworI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJREJSZXF1ZXN0OjpJREJSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCwgdGhpcykKK3sKK30KKworSURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQorewor
fQorCit2b2lkIElEQlJlcXVlc3Q6OmFib3J0KCkKK3sKK30KKworRXZlbnRUYXJnZXREYXRhKiBJ
REJSZXF1ZXN0OjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAwOworfQorCitFdmVu
dFRhcmdldERhdGEqIElEQlJlcXVlc3Q6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAg
cmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKyNpZm5kZWYgSURCUmVxdWVzdF9oCisjZGVmaW5lIElEQlJlcXVlc3RfaAorCisjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCRGF0YWJhc2VFcnJvcjsKK2NsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgSURCUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PElEQlJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJSZXF1ZXN0KGNvbnRleHQpKTsKKyAgICB9CisgICAgfklEQlJlcXVlc3QoKTsK
KworICAgIHZvaWQgYWJvcnQoKTsKKyAgICB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisgICAgSURCRGF0YWJhc2VFcnJvciogZXJyb3Io
KSBjb25zdCB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CisgICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdC5nZXQoKTsgfQorCisgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdWNjZXNzKTsKKyAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCUmVx
dWVzdD46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPElEQlJlcXVlc3Q+OjpkZXJlZjsKKwor
ICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCBJREJSZXF1
ZXN0KiB0b0lEQlJlcXVlc3QoKSB7IHJldHVybiB0aGlzOyB9CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KTsKKworICAg
IC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVy
ZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsK
KyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisK
KyAgICB1bnNpZ25lZCBzaG9ydCBtX3JlYWR5U3RhdGU7CisgICAgUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+IG1fZXJyb3I7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9yZXN1
bHQ7CisKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gSURCUmVxdWVzdF9oCisK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworbW9kdWxlIHN0
b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9E
QVRBQkFTRSwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIElEQlJlcXVlc3QgeworICAgICAg
ICB2b2lkIGFib3J0KCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElOSVRJQUwgPSAw
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMT0FESU5HID0gMTsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgRE9ORSA9IDI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURC
RGF0YWJhc2VFcnJvciBlcnJvcjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21H
ZXR0ZXJdIGFueSByZXN1bHQ7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc3Vj
Y2VzczsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICB9Owor
Cit9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJJbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJJREJSZXF1ZXN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6SW5k
ZXhlZERhdGFiYXNlUmVxdWVzdCgpCit7Cit9CisKK0luZGV4ZWREYXRhYmFzZVJlcXVlc3Q6On5J
bmRleGVkRGF0YWJhc2VSZXF1ZXN0KCkKK3sKK30KKwordm9pZCBJbmRleGVkRGF0YWJhc2VSZXF1
ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
Ym9vbCBtb2RpZnlEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYgZXhjZXB0aW9uKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIEluZGV4ZWREYXRhYmFzZVJlcXVlc3Rf
aAorI2RlZmluZSBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0X2gKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJREJSZXF1ZXN0OworCitjbGFzcyBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0
IDogcHVibGljIFJlZkNvdW50ZWQ8SW5kZXhlZERhdGFiYXNlUmVxdWVzdD4geworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4ZWREYXRhYmFzZVJlcXVlc3Qo
KSk7CisgICAgfQorICAgIH5JbmRleGVkRGF0YWJhc2VSZXF1ZXN0KCk7CisKKyAgICBJREJSZXF1
ZXN0KiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LmdldCgpOyB9CisgICAgdm9p
ZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgYm9v
bCBtb2RpZnlEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIEluZGV4
ZWREYXRhYmFzZVJlcXVlc3QoKTsKKworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gbV9yZXF1
ZXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlmIC8v
IEluZGV4ZWREYXRhYmFzZVJlcXVlc3RfaAorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvSW5kZXhl
ZERhdGFiYXNlUmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0luZGV4
ZWREYXRhYmFzZVJlcXVlc3QuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0lu
ZGV4ZWREYXRhYmFzZVJlcXVlc3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KK21v
ZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKKyAgICBdIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QgeworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSURCUmVxdWVzdCByZXF1ZXN0OworICAgICAgICBbQ3VzdG9tXSB2
b2lkIG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyBkZXNjcmlwdGlvbiwgaW4g
b3B0aW9uYWwgYm9vbGVhbiBtb2RpZnlEYXRhYmFzZSkKKyAgICAgICAgICAgIHJhaXNlcyhJREJE
YXRhYmFzZUV4Y2VwdGlvbik7CisgICAgfTsKKworfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA1NDA3NSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMC0wMS0yOSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
IGZpcnN0IHN0ZXAgdG93YXJkcyB0aGUgSW5kZXhlZCBEYXRhYmFzZSBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzQyCisKKyAgICAgICAgQWRk
IHJ1bnRpbWUgZW5hYmxlIHN1cHBvcnQgZm9yIEluZGV4ZWQgRGF0YWJhc2UgQVBJLgorCisgICAg
ICAgICogZmVhdHVyZXMuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViUnVudGltZUZlYXR1cmVz
Lmg6CisgICAgICAgICogc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlSW5kZXhlZERhdGFiYXNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjppc0luZGV4ZWREYXRhYmFzZUVuYWJsZWQpOgor
CiAyMDEwLTAxLTI5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkocmV2aXNpb24gNTM5NjUpCisrKyBXZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICAgICAnRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVI9MCcsCiAgICAgICAgICdFTkFCTEVfSlNDX01VTFRJUExFX1RIUkVBRFM9MCcsCiAg
ICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAnLAorICAgICAgICAnRU5BQkxFX0lOREVYRURf
REFUQUJBU0U9MScsCiAgICAgICAgICdFTkFCTEVfTk9USUZJQ0FUSU9OUz0xJywKICAgICAgICAg
J0VOQUJMRV9PUEVOVFlQRV9TQU5JVElaRVI9MScsCiAgICAgICAgICdFTkFCTEVfT1JJRU5UQVRJ
T05fRVZFTlRTPTAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1lRmVh
dHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJ1bnRpbWVG
ZWF0dXJlcy5oCShyZXZpc2lvbiA1Mzk2NSkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
UnVudGltZUZlYXR1cmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDkgQEAgcHVibGlj
OgogICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgZW5hYmxlR2VvbG9jYXRpb24oYm9vbCk7CiAg
ICAgV0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBpc0dlb2xvY2F0aW9uRW5hYmxlZCgpOwogCisgICAg
V0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBlbmFibGVJbmRleGVkRGF0YWJhc2UoYm9vbCk7CisgICAg
V0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBpc0luZGV4ZWREYXRhYmFzZUVuYWJsZWQoKTsKKwogcHJp
dmF0ZToKICAgICBXZWJSdW50aW1lRmVhdHVyZXMoKTsKIH07CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCShyZXZpc2lvbiA1Mzk2NSkKKysrIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY4LDQgKzE2OCwyMCBAQCBib29sIFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNHZW9sb2NhdGlvbkVu
CiAjZW5kaWYKIH0KIAordm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUluZGV4ZWREYXRh
YmFzZShib29sIGVuYWJsZSkKK3sKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbmRleGVkRGF0YWJhc2VFbmFibGVkKGVuYWJsZSk7
CisjZW5kaWYKK30KKworYm9vbCBXZWJSdW50aW1lRmVhdHVyZXM6OmlzSW5kZXhlZERhdGFiYXNl
RW5hYmxlZCgpCit7CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgcmV0dXJuIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmluZGV4ZWREYXRhYmFzZUVuYWJsZWQoKTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTQwNzUpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMS0yOSAgSmVyZW15IE9ybG93ICA8am9ybG93
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIGZpcnN0IHN0ZXAgdG93YXJkcyB0aGUgSW5kZXhlZCBEYXRhYmFzZSBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzQyCisKKyAg
ICAgICAgQWRkIGluZGV4ZWQgZGF0YWJhc2UgQVBJLgorCisgICAgICAgICogU2NyaXB0cy9idWls
ZC13ZWJraXQ6CisKIDIwMTAtMDEtMjkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2Vu
bmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCklu
ZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNTM5NjUpCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCBteSAkbWFrZUFyZ3M7CiBteSAkc3RhcnRUaW1lID0gdGltZSgpOwogCiBteSAoJHRocmVlRENh
bnZhc1N1cHBvcnQsICR0aHJlZURSZW5kZXJpbmdTdXBwb3J0LCAkY2hhbm5lbE1lc3NhZ2luZ1N1
cHBvcnQsICRjbGllbnRCYXNlZEdlb2xvY2F0aW9uU3VwcG9ydCwgJGRhdGFiYXNlU3VwcG9ydCwg
JGRhdGFncmlkU3VwcG9ydCwgJGRhdGFsaXN0U3VwcG9ydCwKLSAgICAkZG9tU3RvcmFnZVN1cHBv
cnQsICRldmVudHNvdXJjZVN1cHBvcnQsICRmaWx0ZXJzU3VwcG9ydCwgJGdlb2xvY2F0aW9uU3Vw
cG9ydCwgJGljb25EYXRhYmFzZVN1cHBvcnQsCisgICAgJGRvbVN0b3JhZ2VTdXBwb3J0LCAkZXZl
bnRzb3VyY2VTdXBwb3J0LCAkZmlsdGVyc1N1cHBvcnQsICRnZW9sb2NhdGlvblN1cHBvcnQsICRp
Y29uRGF0YWJhc2VTdXBwb3J0LCAkaW5kZXhlZERhdGFiYXNlU3VwcG9ydCwKICAgICAkamF2YVNj
cmlwdERlYnVnZ2VyU3VwcG9ydCwgJG1hdGhtbFN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRp
b25TdXBwb3J0LCAkc2hhcmVkV29ya2Vyc1N1cHBvcnQsCiAgICAgJHN2Z1N1cHBvcnQsICRzdmdB
bmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NT
dXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAogICAgICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwg
JHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRzU3VwcG9ydCwgJHdtbFN1
cHBvcnQsICR3Y3NzU3VwcG9ydCwgJHhodG1sbXBTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCkBA
IC05Nyw2ICs5Nyw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAiaWNvbi1k
YXRhYmFzZSIsIGRlc2MgPT4gIlRvZ2dsZSBJY29uIGRhdGFiYXNlIHN1cHBvcnQiLAogICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfSUNPTkRBVEFCQVNFIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBc
JGljb25EYXRhYmFzZVN1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJpbmRleGVkLWRhdGFi
YXNlIiwgZGVzYyA9PiAiVG9nZ2xlIEluZGV4ZWQgRGF0YWJhc2UgQVBJIHN1cHBvcnQiLAorICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSIsIGRlZmF1bHQgPT4gMCwgdmFs
dWUgPT4gXCRpbmRleGVkRGF0YWJhc2VTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAiamF2
YXNjcmlwdC1kZWJ1Z2dlciIsIGRlc2MgPT4gIlRvZ2dsZSBKYXZhU2NyaXB0IERlYnVnZ2VyL1By
b2ZpbGVyIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUiIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0
IH0sCiAK
</data>
<flag name="review"
          id="30260"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="30268"
          type_id="3"
          status="-"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>