<?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>110398</bug_id>
          
          <creation_ts>2013-02-20 15:41:18 -0800</creation_ts>
          <short_desc>IndexedDB: Implement SharedBuffer version of put() / onSuccess()</short_desc>
          <delta_ts>2013-02-21 23:41:41 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>philn</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>837846</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-20 15:41:18 -0800</bug_when>
    <thetext>IndexedDB: Implement SharedBuffer version of put() / onSuccess()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837856</commentid>
    <comment_count>1</comment_count>
      <attachid>189396</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-20 15:46:07 -0800</bug_when>
    <thetext>Created attachment 189396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837858</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-20 15:46:36 -0800</bug_when>
    <thetext>jsbell/dgrogan: quick review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837861</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-20 15:49:07 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837925</commentid>
    <comment_count>4</comment_count>
      <attachid>189396</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-20 16:39:31 -0800</bug_when>
    <thetext>Comment on attachment 189396
Patch

Overall lgtm...


View in context: https://bugs.webkit.org/attachment.cgi?id=189396&amp;action=review

&gt; Source/WebCore/ChangeLog:15
&gt; +        (WebCore::IDBBackingStore::getRecord):

Add notes to these methods or delete them.

&gt; Source/WebCore/ChangeLog:25
&gt; +        (IDBBackingStore):

Especially delete these - they&apos;re not helpful.

&gt; Source/WebCore/ChangeLog:42
&gt; +        (WebCore):

Ditto.

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:1687
&gt; +    value.append(t, result.end() - t);

Although you&apos;re not introducing it in this patch, can you rename |t| to |valuePosition| to match the other implementation of this function, for readability?

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:286
&gt; +void IDBRequest::onSuccess(PassRefPtr&lt;IDBCursorBackendInterface&gt; backend, PassRefPtr&lt;IDBKey&gt; key, PassRefPtr&lt;IDBKey&gt; primaryKey, PassRefPtr&lt;SharedBuffer&gt; rawValue)

Rename rawValue to valueBuffer or just buffer?

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:384
&gt; +    return onSuccessInternal(deserializeIDBValue(requestState(), value));

Ugh... need to add ScriptValue::createString/Number/Undefined/Null, so we can get SSV out of the loop and simplify IDBAny. But that&apos;s wkbug.com/100292

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:397
&gt; +void IDBRequest::onSuccess(PassRefPtr&lt;IDBKey&gt; key, PassRefPtr&lt;IDBKey&gt; primaryKey, PassRefPtr&lt;SharedBuffer&gt; rawValue)

Rename rawValue to valueBuffer or just buffer?

&gt; Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp:70
&gt; +    virtual void onSuccessWithPrefetch(const Vector&lt;RefPtr&lt;IDBKey&gt; &gt;&amp;, const Vector&lt;RefPtr&lt;IDBKey&gt; &gt;&amp;, const Vector&lt;RefPtr&lt;SharedBuffer&gt; &gt;&amp;) { }

OVERRIDE here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838630</commentid>
    <comment_count>5</comment_count>
      <attachid>189565</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-21 11:29:43 -0800</bug_when>
    <thetext>Created attachment 189565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838632</commentid>
    <comment_count>6</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-21 11:30:54 -0800</bug_when>
    <thetext>tony@ - r? for WebCore/storage/indexeddb/ ?
fishd@ or abarth@ - r? for WebKit/chromium ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838653</commentid>
    <comment_count>7</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-21 11:54:26 -0800</bug_when>
    <thetext>(also note that this will likely fail the cr-* EWS bots until https://codereview.chromium.org/12326023/ lands on the chromium side)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838697</commentid>
    <comment_count>8</comment_count>
      <attachid>189565</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-21 12:26:03 -0800</bug_when>
    <thetext>Comment on attachment 189565
Patch

GTK build failures look real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838859</commentid>
    <comment_count>9</comment_count>
      <attachid>189605</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-21 14:46:19 -0800</bug_when>
    <thetext>Created attachment 189605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838953</commentid>
    <comment_count>10</comment_count>
      <attachid>189624</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-21 15:53:57 -0800</bug_when>
    <thetext>Created attachment 189624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839303</commentid>
    <comment_count>11</comment_count>
      <attachid>189624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 23:41:37 -0800</bug_when>
    <thetext>Comment on attachment 189624
Patch

Clearing flags on attachment: 189624

Committed r143694: &lt;http://trac.webkit.org/changeset/143694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839304</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 23:41:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189396</attachid>
            <date>2013-02-20 15:46:07 -0800</date>
            <delta_ts>2013-02-21 11:29:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110398-20130220154228.patch</filename>
            <type>text/plain</type>
            <size>44753</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNjZjZhNGVkYjkwMjBj
MmUyMDE2OGFkNzQyOGE5MTAzNGNlZjcxNC4uZWExNzRhMzMyYTkzNmUxZDllZGUyMzBkZDczY2E4
MDg4YmY3ZjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAyLTIwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElt
cGxlbWVudCBTaGFyZWRCdWZmZXIgdmVyc2lvbiBvZiBwdXQoKSAvIG9uU3VjY2VzcygpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzOTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGF2b2lkcyBh
bGwgdW5uZWNlc3NhcnkgZGF0YSBjb3BpZXMgd2l0aGluIHRoZSBjb250ZXh0IG9mCisgICAgICAg
IEluZGV4ZWREQiBwcm9wZXIsIGFuZCByZW1vdmVzIGFsbCByZWZlcmVuY2VzIHRvCisgICAgICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIHRoZSBJbmRleGVkREIgImJhY2tlbmQiLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6T2Jq
ZWN0U3RvcmVDdXJzb3JJbXBsOjp2YWx1ZSk6CisgICAgICAgIChPYmplY3RTdG9yZUN1cnNvcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6T2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVu
dFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmRleEtleUN1cnNvckltcGw6OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluZGV4Q3Vyc29ySW1wbDo6dmFsdWUpOgorICAgICAgICAoSW5kZXhD
dXJzb3JJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJl
bnRSb3cpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKEN1cnNvcik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChJREJDYWxsYmFja3Mp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JBZHZhbmNlT3Bl
cmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBs
OjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpw
ZXJmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1w
bC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnZhbHVlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6cGVyZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0
OjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAoSURCUmVxdWVzdCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorCiAyMDEzLTAyLTIwICBBbmRyZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBoaWdobGlnaHQgdW5kZWZpbmVkIHdvcmQgaW4g
SmF2YVNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4NjZiNmJmMzAyYWRmMDNh
ZTBhOGViYzNiZWM2YjMwMmIzYTc1ZmI4Li44ZjhlMDVhZTIzNWVhNDQ0NGFkNDY5OTcwMTI1NDg2
YTgwYTIwOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisy
MDEzLTAyLTIwICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBJbmRleGVkREI6IEltcGxlbWVudCBTaGFyZWRCdWZmZXIgdmVyc2lvbiBvZiBwdXQoKSAvIG9u
U3VjY2VzcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTAzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcm94eSBuZXcgU2hhcmVkQnVmZmVyIGNhbGxzIHRvIFdlYklEQkNhbGxiYWNrcyB0aHJvdWdo
CisgICAgICAgIHRvIHRoZSBuZXcgU2hhcmVkQnVmZmVyLWJhc2VkIElEQkNhbGxiYWNrcy4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJJREJDdXJzb3IuaDoKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJh
Y2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vzc1dpdGhQ
cmVmZXRjaCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgIChJ
REJDYWxsYmFja3NQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MpOgorICAg
ICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChXZWJJREJDYWxsYmFj
a3NJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaCk6CisgICAgICAg
ICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvSURC
UmVxdWVzdFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAyMDEzLTAyLTE5
ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTQzMzgyIGFuZCByMTQzNDAxLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNWI3Mzkw
NGE4MmYzOTcwMjA0YjRlOGI3NDFkYjliZjI0MGUyZTE0MS4uZTQ5OTI5MDM3YjVmZGEwN2VjOWUy
MGY2MjE2NTZmZDFiMjdkMjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC03ODEsNyArNzgxLDcgQEAgYm9vbCBJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5n
U3RvcmU6OmdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eSYga2V5LCBWZWN0b3I8dWludDhfdD4mIHJlY29yZCkKK2Jvb2wgSURCQmFja2luZ1N0b3JlOjpn
ZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwg
VmVjdG9yPGNoYXI+JiByZWNvcmQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6
OmdldFJlY29yZCIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9u
ID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0
cmFuc2FjdGlvbik7CkBAIC0xNDA3LDcgKzE0MDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ly8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgdmFsdWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gKm5ldyBW
ZWN0b3I8dWludDhfdD4oKTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IHZhbHVlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KICAgICB2
aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRSb3coKTsKIAogcHJpdmF0ZToKQEAgLTE0NjIsNyArMTQ2
Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgot
ICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudFZhbHVlOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1fY3VycmVudFZhbHVl
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VycmVudFZhbHVlOwogfTsKIAogYm9vbCBP
YmplY3RTdG9yZUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKQEAgLTE1MDQsOSArMTUwNCw5
IEBAIGJvb2wgT2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgLy8g
RklYTUU6IFRoaXMgcmUtZW5jb2RlcyB3aGF0IHdhcyBqdXN0IGRlY29kZWQ7IHRyeSBhbmQgb3B0
aW1pemUuCiAgICAgbV9yZWNvcmRJZGVudGlmaWVyLnJlc2V0KGVuY29kZUlEQktleSgqbV9jdXJy
ZW50S2V5KSwgdmVyc2lvbik7CiAKLSAgICBtX2N1cnJlbnRWYWx1ZS5jbGVhcigpOwotICAgIG1f
Y3VycmVudFZhbHVlLmFwcGVuZFJhbmdlKHZhbHVlUG9zaXRpb24sIHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpKSk7Ci0KKyAgICBWZWN0b3I8Y2hhcj4g
dmFsdWU7CisgICAgdmFsdWUuYXBwZW5kKHZhbHVlUG9zaXRpb24sIG1faXRlcmF0b3ItPnZhbHVl
KCkuZW5kKCkgLSB2YWx1ZVBvc2l0aW9uKTsKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IFNoYXJlZEJ1
ZmZlcjo6YWRvcHRWZWN0b3IodmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNTIz
LDcgKzE1MjMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpD
dXJzb3IKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWUoKSBjb25zdCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gKm5ldyBWZWN0b3I8dWludDhfdD4oKTsgfQor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3QgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9CiAgICAgdmly
dHVhbCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50
aWZpZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9yZWNvcmRJZGVu
dGlmaWVyOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CkBAIC0xNjA4LDcg
KzE2MDgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJz
b3IKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRWYWx1ZTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5
S2V5OyB9CiAgICAgdmlydHVhbCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZp
ZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAgICAgYm9vbCBsb2FkQ3VycmVudFJvdygpOwpAQCAt
MTYyOCw3ICsxNjI4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBSZWZQdHI8SURCS2V5PiBt
X3ByaW1hcnlLZXk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1fY3VycmVudFZhbHVlOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VycmVudFZhbHVlOwogICAgIFZlY3RvcjxjaGFyPiBtX3By
aW1hcnlMZXZlbERCS2V5OwogfTsKIApAQCAtMTY4Myw4ICsxNjgzLDkgQEAgYm9vbCBJbmRleEN1
cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIG1fY3VycmVudFZhbHVlLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50VmFsdWUuYXBwZW5k
UmFuZ2UodCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC5lbmQoKSkpOworICAgIFZl
Y3RvcjxjaGFyPiB2YWx1ZTsKKyAgICB2YWx1ZS5hcHBlbmQodCwgcmVzdWx0LmVuZCgpIC0gdCk7
CisgICAgbV9jdXJyZW50VmFsdWUgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHZhbHVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBjOGFmNzY4ZGM3ZjAzZDU0MzBhOTEzOWEw
Y2U1YmMyMGJiYjE4OTkxLi44YjQ5YmM4YTQyMWM2MDYxYmVjYWY2MDdiY2ViOGUzMWMwNjc3NTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDY0X3QgbV92ZXJz
aW9uOwogICAgIH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPHVpbnQ4X3Q+JiByZWNvcmQpIFdBUk5fVU5VU0VEX1JF
VFVSTjsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCS2V5JiwgVmVjdG9yPGNoYXI+JiByZWNvcmQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2
aXJ0dWFsIGJvb2wgcHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgV0FSTl9VTlVT
RURfUkVUVVJOOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFJlY29yZElkZW50aWZpZXImKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gY2xvbmUoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRLZXk7IH0KLSAgICAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVl
KCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2
YWx1ZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBjb25zdCBSZWNvcmRJZGVudGlmaWVy
JiByZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9
CiAgICAgICAgIHZpcnR1YWwgfkN1cnNvcigpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgbG9h
ZEN1cnJlbnRSb3coKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkNhbGxiYWNrcy5oCmluZGV4IDMzM2Q3NjY2YzViM2ZjMTYxMjI2ZDllMjYwYTdiYTk3YjMy
YTM0YjEuLjA4OGU2OGU4YjJjN2EyMjRjNzFlMzhiYmFiZmViZmM2ZjljMzZmOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQktl
eS5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC01MCwxMyArNTAsMTMg
QEAgcHVibGljOgogICAgIC8vIEZyb20gSURCRmFjdG9yeS53ZWJraXRHZXREYXRhYmFzZU5hbWVz
KCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4p
ID0gMDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4Lm9wZW5DdXJzb3IoKSwg
SURCSW5kZXgub3BlbktleUN1cnNvcigpCi0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBh
c3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIC8vIEZy
b20gSURCT2JqZWN0U3RvcmUuYWRkKCkvcHV0KCksIElEQkluZGV4LmdldEtleSgpCiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKICAgICAvLyBGcm9t
IElEQk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpL2NvdW50KCksIGFuZCB2YXJpb3VzIG1ldGhv
ZHMgdGhhdCB5aWVsZCBudWxsL3VuZGVmaW5lZC4KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgLy8gRnJvbSBJ
REJPYmplY3RTdG9yZS9JREJJbmRleC5nZXQoKSAod2l0aCBrZXkgaW5qZWN0aW9uKQotICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQ
YXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgY29uc3QgSURCS2V5UGF0aCYpID0gMDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lE
QkluZGV4LmNvdW50KCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QgdmFsdWUp
ID0gMDsKIApAQCAtNjQsOSArNjQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcygpID0gMDsKIAogICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgp
Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAw
OwogICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCi0gICAgdmlydHVh
bCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRy
PElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlL
ZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKSA9IDA7CiAg
ICAgLy8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKS9kZWxldGVEYXRhYmFzZSgpCiAgICAgdmlydHVh
bCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNw
cAppbmRleCBhNTczMzg0NTA1MjlhMTBkNDU5MzRiYTRhZWQ1MGE0YmMwYTdlYmU1Li4zMzJkOTAx
NDI1YWIxYmFhNGE0NGQ4ODljMWQ1ZDIxMmQ2MjgwZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBA
IC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRy
YWNpbmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCi0jaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSURCQ3Vyc29y
QmFja2VuZEltcGw6OkN1cnNvckFkdmFuY2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CYWNrZW5kCiAgICAgSURCX1RSQUNFKCJDdXJzb3JBZHZhbmNlT3BlcmF0aW9uIik7CiAgICAg
aWYgKCFtX2N1cnNvci0+bV9jdXJzb3IgfHwgIW1fY3Vyc29yLT5tX2N1cnNvci0+YWR2YW5jZSht
X2NvdW50KSkgewogICAgICAgICBtX2N1cnNvci0+bV9jdXJzb3IgPSAwOwotICAgICAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KDAp
KTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFyZWRCdWZm
ZXIqPigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OnBlcmZv
cm0oSURCVHJhbnNhY3Rpb25CYWNrZQogICAgIElEQl9UUkFDRSgiQ3Vyc29ySXRlcmF0aW9uT3Bl
cmF0aW9uIik7CiAgICAgaWYgKCFtX2N1cnNvci0+bV9jdXJzb3IgfHwgIW1fY3Vyc29yLT5tX2N1
cnNvci0+Y29udGludWVGdW5jdGlvbihtX2tleS5nZXQoKSkpIHsKICAgICAgICAgbV9jdXJzb3It
Pm1fY3Vyc29yID0gMDsKLSAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2Fz
dDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPigwKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3Moc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oMCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vy
c29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3QKIAogICAg
IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGZvdW5kS2V5czsKICAgICBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiBmb3VuZFByaW1hcnlLZXlzOwotICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiA+IGZvdW5kVmFsdWVzOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
PiA+IGZvdW5kVmFsdWVzOwogCiAgICAgaWYgKG1fY3Vyc29yLT5tX2N1cnNvcikKICAgICAgICAg
bV9jdXJzb3ItPm1fc2F2ZWRDdXJzb3IgPSBtX2N1cnNvci0+bV9jdXJzb3ItPmNsb25lKCk7CkBA
IC0xOTcsMTEgKzE5NywxMSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVm
ZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdAogCiAgICAgICAgIHN3
aXRjaCAobV9jdXJzb3ItPm1fY3Vyc29yVHlwZSkgewogICAgICAgICBjYXNlIEtleU9ubHk6Ci0g
ICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoKSk7CisgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBLZXlBbmRWYWx1ZToKLSAg
ICAgICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkuc2l6
ZSgpOwotICAgICAgICAgICAgZm91bmRWYWx1ZXMuYXBwZW5kKFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkpKTsKKyAg
ICAgICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCktPnNp
emUoKTsKKyAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChtX2N1cnNvci0+bV9jdXJzb3It
PnZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9y
bShJREJUcmFuc2FjdAogICAgIH0KIAogICAgIGlmICghZm91bmRLZXlzLnNpemUoKSkgewotICAg
ICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSo+KDApKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxT
aGFyZWRCdWZmZXIqPigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5o
CmluZGV4IDliZDIwNmNkMzFhYmM3NGFjNzk4YzJkNmJjN2UxNzU0NmJjYmNiMDAuLjY5OWUyZjU4
ZDZkMTc2MjFmNGNhMTI0ZmQyZWM4YjBiMTMzMTJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtMzMs
NyArMzMsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgi
Ci0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAK
ICAgICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPmtl
eSgpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVy
biBtX2N1cnNvci0+cHJpbWFyeUtleSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5
KSA/IDAgOiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMobV9jdXJz
b3ItPnZhbHVlKCkpOyB9CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29u
c3QgeyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+dmFs
dWUoKTsgfQogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2UuaAppbmRleCBkZmIxOTlhNWY1NWYzOTE2YWU3MmIwZTg3Y2ZjMjJmNmNkYzBmZjA1Li5hZWIy
OTc2YjA4NjJhNzlhZDQ0MzgxM2U5ZTc2Y2ZhMjZlMzkwZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZS5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIElEQkFueTsKIGNsYXNzIElEQkNhbGxiYWNr
czsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQlJlcXVlc3Q7Ci1jbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAKaW5kZXggYjI5ZjkyY2E3MDljNzFhYjRkOGE1MjExZjZkMjhmM2I5NTFmZTFmZS4uOTgw
ZDE0ZjRmZTY1OTY2ZTIwNWYxNjQ3MjA3NmRiNTg4NzAwZGE2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9ybShJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICBib29sIG9rOwogICAgIGlm
IChtX2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7CiAgICAgICAgIC8v
IE9iamVjdCBTdG9yZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgICAgIFZlY3Rvcjx1aW50OF90
PiB2YWx1ZTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IHZhbHVlOwogICAgICAgICBvayA9IG1fYmFj
a2luZ1N0b3JlLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCAqa2V5LCB2YWx1ZSk7CiAgICAgICAg
IGlmICghb2spIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJu
YWwgZXJyb3IgaW4gZ2V0UmVjb3JkLiIpKTsKQEAgLTczNiwxMSArNzM2LDExIEBAIHZvaWQgR2V0
T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9u
KQogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fYXV0b0luY3JlbWVudCAmJiAhbV9rZXlQYXRo
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSksIGtleSwgbV9rZXlQYXRo
KTsKKyAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3Rvcih2YWx1ZSksIGtleSwgbV9rZXlQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSk7CisgICAgICAgIG1fY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih2YWx1ZSkpOwogICAgICAgICBy
ZXR1cm47CiAKICAgICB9CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBl
cmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAgICAgfQogCiAg
ICAgLy8gSW5kZXggUmVmZXJlbmNlZCBWYWx1ZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHZhbHVlOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKICAgICBvayA9IG1f
YmFja2luZ1N0b3JlLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCAqcHJpbWFyeUtleSwgdmFsdWUp
OwogICAgIGlmICghb2spIHsKICAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRl
cm5hbCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOwpAQCAtNzc0LDEwICs3NzQsMTAgQEAgdm9pZCBH
ZXRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rp
b24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fYXV0b0luY3JlbWVudCAmJiAh
bV9rZXlQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSwgcHJpbWFyeUtl
eSwgbV9rZXlQYXRoKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhTaGFyZWRCdWZm
ZXI6OmFkb3B0VmVjdG9yKHZhbHVlKSwgcHJpbWFyeUtleSwgbV9rZXlQYXRoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSkpOworICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih2YWx1ZSkpOwogfQogCiB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXM+JiBpbmRleEtleXMpCkBAIC05NjQsNyArOTY0LDcgQEAgdm9pZCBPcGVuQ3Vyc29y
T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9u
KQogICAgIH0KIAogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7Ci0gICAgICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oMCkp
OworICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZl
cio+KDApKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA4ZDc3ODBmYjNkZmEyNGIxZmNk
MmVjYTJkNjU1YTcxZDhkYTczYWI0Li40NjdjMDY4OGY0NTY0ODkxYzk0NzMwY2ZmYmY5NmU1M2Mw
NTllNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcApAQCAtMjgzLDE0ICsyODMsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogICAgIGVucXVldWVFdmVu
dChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6
Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmF3VmFsdWUpCiB7CiAgICAgSURCX1RSQUNFKCJJREJS
ZXF1ZXN0OjpvblN1Y2Nlc3MoSURCQ3Vyc29yKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2Nv
cGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJ
REJWYWx1ZShyZXF1ZXN0U3RhdGUoKSwgc2VyaWFsaXplZFZhbHVlKTsKKyAgICBTY3JpcHRWYWx1
ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHJhd1Zh
bHVlKTsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0N1cnNvcik7CiAgICAgUmVmUHRyPElEQkN1cnNv
cj4gY3Vyc29yOwogICAgIHN3aXRjaCAobV9jdXJzb3JUeXBlKSB7CkBAIC0zMjIsMTQgKzMyMiwx
NCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5
KQogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIpCiB7Ci0gICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlKSIpOworICAgIElEQl9UUkFDRSgiSURC
UmVxdWVzdDo6b25TdWNjZXNzKFNoYXJlZEJ1ZmZlcikiKTsKICAgICBpZiAoIXNob3VsZEVucXVl
dWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3Bl
IHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFs
aXplSURCVmFsdWUocmVxdWVzdFN0YXRlKCksIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CisgICAg
U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0
ZSgpLCB2YWx1ZUJ1ZmZlcik7CiAgICAgb25TdWNjZXNzSW50ZXJuYWwodmFsdWUpOwogfQogCkBA
IC0zNDYsOSArMzQ2LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGVmZmVj
dGl2ZU9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UKIH0KICNlbmRpZgogCi12
b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gcHJwU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFy
eUtleSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciwgUGFzc1JlZlB0cjxJREJL
ZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7Ci0gICAgSURC
X1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBJREJL
ZXksIElEQktleVBhdGgpIik7CisgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3Mo
U2hhcmVkQnVmZmVyLCBJREJLZXksIElEQktleVBhdGgpIik7CiAgICAgaWYgKCFzaG91bGRFbnF1
ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBJ
REJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBy
cFNlcmlhbGl6ZWRTY3JpcHQKICAgICBBU1NFUlQoa2V5UGF0aCA9PSBlZmZlY3RpdmVPYmplY3RT
dG9yZShtX3NvdXJjZSktPmtleVBhdGgoKSk7CiAjZW5kaWYKICAgICBET01SZXF1ZXN0U3RhdGU6
OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRl
c2VyaWFsaXplSURCVmFsdWUocmVxdWVzdFN0YXRlKCksIHBycFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSk7CisgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJl
cXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CiAKICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5ID0gcHJwUHJpbWFyeUtleTsKICNpZm5kZWYgTkRFQlVHCkBAIC0zNzAsMTIgKzM3MCwxOCBA
QCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gcHJwU2VyaWFsaXplZFNjcmlwdAogCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzcyhp
bnQ2NF90IHZhbHVlKQogewotICAgIHJldHVybiBvblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpudW1iZXJWYWx1ZSh2YWx1ZSkpOworICAgIHJldHVybiBvblN1Y2Nlc3NJbnRlcm5hbChT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVlKHZhbHVlKSk7CiB9CiAKIHZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKCkKIHsKLSAgICByZXR1cm4gb25TdWNjZXNzKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUoKSk7CisgICAgcmV0dXJuIG9uU3VjY2Vzc0ludGVy
bmFsKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUoKSk7Cit9CisKK3ZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJuYWwoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlKQoreworICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1
ZXN0U3RhdGUpOworICAgIHJldHVybiBvblN1Y2Nlc3NJbnRlcm5hbChkZXNlcmlhbGl6ZUlEQlZh
bHVlKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZSkpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3Vj
Y2Vzc0ludGVybmFsKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKQEAgLTM4OCwxNCArMzk0LDE0
IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUm
IHZhbHVlKQogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZv
aWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlKQordm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiByYXdWYWx1ZSkKIHsKICAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3Vj
Y2VzcyhrZXksIHByaW1hcnlLZXksIHZhbHVlKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2Nv
cGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJ
REJWYWx1ZShyZXF1ZXN0U3RhdGUoKSwgc2VyaWFsaXplZFZhbHVlKTsKKyAgICBTY3JpcHRWYWx1
ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHJhd1Zh
bHVlKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKICAgICBzZXRSZXN1bHRDdXJzb3Io
bV9wZW5kaW5nQ3Vyc29yLnJlbGVhc2UoKSwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiAgICAg
ZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCAwYjJlYmQ4YWQzMDI5MDJlZTM1M2M4
NWQ1M2JhZmM0ZWUwM2ZiMDJiLi5kMDY3ZWIyOWE4ODU1NzkyYzBjMTI1NTc3NWNkMDI0ODg4Yzk1
MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5o
CkBAIC04NiwxNCArODYsMTQgQEAgcHVibGljOgogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZp
cnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7Ci0gICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJL
ZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7Ci0g
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4pOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8
SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
aW50NjRfdCk7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcygpOwotICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLSAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+Jiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGlt
cGxlbWVudGVkLiBDYWxsYmFjayBzaG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgor
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5
PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gPiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxl
bWVudGVkLiBDYWxsYmFjayBzaG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogCiAg
ICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTIwLDYgKzEyMCw3IEBAIHByb3RlY3RlZDoKICAgICBJ
REJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBJREJUcmFuc2FjdGlv
biopOwogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29uc3Q7CisgICAgdm9pZCBvblN1Y2Nlc3NJ
bnRlcm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZvaWQgb25T
dWNjZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJBbnk+
IG1fcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcAppbmRleCAzODg1MjRkNTM5NzNlMzhmNTE5YTgwYjYxNWE0NDQ3ZTJjM2Ez
YmEyLi5kY2JkY2Y5ZTcyYWNkN2RkNDIwYTRhODBmMDZlYWUyYTU5ZmFjMzE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJUcmFj
aW5nLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yNTQsNiArMjU1LDIxIEBAIFNj
cmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsCiAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHY4OjpOdWxsKCkp
OwogfQogCitTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RT
dGF0ZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIpCit7CisgICAgQVNTRVJU
KHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKKyAgICBp
ZiAoYnVmZmVyKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgZXh0cmEgY29weSBoZXJlIGNhbiBi
ZSBlbGltaW5hdGVkIGJ5IGFsbG93aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byB0YWtlIGEg
cmF3IGNvbnN0IGNoYXIqIG9yIGNvbnN0IHVpbnQ4X3QqLgorICAgICAgICBWZWN0b3I8dWludDhf
dD4gdmFsdWU7CisgICAgICAgIHZhbHVlLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVk
VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUp
OworICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6
ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHY4OjpOdWxsKCkpOworfQorCiBi
b29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaAppbmRleCA3YWRmMWIyYWVhMDU4MDVmNjJmNzcyNGJiMTZiODU3Njk2OTJlNGU0Li40YmEz
OTU4YjhmOTE1MWIwMTY3MGY2YTQ0YmIxMDAxYmRhMjNjMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC0zOCw2ICszOCw3IEBA
IGNsYXNzIERPTVJlcXVlc3RTdGF0ZTsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleVBhdGg7
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIFBh
c3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6VmFs
dWU+KTsKIApAQCAtNDUsNiArNDYsNyBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1
ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFNjcmlwdFZhbAogUGFzc1Jl
ZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVx
dWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBib29s
IGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXpl
SURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KTsKK1NjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0
YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKIFNjcmlwdFZhbHVlIGlkYktleVRvU2Ny
aXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKIFBhc3NSZWZQ
dHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNj
cmlwdFZhbHVlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkN1cnNvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vy
c29yLmgKaW5kZXggOGUzODk1OTI2OWU3MTFjMjcwNjY2OTcyMzJiM2E0ZGEyZTkzNTRjZS4uMThh
Y2VmMzE4NjhmZmUzZDZhODQ4ZmY1MjM1NTkxNTNmZTAyMTgzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlICJXZWJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiV2ViSURCS2V5LmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggZWE4Zjg1NGQ1ZDU1OGJmMjg0NDZiNzNi
NzBkZjJjMzNhYmU2MDQ1My4uZWMwODVmNmJiMWE5NWE1NjQxNzVjZjU4YTA0MjU2MzE2M2IwNWZk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmNwcApAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgog
I2luY2x1ZGUgIldlYklEQktleS5oIgogI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgiCi0jaW5j
bHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkRh
dGEuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc3LDEwICs3NywxMCBAQCB2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4gaWRiRGF0YWJhc2VFcnJvcikKICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihXZWJJREJEYXRh
YmFzZUVycm9yKGlkYkRhdGFiYXNlRXJyb3IpKTsKIH0KIAotdm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vy
c29yQmFja2VuZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3ZvaWQg
SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U+IGlkYkN1cnNvckJhY2tlbmQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUp
CiB7CiAgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
cyhuZXcgV2ViSURCQ3Vyc29ySW1wbChpZGJDdXJzb3JCYWNrZW5kKSwga2V5LCBwcmltYXJ5S2V5
LCB2YWx1ZSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURCQ3Vyc29ySW1w
bChpZGJDdXJzb3JCYWNrZW5kKSwga2V5LCBwcmltYXJ5S2V5LCBXZWJEYXRhKHZhbHVlKSk7CiB9
CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYg
bWV0YWRhdGEpCkBAIC0xMDMsMTUgKzEwMywxNSBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5Ojpv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogICAgIG1f
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViRE9NU3RyaW5nTGlzdChkb21TdHJpbmdMaXN0KSk7CiB9
CiAKLXZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQordm9pZCBJREJDYWxsYmFja3NQ
cm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSkKIHsKICAgICBt
X2RpZENvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKTsKKyAgICBtX2NhbGxiYWNr
cy0+b25TdWNjZXNzKFdlYkRhdGEodmFsdWUpKTsKIH0KIAotdm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgpCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCBrZXksIGtleVBhdGgpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViRGF0
YSh2YWx1ZSksIGtleSwga2V5UGF0aCk7CiAgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiB9CiAK
QEAgLTEyNywyNSArMTI3LDI1IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vzcygp
CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQogCi12b2lkIElEQkNhbGxiYWNrc1By
b3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3Zv
aWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZh
bHVlKQogewogICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwotICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3Moa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
cyhrZXksIHByaW1hcnlLZXksIFdlYkRhdGEodmFsdWUpKTsKIH0KIAotdm9pZCBJREJDYWxsYmFj
a3NQcm94eTo6b25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5
PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpCit2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBwcmlt
YXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4mIHZhbHVlcykKIHsK
ICAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAgICBjb25zdCBzaXplX3QgbiA9IGtleXMuc2l6
ZSgpOwogCiAgICAgV2ViVmVjdG9yPFdlYklEQktleT4gd2ViS2V5cyhuKTsKICAgICBXZWJWZWN0
b3I8V2ViSURCS2V5PiB3ZWJQcmltYXJ5S2V5cyhuKTsKLSAgICBXZWJWZWN0b3I8V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB3ZWJWYWx1ZXMobik7CisgICAgV2ViVmVjdG9yPFdlYkRhdGE+IHdl
YlZhbHVlcyhuKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAg
ICAgIHdlYktleXNbaV0gPSBXZWJJREJLZXkoa2V5c1tpXSk7CiAgICAgICAgIHdlYlByaW1hcnlL
ZXlzW2ldID0gV2ViSURCS2V5KHByaW1hcnlLZXlzW2ldKTsKLSAgICAgICAgd2ViVmFsdWVzW2ld
ID0gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlc1tpXSk7CisgICAgICAgIHdlYlZhbHVl
c1tpXSA9IFdlYkRhdGEodmFsdWVzW2ldKTsKICAgICB9CiAKICAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzV2l0aFByZWZldGNoKHdlYktleXMsIHdlYlByaW1hcnlLZXlzLCB3ZWJWYWx1ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXgg
NzFmOWYwNGQwYmYzNTgzMzIyNzE3OGNmY2ViNDdlZGY1M2Y5MTM3Ni4uNjI0ODNlYjYxZTVhNDE3
ZjY2OGRkZjYzNDMzMzM2YTE5YWIwODJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC00OCwxNSArNDgsMTUgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVy
cm9yPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OkRP
TVN0cmluZ0xpc3Q+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcmlt
YXJ5S2V5LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJik7CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4pOwotICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlQYXRoJik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleT4sIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKGludDY0X3QpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRj
aChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiYga2V5cywgY29uc3QgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKTsKKyAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25z
dCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25C
bG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgb25VcGdy
YWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRh
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5jcHAKaW5kZXggNjFmNTVjODRkY2Y4ODcwZTcxZGFkNTFhYTJiYzVhNTVjZjYzNjgyMi4u
MDVmYzg4ZjViY2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3NmM4NDRlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYklEQkRh
dGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKLSNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRGF0YS5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFdlYklEQkNhbGxi
YWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJET01TdHJpbmdMaXN0JiBkb21TdHJpbmdMaXN0
KQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZG9tU3RyaW5nTGlzdCk7CiB9CiAKLXZvaWQg
V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkN1cnNvciogY3Vyc29yLCBjb25z
dCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlKQordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpv
blN1Y2Nlc3MoV2ViSURCQ3Vyc29yKiBjdXJzb3IsIGNvbnN0IFdlYklEQktleSYga2V5LCBjb25z
dCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYkRhdGEmIHZhbHVlKQogewogICAgIG1f
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQ
dHIoY3Vyc29yKSksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogfQpAQCAtODQsMTQgKzg0LDE0
IEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYg
a2V5KQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5KTsKIH0KIAotdm9pZCBXZWJJREJD
YWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
cyhjb25zdCBXZWJEYXRhJiB2YWx1ZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyh2YWx1ZSk7
CiB9CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBXZWJJREJLZXkm
IGtleSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tz
SW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYkRhdGEmIHZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtl
eSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5LCBrZXlQYXRoKTsKKyAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKHZhbHVlLCBrZXksIGtleVBhdGgpOwogfQogCiB2b2lkIFdlYklEQkNh
bGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhsb25nIGxvbmcgdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoKQogICAgIG1fY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoKTsKIH0KIAotdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3Mo
Y29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3Qg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1w
bDo6b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJJREJLZXkmIHByaW1h
cnlLZXksIGNvbnN0IFdlYkRhdGEmIHZhbHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3Moa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKaW5kZXggMTZkMDJmODBmODNjNjM1MGM5ZGVi
MGEwNmIyMWM4ZTM2ODMyMjk0ZC4uMGNmN2NjYTZlY2FiYTVlZDBkY2NjMTBjMmFiZjkxMDVmZmVk
ZGNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuaApAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBv
bkVycm9yKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFdlYklEQkN1cnNvciosIGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJp
bWFyeUtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhXZWJJREJDdXJzb3IqLCBjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJ
REJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYkRhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFdlYklEQkRhdGFiYXNlKiwgY29uc3QgV2ViSURCTWV0YWRhdGEmKTsKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYpOwotICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7Ci0gICAgdmlydHVhbCB2
b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJ
REJLZXkmLCBjb25zdCBXZWJJREJLZXlQYXRoJik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29u
c3QgV2ViRGF0YSYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViRGF0YSYs
IGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtl
eSwgY29uc3QgV2ViRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MobG9uZyBsb25n
KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxv
Y2tlZChsb25nIGxvbmcgb2xkVmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKaW5kZXggOTFkOTRiNDA4MGU3
ODRjMjZlZTUyYjk3YzY1NDA0ZWFiNjA2M2E5ZS4uMzcyYjU5OGRkNjRjNDg0OWIyZjk4YzNiNzRl
MWVlM2Q5YzZkOTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApAQCAtNTYsMTggKzU2LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgbV93YXNFcnJvckNhbGxlZCA9IHRydWU7CiAgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25z
dCBJREJEYXRhYmFzZU1ldGFkYXRhJikKICAgICB7CiAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNl
KTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4p
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRo
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSBPVkVS
UklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QpIE9WRVJSSURFIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PikgT1ZFUlJJREUgeyB9OworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2go
Y29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktl
eT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+JikgeyB9CiBwcml2YXRl
OgogICAgIE1vY2tJREJDYWxsYmFja3MoKSA6IG1fd2FzRXJyb3JDYWxsZWQoZmFsc2UpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFj
a2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJh
Y2tlbmRUZXN0LmNwcAppbmRleCA1NzcyNDFlMTlkZGU5MDY4ZDIyNWVjZDI5OWU0OWY2ZTlkZGY5
MjUyLi40NWI5ZTJiYjJiZmFjYTFmMGFjMTE5YjdmNTVlMmE1YzQxYjE0NWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVz
dC5jcHAKQEAgLTY5LDE4ICs2OSwxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PikgT1ZFUlJJ
REUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4s
IFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhJikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fd2FzU3VjY2Vzc0RCQ2FsbGVkID0gdHJ1
ZTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4p
IE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+
LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OworICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJL
ZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoaW50NjRfdCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPikgT1ZFUlJJREUgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0
Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+Jikg
T1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktl
eT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBPVkVSUklE
RSB7IH07CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0
b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4mKSBPVkVSUklERSB7IH0KIHByaXZhdGU6
CiAgICAgTW9ja0lEQkNhbGxiYWNrcygpCiAgICAgICAgIDogbV93YXNTdWNjZXNzREJDYWxsZWQo
ZmFsc2UpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJS
ZXF1ZXN0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RU
ZXN0LmNwcAppbmRleCA3YThmZGJjNTMxZmRhNThlZTQxYTQ2MTU0ZDI0ODVlMzRmNGU1NGE5Li43
ZmI0MDI2ZDliMDgxZmJlYWEyMGZmOGE0NzI0MDkxZTdlOTYwYmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcApAQCAtOTIsMTEgKzkyLDEx
IEBAIFRFU1RfRihJREJSZXF1ZXN0VGVzdCwgRXZlbnRzQWZ0ZXJTdG9wcGluZykKICAgICAvLyBF
bnN1cmUgbm9uZSBvZiB0aGUgZm9sbG93aW5nIHJhaXNlIGFzc2VydGlvbnMgaW4gc3RvcHBlZCBz
dGF0ZToKICAgICByZXF1ZXN0LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgIkRlc2NyaXB0aW9uIGdvZXMgaGVyZS4iKSk7
CiAgICAgcmVxdWVzdC0+b25TdWNjZXNzKERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpKTsKLSAgICBy
ZXF1ZXN0LT5vblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPigp
LCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KCksIElEQktleTo6Y3JlYXRlSW52
YWxpZCgpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgMCk7CiAgICAgcmVxdWVzdC0+b25TdWNj
ZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpKTsKLSAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7Ci0gICAgcmVxdWVzdC0+b25TdWNjZXNz
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCksIElEQktleTo6Y3JlYXRlSW52YWxp
ZCgpLCBJREJLZXlQYXRoKCkpOwotICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhJREJLZXk6OmNyZWF0
ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6bnVsbFZhbHVlKCkpOworICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4oMCkpOworICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4oMCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXlQYXRoKCkpOworICAgIHJl
cXVlc3QtPm9uU3VjY2VzcyhJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJ
bnZhbGlkKCksIDApOwogfQogCiBURVNUX0YoSURCUmVxdWVzdFRlc3QsIEFib3J0RXJyb3JBZnRl
ckFib3J0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189565</attachid>
            <date>2013-02-21 11:29:43 -0800</date>
            <delta_ts>2013-02-21 14:46:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110398-20130221112604.patch</filename>
            <type>text/plain</type>
            <size>43619</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhlMTE2ZGNlN2YxMzQ5
YjVkYzA1MzBjNzFiYjMxZGFlNWMzYTZkOS4uYjAyZmUwZmJlYTY5MjcxMzMyY2JlYzMyMzEyNzQz
NzMzZTA1NGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTIwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElt
cGxlbWVudCBTaGFyZWRCdWZmZXIgdmVyc2lvbiBvZiBwdXQoKSAvIG9uU3VjY2VzcygpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzOTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGF2b2lkcyBh
bGwgdW5uZWNlc3NhcnkgZGF0YSBjb3BpZXMgd2l0aGluIHRoZSBjb250ZXh0IG9mCisgICAgICAg
IEluZGV4ZWREQiBwcm9wZXIsIGFuZCByZW1vdmVzIGFsbCByZWZlcmVuY2VzIHRvCisgICAgICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIHRoZSBJbmRleGVkREIgImJhY2tlbmQiLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yLgorCisg
ICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKTogTmV3IHZlcnNpb24gb2YgZGVzZXJp
YWxpemVJREJWYWx1ZSB3aGljaCB0YWtlcyBTaGFyZWRCdWZmZXIuCisKIDIwMTMtMDItMjAgIFRh
a2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcmlu
Z10gTWFrZSBtX3N0YXRlIGFuIG9uLXN0YWNrIG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCAwOGM5M2QzMDE5ZWNlMmRhM2Y3NWQ1ODQ5MzM1OTFhZGY1NmU1MmExLi4wNzg2YzQ0
Mjg5MjJhOGIxNWU3NjExMmFmMzgwZTA1NTcwNzNmM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAyLTIwICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEltcGxlbWVudCBTaGFyZWRCdWZm
ZXIgdmVyc2lvbiBvZiBwdXQoKSAvIG9uU3VjY2VzcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm94eSBuZXcgU2hhcmVkQnVmZmVyIGNhbGxzIHRv
IFdlYklEQkNhbGxiYWNrcyB0aHJvdWdoCisgICAgICAgIHRvIHRoZSBuZXcgU2hhcmVkQnVmZmVy
LWJhc2VkIElEQkNhbGxiYWNrcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJDdXJzb3IuaDoK
KyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
REJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJh
Y2tzUHJveHk6Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaCk6CisgICAgICAgICogc3JjL0lEQkNhbGxi
YWNrc1Byb3h5Lmg6CisgICAgICAgIChJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAgICogc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFj
a3NJbXBsOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmg6
CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9y
dE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6
b25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uU3VjY2Vz
c1dpdGhQcmVmZXRjaCk6CisgICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpURVNUX0YpOgorCiAyMDEzLTAyLTIwICBQYXdlxYIgSGFqZGFuLCBKci4gIDxwaGFqZGFuLmpy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgZ3lwIG9wdGlvbiB0byBzd2l0Y2ggRU5BQkxF
KFNRTF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDViNzM5MDRhODJmMzk3MDIwNGI0ZThiNzQxZGI5
YmYyNDBlMmUxNDEuLjM3MGNjMTU5NWZmZmY3Y2ZhMTllMDQ3MWZhNGFlYjI1NzM5M2NmZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNzgxLDcgKzc4MSw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVP
YmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+
JiByZWNvcmQpCitib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3RvcjxjaGFyPiYgcmVjb3JkKQog
ewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQiKTsKICAgICBMZXZl
bERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwpAQCAtMTQwNyw3
ICsxNDA3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yCi0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlKCkgY29uc3QgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuICpuZXcgVmVjdG9yPHVpbnQ4X3Q+KCk7IH0KKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50
Um93KCk7CiAKIHByaXZhdGU6CkBAIC0xNDYyLDcgKzE0NjIsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50VmFsdWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRSb3coKTsKIAog
cHJpdmF0ZToKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAot
ICAgIFZlY3Rvcjx1aW50OF90PiBtX2N1cnJlbnRWYWx1ZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2N1cnJlbnRWYWx1ZTsKIH07CiAKIGJvb2wgT2JqZWN0U3RvcmVDdXJzb3JJbXBsOjps
b2FkQ3VycmVudFJvdygpCkBAIC0xNTA0LDkgKzE1MDQsOSBAQCBib29sIE9iamVjdFN0b3JlQ3Vy
c29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIC8vIEZJWE1FOiBUaGlzIHJlLWVuY29kZXMg
d2hhdCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGltaXplLgogICAgIG1fcmVjb3JkSWRl
bnRpZmllci5yZXNldChlbmNvZGVJREJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24pOwogCi0g
ICAgbV9jdXJyZW50VmFsdWUuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRWYWx1ZS5hcHBlbmRSYW5n
ZSh2YWx1ZVBvc2l0aW9uLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pdGVyYXRvci0+dmFs
dWUoKS5lbmQoKSkpOwotCisgICAgVmVjdG9yPGNoYXI+IHZhbHVlOworICAgIHZhbHVlLmFwcGVu
ZCh2YWx1ZVBvc2l0aW9uLCBtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpIC0gdmFsdWVQb3NpdGlv
bik7CisgICAgbV9jdXJyZW50VmFsdWUgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHZhbHVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCi0gICAgdmlydHVhbCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHZhbHVlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuICpuZXcgVmVjdG9yPHVpbnQ4X3Q+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biAwOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQogICAgIHZpcnR1YWwgY29uc3QgSURCQmFja2luZ1N0
b3JlOjpSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIG1fcmVjb3JkSWRlbnRpZmllcjsgfQogICAgIHZpcnR1YWwg
Ym9vbCBsb2FkQ3VycmVudFJvdygpOwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCi0gICAgdmlydHVhbCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0K
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudFZhbHVlOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQogICAgIHZpcnR1YWwgY29u
c3QgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKCkg
Y29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIG1fcmVjb3JkSWRlbnRpZmllcjsg
fQogICAgIGJvb2wgbG9hZEN1cnJlbnRSb3coKTsKQEAgLTE2MjgsNyArMTYyOCw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgUmVmUHRyPElEQktleT4gbV9wcmltYXJ5S2V5OwotICAgIFZlY3Rv
cjx1aW50OF90PiBtX2N1cnJlbnRWYWx1ZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1
cnJlbnRWYWx1ZTsKICAgICBWZWN0b3I8Y2hhcj4gbV9wcmltYXJ5TGV2ZWxEQktleTsKIH07CiAK
QEAgLTE2NzIsOCArMTY3Miw4IEBAIGJvb2wgSW5kZXhDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJv
dygpCiAgICAgfQogCiAgICAgaW50NjRfdCBvYmplY3RTdG9yZURhdGFWZXJzaW9uOwotICAgIGNv
bnN0IGNoYXIqIHQgPSBkZWNvZGVWYXJJbnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwg
b2JqZWN0U3RvcmVEYXRhVmVyc2lvbik7Ci0gICAgaWYgKCF0KSB7CisgICAgdmFsdWVQb3NpdGlv
biA9IGRlY29kZVZhckludChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBvYmplY3RTdG9y
ZURhdGFWZXJzaW9uKTsKKyAgICBpZiAoIXZhbHVlUG9zaXRpb24pIHsKICAgICAgICAgSU5URVJO
QUxfUkVBRF9FUlJPUihMb2FkQ3VycmVudFJvdyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC0xNjgzLDggKzE2ODMsOSBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJl
bnRSb3coKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9jdXJyZW50VmFs
dWUuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRWYWx1ZS5hcHBlbmRSYW5nZSh0LCBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4ocmVzdWx0LmVuZCgpKSk7CisgICAgVmVjdG9yPGNoYXI+IHZhbHVlOwor
ICAgIHZhbHVlLmFwcGVuZCh2YWx1ZVBvc2l0aW9uLCByZXN1bHQuZW5kKCkgLSB2YWx1ZVBvc2l0
aW9uKTsKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IodmFs
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM4YWY3NjhkYzdmMDNkNTQzMGE5
MTM5YTBjZTViYzIwYmJiMTg5OTEuLjhiNDliYzhhNDIxYzYwNjFiZWNhZjYwN2JjZWI4ZTMxYzA2
Nzc1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaW50NjRfdCBt
X3ZlcnNpb247CiAgICAgfTsKIAotICAgIHZpcnR1YWwgYm9vbCBnZXRSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8dWludDhfdD4mIHJlY29yZCkgV0FSTl9VTlVT
RURfUkVUVVJOOworICAgIHZpcnR1YWwgYm9vbCBnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJLZXkmLCBWZWN0b3I8Y2hhcj4mIHJlY29yZCkgV0FSTl9VTlVTRURfUkVUVVJOOwog
ICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKSBXQVJO
X1VOVVNFRF9SRVRVUk47CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoK
IAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBjbG9uZSgpID0gMDsKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudEtleTsgfQotICAgICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
dmFsdWUoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IHZhbHVlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFJlY29yZElkZW50
aWZpZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlY29yZElkZW50aWZp
ZXI7IH0KICAgICAgICAgdmlydHVhbCB+Q3Vyc29yKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBsb2FkQ3VycmVudFJvdygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggMzMzZDc2NjZjNWIzZmMxNjEyMjZkOWUyNjBhN2Jh
OTdiMzJhMzRiMS4uMDg4ZTY4ZThiMmM3YTIyNGM3MWUzOGJiYWJmZWJmYzZmOWMzNmY4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAi
SURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTUwLDEzICs1
MCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gRnJvbSBJREJGYWN0b3J5LndlYmtpdEdldERhdGFiYXNl
TmFtZXMoKQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdM
aXN0PikgPSAwOwogICAgIC8vIEZyb20gSURCT2JqZWN0U3RvcmUvSURCSW5kZXgub3BlbkN1cnNv
cigpLCBJREJJbmRleC5vcGVuS2V5Q3Vyc29yKCkKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAg
Ly8gRnJvbSBJREJPYmplY3RTdG9yZS5hZGQoKS9wdXQoKSwgSURCSW5kZXguZ2V0S2V5KCkKICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgPSAwOwogICAgIC8v
IEZyb20gSURCT2JqZWN0U3RvcmUvSURCSW5kZXguZ2V0KCkvY291bnQoKSwgYW5kIHZhcmlvdXMg
bWV0aG9kcyB0aGF0IHlpZWxkIG51bGwvdW5kZWZpbmVkLgotICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pID0gMDsKICAgICAvLyBG
cm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpICh3aXRoIGtleSBpbmplY3Rpb24pCi0g
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgPSAwOwogICAgIC8vIEZyb20gSURCT2JqZWN0U3Rv
cmUvSURCSW5kZXguY291bnQoKQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoaW50NjRfdCB2
YWx1ZSkgPSAwOwogCkBAIC02NCw5ICs2NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKCkgPSAwOwogCiAgICAgLy8gRnJvbSBJREJDdXJzb3IuYWR2YW5jZSgpL2NvbnRp
bnVlKCkKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
KSA9IDA7CiAgICAgLy8gRnJvbSBJREJDdXJzb3IuYWR2YW5jZSgpL2NvbnRpbnVlKCkKLSAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURC
S2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJp
bWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+JiB2YWx1ZXMpID0g
MDsKICAgICAvLyBGcm9tIElEQkZhY3Rvcnkub3BlbigpL2RlbGV0ZURhdGFiYXNlKCkKICAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgLy8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElt
cGwuY3BwCmluZGV4IGE1NzMzODQ1MDUyOWExMGQ0NTkzNGJhNGFlZDUwYTRiYzBhN2ViZTUuLjMz
MmQ5MDE0MjVhYjFiYWE0YTQ0ZDg4OWMxZDVkMjEyZDYyODBlZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
SURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKLSNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFu
c2FjdGlvbkJhY2tlbmQKICAgICBJREJfVFJBQ0UoIkN1cnNvckFkdmFuY2VPcGVyYXRpb24iKTsK
ICAgICBpZiAoIW1fY3Vyc29yLT5tX2N1cnNvciB8fCAhbV9jdXJzb3ItPm1fY3Vyc29yLT5hZHZh
bmNlKG1fY291bnQpKSB7CiAgICAgICAgIG1fY3Vyc29yLT5tX2N1cnNvciA9IDA7Ci0gICAgICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVl
Kj4oMCkpOworICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNoYXJl
ZEJ1ZmZlcio+KDApKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6
cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlCiAgICAgSURCX1RSQUNFKCJDdXJzb3JJdGVyYXRp
b25PcGVyYXRpb24iKTsKICAgICBpZiAoIW1fY3Vyc29yLT5tX2N1cnNvciB8fCAhbV9jdXJzb3It
Pm1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKG1fa2V5LmdldCgpKSkgewogICAgICAgICBtX2N1
cnNvci0+bV9jdXJzb3IgPSAwOwotICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRp
Y19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KDApKTsKKyAgICAgICAgbV9jYWxsYmFja3Mt
Pm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPigwKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBs
OjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdAog
CiAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gZm91bmRLZXlzOwogICAgIFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+IGZvdW5kUHJpbWFyeUtleXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+ID4gZm91bmRWYWx1ZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+ID4gZm91bmRWYWx1ZXM7CiAKICAgICBpZiAobV9jdXJzb3ItPm1fY3Vyc29yKQogICAg
ICAgICBtX2N1cnNvci0+bV9zYXZlZEN1cnNvciA9IG1fY3Vyc29yLT5tX2N1cnNvci0+Y2xvbmUo
KTsKQEAgLTE5NywxMSArMTk3LDExIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNv
clByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0CiAKICAgICAg
ICAgc3dpdGNoIChtX2N1cnNvci0+bV9jdXJzb3JUeXBlKSB7CiAgICAgICAgIGNhc2UgS2V5T25s
eToKLSAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEtleUFuZFZhbHVl
OgotICAgICAgICAgICAgc2l6ZUVzdGltYXRlICs9IG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUo
KS5zaXplKCk7Ci0gICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUoKSkp
OworICAgICAgICAgICAgc2l6ZUVzdGltYXRlICs9IG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUo
KS0+c2l6ZSgpOworICAgICAgICAgICAgZm91bmRWYWx1ZXMuYXBwZW5kKG1fY3Vyc29yLT5tX2N1
cnNvci0+dmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQg
SURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpw
ZXJmb3JtKElEQlRyYW5zYWN0CiAgICAgfQogCiAgICAgaWYgKCFmb3VuZEtleXMuc2l6ZSgpKSB7
Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNj
cmlwdFZhbHVlKj4oMCkpOworICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19j
YXN0PFNoYXJlZEJ1ZmZlcio+KDApKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmgKaW5kZXggOWJkMjA2Y2QzMWFiYzc0YWM3OThjMmQ2YmM3ZTE3NTQ2YmNiY2IwMC4uNjk5
ZTJmNThkNmQxNzYyMWY0Y2ExMjRmZDJlYzhiMGIxMzMxMmE0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKIAogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnNv
ci0+a2V5KCk7IH0KICAgICBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCk7IH0KLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdCB7IHJldHVybiAobV9jdXJzb3JUeXBlID09IEtl
eU9ubHkpID8gMCA6IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyht
X2N1cnNvci0+dmFsdWUoKSk7IH0KKyAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUo
KSBjb25zdCB7IHJldHVybiAobV9jdXJzb3JUeXBlID09IEtleU9ubHkpID8gMCA6IG1fY3Vyc29y
LT52YWx1ZSgpOyB9CiAgICAgdm9pZCBjbG9zZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IGRmYjE5OWE1ZjU1ZjM5MTZhZTcyYjBlODdjZmMyMmY2Y2RjMGZmMDUu
LmFlYjI5NzZiMDg2MmE3OWFkNDQzODEzZTllNzZjZmEyNmUzOTBmMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3MgSURCQW55OwogY2xhc3MgSURCQ2Fs
bGJhY2tzOwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCUmVxdWVzdDsKLWNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcAppbmRleCBiMjlmOTJjYTcwOWM3MWFiNGQ4YTUyMTFmNmQyOGYzYjk1MWZlMWZl
Li45ODBkMTRmNGZlNjU5NjZlMjA1ZjE2NDcyMDc2ZGI1ODg3MDBkYTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcApAQCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3Jt
KElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgIGJvb2wgb2s7CiAg
ICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKICAgICAg
ICAgLy8gT2JqZWN0IFN0b3JlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZhbHVlOworICAgICAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7CiAgICAgICAgIG9rID0g
bV9iYWNraW5nU3RvcmUtPmdldFJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsICprZXksIHZhbHVlKTsKICAg
ICAgICAgaWYgKCFvaykgewogICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJ
bnRlcm5hbCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOwpAQCAtNzM2LDExICs3MzYsMTEgQEAgdm9p
ZCBHZXRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNh
Y3Rpb24pCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9hdXRvSW5jcmVtZW50ICYmICFtX2tl
eVBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSwga2V5LCBtX2tl
eVBhdGgpOworICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhTaGFyZWRCdWZmZXI6
OmFkb3B0VmVjdG9yKHZhbHVlKSwga2V5LCBtX2tleVBhdGgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUpKTsKKyAgICAgICAgbV9jYWxs
YmFja3MtPm9uU3VjY2VzcyhTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHZhbHVlKSk7CiAgICAg
ICAgIHJldHVybjsKIAogICAgIH0KQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIEdldE9wZXJhdGlv
bjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICB9
CiAKICAgICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAg
ICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CisgICAgVmVjdG9yPGNoYXI+IHZhbHVlOwogICAgIG9r
ID0gbV9iYWNraW5nU3RvcmUtPmdldFJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsICpwcmltYXJ5S2V5LCB2
YWx1ZSk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
IkludGVybmFsIGVycm9yIGluIGdldFJlY29yZC4iKSk7CkBAIC03NzQsMTAgKzc3NCwxMCBAQCB2
b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9hdXRvSW5jcmVtZW50
ICYmICFtX2tleVBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
cyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUpLCBwcmlt
YXJ5S2V5LCBtX2tleVBhdGgpOworICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNoYXJl
ZEJ1ZmZlcjo6YWRvcHRWZWN0b3IodmFsdWUpLCBwcmltYXJ5S2V5LCBtX2tleVBhdGgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSk7CisgICAgbV9jYWxsYmFj
a3MtPm9uU3VjY2VzcyhTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHZhbHVlKSk7CiB9CiAKIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVj
dG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykKQEAgLTk2NCw3ICs5NjQsNyBAQCB2b2lkIE9wZW5D
dXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNh
Y3Rpb24pCiAgICAgfQogCiAgICAgaWYgKCFiYWNraW5nU3RvcmVDdXJzb3IpIHsKLSAgICAgICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUq
PigwKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oMCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDhkNzc4MGZiM2RmYTI0
YjFmY2QyZWNhMmQ2NTVhNzFkOGRhNzNhYjQuLjJiMTM0MzkxMTg0MzQzYWU5Y2ZhMDQ4NTM4MDNm
MDcxNTlhODYzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCkBAIC0yODMsMTQgKzI4MywxNCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRvbVN0cmluZ0xpc3QpCiAgICAgZW5xdWV1
ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSkKK3ZvaWQgSURCUmVx
dWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJSZXF1ZXN0OjpvblN1Y2Nlc3MoSURCQ3Vyc29yKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1
ZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUg
c2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxp
emVJREJWYWx1ZShyZXF1ZXN0U3RhdGUoKSwgc2VyaWFsaXplZFZhbHVlKTsKKyAgICBTY3JpcHRW
YWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1
ZmZlcik7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDdXJzb3IpOwogICAgIFJlZlB0cjxJREJDdXJz
b3I+IGN1cnNvcjsKICAgICBzd2l0Y2ggKG1fY3Vyc29yVHlwZSkgewpAQCAtMzIyLDE0ICszMjIs
MTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGlkYktl
eSkKICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQogCi12b2lkIElE
QlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKQordm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyKQogewotICAgIElEQl9UUkFDRSgiSURCUmVxdWVz
dDo6b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkiKTsKKyAgICBJREJfVFJBQ0UoIklE
QlJlcXVlc3Q6Om9uU3VjY2VzcyhTaGFyZWRCdWZmZXIpIik7CiAgICAgaWYgKCFzaG91bGRFbnF1
ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29w
ZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlh
bGl6ZUlEQlZhbHVlKHJlcXVlc3RTdGF0ZSgpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUpOworICAg
IFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3Rh
dGUoKSwgdmFsdWVCdWZmZXIpOwogICAgIG9uU3VjY2Vzc0ludGVybmFsKHZhbHVlKTsKIH0KIApA
QCAtMzQ2LDkgKzM0Niw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBlZmZl
Y3RpdmVPYmplY3RTdG9yZShQYXNzUmVmUHRyPElEQkFueT4gc291cmNlCiB9CiAjZW5kaWYKIAot
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHBycFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewotICAgIElE
Ql9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSURC
S2V5LCBJREJLZXlQYXRoKSIpOworICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNz
KFNoYXJlZEJ1ZmZlciwgSURCS2V5LCBJREJLZXlQYXRoKSIpOwogICAgIGlmICghc2hvdWxkRW5x
dWV1ZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBw
cnBTZXJpYWxpemVkU2NyaXB0CiAgICAgQVNTRVJUKGtleVBhdGggPT0gZWZmZWN0aXZlT2JqZWN0
U3RvcmUobV9zb3VyY2UpLT5rZXlQYXRoKCkpOwogI2VuZGlmCiAgICAgRE9NUmVxdWVzdFN0YXRl
OjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBk
ZXNlcmlhbGl6ZUlEQlZhbHVlKHJlcXVlc3RTdGF0ZSgpLCBwcnBTZXJpYWxpemVkU2NyaXB0VmFs
dWUpOworICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihy
ZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIpOwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSA9IHBycFByaW1hcnlLZXk7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMzcwLDEyICszNzAsMTgg
QEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHBycFNlcmlhbGl6ZWRTY3JpcHQKIAogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3Mo
aW50NjRfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4gb25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6bnVtYmVyVmFsdWUodmFsdWUpKTsKKyAgICByZXR1cm4gb25TdWNjZXNzSW50ZXJuYWwo
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZSh2YWx1ZSkpOwogfQogCiB2b2lkIElE
QlJlcXVlc3Q6Om9uU3VjY2VzcygpCiB7Ci0gICAgcmV0dXJuIG9uU3VjY2VzcyhTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OnVuZGVmaW5lZFZhbHVlKCkpOworICAgIHJldHVybiBvblN1Y2Nlc3NJbnRl
cm5hbChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnVuZGVmaW5lZFZhbHVlKCkpOworfQorCit2b2lk
IElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiB2YWx1ZSkKK3sKKyAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVx
dWVzdFN0YXRlKTsKKyAgICByZXR1cm4gb25TdWNjZXNzSW50ZXJuYWwoZGVzZXJpYWxpemVJREJW
YWx1ZShyZXF1ZXN0U3RhdGUoKSwgdmFsdWUpKTsKIH0KIAogdm9pZCBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3NJbnRlcm5hbChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCkBAIC0zODgsMTQgKzM5NCwx
NCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IFNjcmlwdFZhbHVl
JiB2YWx1ZSkKICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQogCi12
b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRWYWx1ZSkKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyKQogewogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNj
ZXNzKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpIik7CiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29w
ZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlE
QlZhbHVlKHJlcXVlc3RTdGF0ZSgpLCBzZXJpYWxpemVkVmFsdWUpOworICAgIFNjcmlwdFZhbHVl
IHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVy
KTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKICAgICBzZXRSZXN1bHRDdXJzb3IobV9w
ZW5kaW5nQ3Vyc29yLnJlbGVhc2UoKSwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiAgICAgZW5x
dWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCAwYjJlYmQ4YWQzMDI5MDJlZTM1M2M4NWQ1
M2JhZmM0ZWUwM2ZiMDJiLi5kMDY3ZWIyOWE4ODU1NzkyYzBjMTI1NTc3NWNkMDI0ODg4Yzk1MWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBA
IC04NiwxNCArODYsMTQgQEAgcHVibGljOgogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZpcnR1
YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7Ci0gICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQ
YXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7Ci0gICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4p
OwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CisgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgY29uc3QgSURCS2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoaW50
NjRfdCk7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcygpOwotICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtl
eSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLSAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxl
bWVudGVkLiBDYWxsYmFjayBzaG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgorICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElE
QktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gPiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxlbWVu
dGVkLiBDYWxsYmFjayBzaG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogCiAgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IE9WRVJSSURFOwpAQCAtMTIwLDYgKzEyMCw3IEBAIHByb3RlY3RlZDoKICAgICBJREJS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNl
LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbiop
OwogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29uc3Q7CisgICAgdm9pZCBvblN1Y2Nlc3NJbnRl
cm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZvaWQgb25TdWNj
ZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJBbnk+IG1f
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcAppbmRleCAzODg1MjRkNTM5NzNlMzhmNTE5YTgwYjYxNWE0NDQ3ZTJjM2EzYmEy
Li5kY2JkY2Y5ZTcyYWNkN2RkNDIwYTRhODBmMDZlYWUyYTU5ZmFjMzE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJUcmFjaW5n
LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yNTQsNiArMjU1LDIxIEBAIFNjcmlw
dFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsCiAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHY4OjpOdWxsKCkpOwog
fQogCitTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0
ZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIpCit7CisgICAgQVNTRVJUKHY4
OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKKyAgICBpZiAo
YnVmZmVyKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgZXh0cmEgY29weSBoZXJlIGNhbiBiZSBl
bGltaW5hdGVkIGJ5IGFsbG93aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byB0YWtlIGEgcmF3
IGNvbnN0IGNoYXIqIG9yIGNvbnN0IHVpbnQ4X3QqLgorICAgICAgICBWZWN0b3I8dWludDhfdD4g
dmFsdWU7CisgICAgICAgIHZhbHVlLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFs
dWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUpOwor
ICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgp
KTsKKyAgICB9CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHY4OjpOdWxsKCkpOworfQorCiBib29s
IGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
aAppbmRleCA3YWRmMWIyYWVhMDU4MDVmNjJmNzcyNGJiMTZiODU3Njk2OTJlNGU0Li40YmEzOTU4
YjhmOTE1MWIwMTY3MGY2YTQ0YmIxMDAxYmRhMjNjMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC0zOCw2ICszOCw3IEBAIGNs
YXNzIERPTVJlcXVlc3RTdGF0ZTsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleVBhdGg7CiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIFBhc3NS
ZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+
KTsKIApAQCAtNDUsNiArNDYsNyBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShE
T01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFNjcmlwdFZhbAogUGFzc1JlZlB0
cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVz
dFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBib29sIGNh
bkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3Jp
cHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURC
VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
KTsKK1NjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRl
KiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKIFNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0
VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKIFBhc3NSZWZQdHI8
SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNjcmlw
dFZhbHVlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkN1cnNvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29y
LmgKaW5kZXggOGUzODk1OTI2OWU3MTFjMjcwNjY2OTcyMzJiM2E0ZGEyZTkzNTRjZS4uMThhY2Vm
MzE4NjhmZmUzZDZhODQ4ZmY1MjM1NTkxNTNmZTAyMTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRl
ICJXZWJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5j
bHVkZSAiV2ViSURCS2V5LmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggZWE4Zjg1NGQ1ZDU1OGJmMjg0NDZiNzNiNzBk
ZjJjMzNhYmU2MDQ1My4uZWMwODVmNmJiMWE5NWE1NjQxNzVjZjU4YTA0MjU2MzE2M2IwNWZkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNw
cApAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgogI2lu
Y2x1ZGUgIldlYklEQktleS5oIgogI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgiCi0jaW5jbHVk
ZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkRhdGEu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
aWRiRGF0YWJhc2VFcnJvcikKICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihXZWJJREJEYXRhYmFz
ZUVycm9yKGlkYkRhdGFiYXNlRXJyb3IpKTsKIH0KIAotdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vyc29y
QmFja2VuZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1h
cnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3ZvaWQgSURC
Q2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+IGlkYkN1cnNvckJhY2tlbmQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUpCiB7
CiAgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyhu
ZXcgV2ViSURCQ3Vyc29ySW1wbChpZGJDdXJzb3JCYWNrZW5kKSwga2V5LCBwcmltYXJ5S2V5LCB2
YWx1ZSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURCQ3Vyc29ySW1wbChp
ZGJDdXJzb3JCYWNrZW5kKSwga2V5LCBwcmltYXJ5S2V5LCBXZWJEYXRhKHZhbHVlKSk7CiB9CiAK
IHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0
YWRhdGEpCkBAIC0xMDMsMTUgKzEwMywxNSBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MoV2ViRE9NU3RyaW5nTGlzdChkb21TdHJpbmdMaXN0KSk7CiB9CiAK
LXZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQordm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSkKIHsKICAgICBtX2Rp
ZENvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKTsKKyAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKFdlYkRhdGEodmFsdWUpKTsKIH0KIAotdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgpCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBjb25zdCBJREJLZXlQYXRoJiBr
ZXlQYXRoKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBrZXksIGtleVBhdGgpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViRGF0YSh2
YWx1ZSksIGtleSwga2V5UGF0aCk7CiAgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiB9CiAKQEAg
LTEyNywyNSArMTI3LDI1IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcygpCiAg
ICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQogCi12b2lkIElEQkNhbGxiYWNrc1Byb3h5
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3ZvaWQg
SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNz
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVl
KQogewogICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3Moa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyhr
ZXksIHByaW1hcnlLZXksIFdlYkRhdGEodmFsdWUpKTsKIH0KIAotdm9pZCBJREJDYWxsYmFja3NQ
cm94eTo6b25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpCit2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0
cjxJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBwcmltYXJ5
S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4mIHZhbHVlcykKIHsKICAg
ICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAgICBjb25zdCBzaXplX3QgbiA9IGtleXMuc2l6ZSgp
OwogCiAgICAgV2ViVmVjdG9yPFdlYklEQktleT4gd2ViS2V5cyhuKTsKICAgICBXZWJWZWN0b3I8
V2ViSURCS2V5PiB3ZWJQcmltYXJ5S2V5cyhuKTsKLSAgICBXZWJWZWN0b3I8V2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiB3ZWJWYWx1ZXMobik7CisgICAgV2ViVmVjdG9yPFdlYkRhdGE+IHdlYlZh
bHVlcyhuKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAg
IHdlYktleXNbaV0gPSBXZWJJREJLZXkoa2V5c1tpXSk7CiAgICAgICAgIHdlYlByaW1hcnlLZXlz
W2ldID0gV2ViSURCS2V5KHByaW1hcnlLZXlzW2ldKTsKLSAgICAgICAgd2ViVmFsdWVzW2ldID0g
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlc1tpXSk7CisgICAgICAgIHdlYlZhbHVlc1tp
XSA9IFdlYkRhdGEodmFsdWVzW2ldKTsKICAgICB9CiAKICAgICBtX2NhbGxiYWNrcy0+b25TdWNj
ZXNzV2l0aFByZWZldGNoKHdlYktleXMsIHdlYlByaW1hcnlLZXlzLCB3ZWJWYWx1ZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggNzFm
OWYwNGQwYmYzNTgzMzIyNzE3OGNmY2ViNDdlZGY1M2Y5MTM3Ni4uNjI0ODNlYjYxZTVhNDE3ZjY2
OGRkZjYzNDMzMzM2YTE5YWIwODJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC00OCwxNSArNDgsMTUgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9y
Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0
cmluZ0xpc3Q+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5
PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcmltYXJ5
S2V5LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+LCBjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJik7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4pOwotICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBjb25zdCBXZWJD
b3JlOjpJREJLZXlQYXRoJik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eT4sIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKGludDY0X3QpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKTsKKyAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9j
a2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRl
TmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1w
bC5jcHAKaW5kZXggNjFmNTVjODRkY2Y4ODcwZTcxZGFkNTFhYTJiYzVhNTVjZjYzNjgyMi4uMDVm
Yzg4ZjViY2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3NmM4NDRlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFi
YXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKLSNpbmNsdWRlICJXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRGF0YS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFdlYklEQkNhbGxiYWNr
c0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJET01TdHJpbmdMaXN0JiBkb21TdHJpbmdMaXN0KQog
ICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZG9tU3RyaW5nTGlzdCk7CiB9CiAKLXZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkN1cnNvciogY3Vyc29yLCBjb25zdCBX
ZWJJREJLZXkmIGtleSwgY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlKQordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1
Y2Nlc3MoV2ViSURCQ3Vyc29yKiBjdXJzb3IsIGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBX
ZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYkRhdGEmIHZhbHVlKQogewogICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MoSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIo
Y3Vyc29yKSksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogfQpAQCAtODQsMTQgKzg0LDE0IEBA
IHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYga2V5
KQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5KTsKIH0KIAotdm9pZCBXZWJJREJDYWxs
YmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUpCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhj
b25zdCBXZWJEYXRhJiB2YWx1ZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyh2YWx1ZSk7CiB9
CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtl
eSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1w
bDo6b25TdWNjZXNzKGNvbnN0IFdlYkRhdGEmIHZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtleSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNj
ZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5LCBrZXlQYXRoKTsKKyAgICBtX2NhbGxiYWNr
cy0+b25TdWNjZXNzKHZhbHVlLCBrZXksIGtleVBhdGgpOwogfQogCiB2b2lkIFdlYklEQkNhbGxi
YWNrc0ltcGw6Om9uU3VjY2Vzcyhsb25nIGxvbmcgdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAg
dm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoKQogICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoKTsKIH0KIAotdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29u
c3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6
b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlL
ZXksIGNvbnN0IFdlYkRhdGEmIHZhbHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
a2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKaW5kZXggMTZkMDJmODBmODNjNjM1MGM5ZGViMGEw
NmIyMWM4ZTM2ODMyMjk0ZC4uMGNmN2NjYTZlY2FiYTVlZDBkY2NjMTBjMmFiZjkxMDVmZmVkZGNi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0lt
cGwuaApAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBvbkVy
cm9yKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFdlYklEQkN1cnNvciosIGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJpbWFy
eUtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhXZWJJREJDdXJzb3IqLCBjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJL
ZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYkRhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFdlYklEQkRhdGFiYXNlKiwgY29uc3QgV2ViSURCTWV0YWRhdGEmKTsKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYpOwotICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7Ci0gICAgdmlydHVhbCB2b2lk
IG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJL
ZXkmLCBjb25zdCBXZWJJREJLZXlQYXRoJik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhj
b25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3Qg
V2ViRGF0YSYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViRGF0YSYsIGNv
bnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwg
Y29uc3QgV2ViRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MobG9uZyBsb25nKTsK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZChsb25nIGxvbmcgb2xkVmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKaW5kZXggOTFkOTRiNDA4MGU3ODRj
MjZlZTUyYjk3YzY1NDA0ZWFiNjA2M2E5ZS4uZTYzY2UyYTg2YjJhOTNkNmIyMmU2ZjgwNDM4YmZk
NzgyYmQ5MTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJB
Ym9ydE9uQ29ycnVwdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApAQCAtNTYsMTggKzU2LDE4IEBAIHB1YmxpYzoKICAg
ICAgICAgbV93YXNFcnJvckNhbGxlZCA9IHRydWU7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJ
REJEYXRhYmFzZU1ldGFkYXRhJikKICAgICB7CiAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsK
ICAgICB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4p
IE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSBPVkVSUklE
RSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QpIE9WRVJSSURFIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikg
T1ZFUlJJREUgeyB9OworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+JikgT1ZFUlJJREUgeyB9CiBw
cml2YXRlOgogICAgIE1vY2tJREJDYWxsYmFja3MoKSA6IG1fd2FzRXJyb3JDYWxsZWQoZmFsc2Up
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFi
YXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRh
YmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCA1NzcyNDFlMTlkZGU5MDY4ZDIyNWVjZDI5OWU0OWY2
ZTlkZGY5MjUyLi40NWI5ZTJiYjJiZmFjYTFmMGFjMTE5YjdmNTVlMmE1YzQxYjE0NWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNr
ZW5kVGVzdC5jcHAKQEAgLTY5LDE4ICs2OSwxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1
YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pikg
T1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFz
ZU1ldGFkYXRhJikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fd2FzU3VjY2Vzc0RCQ2FsbGVk
ID0gdHJ1ZTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QktleT4pIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OworICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoaW50NjRfdCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPikgT1ZFUlJJREUgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRo
UHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVm
UHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiA+JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBP
VkVSUklERSB7IH07CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4mKSBPVkVSUklERSB7IH0KIHBy
aXZhdGU6CiAgICAgTW9ja0lEQkNhbGxiYWNrcygpCiAgICAgICAgIDogbV93YXNTdWNjZXNzREJD
YWxsZWQoZmFsc2UpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJSZXF1ZXN0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJl
cXVlc3RUZXN0LmNwcAppbmRleCA3YThmZGJjNTMxZmRhNThlZTQxYTQ2MTU0ZDI0ODVlMzRmNGU1
NGE5Li43ZmI0MDI2ZDliMDgxZmJlYWEyMGZmOGE0NzI0MDkxZTdlOTYwYmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcApAQCAtOTIsMTEg
KzkyLDExIEBAIFRFU1RfRihJREJSZXF1ZXN0VGVzdCwgRXZlbnRzQWZ0ZXJTdG9wcGluZykKICAg
ICAvLyBFbnN1cmUgbm9uZSBvZiB0aGUgZm9sbG93aW5nIHJhaXNlIGFzc2VydGlvbnMgaW4gc3Rv
cHBlZCBzdGF0ZToKICAgICByZXF1ZXN0LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgIkRlc2NyaXB0aW9uIGdvZXMgaGVy
ZS4iKSk7CiAgICAgcmVxdWVzdC0+b25TdWNjZXNzKERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpKTsK
LSAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlPigpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCks
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgIHJlcXVlc3QtPm9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KCksIElEQktleTo6Y3Jl
YXRlSW52YWxpZCgpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgMCk7CiAgICAgcmVxdWVzdC0+
b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpKTsKLSAgICByZXF1ZXN0LT5vblN1Y2Nl
c3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7Ci0gICAgcmVxdWVzdC0+b25T
dWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCksIElEQktleTo6Y3JlYXRl
SW52YWxpZCgpLCBJREJLZXlQYXRoKCkpOwotICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhJREJLZXk6
OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4oMCkpOworICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4oMCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXlQYXRoKCkpOwor
ICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5Ojpj
cmVhdGVJbnZhbGlkKCksIDApOwogfQogCiBURVNUX0YoSURCUmVxdWVzdFRlc3QsIEFib3J0RXJy
b3JBZnRlckFib3J0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189605</attachid>
            <date>2013-02-21 14:46:19 -0800</date>
            <delta_ts>2013-02-21 15:53:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110398-20130221144240.patch</filename>
            <type>text/plain</type>
            <size>46640</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhlMTE2ZGNlN2YxMzQ5
YjVkYzA1MzBjNzFiYjMxZGFlNWMzYTZkOS4uODdkMWQzYjllOTU5Nzk3NTY4ZmE2MGRiMTE0Yzhl
NmQwOGNmY2UyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTIwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElt
cGxlbWVudCBTaGFyZWRCdWZmZXIgdmVyc2lvbiBvZiBwdXQoKSAvIG9uU3VjY2VzcygpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzOTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFRoaXMgYXZvaWRzIGFsbCB1
bm5lY2Vzc2FyeSBkYXRhIGNvcGllcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YKKyAgICAgICAgSW5k
ZXhlZERCIHByb3BlciwgYW5kIHJlbW92ZXMgYWxsIHJlZmVyZW5jZXMgdG8KKyAgICAgICAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGZyb20gdGhlIEluZGV4ZWREQiAiYmFja2VuZCIuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIpOiBOZXcgdmVyc2lvbiBvZiBkZXNlcmlhbGl6
ZUlEQlZhbHVlIHdoaWNoIHRha2VzIFNoYXJlZEJ1ZmZlci4KKwogMjAxMy0wMi0yMCAgVGFrYXNo
aSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1JlZmFjdG9yaW5nXSBN
YWtlIG1fc3RhdGUgYW4gb24tc3RhY2sgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDA4YzkzZDMwMTllY2UyZGEzZjc1ZDU4NDkzMzU5MWFkZjU2ZTUyYTEuLjk4MzI0MzY3YmMy
N2MwNzM0ZjU5ZjI2MWUyNTdhM2IyNTQxMjU4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDItMjAgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IFNoYXJlZEJ1ZmZlciB2
ZXJzaW9uIG9mIHB1dCgpIC8gb25TdWNjZXNzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCisKKyAgICAgICAgUHJveHkgbmV3IFNoYXJlZEJ1ZmZlciBjYWxscyB0byBXZWJJREJD
YWxsYmFja3MgdGhyb3VnaAorICAgICAgICB0byB0aGUgbmV3IFNoYXJlZEJ1ZmZlci1iYXNlZCBJ
REJDYWxsYmFja3MuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ3Vyc29yLmg6CisgICAgICAg
ICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJh
Y2tzUHJveHk6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5
OjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94
eS5oOgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzSW1wbDo6
b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oOgorICAgICAg
ICAoV2ViSURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgICogdGVzdHMvSURCQWJvcnRPbkNvcnJ1
cHRUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uU3VjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJl
ZmV0Y2gpOgorICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVF9G
KToKKwogMjAxMy0wMi0yMCAgUGF3ZcWCIEhhamRhbiwgSnIuICA8cGhhamRhbi5qckBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQWRkIGd5cCBvcHRpb24gdG8gc3dpdGNoIEVOQUJMRShTUUxfREFU
QUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmNwcAppbmRleCA1YjczOTA0YTgyZjM5NzAyMDRiNGU4Yjc0MWRiOWJmMjQwZTJl
MTQxLi4zNzBjYzE1OTVmZmZmN2NmYTE5ZTA0NzFmYTRhZWIyNTczOTNjZmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAK
QEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3Rv
cmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpbwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgcmVjb3Jk
KQorYm9vbCBJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIHJlY29yZCkKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkIik7CiAgICAgTGV2ZWxEQlRyYW5z
YWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
OjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTE0MDcsNyArMTQwNyw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAg
IHZpcnR1YWwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZSgpIGNvbnN0IHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiAqbmV3IFZlY3Rvcjx1aW50OF90PigpOyB9CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpOwog
CiBwcml2YXRlOgpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8v
IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCi0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0KKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFZhbHVlOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHByaXZhdGU6
CkBAIC0xNDc3LDcgKzE0NzcsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBWZWN0
b3I8dWludDhfdD4gbV9jdXJyZW50VmFsdWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9j
dXJyZW50VmFsdWU7CiB9OwogCiBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJl
bnRSb3coKQpAQCAtMTUwNCw5ICsxNTA0LDkgQEAgYm9vbCBPYmplY3RTdG9yZUN1cnNvckltcGw6
OmxvYWRDdXJyZW50Um93KCkKICAgICAvLyBGSVhNRTogVGhpcyByZS1lbmNvZGVzIHdoYXQgd2Fz
IGp1c3QgZGVjb2RlZDsgdHJ5IGFuZCBvcHRpbWl6ZS4KICAgICBtX3JlY29yZElkZW50aWZpZXIu
cmVzZXQoZW5jb2RlSURCS2V5KCptX2N1cnJlbnRLZXkpLCB2ZXJzaW9uKTsKIAotICAgIG1fY3Vy
cmVudFZhbHVlLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50VmFsdWUuYXBwZW5kUmFuZ2UodmFsdWVQ
b3NpdGlvbiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faXRlcmF0b3ItPnZhbHVlKCkuZW5k
KCkpKTsKLQorICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICB2YWx1ZS5hcHBlbmQodmFsdWVQ
b3NpdGlvbiwgbV9pdGVyYXRvci0+dmFsdWUoKS5lbmQoKSAtIHZhbHVlUG9zaXRpb24pOworICAg
IG1fY3VycmVudFZhbHVlID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih2YWx1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiB2YWx1ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAq
bmV3IFZlY3Rvcjx1aW50OF90PigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVy
biBtX3ByaW1hcnlLZXk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IElEQkJhY2tpbmdTdG9yZTo6UmVj
b3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiBtX3JlY29yZElkZW50aWZpZXI7IH0KICAgICB2aXJ0dWFsIGJvb2wgbG9h
ZEN1cnJlbnRSb3coKTsKQEAgLTE2MDgsNyArMTYwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRWYWx1ZTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXko
KSBjb25zdCB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IElEQkJh
Y2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcigpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBtX3JlY29yZElkZW50aWZpZXI7IH0KICAgICBi
b29sIGxvYWRDdXJyZW50Um93KCk7CkBAIC0xNjI4LDcgKzE2MjgsNyBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIFJlZlB0cjxJREJLZXk+IG1fcHJpbWFyeUtleTsKLSAgICBWZWN0b3I8dWludDhf
dD4gbV9jdXJyZW50VmFsdWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXJyZW50VmFs
dWU7CiAgICAgVmVjdG9yPGNoYXI+IG1fcHJpbWFyeUxldmVsREJLZXk7CiB9OwogCkBAIC0xNjcy
LDggKzE2NzIsOCBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAg
IH0KIAogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVEYXRhVmVyc2lvbjsKLSAgICBjb25zdCBjaGFy
KiB0ID0gZGVjb2RlVmFySW50KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIG9iamVjdFN0
b3JlRGF0YVZlcnNpb24pOwotICAgIGlmICghdCkgeworICAgIHZhbHVlUG9zaXRpb24gPSBkZWNv
ZGVWYXJJbnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgb2JqZWN0U3RvcmVEYXRhVmVy
c2lvbik7CisgICAgaWYgKCF2YWx1ZVBvc2l0aW9uKSB7CiAgICAgICAgIElOVEVSTkFMX1JFQURf
RVJST1IoTG9hZEN1cnJlbnRSb3cpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MTY4Myw4ICsxNjgzLDkgQEAgYm9vbCBJbmRleEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fY3VycmVudFZhbHVlLmNsZWFy
KCk7Ci0gICAgbV9jdXJyZW50VmFsdWUuYXBwZW5kUmFuZ2UodCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KHJlc3VsdC5lbmQoKSkpOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICB2YWx1
ZS5hcHBlbmQodmFsdWVQb3NpdGlvbiwgcmVzdWx0LmVuZCgpIC0gdmFsdWVQb3NpdGlvbik7Cisg
ICAgbV9jdXJyZW50VmFsdWUgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHZhbHVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBjOGFmNzY4ZGM3ZjAzZDU0MzBhOTEzOWEwY2U1
YmMyMGJiYjE4OTkxLi44YjQ5YmM4YTQyMWM2MDYxYmVjYWY2MDdiY2ViOGUzMWMwNjc3NTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDY0X3QgbV92ZXJzaW9u
OwogICAgIH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgSURCS2V5JiwgVmVjdG9yPHVpbnQ4X3Q+JiByZWNvcmQpIFdBUk5fVU5VU0VEX1JFVFVS
TjsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
S2V5JiwgVmVjdG9yPGNoYXI+JiByZWNvcmQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2aXJ0
dWFsIGJvb2wgcHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgV0FSTl9VTlVTRURf
UkVUVVJOOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFJlY29yZElkZW50aWZpZXImKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gY2xvbmUoKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRLZXk7IH0KLSAgICAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlKCkg
Y29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1
ZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiBy
ZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAg
ICAgICAgIHZpcnR1YWwgfkN1cnNvcigpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1
cnJlbnRSb3coKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oCmluZGV4IDMzM2Q3NjY2YzViM2ZjMTYxMjI2ZDllMjYwYTdiYTk3YjMyYTM0
YjEuLjA4OGU2OGU4YjJjN2EyMjRjNzFlMzhiYmFiZmViZmM2ZjljMzZmOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQktleS5o
IgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC01MCwxMyArNTAsMTMgQEAg
cHVibGljOgogICAgIC8vIEZyb20gSURCRmFjdG9yeS53ZWJraXRHZXREYXRhYmFzZU5hbWVzKCkK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pID0g
MDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4Lm9wZW5DdXJzb3IoKSwgSURC
SW5kZXgub3BlbktleUN1cnNvcigpCi0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIC8vIEZyb20g
SURCT2JqZWN0U3RvcmUuYWRkKCkvcHV0KCksIElEQkluZGV4LmdldEtleSgpCiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKICAgICAvLyBGcm9tIElE
Qk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpL2NvdW50KCksIGFuZCB2YXJpb3VzIG1ldGhvZHMg
dGhhdCB5aWVsZCBudWxsL3VuZGVmaW5lZC4KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgLy8gRnJvbSBJREJP
YmplY3RTdG9yZS9JREJJbmRleC5nZXQoKSAod2l0aCBrZXkgaW5qZWN0aW9uKQotICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNz
UmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5Piwg
Y29uc3QgSURCS2V5UGF0aCYpID0gMDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQklu
ZGV4LmNvdW50KCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QgdmFsdWUpID0g
MDsKIApAQCAtNjQsOSArNjQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cygpID0gMDsKIAogICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCi0g
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwog
ICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCi0gICAgdmlydHVhbCB2
b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYg
a2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKSA9IDA7CiAgICAg
Ly8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKS9kZWxldGVEYXRhYmFzZSgpCiAgICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApp
bmRleCBhNTczMzg0NTA1MjlhMTBkNDU5MzRiYTRhZWQ1MGE0YmMwYTdlYmU1Li4zMzJkOTAxNDI1
YWIxYmFhNGE0NGQ4ODljMWQ1ZDIxMmQ2MjgwZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0z
Nyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYWNp
bmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCi0jaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OkN1cnNvckFkdmFuY2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25C
YWNrZW5kCiAgICAgSURCX1RSQUNFKCJDdXJzb3JBZHZhbmNlT3BlcmF0aW9uIik7CiAgICAgaWYg
KCFtX2N1cnNvci0+bV9jdXJzb3IgfHwgIW1fY3Vyc29yLT5tX2N1cnNvci0+YWR2YW5jZShtX2Nv
dW50KSkgewogICAgICAgICBtX2N1cnNvci0+bV9jdXJzb3IgPSAwOwotICAgICAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KDApKTsK
KyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIq
PigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0o
SURCVHJhbnNhY3Rpb25CYWNrZQogICAgIElEQl9UUkFDRSgiQ3Vyc29ySXRlcmF0aW9uT3BlcmF0
aW9uIik7CiAgICAgaWYgKCFtX2N1cnNvci0+bV9jdXJzb3IgfHwgIW1fY3Vyc29yLT5tX2N1cnNv
ci0+Y29udGludWVGdW5jdGlvbihtX2tleS5nZXQoKSkpIHsKICAgICAgICAgbV9jdXJzb3ItPm1f
Y3Vyc29yID0gMDsKLSAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqPigwKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3Moc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oMCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29y
UHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3QKIAogICAgIFZl
Y3RvcjxSZWZQdHI8SURCS2V5PiA+IGZvdW5kS2V5czsKICAgICBWZWN0b3I8UmVmUHRyPElEQktl
eT4gPiBmb3VuZFByaW1hcnlLZXlzOwotICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+IGZvdW5kVmFsdWVzOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+
IGZvdW5kVmFsdWVzOwogCiAgICAgaWYgKG1fY3Vyc29yLT5tX2N1cnNvcikKICAgICAgICAgbV9j
dXJzb3ItPm1fc2F2ZWRDdXJzb3IgPSBtX2N1cnNvci0+bV9jdXJzb3ItPmNsb25lKCk7CkBAIC0x
OTcsMTEgKzE5NywxMSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRj
aEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdAogCiAgICAgICAgIHN3aXRj
aCAobV9jdXJzb3ItPm1fY3Vyc29yVHlwZSkgewogICAgICAgICBjYXNlIEtleU9ubHk6Ci0gICAg
ICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
KSk7CisgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBLZXlBbmRWYWx1ZToKLSAgICAg
ICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkuc2l6ZSgp
OwotICAgICAgICAgICAgZm91bmRWYWx1ZXMuYXBwZW5kKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlRnJvbVdpcmVCeXRlcyhtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkpKTsKKyAgICAg
ICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCktPnNpemUo
KTsKKyAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChtX2N1cnNvci0+bV9jdXJzb3ItPnZh
bHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdAogICAgIH0KIAogICAgIGlmICghZm91bmRLZXlzLnNpemUoKSkgewotICAgICAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSo+KDApKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFy
ZWRCdWZmZXIqPigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmlu
ZGV4IDliZDIwNmNkMzFhYmM3NGFjNzk4YzJkNmJjN2UxNzU0NmJjYmNiMDAuLjY5OWUyZjU4ZDZk
MTc2MjFmNGNhMTI0ZmQyZWM4YjBiMTMzMTJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtMzMsNyAr
MzMsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCi0j
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAg
ICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPmtleSgp
OyB9CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N1cnNvci0+cHJpbWFyeUtleSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/
IDAgOiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMobV9jdXJzb3It
PnZhbHVlKCkpOyB9CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+dmFsdWUo
KTsgfQogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aAppbmRleCBkZmIxOTlhNWY1NWYzOTE2YWU3MmIwZTg3Y2ZjMjJmNmNkYzBmZjA1Li5hZWIyOTc2
YjA4NjJhNzlhZDQ0MzgxM2U5ZTc2Y2ZhMjZlMzkwZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIElEQkFueTsKIGNsYXNzIElEQkNhbGxiYWNrczsK
IGNsYXNzIElEQktleTsKIGNsYXNzIElEQlJlcXVlc3Q7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKaW5kZXggYjI5ZjkyY2E3MDljNzFhYjRkOGE1MjExZjZkMjhmM2I5NTFmZTFmZS4uOTgwZDE0
ZjRmZTY1OTY2ZTIwNWYxNjQ3MjA3NmRiNTg4NzAwZGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICBib29sIG9rOwogICAgIGlmICht
X2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7CiAgICAgICAgIC8vIE9i
amVjdCBTdG9yZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgICAgIFZlY3Rvcjx1aW50OF90PiB2
YWx1ZTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IHZhbHVlOwogICAgICAgICBvayA9IG1fYmFja2lu
Z1N0b3JlLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCAqa2V5LCB2YWx1ZSk7CiAgICAgICAgIGlm
ICghb2spIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwg
ZXJyb3IgaW4gZ2V0UmVjb3JkLiIpKTsKQEAgLTczNiwxMSArNzM2LDExIEBAIHZvaWQgR2V0T3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fYXV0b0luY3JlbWVudCAmJiAhbV9rZXlQYXRoLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSksIGtleSwgbV9rZXlQYXRoKTsK
KyAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9wdFZl
Y3Rvcih2YWx1ZSksIGtleSwgbV9rZXlQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih2YWx1ZSkpOwogICAgICAgICByZXR1
cm47CiAKICAgICB9CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZv
cm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAgICAgfQogCiAgICAg
Ly8gSW5kZXggUmVmZXJlbmNlZCBWYWx1ZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHZhbHVlOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKICAgICBvayA9IG1fYmFj
a2luZ1N0b3JlLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCAqcHJpbWFyeUtleSwgdmFsdWUpOwog
ICAgIGlmICghb2spIHsKICAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5h
bCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOwpAQCAtNzc0LDEwICs3NzQsMTAgQEAgdm9pZCBHZXRP
cGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24p
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fYXV0b0luY3JlbWVudCAmJiAhbV9r
ZXlQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSwgcHJpbWFyeUtleSwg
bV9rZXlQYXRoKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhTaGFyZWRCdWZmZXI6
OmFkb3B0VmVjdG9yKHZhbHVlKSwgcHJpbWFyeUtleSwgbV9rZXlQYXRoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih2YWx1ZSkpOwogfQogCiB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRl
eEtleXM+JiBpbmRleEtleXMpCkBAIC05NjQsNyArOTY0LDcgQEAgdm9pZCBPcGVuQ3Vyc29yT3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQog
ICAgIH0KIAogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7Ci0gICAgICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oMCkpOwor
ICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+
KDApKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA4ZDc3ODBmYjNkZmEyNGIxZmNkMmVj
YTJkNjU1YTcxZDhkYTczYWI0Li4yYjEzNDM5MTE4NDM0M2FlOWNmYTA0ODUzODAzZjA3MTU5YTg2
MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcApAQCAtMjgzLDE0ICsyODMsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogICAgIGVucXVldWVFdmVudChj
cmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6Om9u
U3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQogewogICAgIElEQl9UUkFDRSgiSURCUmVxdWVz
dDo6b25TdWNjZXNzKElEQkN1cnNvcikiKTsKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1f
cmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFs
dWUocmVxdWVzdFN0YXRlKCksIHNlcmlhbGl6ZWRWYWx1ZSk7CisgICAgU2NyaXB0VmFsdWUgdmFs
dWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOwog
ICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBjdXJz
b3I7CiAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKQEAgLTMyMiwxNCArMzIyLDE0IEBAIHZv
aWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiAgICAg
ZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSkKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiB2YWx1ZUJ1ZmZlcikKIHsKLSAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3Vj
Y2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWUpIik7CisgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoU2hhcmVkQnVmZmVyKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUo
bV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJW
YWx1ZShyZXF1ZXN0U3RhdGUoKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBTY3JpcHRW
YWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHZh
bHVlQnVmZmVyKTsKICAgICBvblN1Y2Nlc3NJbnRlcm5hbCh2YWx1ZSk7CiB9CiAKQEAgLTM0Niw5
ICszNDYsOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gZWZmZWN0aXZlT2Jq
ZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZQogfQogI2VuZGlmCiAKLXZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQordm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyLCBQYXNzUmVmUHRyPElEQktleT4gcHJw
UHJpbWFyeUtleSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKLSAgICBJREJfVFJBQ0Uo
IklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWUsIElEQktleSwgSURC
S2V5UGF0aCkiKTsKKyAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhTaGFyZWRC
dWZmZXIsIElEQktleSwgSURCS2V5UGF0aCkiKTsKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIElEQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwU2VyaWFs
aXplZFNjcmlwdAogICAgIEFTU0VSVChrZXlQYXRoID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKG1f
c291cmNlKS0+a2V5UGF0aCgpKTsKICNlbmRpZgogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUg
c2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxp
emVJREJWYWx1ZShyZXF1ZXN0U3RhdGUoKSwgcHJwU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAg
ICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0
YXRlKCksIHZhbHVlQnVmZmVyKTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBw
cnBQcmltYXJ5S2V5OwogI2lmbmRlZiBOREVCVUcKQEAgLTM3MCwxMiArMzcwLDE4IEBAIHZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBw
cnBTZXJpYWxpemVkU2NyaXB0CiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKGludDY0X3Qg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51
bWJlclZhbHVlKHZhbHVlKSk7CisgICAgcmV0dXJuIG9uU3VjY2Vzc0ludGVybmFsKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6bnVtYmVyVmFsdWUodmFsdWUpKTsKIH0KIAogdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoKQogewotICAgIHJldHVybiBvblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp1bmRlZmluZWRWYWx1ZSgpKTsKKyAgICByZXR1cm4gb25TdWNjZXNzSW50ZXJuYWwoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpKTsKK30KKwordm9pZCBJREJSZXF1
ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUpCit7CisgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0
ZSk7CisgICAgcmV0dXJuIG9uU3VjY2Vzc0ludGVybmFsKGRlc2VyaWFsaXplSURCVmFsdWUocmVx
dWVzdFN0YXRlKCksIHZhbHVlKSk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50
ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQpAQCAtMzg4LDE0ICszOTQsMTQgQEAgdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUp
CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJS
ZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxp
emVkVmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcikKIHsKICAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhrZXks
IHByaW1hcnlLZXksIHZhbHVlKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1
ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZShy
ZXF1ZXN0U3RhdGUoKSwgc2VyaWFsaXplZFZhbHVlKTsKKyAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9
IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CiAgICAg
QVNTRVJUKG1fcGVuZGluZ0N1cnNvcik7CiAgICAgc2V0UmVzdWx0Q3Vyc29yKG1fcGVuZGluZ0N1
cnNvci5yZWxlYXNlKCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogICAgIGVucXVldWVFdmVu
dChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggMGIyZWJkOGFkMzAyOTAyZWUzNTNjODVkNTNiYWZjNGVl
MDNmYjAyYi4uZDA2N2ViMjlhODg1NTc5MmMwYzEyNTU3NzVjZDAyNDg4OGM5NTFiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtODYsMTQg
Kzg2LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJREJDYWxsYmFja3MKICAgICB2aXJ0dWFsIHZvaWQg
b25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KTsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwotICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pOwotICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJik7CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIGNv
bnN0IElEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QpOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
c1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4g
Q2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4KKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CisgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4gQ2Fs
bGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4KIAogICAgIC8vIEFjdGl2
ZURPTU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBP
VkVSUklERTsKQEAgLTEyMCw2ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSURCUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rpb24qKTsKICAgICB2
b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEVucXVldWVFdmVudCgpIGNvbnN0OworICAgIHZvaWQgb25TdWNjZXNzSW50ZXJuYWwoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2b2lkIG9uU3VjY2Vzc0ludGVy
bmFsKGNvbnN0IFNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3Jlc3VsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAKaW5kZXggN2FiZTgwMjUxMTRhYzZjNGE3MGZiYzMwYjBmYWMyZTE5NzI2NTM5OS4uZWJjMTAx
OTY0ZDg1YWFlNThiODM0YTFjNzQ3YzcxNmVhNDJjZjFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTMwMSw2ICszMDEs
MjAgQEAgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJl
cXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTZXJpYWwKICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSk7CiB9CiAKK1NjcmlwdFZhbHVlIGRlc2VyaWFsaXpl
SURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IHBycEJ1ZmZlcikKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4ZWMo
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwcnBCdWZmZXI7CisgICAgaWYg
KGJ1ZmZlcikgeworICAgICAgICAvLyBGSVhNRTogVGhlIGV4dHJhIGNvcHkgaGVyZSBjYW4gYmUg
ZWxpbWluYXRlZCBieSBhbGxvd2luZyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdG8gdGFrZSBhIHJh
dyBjb25zdCBjaGFyKiBvciBjb25zdCB1aW50OF90Ki4KKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHZhbHVlOworICAgICAgICB2YWx1ZS5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZh
bHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJpYWxpemVk
VmFsdWUuZ2V0KCksIE5vblRocm93aW5nKTsKKyAgICB9CisgICAgcmV0dXJuIFNjcmlwdFZhbHVl
KGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdWxsKCkpOworfQorCiBTY3JpcHRWYWx1ZSBpZGJLZXlU
b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPElE
QktleT4ga2V5KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5o
CmluZGV4IDIzM2JhZDVmMjViMDc4YzY0ZjQ4ZDA1ZjhlNzhkMzk1NDA0ZGFlNjYuLjg3ZTcxOGQx
ZWZkYTc5OGJkNjUyNGM2ZTY4MDJlNTQ3OTQxODVlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKLSNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIiAKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ2LDcg
QEAgYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFz
c1JlZlB0cjxJREJLZXk+LCBTY3JpcHRWYWwKIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJL
ZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNjcmlw
dFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2Ny
aXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJL
ZXlQYXRoJik7CiBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0
ZSosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CitTY3JpcHRWYWx1ZSBkZXNl
cmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPik7CiBTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0
ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7CiBQYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVU
b0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4
IDM4ODUyNGQ1Mzk3M2UzOGY1MTlhODBiNjE1YTQ0NDdlMmMzYTNiYTIuLmRjYmRjZjllNzJhY2Q3
ZGQ0MjBhNGE4MGYwNmVhZTJhNTlmYWMzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTI1NCw2ICsyNTUsMjEgQEAgU2NyaXB0VmFsdWUgZGVzZXJpYWxp
emVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWwKICAgICByZXR1cm4gU2NyaXB0VmFsdWUodjg6Ok51bGwoKSk7CiB9CiAKK1NjcmlwdFZhbHVl
IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IHBycEJ1ZmZlcikKK3sKKyAgICBBU1NFUlQodjg6OkNvbnRleHQ6OkluQ29u
dGV4dCgpKTsKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gcHJwQnVmZmVyOworICAgIGlmIChidWZmZXIpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFRoZSBleHRyYSBjb3B5IGhlcmUgY2FuIGJlIGVsaW1pbmF0ZWQgYnkgYWxs
b3dpbmcgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHRvIHRha2UgYSByYXcgY29uc3QgY2hhciogb3Ig
Y29uc3QgdWludDhfdCouCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZTsKKyAgICAgICAg
dmFsdWUuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSk7CisgICAgICAgIHJldHVybiBT
Y3JpcHRWYWx1ZShzZXJpYWxpemVkVmFsdWUtPmRlc2VyaWFsaXplKCkpOworICAgIH0KKyAgICBy
ZXR1cm4gU2NyaXB0VmFsdWUodjg6Ok51bGwoKSk7Cit9CisKIGJvb2wgaW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAg
ICBJREJfVFJBQ0UoImluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDdhZGYxYjJh
ZWEwNTgwNWY2MmY3NzI0YmIxNmI4NTc2OTY5MmU0ZTQuLjRiYTM5NThiOGY5MTUxYjAxNjcwZjZh
NDRiYjEwMDFiZGEyM2MxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9J
REJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgRE9NUmVxdWVzdFN0
YXRlOwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogUGFzc1JlZlB0cjxJREJLZXk+IGNy
ZWF0ZUlEQktleUZyb21WYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwogCkBAIC00NSw2ICs0
Niw3IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSos
IFBhc3NSZWZQdHI8SURCS2V5PiwgU2NyaXB0VmFsCiBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiwgY29uc3Qg
SURCS2V5UGF0aCYpOwogU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0
U3RhdGUqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworU2NyaXB0VmFsdWUg
ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pOwogU2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0
U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4pOwogUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZh
bHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaAppbmRleCA4ZTM4OTU5
MjY5ZTcxMWMyNzA2NjY5NzIzMmIzYTRkYTJlOTM1NGNlLi4xOGFjZWYzMTg2OGZmZTNkNmE4NDhm
ZjUyMzU1OTE1M2ZlMDIxODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJDdXJzb3IuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJLZXku
aCIKLSNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcAppbmRleCBlYThmODU0ZDVkNTU4YmYyODQ0NmI3M2I3MGRmMmMzM2FiZTYwNDUzLi5l
YzA4NWY2YmIxYTk1YTU2NDE3NWNmNThhMDQyNTYzMTYzYjA1ZmQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC00Niw3ICs0Niw3
IEBACiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5
LmgiCiAjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRGF0YS5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJv
eHk6Om9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBpZGJEYXRhYmFzZUVycm9y
KQogICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKFdlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0YWJh
c2VFcnJvcikpOwogfQogCi12b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJDdXJzb3JCYWNrZW5kLCBQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQordm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vyc29y
QmFja2VuZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1h
cnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSkKIHsKICAgICBtX2RpZENvbXBs
ZXRlID0gdHJ1ZTsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJDdXJzb3JJ
bXBsKGlkYkN1cnNvckJhY2tlbmQpLCBrZXksIHByaW1hcnlLZXksIHZhbHVlKTsKKyAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJDdXJzb3JJbXBsKGlkYkN1cnNvckJhY2tlbmQp
LCBrZXksIHByaW1hcnlLZXksIFdlYkRhdGEodmFsdWUpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFj
a3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
PiBiYWNrZW5kLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTEwMywx
NSArMTAzLDE1IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IGRvbVN0cmluZ0xpc3QpCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
cyhXZWJET01TdHJpbmdMaXN0KGRvbVN0cmluZ0xpc3QpKTsKIH0KIAotdm9pZCBJREJDYWxsYmFj
a3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUpCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKQogewogICAgIG1fZGlkQ29tcGxldGUgPSB0cnVl
OwotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViRGF0
YSh2YWx1ZSkpOwogfQogCi12b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgUGFzc1Jl
ZlB0cjxJREJLZXk+IGtleSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3ZvaWQgSURCQ2Fs
bGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7Ci0gICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGtleSwga2V5UGF0
aCk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJEYXRhKHZhbHVlKSwga2V5LCBrZXlQ
YXRoKTsKICAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKIH0KIApAQCAtMTI3LDI1ICsxMjcsMjUg
QEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKCkKICAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKCk7CiB9CiAKLXZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQordm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBw
cmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUpCiB7CiAgICAgbV9kaWRD
b21wbGV0ZSA9IHRydWU7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhrZXksIHByaW1hcnlL
ZXksIHZhbHVlKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKGtleSwgcHJpbWFyeUtleSwg
V2ViRGF0YSh2YWx1ZSkpOwogfQogCi12b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NX
aXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SURCS2V5PiA+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcykKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6
Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKQogewogICAgIG1fZGlkQ29tcGxldGUg
PSB0cnVlOwogICAgIGNvbnN0IHNpemVfdCBuID0ga2V5cy5zaXplKCk7CiAKICAgICBXZWJWZWN0
b3I8V2ViSURCS2V5PiB3ZWJLZXlzKG4pOwogICAgIFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYlBy
aW1hcnlLZXlzKG4pOwotICAgIFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHdl
YlZhbHVlcyhuKTsKKyAgICBXZWJWZWN0b3I8V2ViRGF0YT4gd2ViVmFsdWVzKG4pOwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICAgd2ViS2V5c1tpXSA9IFdl
YklEQktleShrZXlzW2ldKTsKICAgICAgICAgd2ViUHJpbWFyeUtleXNbaV0gPSBXZWJJREJLZXko
cHJpbWFyeUtleXNbaV0pOwotICAgICAgICB3ZWJWYWx1ZXNbaV0gPSBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUodmFsdWVzW2ldKTsKKyAgICAgICAgd2ViVmFsdWVzW2ldID0gV2ViRGF0YSh2YWx1
ZXNbaV0pOwogICAgIH0KIAogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3NXaXRoUHJlZmV0Y2go
d2ViS2V5cywgd2ViUHJpbWFyeUtleXMsIHdlYlZhbHVlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCA3MWY5ZjA0ZDBiZjM1ODMzMjI3
MTc4Y2ZjZWI0N2VkZjUzZjkxMzc2Li42MjQ4M2ViNjFlNWE0MTdmNjY4ZGRmNjM0MzMzMzZhMTlh
YjA4MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFj
a3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmgKQEAgLTQ4LDE1ICs0OCwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgb25F
cnJvcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KTsKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6RE9NU3RyaW5nTGlzdD4pOwotICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IFdlYkNv
cmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5Pik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwotICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoaW50NjRfdCk7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcygpOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4g
cHJpbWFyeUtleSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsK
LSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OklEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KTsKKyAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktl
eT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiA+JiB2YWx1ZXMpOwogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlz
dGluZ1ZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBv
bGRWZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4sIGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKaW5kZXgg
NDZjZDQyMzk3NGI4NDBkYjI5YmQ5OGEyZDI2ODMxNWYwMWM3ZGE1Mi4uZjU2YWY3MTM3NWZiM2Zj
ZGM3OTZjMzE5ZjQ2NWQ5N2U3YjhmZmZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCkBAIC0zMSwxMCArMzEsOCBAQAog
I2luY2x1ZGUgIklEQkFueS5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IklEQktleS5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IldlYklEQkNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKLSNpbmNsdWRl
ICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1w
bC5jcHAKaW5kZXggNjFmNTVjODRkY2Y4ODcwZTcxZGFkNTFhYTJiYzVhNTVjZjYzNjgyMi4uMDVm
Yzg4ZjViY2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3NmM4NDRlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFi
YXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKLSNpbmNsdWRlICJXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRGF0YS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFdlYklEQkNhbGxiYWNr
c0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJET01TdHJpbmdMaXN0JiBkb21TdHJpbmdMaXN0KQog
ICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZG9tU3RyaW5nTGlzdCk7CiB9CiAKLXZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkN1cnNvciogY3Vyc29yLCBjb25zdCBX
ZWJJREJLZXkmIGtleSwgY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlKQordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1
Y2Nlc3MoV2ViSURCQ3Vyc29yKiBjdXJzb3IsIGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBX
ZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYkRhdGEmIHZhbHVlKQogewogICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MoSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIo
Y3Vyc29yKSksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogfQpAQCAtODQsMTQgKzg0LDE0IEBA
IHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYga2V5
KQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5KTsKIH0KIAotdm9pZCBXZWJJREJDYWxs
YmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUpCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhj
b25zdCBXZWJEYXRhJiB2YWx1ZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyh2YWx1ZSk7CiB9
CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtl
eSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1w
bDo6b25TdWNjZXNzKGNvbnN0IFdlYkRhdGEmIHZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtleSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNj
ZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5LCBrZXlQYXRoKTsKKyAgICBtX2NhbGxiYWNr
cy0+b25TdWNjZXNzKHZhbHVlLCBrZXksIGtleVBhdGgpOwogfQogCiB2b2lkIFdlYklEQkNhbGxi
YWNrc0ltcGw6Om9uU3VjY2Vzcyhsb25nIGxvbmcgdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAg
dm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoKQogICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoKTsKIH0KIAotdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29u
c3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6
b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlL
ZXksIGNvbnN0IFdlYkRhdGEmIHZhbHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
a2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKaW5kZXggMTZkMDJmODBmODNjNjM1MGM5ZGViMGEw
NmIyMWM4ZTM2ODMyMjk0ZC4uMGNmN2NjYTZlY2FiYTVlZDBkY2NjMTBjMmFiZjkxMDVmZmVkZGNi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0lt
cGwuaApAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBvbkVy
cm9yKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFdlYklEQkN1cnNvciosIGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJpbWFy
eUtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhXZWJJREJDdXJzb3IqLCBjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJL
ZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYkRhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFdlYklEQkRhdGFiYXNlKiwgY29uc3QgV2ViSURCTWV0YWRhdGEmKTsKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYpOwotICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7Ci0gICAgdmlydHVhbCB2b2lk
IG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJL
ZXkmLCBjb25zdCBXZWJJREJLZXlQYXRoJik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhj
b25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3Qg
V2ViRGF0YSYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViRGF0YSYsIGNv
bnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwg
Y29uc3QgV2ViRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MobG9uZyBsb25nKTsK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZChsb25nIGxvbmcgb2xkVmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKaW5kZXggOTFkOTRiNDA4MGU3ODRj
MjZlZTUyYjk3YzY1NDA0ZWFiNjA2M2E5ZS4uZTYzY2UyYTg2YjJhOTNkNmIyMmU2ZjgwNDM4YmZk
NzgyYmQ5MTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJB
Ym9ydE9uQ29ycnVwdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApAQCAtNTYsMTggKzU2LDE4IEBAIHB1YmxpYzoKICAg
ICAgICAgbV93YXNFcnJvckNhbGxlZCA9IHRydWU7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJ
REJEYXRhYmFzZU1ldGFkYXRhJikKICAgICB7CiAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsK
ICAgICB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4p
IE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSBPVkVSUklE
RSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QpIE9WRVJSSURFIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikg
T1ZFUlJJREUgeyB9OworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+JikgT1ZFUlJJREUgeyB9CiBw
cml2YXRlOgogICAgIE1vY2tJREJDYWxsYmFja3MoKSA6IG1fd2FzRXJyb3JDYWxsZWQoZmFsc2Up
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFi
YXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRh
YmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCA1NzcyNDFlMTlkZGU5MDY4ZDIyNWVjZDI5OWU0OWY2
ZTlkZGY5MjUyLi40NWI5ZTJiYjJiZmFjYTFmMGFjMTE5YjdmNTVlMmE1YzQxYjE0NWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNr
ZW5kVGVzdC5jcHAKQEAgLTY5LDE4ICs2OSwxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1
YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pikg
T1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFz
ZU1ldGFkYXRhJikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fd2FzU3VjY2Vzc0RCQ2FsbGVk
ID0gdHJ1ZTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QktleT4pIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OworICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoaW50NjRfdCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPikgT1ZFUlJJREUgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRo
UHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVm
UHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiA+JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBP
VkVSUklERSB7IH07CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4mKSBPVkVSUklERSB7IH0KIHBy
aXZhdGU6CiAgICAgTW9ja0lEQkNhbGxiYWNrcygpCiAgICAgICAgIDogbV93YXNTdWNjZXNzREJD
YWxsZWQoZmFsc2UpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJSZXF1ZXN0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJl
cXVlc3RUZXN0LmNwcAppbmRleCA3YThmZGJjNTMxZmRhNThlZTQxYTQ2MTU0ZDI0ODVlMzRmNGU1
NGE5Li43ZmI0MDI2ZDliMDgxZmJlYWEyMGZmOGE0NzI0MDkxZTdlOTYwYmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcApAQCAtOTIsMTEg
KzkyLDExIEBAIFRFU1RfRihJREJSZXF1ZXN0VGVzdCwgRXZlbnRzQWZ0ZXJTdG9wcGluZykKICAg
ICAvLyBFbnN1cmUgbm9uZSBvZiB0aGUgZm9sbG93aW5nIHJhaXNlIGFzc2VydGlvbnMgaW4gc3Rv
cHBlZCBzdGF0ZToKICAgICByZXF1ZXN0LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgIkRlc2NyaXB0aW9uIGdvZXMgaGVy
ZS4iKSk7CiAgICAgcmVxdWVzdC0+b25TdWNjZXNzKERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpKTsK
LSAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlPigpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCks
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgIHJlcXVlc3QtPm9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KCksIElEQktleTo6Y3Jl
YXRlSW52YWxpZCgpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgMCk7CiAgICAgcmVxdWVzdC0+
b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpKTsKLSAgICByZXF1ZXN0LT5vblN1Y2Nl
c3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7Ci0gICAgcmVxdWVzdC0+b25T
dWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCksIElEQktleTo6Y3JlYXRl
SW52YWxpZCgpLCBJREJLZXlQYXRoKCkpOwotICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhJREJLZXk6
OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4oMCkpOworICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4oMCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXlQYXRoKCkpOwor
ICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5Ojpj
cmVhdGVJbnZhbGlkKCksIDApOwogfQogCiBURVNUX0YoSURCUmVxdWVzdFRlc3QsIEFib3J0RXJy
b3JBZnRlckFib3J0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189624</attachid>
            <date>2013-02-21 15:53:57 -0800</date>
            <delta_ts>2013-02-21 23:41:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110398-20130221155018.patch</filename>
            <type>text/plain</type>
            <size>47041</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhlMTE2ZGNlN2YxMzQ5
YjVkYzA1MzBjNzFiYjMxZGFlNWMzYTZkOS4uODdkMWQzYjllOTU5Nzk3NTY4ZmE2MGRiMTE0Yzhl
NmQwOGNmY2UyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTIwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElt
cGxlbWVudCBTaGFyZWRCdWZmZXIgdmVyc2lvbiBvZiBwdXQoKSAvIG9uU3VjY2VzcygpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzOTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFRoaXMgYXZvaWRzIGFsbCB1
bm5lY2Vzc2FyeSBkYXRhIGNvcGllcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YKKyAgICAgICAgSW5k
ZXhlZERCIHByb3BlciwgYW5kIHJlbW92ZXMgYWxsIHJlZmVyZW5jZXMgdG8KKyAgICAgICAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGZyb20gdGhlIEluZGV4ZWREQiAiYmFja2VuZCIuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIpOiBOZXcgdmVyc2lvbiBvZiBkZXNlcmlhbGl6
ZUlEQlZhbHVlIHdoaWNoIHRha2VzIFNoYXJlZEJ1ZmZlci4KKwogMjAxMy0wMi0yMCAgVGFrYXNo
aSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1JlZmFjdG9yaW5nXSBN
YWtlIG1fc3RhdGUgYW4gb24tc3RhY2sgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDA4YzkzZDMwMTllY2UyZGEzZjc1ZDU4NDkzMzU5MWFkZjU2ZTUyYTEuLjk4MzI0MzY3YmMy
N2MwNzM0ZjU5ZjI2MWUyNTdhM2IyNTQxMjU4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDItMjAgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IFNoYXJlZEJ1ZmZlciB2
ZXJzaW9uIG9mIHB1dCgpIC8gb25TdWNjZXNzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCisKKyAgICAgICAgUHJveHkgbmV3IFNoYXJlZEJ1ZmZlciBjYWxscyB0byBXZWJJREJD
YWxsYmFja3MgdGhyb3VnaAorICAgICAgICB0byB0aGUgbmV3IFNoYXJlZEJ1ZmZlci1iYXNlZCBJ
REJDYWxsYmFja3MuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ3Vyc29yLmg6CisgICAgICAg
ICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJh
Y2tzUHJveHk6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5
OjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94
eS5oOgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzSW1wbDo6
b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oOgorICAgICAg
ICAoV2ViSURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgICogdGVzdHMvSURCQWJvcnRPbkNvcnJ1
cHRUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uU3VjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJl
ZmV0Y2gpOgorICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVF9G
KToKKwogMjAxMy0wMi0yMCAgUGF3ZcWCIEhhamRhbiwgSnIuICA8cGhhamRhbi5qckBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQWRkIGd5cCBvcHRpb24gdG8gc3dpdGNoIEVOQUJMRShTUUxfREFU
QUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmNwcAppbmRleCA1YjczOTA0YTgyZjM5NzAyMDRiNGU4Yjc0MWRiOWJmMjQwZTJl
MTQxLi4zNzBjYzE1OTVmZmZmN2NmYTE5ZTA0NzFmYTRhZWIyNTczOTNjZmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAK
QEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3Rv
cmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpbwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgcmVjb3Jk
KQorYm9vbCBJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIHJlY29yZCkKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkIik7CiAgICAgTGV2ZWxEQlRyYW5z
YWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
OjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTE0MDcsNyArMTQwNyw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAg
IHZpcnR1YWwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZSgpIGNvbnN0IHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiAqbmV3IFZlY3Rvcjx1aW50OF90PigpOyB9CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpOwog
CiBwcml2YXRlOgpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8v
IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCi0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0KKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFZhbHVlOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHByaXZhdGU6
CkBAIC0xNDc3LDcgKzE0NzcsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBWZWN0
b3I8dWludDhfdD4gbV9jdXJyZW50VmFsdWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9j
dXJyZW50VmFsdWU7CiB9OwogCiBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJl
bnRSb3coKQpAQCAtMTUwNCw5ICsxNTA0LDkgQEAgYm9vbCBPYmplY3RTdG9yZUN1cnNvckltcGw6
OmxvYWRDdXJyZW50Um93KCkKICAgICAvLyBGSVhNRTogVGhpcyByZS1lbmNvZGVzIHdoYXQgd2Fz
IGp1c3QgZGVjb2RlZDsgdHJ5IGFuZCBvcHRpbWl6ZS4KICAgICBtX3JlY29yZElkZW50aWZpZXIu
cmVzZXQoZW5jb2RlSURCS2V5KCptX2N1cnJlbnRLZXkpLCB2ZXJzaW9uKTsKIAotICAgIG1fY3Vy
cmVudFZhbHVlLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50VmFsdWUuYXBwZW5kUmFuZ2UodmFsdWVQ
b3NpdGlvbiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faXRlcmF0b3ItPnZhbHVlKCkuZW5k
KCkpKTsKLQorICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICB2YWx1ZS5hcHBlbmQodmFsdWVQ
b3NpdGlvbiwgbV9pdGVyYXRvci0+dmFsdWUoKS5lbmQoKSAtIHZhbHVlUG9zaXRpb24pOworICAg
IG1fY3VycmVudFZhbHVlID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih2YWx1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiB2YWx1ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAq
bmV3IFZlY3Rvcjx1aW50OF90PigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVy
biBtX3ByaW1hcnlLZXk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IElEQkJhY2tpbmdTdG9yZTo6UmVj
b3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiBtX3JlY29yZElkZW50aWZpZXI7IH0KICAgICB2aXJ0dWFsIGJvb2wgbG9h
ZEN1cnJlbnRSb3coKTsKQEAgLTE2MDgsNyArMTYwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRWYWx1ZTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXko
KSBjb25zdCB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IElEQkJh
Y2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcigpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBtX3JlY29yZElkZW50aWZpZXI7IH0KICAgICBi
b29sIGxvYWRDdXJyZW50Um93KCk7CkBAIC0xNjI4LDcgKzE2MjgsNyBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIFJlZlB0cjxJREJLZXk+IG1fcHJpbWFyeUtleTsKLSAgICBWZWN0b3I8dWludDhf
dD4gbV9jdXJyZW50VmFsdWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXJyZW50VmFs
dWU7CiAgICAgVmVjdG9yPGNoYXI+IG1fcHJpbWFyeUxldmVsREJLZXk7CiB9OwogCkBAIC0xNjcy
LDggKzE2NzIsOCBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAg
IH0KIAogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVEYXRhVmVyc2lvbjsKLSAgICBjb25zdCBjaGFy
KiB0ID0gZGVjb2RlVmFySW50KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIG9iamVjdFN0
b3JlRGF0YVZlcnNpb24pOwotICAgIGlmICghdCkgeworICAgIHZhbHVlUG9zaXRpb24gPSBkZWNv
ZGVWYXJJbnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgb2JqZWN0U3RvcmVEYXRhVmVy
c2lvbik7CisgICAgaWYgKCF2YWx1ZVBvc2l0aW9uKSB7CiAgICAgICAgIElOVEVSTkFMX1JFQURf
RVJST1IoTG9hZEN1cnJlbnRSb3cpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MTY4Myw4ICsxNjgzLDkgQEAgYm9vbCBJbmRleEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fY3VycmVudFZhbHVlLmNsZWFy
KCk7Ci0gICAgbV9jdXJyZW50VmFsdWUuYXBwZW5kUmFuZ2UodCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KHJlc3VsdC5lbmQoKSkpOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICB2YWx1
ZS5hcHBlbmQodmFsdWVQb3NpdGlvbiwgcmVzdWx0LmVuZCgpIC0gdmFsdWVQb3NpdGlvbik7Cisg
ICAgbV9jdXJyZW50VmFsdWUgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHZhbHVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBjOGFmNzY4ZGM3ZjAzZDU0MzBhOTEzOWEwY2U1
YmMyMGJiYjE4OTkxLi44YjQ5YmM4YTQyMWM2MDYxYmVjYWY2MDdiY2ViOGUzMWMwNjc3NTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDY0X3QgbV92ZXJzaW9u
OwogICAgIH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgSURCS2V5JiwgVmVjdG9yPHVpbnQ4X3Q+JiByZWNvcmQpIFdBUk5fVU5VU0VEX1JFVFVS
TjsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
S2V5JiwgVmVjdG9yPGNoYXI+JiByZWNvcmQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2aXJ0
dWFsIGJvb2wgcHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgV0FSTl9VTlVTRURf
UkVUVVJOOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFJlY29yZElkZW50aWZpZXImKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gY2xvbmUoKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRLZXk7IH0KLSAgICAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlKCkg
Y29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1
ZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiBy
ZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAg
ICAgICAgIHZpcnR1YWwgfkN1cnNvcigpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1
cnJlbnRSb3coKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oCmluZGV4IDMzM2Q3NjY2YzViM2ZjMTYxMjI2ZDllMjYwYTdiYTk3YjMyYTM0
YjEuLjA4OGU2OGU4YjJjN2EyMjRjNzFlMzhiYmFiZmViZmM2ZjljMzZmOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQktleS5o
IgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC01MCwxMyArNTAsMTMgQEAg
cHVibGljOgogICAgIC8vIEZyb20gSURCRmFjdG9yeS53ZWJraXRHZXREYXRhYmFzZU5hbWVzKCkK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pID0g
MDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4Lm9wZW5DdXJzb3IoKSwgSURC
SW5kZXgub3BlbktleUN1cnNvcigpCi0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIC8vIEZyb20g
SURCT2JqZWN0U3RvcmUuYWRkKCkvcHV0KCksIElEQkluZGV4LmdldEtleSgpCiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKICAgICAvLyBGcm9tIElE
Qk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpL2NvdW50KCksIGFuZCB2YXJpb3VzIG1ldGhvZHMg
dGhhdCB5aWVsZCBudWxsL3VuZGVmaW5lZC4KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgLy8gRnJvbSBJREJP
YmplY3RTdG9yZS9JREJJbmRleC5nZXQoKSAod2l0aCBrZXkgaW5qZWN0aW9uKQotICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNz
UmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5Piwg
Y29uc3QgSURCS2V5UGF0aCYpID0gMDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQklu
ZGV4LmNvdW50KCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QgdmFsdWUpID0g
MDsKIApAQCAtNjQsOSArNjQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cygpID0gMDsKIAogICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCi0g
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwog
ICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCi0gICAgdmlydHVhbCB2
b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYg
a2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKSA9IDA7CiAgICAg
Ly8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKS9kZWxldGVEYXRhYmFzZSgpCiAgICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApp
bmRleCBhNTczMzg0NTA1MjlhMTBkNDU5MzRiYTRhZWQ1MGE0YmMwYTdlYmU1Li4zMzJkOTAxNDI1
YWIxYmFhNGE0NGQ4ODljMWQ1ZDIxMmQ2MjgwZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0z
Nyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYWNp
bmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCi0jaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OkN1cnNvckFkdmFuY2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25C
YWNrZW5kCiAgICAgSURCX1RSQUNFKCJDdXJzb3JBZHZhbmNlT3BlcmF0aW9uIik7CiAgICAgaWYg
KCFtX2N1cnNvci0+bV9jdXJzb3IgfHwgIW1fY3Vyc29yLT5tX2N1cnNvci0+YWR2YW5jZShtX2Nv
dW50KSkgewogICAgICAgICBtX2N1cnNvci0+bV9jdXJzb3IgPSAwOwotICAgICAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KDApKTsK
KyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIq
PigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0o
SURCVHJhbnNhY3Rpb25CYWNrZQogICAgIElEQl9UUkFDRSgiQ3Vyc29ySXRlcmF0aW9uT3BlcmF0
aW9uIik7CiAgICAgaWYgKCFtX2N1cnNvci0+bV9jdXJzb3IgfHwgIW1fY3Vyc29yLT5tX2N1cnNv
ci0+Y29udGludWVGdW5jdGlvbihtX2tleS5nZXQoKSkpIHsKICAgICAgICAgbV9jdXJzb3ItPm1f
Y3Vyc29yID0gMDsKLSAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqPigwKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3Moc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oMCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29y
UHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3QKIAogICAgIFZl
Y3RvcjxSZWZQdHI8SURCS2V5PiA+IGZvdW5kS2V5czsKICAgICBWZWN0b3I8UmVmUHRyPElEQktl
eT4gPiBmb3VuZFByaW1hcnlLZXlzOwotICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+IGZvdW5kVmFsdWVzOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+
IGZvdW5kVmFsdWVzOwogCiAgICAgaWYgKG1fY3Vyc29yLT5tX2N1cnNvcikKICAgICAgICAgbV9j
dXJzb3ItPm1fc2F2ZWRDdXJzb3IgPSBtX2N1cnNvci0+bV9jdXJzb3ItPmNsb25lKCk7CkBAIC0x
OTcsMTEgKzE5NywxMSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRj
aEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdAogCiAgICAgICAgIHN3aXRj
aCAobV9jdXJzb3ItPm1fY3Vyc29yVHlwZSkgewogICAgICAgICBjYXNlIEtleU9ubHk6Ci0gICAg
ICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
KSk7CisgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBLZXlBbmRWYWx1ZToKLSAgICAg
ICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkuc2l6ZSgp
OwotICAgICAgICAgICAgZm91bmRWYWx1ZXMuYXBwZW5kKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlRnJvbVdpcmVCeXRlcyhtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkpKTsKKyAgICAg
ICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCktPnNpemUo
KTsKKyAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChtX2N1cnNvci0+bV9jdXJzb3ItPnZh
bHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdAogICAgIH0KIAogICAgIGlmICghZm91bmRLZXlzLnNpemUoKSkgewotICAgICAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSo+KDApKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFy
ZWRCdWZmZXIqPigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmlu
ZGV4IDliZDIwNmNkMzFhYmM3NGFjNzk4YzJkNmJjN2UxNzU0NmJjYmNiMDAuLjY5OWUyZjU4ZDZk
MTc2MjFmNGNhMTI0ZmQyZWM4YjBiMTMzMTJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtMzMsNyAr
MzMsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCi0j
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAg
ICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPmtleSgp
OyB9CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N1cnNvci0+cHJpbWFyeUtleSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/
IDAgOiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMobV9jdXJzb3It
PnZhbHVlKCkpOyB9CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+dmFsdWUo
KTsgfQogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aAppbmRleCBkZmIxOTlhNWY1NWYzOTE2YWU3MmIwZTg3Y2ZjMjJmNmNkYzBmZjA1Li5hZWIyOTc2
YjA4NjJhNzlhZDQ0MzgxM2U5ZTc2Y2ZhMjZlMzkwZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIElEQkFueTsKIGNsYXNzIElEQkNhbGxiYWNrczsK
IGNsYXNzIElEQktleTsKIGNsYXNzIElEQlJlcXVlc3Q7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKaW5kZXggYjI5ZjkyY2E3MDljNzFhYjRkOGE1MjExZjZkMjhmM2I5NTFmZTFmZS4uOTgwZDE0
ZjRmZTY1OTY2ZTIwNWYxNjQ3MjA3NmRiNTg4NzAwZGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICBib29sIG9rOwogICAgIGlmICht
X2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7CiAgICAgICAgIC8vIE9i
amVjdCBTdG9yZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgICAgIFZlY3Rvcjx1aW50OF90PiB2
YWx1ZTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IHZhbHVlOwogICAgICAgICBvayA9IG1fYmFja2lu
Z1N0b3JlLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCAqa2V5LCB2YWx1ZSk7CiAgICAgICAgIGlm
ICghb2spIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwg
ZXJyb3IgaW4gZ2V0UmVjb3JkLiIpKTsKQEAgLTczNiwxMSArNzM2LDExIEBAIHZvaWQgR2V0T3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fYXV0b0luY3JlbWVudCAmJiAhbV9rZXlQYXRoLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSksIGtleSwgbV9rZXlQYXRoKTsK
KyAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9wdFZl
Y3Rvcih2YWx1ZSksIGtleSwgbV9rZXlQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih2YWx1ZSkpOwogICAgICAgICByZXR1
cm47CiAKICAgICB9CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZv
cm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAgICAgfQogCiAgICAg
Ly8gSW5kZXggUmVmZXJlbmNlZCBWYWx1ZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHZhbHVlOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKICAgICBvayA9IG1fYmFj
a2luZ1N0b3JlLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCAqcHJpbWFyeUtleSwgdmFsdWUpOwog
ICAgIGlmICghb2spIHsKICAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5h
bCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOwpAQCAtNzc0LDEwICs3NzQsMTAgQEAgdm9pZCBHZXRP
cGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24p
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fYXV0b0luY3JlbWVudCAmJiAhbV9r
ZXlQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSwgcHJpbWFyeUtleSwg
bV9rZXlQYXRoKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhTaGFyZWRCdWZmZXI6
OmFkb3B0VmVjdG9yKHZhbHVlKSwgcHJpbWFyeUtleSwgbV9rZXlQYXRoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih2YWx1ZSkpOwogfQogCiB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRl
eEtleXM+JiBpbmRleEtleXMpCkBAIC05NjQsNyArOTY0LDcgQEAgdm9pZCBPcGVuQ3Vyc29yT3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQog
ICAgIH0KIAogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7Ci0gICAgICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oMCkpOwor
ICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+
KDApKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA4ZDc3ODBmYjNkZmEyNGIxZmNkMmVj
YTJkNjU1YTcxZDhkYTczYWI0Li4yYjEzNDM5MTE4NDM0M2FlOWNmYTA0ODUzODAzZjA3MTU5YTg2
MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcApAQCAtMjgzLDE0ICsyODMsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogICAgIGVucXVldWVFdmVudChj
cmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6Om9u
U3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQogewogICAgIElEQl9UUkFDRSgiSURCUmVxdWVz
dDo6b25TdWNjZXNzKElEQkN1cnNvcikiKTsKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1f
cmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFs
dWUocmVxdWVzdFN0YXRlKCksIHNlcmlhbGl6ZWRWYWx1ZSk7CisgICAgU2NyaXB0VmFsdWUgdmFs
dWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOwog
ICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBjdXJz
b3I7CiAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKQEAgLTMyMiwxNCArMzIyLDE0IEBAIHZv
aWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiAgICAg
ZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSkKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiB2YWx1ZUJ1ZmZlcikKIHsKLSAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3Vj
Y2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWUpIik7CisgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoU2hhcmVkQnVmZmVyKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUo
bV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJW
YWx1ZShyZXF1ZXN0U3RhdGUoKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBTY3JpcHRW
YWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHZh
bHVlQnVmZmVyKTsKICAgICBvblN1Y2Nlc3NJbnRlcm5hbCh2YWx1ZSk7CiB9CiAKQEAgLTM0Niw5
ICszNDYsOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gZWZmZWN0aXZlT2Jq
ZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZQogfQogI2VuZGlmCiAKLXZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQordm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyLCBQYXNzUmVmUHRyPElEQktleT4gcHJw
UHJpbWFyeUtleSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKLSAgICBJREJfVFJBQ0Uo
IklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWUsIElEQktleSwgSURC
S2V5UGF0aCkiKTsKKyAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhTaGFyZWRC
dWZmZXIsIElEQktleSwgSURCS2V5UGF0aCkiKTsKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIElEQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwU2VyaWFs
aXplZFNjcmlwdAogICAgIEFTU0VSVChrZXlQYXRoID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKG1f
c291cmNlKS0+a2V5UGF0aCgpKTsKICNlbmRpZgogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUg
c2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxp
emVJREJWYWx1ZShyZXF1ZXN0U3RhdGUoKSwgcHJwU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAg
ICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0
YXRlKCksIHZhbHVlQnVmZmVyKTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBw
cnBQcmltYXJ5S2V5OwogI2lmbmRlZiBOREVCVUcKQEAgLTM3MCwxMiArMzcwLDE4IEBAIHZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBw
cnBTZXJpYWxpemVkU2NyaXB0CiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKGludDY0X3Qg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51
bWJlclZhbHVlKHZhbHVlKSk7CisgICAgcmV0dXJuIG9uU3VjY2Vzc0ludGVybmFsKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6bnVtYmVyVmFsdWUodmFsdWUpKTsKIH0KIAogdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoKQogewotICAgIHJldHVybiBvblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp1bmRlZmluZWRWYWx1ZSgpKTsKKyAgICByZXR1cm4gb25TdWNjZXNzSW50ZXJuYWwoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpKTsKK30KKwordm9pZCBJREJSZXF1
ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUpCit7CisgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0
ZSk7CisgICAgcmV0dXJuIG9uU3VjY2Vzc0ludGVybmFsKGRlc2VyaWFsaXplSURCVmFsdWUocmVx
dWVzdFN0YXRlKCksIHZhbHVlKSk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50
ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQpAQCAtMzg4LDE0ICszOTQsMTQgQEAgdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUp
CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJS
ZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxp
emVkVmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcikKIHsKICAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhrZXks
IHByaW1hcnlLZXksIHZhbHVlKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1
ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZShy
ZXF1ZXN0U3RhdGUoKSwgc2VyaWFsaXplZFZhbHVlKTsKKyAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9
IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CiAgICAg
QVNTRVJUKG1fcGVuZGluZ0N1cnNvcik7CiAgICAgc2V0UmVzdWx0Q3Vyc29yKG1fcGVuZGluZ0N1
cnNvci5yZWxlYXNlKCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogICAgIGVucXVldWVFdmVu
dChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggMGIyZWJkOGFkMzAyOTAyZWUzNTNjODVkNTNiYWZjNGVl
MDNmYjAyYi4uZDA2N2ViMjlhODg1NTc5MmMwYzEyNTU3NzVjZDAyNDg4OGM5NTFiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtODYsMTQg
Kzg2LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJREJDYWxsYmFja3MKICAgICB2aXJ0dWFsIHZvaWQg
b25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KTsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwotICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pOwotICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJik7CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIGNv
bnN0IElEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QpOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
c1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4g
Q2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4KKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CisgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4gQ2Fs
bGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4KIAogICAgIC8vIEFjdGl2
ZURPTU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBP
VkVSUklERTsKQEAgLTEyMCw2ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSURCUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rpb24qKTsKICAgICB2
b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEVucXVldWVFdmVudCgpIGNvbnN0OworICAgIHZvaWQgb25TdWNjZXNzSW50ZXJuYWwoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2b2lkIG9uU3VjY2Vzc0ludGVy
bmFsKGNvbnN0IFNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3Jlc3VsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAKaW5kZXggN2FiZTgwMjUxMTRhYzZjNGE3MGZiYzMwYjBmYWMyZTE5NzI2NTM5OS4uNDk2ZGQ2
NGUzNzQ3Nzc2NzMzYzFlNzM4NTEyNzQxZDI2YWZhNWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVk
ZSAiSURCVHJhY2luZy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaW5jbHVkZSA8
cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmg+CkBAIC0zMDEsNiArMzAyLDIwIEBAIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFs
dWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2VyaWFsCiAgICAg
cmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdWxsKCkpOwogfQogCitT
Y3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSogcmVx
dWVzdFN0YXRlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHJwQnVmZmVyKQoreworICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKKyAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgIC8v
IEZJWE1FOiBUaGUgZXh0cmEgY29weSBoZXJlIGNhbiBiZSBlbGltaW5hdGVkIGJ5IGFsbG93aW5n
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byB0YWtlIGEgcmF3IGNvbnN0IGNoYXIqIG9yIGNvbnN0
IHVpbnQ4X3QqLgorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CisgICAgICAgIHZhbHVl
LmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUpOworICAgICAgICByZXR1cm4gU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dp
bmcpOworICAgIH0KKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBq
c051bGwoKSk7Cit9CisKIFNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVz
dFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkpCiB7CiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggMjMzYmFkNWYyNWIwNzhj
NjRmNDhkMDVmOGU3OGQzOTU0MDRkYWU2Ni4uZTFhMWZlNjliZTUzMzI4NDk2NzViZGRjOTQxMzQ1
NDU1ZTViMTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuaApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
IAorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBET01SZXF1ZXN0U3RhdGU7CiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJLZXlQYXRo
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5
RnJvbVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKIApAQCAtNDYsNiArNDcs
NyBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQ
YXNzUmVmUHRyPElEQktleT4sIFNjcmlwdFZhbAogUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2Ny
aXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBib29sIGNhbkluamVjdElEQktleUludG9T
Y3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElE
QktleVBhdGgmKTsKIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0
YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKK1NjcmlwdFZhbHVlIGRl
c2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+KTsKIFNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0
YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKIFBhc3NSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1
ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5k
ZXggMzg4NTI0ZDUzOTczZTM4ZjUxOWE4MGI2MTVhNDQ0N2UyYzNhM2JhMi4uZGNiZGNmOWU3MmFj
ZDdkZDQyMGE0YTgwZjA2ZWFlMmE1OWZhYzMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjU0LDYgKzI1NSwyMSBAQCBTY3JpcHRWYWx1ZSBkZXNlcmlh
bGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbAogICAgIHJldHVybiBTY3JpcHRWYWx1ZSh2ODo6TnVsbCgpKTsKIH0KIAorU2NyaXB0VmFs
dWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcHJwQnVmZmVyKQoreworICAgIEFTU0VSVCh2ODo6Q29udGV4dDo6SW5D
b250ZXh0KCkpOworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwcnBCdWZmZXI7CisgICAgaWYgKGJ1ZmZlcikgeworICAg
ICAgICAvLyBGSVhNRTogVGhlIGV4dHJhIGNvcHkgaGVyZSBjYW4gYmUgZWxpbWluYXRlZCBieSBh
bGxvd2luZyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdG8gdGFrZSBhIHJhdyBjb25zdCBjaGFyKiBv
ciBjb25zdCB1aW50OF90Ki4KKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlOworICAgICAg
ICB2YWx1ZS5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoKSk7CisgICAgfQorICAg
IHJldHVybiBTY3JpcHRWYWx1ZSh2ODo6TnVsbCgpKTsKK30KKwogYm9vbCBpbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewog
ICAgIElEQl9UUkFDRSgiaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggN2FkZjFi
MmFlYTA1ODA1ZjYyZjc3MjRiYjE2Yjg1NzY5NjkyZTRlNC4uNGJhMzk1OGI4ZjkxNTFiMDE2NzBm
NmE0NGJiMTAwMWJkYTIzYzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBET01SZXF1ZXN0
U3RhdGU7CiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBQYXNzUmVmUHRyPElEQktleT4g
Y3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAKQEAgLTQ1LDYg
KzQ2LDcgQEAgYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRl
KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBTY3JpcHRWYWwKIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0
IFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogYm9vbCBjYW5JbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25z
dCBJREJLZXlQYXRoJik7CiBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVl
c3RTdGF0ZSosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CitTY3JpcHRWYWx1
ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPik7CiBTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVl
c3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7CiBQYXNzUmVmUHRyPElEQktleT4gc2NyaXB0
VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oCmluZGV4IDhlMzg5
NTkyNjllNzExYzI3MDY2Njk3MjMyYjNhNGRhMmU5MzU0Y2UuLjE4YWNlZjMxODY4ZmZlM2Q2YTg0
OGZmNTIzNTU5MTUzZmUwMjE4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkN1cnNvci5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQktl
eS5oIgotI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwCmluZGV4IGVhOGY4NTRkNWQ1NThiZjI4NDQ2YjczYjcwZGYyYzMzYWJlNjA0NTMu
LmVjMDg1ZjZiYjFhOTVhNTY0MTc1Y2Y1OGEwNDI1NjMxNjNiMDVmZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJL
ZXkuaCIKICNpbmNsdWRlICJXZWJJREJNZXRhZGF0YS5oIgotI2luY2x1ZGUgIldlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJEYXRhLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC03NywxMCArNzcsMTAgQEAgdm9pZCBJREJDYWxsYmFja3NQ
cm94eTo6b25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGlkYkRhdGFiYXNlRXJy
b3IpCiAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoV2ViSURCRGF0YWJhc2VFcnJvcihpZGJEYXRh
YmFzZUVycm9yKSk7CiB9CiAKLXZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGlkYkN1cnNvckJhY2tlbmQsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJDdXJz
b3JCYWNrZW5kLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKQogewogICAgIG1fZGlkQ29t
cGxldGUgPSB0cnVlOwotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYklEQkN1cnNv
ckltcGwoaWRiQ3Vyc29yQmFja2VuZCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOworICAgIG1f
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYklEQkN1cnNvckltcGwoaWRiQ3Vyc29yQmFja2Vu
ZCksIGtleSwgcHJpbWFyeUtleSwgV2ViRGF0YSh2YWx1ZSkpOwogfQogCiB2b2lkIElEQkNhbGxi
YWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+IGJhY2tlbmQsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQpAQCAtMTAz
LDE1ICsxMDMsMTUgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gZG9tU3RyaW5nTGlzdCkKICAgICBtX2NhbGxiYWNrcy0+b25TdWNj
ZXNzKFdlYkRPTVN0cmluZ0xpc3QoZG9tU3RyaW5nTGlzdCkpOwogfQogCi12b2lkIElEQkNhbGxi
YWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSkKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUpCiB7CiAgICAgbV9kaWRDb21wbGV0ZSA9IHRy
dWU7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUo
c2VyaWFsaXplZFNjcmlwdFZhbHVlKSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJE
YXRhKHZhbHVlKSk7CiB9CiAKLXZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQordm9pZCBJREJD
YWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKLSAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5LCBrZXlQ
YXRoKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYkRhdGEodmFsdWUpLCBrZXksIGtl
eVBhdGgpOwogICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogfQogCkBAIC0xMjcsMjUgKzEyNywy
NSBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoKQogICAgIG1fY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoKTsKIH0KIAotdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCit2b2lkIElEQkNhbGxiYWNrc1By
b3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSkKIHsKICAgICBtX2Rp
ZENvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKGtleSwgcHJpbWFy
eUtleSwgdmFsdWUpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LCBwcmltYXJ5S2V5
LCBXZWJEYXRhKHZhbHVlKSk7CiB9CiAKLXZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vz
c1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3Qg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKQordm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBr
ZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+JiB2YWx1ZXMpCiB7CiAgICAgbV9kaWRDb21wbGV0
ZSA9IHRydWU7CiAgICAgY29uc3Qgc2l6ZV90IG4gPSBrZXlzLnNpemUoKTsKIAogICAgIFdlYlZl
Y3RvcjxXZWJJREJLZXk+IHdlYktleXMobik7CiAgICAgV2ViVmVjdG9yPFdlYklEQktleT4gd2Vi
UHJpbWFyeUtleXMobik7Ci0gICAgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
d2ViVmFsdWVzKG4pOworICAgIFdlYlZlY3RvcjxXZWJEYXRhPiB3ZWJWYWx1ZXMobik7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICB3ZWJLZXlzW2ldID0g
V2ViSURCS2V5KGtleXNbaV0pOwogICAgICAgICB3ZWJQcmltYXJ5S2V5c1tpXSA9IFdlYklEQktl
eShwcmltYXJ5S2V5c1tpXSk7Ci0gICAgICAgIHdlYlZhbHVlc1tpXSA9IFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSh2YWx1ZXNbaV0pOworICAgICAgICB3ZWJWYWx1ZXNbaV0gPSBXZWJEYXRhKHZh
bHVlc1tpXSk7CiAgICAgfQogCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRj
aCh3ZWJLZXlzLCB3ZWJQcmltYXJ5S2V5cywgd2ViVmFsdWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDcxZjlmMDRkMGJmMzU4MzMy
MjcxNzhjZmNlYjQ3ZWRmNTNmOTEzNzYuLjYyNDgzZWI2MWU1YTQxN2Y2NjhkZGY2MzQzMzMzNmEx
OWFiMDgyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuaApAQCAtNDgsMTUgKzQ4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBv
bkVycm9yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0Pik7Ci0g
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgV2Vi
Q29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Ci0gICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0
aCYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBjb25zdCBXZWJD
b3JlOjpJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhpbnQ2NF90KTsK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5
PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4p
OwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5PiA+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcyk7CisgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pOworICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6SURC
S2V5PiA+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+ID4mIHZhbHVlcyk7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4
aXN0aW5nVmVyc2lvbik7CiAgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90
IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPiwgY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcAppbmRl
eCA0NmNkNDIzOTc0Yjg0MGRiMjliZDk4YTJkMjY4MzE1ZjAxYzdkYTUyLi5mNTZhZjcxMzc1ZmIz
ZmNkYzc5NmMzMTlmNDY1ZDk3ZTdiOGZmZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKQEAgLTMxLDEwICszMSw4IEBA
CiAjaW5jbHVkZSAiSURCQW55LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiSURCS2V5LmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiV2ViSURCQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgotI2luY2x1
ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJ
bXBsLmNwcAppbmRleCA2MWY1NWM4NGRjZjg4NzBlNzFkYWQ1MWFhMmJjNWE1NWNmNjM2ODIyLi4w
NWZjODhmNWJjYjM1M2Q4M2FkNGU0NGVjMGIxYjljZDc2Yzg0NGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtMzksNyAr
MzksNyBAQAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0
YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgotI2luY2x1ZGUgIldlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJEYXRhLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgV2ViSURCQ2FsbGJh
Y2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIGRvbVN0cmluZ0xpc3Qp
CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyhkb21TdHJpbmdMaXN0KTsKIH0KIAotdm9pZCBX
ZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoV2ViSURCQ3Vyc29yKiBjdXJzb3IsIGNvbnN0
IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUpCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9u
U3VjY2VzcyhXZWJJREJDdXJzb3IqIGN1cnNvciwgY29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0
IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2ViRGF0YSYgdmFsdWUpCiB7CiAgICAgbV9j
YWxsYmFja3MtPm9uU3VjY2VzcyhJREJDdXJzb3JCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0
cihjdXJzb3IpKSwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiB9CkBAIC04NCwxNCArODQsMTQg
QEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiBr
ZXkpCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhrZXkpOwogfQogCi12b2lkIFdlYklEQkNh
bGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNz
KGNvbnN0IFdlYkRhdGEmIHZhbHVlKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHZhbHVlKTsK
IH0KIAotdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IFdlYklEQktleSYg
a2V5LCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoKQordm9pZCBXZWJJREJDYWxsYmFja3NJ
bXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViRGF0YSYgdmFsdWUsIGNvbnN0IFdlYklEQktleSYga2V5
LCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBrZXksIGtleVBhdGgpOworICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3ModmFsdWUsIGtleSwga2V5UGF0aCk7CiB9CiAKIHZvaWQgV2ViSURCQ2Fs
bGJhY2tzSW1wbDo6b25TdWNjZXNzKGxvbmcgbG9uZyB2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBA
QCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcygpCiAgICAgbV9jYWxsYmFja3Mt
Pm9uU3VjY2VzcygpOwogfQogCi12b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhj
b25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlKQordm9pZCBXZWJJREJDYWxsYmFja3NJbXBs
OjpvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYklEQktleSYgcHJpbWFy
eUtleSwgY29uc3QgV2ViRGF0YSYgdmFsdWUpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
cyhrZXksIHByaW1hcnlLZXksIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCAxNmQwMmY4MGY4M2M2MzUwYzlkZWIw
YTA2YjIxYzhlMzY4MzIyOTRkLi4wY2Y3Y2NhNmVjYWJhNWVkMGRjY2MxMGMyYWJmOTEwNWZmZWRk
Y2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5oCkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9u
RXJyb3IoY29uc3QgV2ViSURCRGF0YWJhc2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoV2ViSURCQ3Vyc29yKiwgY29uc3QgV2ViSURCS2V5JiwgY29uc3QgV2ViSURCS2V5JiBwcmlt
YXJ5S2V5LCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFdlYklEQkN1cnNvciosIGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklE
QktleSYgcHJpbWFyeUtleSwgY29uc3QgV2ViRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoV2ViSURCRGF0YWJhc2UqLCBjb25zdCBXZWJJREJNZXRhZGF0YSYpOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5Jik7Ci0gICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklE
QktleSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25z
dCBXZWJEYXRhJik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJEYXRhJiwg
Y29uc3QgV2ViSURCS2V5JiwgY29uc3QgV2ViSURCS2V5UGF0aCYpOworICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiwgY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5
LCBjb25zdCBXZWJEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhsb25nIGxvbmcp
OwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9j
a2VkKGxvbmcgbG9uZyBvbGRWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCA5MWQ5NGI0MDgwZTc4
NGMyNmVlNTJiOTdjNjU0MDRlYWI2MDYzYTllLi5lNjNjZTJhODZiMmE5M2Q2YjIyZTZmODA0Mzhi
ZmQ3ODJiZDkxMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC01NiwxOCArNTYsMTggQEAgcHVibGljOgog
ICAgICAgICBtX3dhc0Vycm9yQ2FsbGVkID0gdHJ1ZTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0
IElEQkRhdGFiYXNlTWV0YWRhdGEmKQogICAgIHsKICAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2Up
OwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpIE9WRVJS
SURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoaW50NjRfdCkgT1ZFUlJJREUgeyB9
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
KSBPVkVSUklERSB7IH07CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChj
b25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5
PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4mKSBPVkVSUklERSB7IH0K
IHByaXZhdGU6CiAgICAgTW9ja0lEQkNhbGxiYWNrcygpIDogbV93YXNFcnJvckNhbGxlZChmYWxz
ZSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0
YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRh
dGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDU3NzI0MWUxOWRkZTkwNjhkMjI1ZWNkMjk5ZTQ5
ZjZlOWRkZjkyNTIuLjQ1YjllMmJiMmJmYWNhMWYwYWMxMTliN2Y1NWUyYTVjNDFiMTQ1ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5k
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJh
Y2tlbmRUZXN0LmNwcApAQCAtNjksMTggKzY5LDE4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmly
dHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IElEQkRhdGFi
YXNlTWV0YWRhdGEmKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV93YXNTdWNjZXNzREJDYWxs
ZWQgPSB0cnVlOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCS2V5PikgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRy
PElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSBPVkVSUklERSB7IH07CisgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVm
UHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSBPVkVSUklERSB7IH07CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhpbnQ2NF90KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+ID4mKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4p
IE9WRVJSSURFIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNv
bnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+
ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYpIE9WRVJSSURFIHsgfQog
cHJpdmF0ZToKICAgICBNb2NrSURCQ2FsbGJhY2tzKCkKICAgICAgICAgOiBtX3dhc1N1Y2Nlc3NE
QkNhbGxlZChmYWxzZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQlJlcXVlc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
UmVxdWVzdFRlc3QuY3BwCmluZGV4IDdhOGZkYmM1MzFmZGE1OGVlNDFhNDYxNTRkMjQ4NWUzNGY0
ZTU0YTkuLjdmYjQwMjZkOWIwODFmYmVhYTIwZmY4YTQ3MjQwOTFlN2U5NjBiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCkBAIC05Miwx
MSArOTIsMTEgQEAgVEVTVF9GKElEQlJlcXVlc3RUZXN0LCBFdmVudHNBZnRlclN0b3BwaW5nKQog
ICAgIC8vIEVuc3VyZSBub25lIG9mIHRoZSBmb2xsb3dpbmcgcmFpc2UgYXNzZXJ0aW9ucyBpbiBz
dG9wcGVkIHN0YXRlOgogICAgIHJlcXVlc3QtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yLCAiRGVzY3JpcHRpb24gZ29lcyBo
ZXJlLiIpKTsKICAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCkp
OwotICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+KCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQo
KSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgcmVxdWVzdC0+b25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4oKSwgSURCS2V5Ojpj
cmVhdGVJbnZhbGlkKCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCAwKTsKICAgICByZXF1ZXN0
LT5vblN1Y2Nlc3MoSURCS2V5OjpjcmVhdGVJbnZhbGlkKCkpOwotICAgIHJlcXVlc3QtPm9uU3Vj
Y2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKLSAgICByZXF1ZXN0LT5v
blN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSwgSURCS2V5OjpjcmVh
dGVJbnZhbGlkKCksIElEQktleVBhdGgoKSk7Ci0gICAgcmVxdWVzdC0+b25TdWNjZXNzKElEQktl
eTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgcmVxdWVzdC0+b25TdWNjZXNzKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPigwKSk7CisgICAgcmVxdWVzdC0+b25TdWNjZXNzKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPigwKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIElEQktleVBhdGgoKSk7
CisgICAgcmVxdWVzdC0+b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXk6
OmNyZWF0ZUludmFsaWQoKSwgMCk7CiB9CiAKIFRFU1RfRihJREJSZXF1ZXN0VGVzdCwgQWJvcnRF
cnJvckFmdGVyQWJvcnQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>