<?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>223560</bug_id>
          
          <creation_ts>2021-03-21 02:20:07 -0700</creation_ts>
          <short_desc>[GPU Process] Replace ItemHandle with a const Variant&amp;</short_desc>
          <delta_ts>2021-05-10 03:14:35 -0700</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>224314</dependson>
    
    <dependson>225579</dependson>
    
    <dependson>225582</dependson>
    
    <dependson>225589</dependson>
    
    <dependson>223849</dependson>
    
    <dependson>223863</dependson>
    
    <dependson>224145</dependson>
    
    <dependson>224146</dependson>
    
    <dependson>224148</dependson>
    
    <dependson>224270</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1742053</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-21 02:20:07 -0700</bug_when>
    <thetext>[GPU Process] Migrate DisplayList::Iterator to use a Variant instead of ItemHandle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742054</commentid>
    <comment_count>1</comment_count>
      <attachid>423822</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-21 02:21:28 -0700</bug_when>
    <thetext>Created attachment 423822
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742057</commentid>
    <comment_count>2</comment_count>
      <attachid>423824</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-21 04:48:55 -0700</bug_when>
    <thetext>Created attachment 423824
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742097</commentid>
    <comment_count>3</comment_count>
      <attachid>423836</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-21 14:22:02 -0700</bug_when>
    <thetext>Created attachment 423836
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742104</commentid>
    <comment_count>4</comment_count>
      <attachid>423840</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-21 16:27:16 -0700</bug_when>
    <thetext>Created attachment 423840
Tests pass but needs ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742140</commentid>
    <comment_count>5</comment_count>
      <attachid>423854</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-21 21:51:34 -0700</bug_when>
    <thetext>Created attachment 423854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742143</commentid>
    <comment_count>6</comment_count>
      <attachid>423854</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-21 22:52:53 -0700</bug_when>
    <thetext>Comment on attachment 423854
Patch

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

(Just a couple of quick comments so far)

&gt; Source/WebCore/ChangeLog:11
&gt; +        were just and object, placed there by placement new.

&quot;just an object&quot;

&gt; Source/WebCore/ChangeLog:50
&gt; +               display list items. These clients were always specified in WebKit - they were only optional for
&gt; +               testing. However, the code could be significantly simplified if we don&apos;t have to handle the

Does this statement still apply to the in-memory display list case? (i.e. to cache DrawGlyph items when painting text frequently)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742144</commentid>
    <comment_count>7</comment_count>
      <attachid>423854</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-21 23:25:30 -0700</bug_when>
    <thetext>Comment on attachment 423854
Patch

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

&gt; Source/WebCore/ChangeLog:100
&gt; +                   which is no problem becasue we were always specifying one in WebKit anyway.

&quot;becasue&quot; =&gt; &quot;because&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742631</commentid>
    <comment_count>8</comment_count>
      <attachid>423974</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-22 18:28:42 -0700</bug_when>
    <thetext>Created attachment 423974
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742650</commentid>
    <comment_count>9</comment_count>
      <attachid>423981</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-22 19:46:38 -0700</bug_when>
    <thetext>Created attachment 423981
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742691</commentid>
    <comment_count>10</comment_count>
      <attachid>423991</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-22 23:45:11 -0700</bug_when>
    <thetext>Created attachment 423991
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742692</commentid>
    <comment_count>11</comment_count>
      <attachid>423992</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-22 23:57:31 -0700</bug_when>
    <thetext>Created attachment 423992
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743212</commentid>
    <comment_count>12</comment_count>
      <attachid>424103</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-24 00:58:05 -0700</bug_when>
    <thetext>Created attachment 424103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743428</commentid>
    <comment_count>13</comment_count>
      <attachid>424161</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-24 11:24:00 -0700</bug_when>
    <thetext>Created attachment 424161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744597</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-28 02:21:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/75929228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744736</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-29 09:43:15 -0700</bug_when>
    <thetext>Is this a good time to do this refactoring?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746761</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-04-03 01:21:54 -0700</bug_when>
    <thetext>We should also do whatever is necessary to move WritingClient and ReadingClient from InMemoryDisplayList.h to InMemoryDisplayList.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748205</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-04-07 21:53:04 -0700</bug_when>
    <thetext>Remaining pieces:
- After 224270 and 224314, make InMemoryDisplayList not use ItemHandle
- Swap out the implementation of DisplayList::Iterator, but keep the same API signatures
- Update Iterator&apos;s signature, and update callers
- Hunting down all the last places that use ItemHandle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752915</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-04-21 14:03:41 -0700</bug_when>
    <thetext>We should also make ItemBuffer::createItemBuffer() stop manually calling malloc()</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423822</attachid>
            <date>2021-03-21 02:21:28 -0700</date>
            <delta_ts>2021-03-21 04:48:53 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-223560-20210321022128.patch</filename>
            <type>text/plain</type>
            <size>119574</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5NGYyNzA5NmExZmRl
YWE2YmZmNjM5NTg3N2FjYWI5ZmJlMGY3Yy4uZTA1YWU5NzMzZmFiOGZmZjY2M2NlMDRhZWQ0Mzgw
MWJlNTk0ODgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBNaWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3Rl
YWQgb2YgSXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91
bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0Ojphc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6YXRFbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpp
dGVyYXRvcjo6YWR2YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVU
b0VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpp
dGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjp+aXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpv
cGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRl
cmF0b3I6Oml0ZW1CdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpiZWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6c3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29weUludG8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OnVuY2hlY2tlZEFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6aXNEcmF3
aW5nSXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlNldFN0YXRlOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6
OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0Ojppc0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3Vy
cmVudEl0ZW1TaXplSW5CdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjppdGVtQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmREcmF3aW5nSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBw
ZW5kSXRlbU9mVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojph
cHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBw
bHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9u
dEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOgorCiAyMDIx
LTAzLTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hbnkg
bWVkaWEvbWVkaWEtZnJhZ21lbnRzLyB0ZXN0cyBhcmUgY3Jhc2hpbmcgZHVlIHRvIG90aGVyIHRl
c3RzIHRoYXQgcnVuIGJlZm9yZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZThhMGRhZDdlMWEyNmNmMDg2
NzAyZGJhODkxMDk1NWNkZWFhZGJkLi4xMTJlMjk1OTIzMGQwZmYyOGJjMTIxZTFlODA1ZjYyMzE0
NGRkZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTIxICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBN
aWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3RlYWQgb2Yg
SXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0pOgorICAgICAg
ICAoV2ViS2l0OjpkZWNvZGVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRlY29kZUFuZENyZWF0ZSk6IERlbGV0ZWQuCisKIDIwMjEtMDMtMTkgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBbGxvdyBvcGVu
ZGlyZWN0b3J5ZCBhY2Nlc3MgaW4gYmFzZSBzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDNi
YzdiZjY3ZWEwMTQ3ZDk5ODhkNTQ3Mzg5MGRiMDliYzc1NDM4NjQuLmM0NmFhODNhMWIzOWEyNGZh
NGRjZTI2MmZiNjk1ZTAwZmNiNzNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTMwNyw4ICsx
MzA3LDEwIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVyYXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlNGZlYzc5OGNiMWY0YTlk
NWZlMzMyYTlmNjRmOWFiMWVhZDYyMTYzLi44M2NmZDU3MjZlN2I4MDYxY2RlNzA5MTU2OTNkODdm
Mjc3Y2RhN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAxOCw3ICsyMDE4LDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2ZWM3NGY4NTQzNmFjZjk5MDkzNGY3
MGNkYzk0ODE2ZGEwMTgzNTQuLmQyZjA0MzYzYmY0YTUzNjllZTM1YjU3YTA3Zjg1ZTk5N2E1YzI0
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYyNSw2ICs2MjUsOCBAQAogCQkxQzczQTcxNTIxODU3NTg3MDA0Q0NFQTUgLyog
VGV4dERlY29yYXRpb25UaGlja25lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQjZCNEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFDODFCOTVBMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1NjBF
OTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUw
NyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQzkz
Q0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM5M0NCQ0QyNjA1QkQ0MzAwOEZE
RUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgfTsKKwkJMUM5M0NCRDMyNjA2RjhFNzAw
OEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkQyMjYwNkYzRTMwMDhGREVG
OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYz
NDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNjg2OSw2ICs2ODcxLDkgQEAKIAkJMUM4RDI2Q0UyMkMwOTUxMzAwRDEyNUYzIC8q
IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM4RDI2RDAyMkMwOUNERTAwRDEyNUYzIC8qIGxpYmNvbXByZXNzaW9uLnRiZCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2Rl
LnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJjb21wcmVzc2lvbi50YmQ7
IHBhdGggPSB1c3IvbGliL2xpYmNvbXByZXNzaW9uLnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBWZXJzaW9uLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkNDMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JDRDI2MDVCRDQzMDA4RkRFRjkg
LyogRGlzcGxheUxpc3RJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkQyMjYwNkYzRTMwMDhG
REVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyogV0hM
U0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJERTIxRUVCNUY0MDBBMTE4
NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVjdXJz
aW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2NjAsNyArMTY2
NjUsNiBAQAogCQlGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNQYXN0ZWJvYXJkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTA0MURCQkRCQzIwMEVGMEQxNCAvKiBT
dGF0aWNQYXN0ZWJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM3N0Q1NTI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0
ZW1UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0Mzc3RDU2MjU1MUM5QzYw
MDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERp
c3BsYXlMaXN0SXRlbVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQw
RTc2RTIzM0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQ2xpcGJvYXJkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBD
bGlwYm9hcmRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2Fy
ZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDEzLDEwICsxODAxNywx
MiBAQAogCQkJCTcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmggKi8sCiAJCQkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgKi8sCiAJCQkJRjQyMkI4QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oICovLAorCQkJCTFDOTNDQkQyMjYwNkYzRTMwMDhGREVGOSAvKiBEaXNw
bGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJMEZFNUZCQ0MxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuY3BwICovLAogCQkJCTBGRTVGQkNEMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi8sCi0JCQkJRjQzNzdENTYyNTUxQzlDNjAw
ODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwICovLAogCQkJCUY0Mzc3RDU1MjU1MUM5
QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8sCisJCQkJMUM5M0NCQ0MyNjA1
QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovLAorCQkJCTFDOTNDQkNE
MjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8sCiAJCQkJMEZFNUZC
Q0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAogCQkJCTBG
RTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCiAJCQkJ
MEZFNUZCRDAxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovLApA
QCAtMzIwMzcsOCArMzIwNDMsMTAgQEAKIAkJCQk3MjQyQUM5NzI1NzU4RkUxMDA1QTlDRjEgLyog
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNF
MjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JEMzI2MDZGOEU3MDA4RkRFRjkgLyogRGlzcGxh
eUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxQzkzQ0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFG
MkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRkYzkxMTEwZTI3NS4u
ZTE3MTA2MDI4NWRiNjZmNGY4ODhlZmZiZTAxOWJhYWJmNDA4YmJmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE1NCwx
MCArMTU0LDEwIEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhp
Y3NDb250ZXh0U3RhdGUoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFw
aGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAogICAgIGVudW0gQ2hh
bmdlIDogdWludDMyX3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggYzA4MzIwZTU2
NTY3NWJlMTJhNjRjNjk2OTRiZTE1ZjgyN2I3OTg1ZS4uZTc1ODdiNzRkMDFkMGEwNjZlMjU4NjUy
ZDY0OGE5ZTc2MmEwMTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgpAQCAtODQsMTIgKzg1LDEwIEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNs
ZWFyKCkKICAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOwogfQogCi1ib29sIERpc3BsYXlMaXN0
OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkK
K2Jvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywg
Y29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQogewotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkp
IHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6
Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdGF0ZSYgc3RhdGVJdGVtKSAtPiBib29sIHsKICAg
ICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9u
cykpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0
YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0aGUgaXRl
bSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNpZmljLgog
ICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0g
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NywzMCArOTYsMzAgQEAgYm9vbCBE
aXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFu
ZGxlIGl0ZW0pCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFu
Z2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAg
ICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgVVNFKENHKQotICAgIGNhc2Ug
SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJv
a2VQYXR0ZXJuOgotICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxh
dGZvcm1PcGVyYXRpb25zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnJl
YWs7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5RmlsbFBhdHRlcm4mKSAtPiBib29sIHsKKyAgICAg
ICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnM7
CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5U3Ryb2tlUGF0dGVybiYpIC0+IGJvb2wgeworICAgICAg
ICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9uczsK
ICNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQog
CiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChBc1RleHRGbGFncyBmbGFncykgY29uc3QKIHsK
ICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5l
LCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAgIGZvciAoYXV0byBb
aXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7Ci0gICAgICAgIGlmICgh
c2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCAqaXRlbSkpCisgICAgZm9yIChjb25zdCBhdXRvJiBk
aXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgeworICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0
ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAgIGlmICgh
c2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCBpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAoc3RyZWFtKTsKICAgICAgICAg
c3RyZWFtIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLT5pc0RyYXdpbmdJdGVtKCkpCisgICAg
ICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQogICAgICAgICAgICAgc3RyZWFtIDw8ICIgZXh0
ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKQEAg
LTEzMSwxMCArMTMwLDExIEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoVGV4dFN0cmVhbSYgdHMp
IGNvbnN0CiAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAgdHMgPDwg
ImRpc3BsYXkgbGlzdCI7CiAKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJ
bkJ1ZmZlcl0gOiAqdGhpcykgeworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVt
IDogKnRoaXMpIHsKKyAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVy
XSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNj
b3BlIGdyb3VwKHRzKTsKICAgICAgICAgdHMgPDwgaXRlbTsKLSAgICAgICAgaWYgKGl0ZW0tPmlz
RHJhd2luZ0l0ZW0oKSkKKyAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAg
ICAgICB0cyA8PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgdHMuc3RhcnRHcm91
cCgpOwpAQCAtMTg2LDI0NyArMTg2LDIzIEBAIHZvaWQgRGlzcGxheUxpc3Q6OnNldFRyYWNrc0Ry
YXdpbmdJdGVtRXh0ZW50cyhib29sIHZhbHVlKQogICAgIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRl
bnRzID0gdmFsdWU7CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0
ZW0pCi17Ci0gICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNh
dmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2F2ZT4oaXRlbS5nZXQ8U2F2ZT4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxSZXN0b3JlPihp
dGVtLmdldDxSZXN0b3JlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8VHJhbnNsYXRlPihpdGVtLmdldDxUcmFuc2xhdGU+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxSb3RhdGU+KGl0
ZW0uZ2V0PFJvdGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8U2NhbGU+KGl0ZW0uZ2V0PFNjYWxlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDb25jYXRlbmF0ZUNUTT4o
aXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRDVE0+KGl0ZW0uZ2V0PFNldENUTT4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFNldElubGluZUZpbGxHcmFkaWVudD4oaXRlbS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPihpdGVtLmdldDxTZXRJbmxpbmVGaWxsQ29s
b3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFNldElubGluZVN0cm9rZUNvbG9yPihpdGVtLmdldDxTZXRJbmxpbmVT
dHJva2VDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0cm9rZVRoaWNrbmVzcz4oaXRlbS5nZXQ8U2V0U3Ry
b2tlVGhpY2tuZXNzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxTZXRTdGF0ZT4oaXRlbS5nZXQ8U2V0U3RhdGU+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TGluZUNhcD4o
aXRlbS5nZXQ8U2V0TGluZUNhcD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TGluZURhc2g+KGl0ZW0uZ2V0PFNldExpbmVEYXNo
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxTZXRMaW5lSm9pbj4oaXRlbS5nZXQ8U2V0TGluZUpvaW4+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TWl0ZXJMaW1p
dD4oaXRlbS5nZXQ8U2V0TWl0ZXJMaW1pdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJT
aGFkb3c6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xlYXJTaGFkb3c+KGl0ZW0uZ2V0PENsZWFy
U2hhZG93PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPENsaXA+KGl0ZW0uZ2V0PENsaXA+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcE91dD4oaXRlbS5nZXQ8Q2xpcE91dD4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPENs
aXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBQYXRoPihpdGVtLmdldDxD
bGlwUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0
ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RHJhd0dseXBocz4oaXRlbS5nZXQ8RHJhd0dseXBocz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4o
aXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0
aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpdGVtLmdl
dDxEcmF3TmF0aXZlSW1hZ2U+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdQYXR0ZXJuPihpdGVtLmdldDxEcmF3UGF0dGVybj4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RHJhd1JlY3Q+KGl0ZW0uZ2V0PERyYXdSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TGluZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGluZT4oaXRlbS5nZXQ8RHJhd0xpbmU+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4dD4oaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPihpdGVtLmdldDxEcmF3RG90
c0ZvckRvY3VtZW50TWFya2VyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3RWxsaXBzZT4oaXRlbS5nZXQ8RHJhd0VsbGlwc2U+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5k
PERyYXdQYXRoPihpdGVtLmdldDxEcmF3UGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1BhdGg+
KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1JlY3Rz
PihpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0PihpdGVtLmdldDxGaWxsUmVj
dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9y
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRo
R3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsQ29tcG9zaXRlZFJlY3Q+KGl0ZW0uZ2V0PEZpbGxDb21w
b3NpdGVkUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAg
ICAgICByZXR1cm4gYXBwZW5kPEZpbGxSb3VuZGVkUmVjdD4oaXRlbS5nZXQ8RmlsbFJvdW5kZWRS
ZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oaXRlbS5nZXQ8Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGU+KCkpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5k
PEZpbGxJbmxpbmVQYXRoPihpdGVtLmdldDxGaWxsSW5saW5lUGF0aD4oKSk7Ci0jZW5kaWYKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUGF0
aD4oaXRlbS5nZXQ8RmlsbFBhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNl
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxFbGxpcHNlPihpdGVtLmdldDxGaWxsRWxsaXBz
ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4g
YXBwZW5kPEZsdXNoQ29udGV4dD4oaXRlbS5nZXQ8Rmx1c2hDb250ZXh0PigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVy
PihpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KGl0ZW0uZ2V0PE1ldGFD
b21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhOgotICAgICAgICByZXR1cm4gYXBwZW5kPFB1dEltYWdlRGF0YT4oaXRlbS5nZXQ8UHV0SW1h
Z2VEYXRhPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlhPihpdGVtLmdldDxQYWludEZyYW1l
Rm9yTWVkaWE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8U3Ryb2tlUmVjdD4oaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VMaW5l
PihpdGVtLmdldDxTdHJva2VMaW5lPigpKTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFN0cm9rZUlubGluZVBhdGg+KGl0ZW0uZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkpOwotI2Vu
ZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTdHJva2VQYXRoPihpdGVtLmdldDxTdHJva2VQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZUVsbGlwc2U+KGl0
ZW0uZ2V0PFN0cm9rZUVsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclJlY3Q+KGl0ZW0uZ2V0PENsZWFyUmVjdD4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPihpdGVtLmdldDxCZWdpblRyYW5zcGFy
ZW5jeUxheWVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5nZXQ8RW5k
VHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpB
cHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QXBwbHlTdHJva2VQYXR0
ZXJuPihpdGVtLmdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QXBwbHlGaWxsUGF0dGVy
bj4oaXRlbS5nZXQ8QXBwbHlGaWxsUGF0dGVybj4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3I+KGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCkpOwot
ICAgIH0KLX0KLQotYm9vbCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKLXsK
LSAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkgfHwgIW1faXNWYWxpZCkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvJiBpdGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0
byBlbmRDdXJzb3IgPSBpdGVtcy5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy5tX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzOwotICAgIHJldHVybiBtX2N1cnNvciA9PSBlbmRDdXJzb3I7Ci19Ci0K
LXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSgpCi17Ci0gICAg
Y2xlYXJDdXJyZW50SXRlbSgpOwotCi0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIoKTsKLSAgICBhdXRvIGl0ZW1UeXBlID0g
c3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKLSAgICBpZiAoaXNEcmF3aW5nSXRl
bShpdGVtVHlwZSkgJiYgIW1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIG1fY3VycmVudEV4dGVudCA9IG1fZGlzcGxheUxpc3QubV9kcmF3aW5n
SXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKLSAgICAgICAgbV9kcmF3aW5nSXRlbUlu
ZGV4Kys7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY3VycmVudEV4dGVudCA9IFdURjo6bnVsbG9w
dDsKLQotICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1zLm1fcmVhZGluZ0NsaWVudDsKLSAgICBhdXRv
IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVz
KGl0ZW1UeXBlKTsKLSAgICBpZiAoY2xpZW50KSB7Ci0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZv
ckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1
cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSkpOwotICAgICAg
ICBpZiAoaXNJbmxpbmVJdGVtKGl0ZW1UeXBlKSkgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCFJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5zYWZlQ29weSh7IG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0gfSkpKQotICAgICAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwotCi0gICAgICAgICAg
ICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW07Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJl
dF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOwotICAgICAgICAgICAgYXV0byogc3RhcnRP
ZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3QpOwotICAgICAgICAgICAgYXV0
byBkZWNvZGVkSXRlbUhhbmRsZSA9IGNsaWVudC0+ZGVjb2RlSXRlbShzdGFydE9mRGF0YSwgZGF0
YUxlbmd0aCwgaXRlbVR5cGUsIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwotICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCFkZWNvZGVkSXRlbUhhbmRsZSkpCi0gICAgICAgICAgICAgICAgbV9pc1Zh
bGlkID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW1bMF0gPSBz
dGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRJdGVt
U2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9m
KGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBtX2N1cnNvcjsKLSAgICAgICAgbV9j
dXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtOwotICAgIH0K
LX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OmFkdmFuY2UoKQotewotICAgIGlmIChh
dEVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVt
U2l6ZUluQnVmZmVyOwotCi0gICAgaWYgKG1fY3Vyc29yID09IG1fY3VycmVudEVuZE9mQnVmZmVy
ICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZl
cnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCsrOwotICAgICAgICBt
b3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwotICAgIH0KLQotICAgIHVwZGF0ZUN1
cnJlbnRJdGVtKCk7Ci19Ci0KLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJl
bnRJdGVtKCkKK3ZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
IGl0ZW0pCiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKLSAgICBpZiAoaXRlbXMg
JiYgaXRlbXMtPm1fcmVhZGluZ0NsaWVudCAmJiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKSB7Ci0g
ICAgICAgIGlmIChMSUtFTFkobV9pc1ZhbGlkKSkKLSAgICAgICAgICAgIEl0ZW1IYW5kbGUgeyBt
X2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0uZGVzdHJveSgpOwotCi0gICAgICAgIGlmIChVTkxJS0VM
WShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSkp
Ci0gICAgICAgICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKLSAgICB9Ci0K
LSAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMDsKLSAgICBtX2N1cnJlbnRCdWZmZXJG
b3JJdGVtID0gbnVsbHB0cjsKKyAgICBXVEY6OnZpc2l0KFsmXShjb25zdCBhdXRvJiBpdGVtKSB7
CisgICAgICAgIGFwcGVuZChpdGVtKTsKKyAgICB9LCBpdGVtKTsKIH0KIAotdm9pZCBEaXNwbGF5
TGlzdDo6aXRlcmF0b3I6Om1vdmVUb0VuZCgpCithdXRvIERpc3BsYXlMaXN0OjpiZWdpbigpIGNv
bnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgaWYgKGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsK
LSAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMt
Pm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0g
bV9jdXJzb3I7Ci0gICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9IGl0ZW1zLT5tX3JlYWRP
bmx5QnVmZmVycy5zaXplKCk7Ci0gICAgfQorICAgIHJldHVybiB7ICp0aGlzIH07CiB9CiAKLXZv
aWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZl
cigpCithdXRvIERpc3BsYXlMaXN0OjplbmQoKSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIGF1
dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKCFpdGVtcykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5
QnVmZmVycy5zaXplKCk7Ci0gICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9m
UmVhZE9ubHlCdWZmZXJzKSB7Ci0gICAgICAgIGF1dG8mIG5leHRCdWZmZXJIYW5kbGUgPSBpdGVt
cy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKLSAgICAgICAgbV9j
dXJzb3IgPSBuZXh0QnVmZmVySGFuZGxlLmRhdGE7Ci0gICAgICAgIG1fY3VycmVudEVuZE9mQnVm
ZmVyID0gbV9jdXJzb3IgKyBuZXh0QnVmZmVySGFuZGxlLmNhcGFjaXR5OwotICAgIH0gZWxzZSBp
ZiAobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7Ci0g
ICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YTsKLSAgICAgICAg
bV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvciArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJP
ZkJ5dGVzOwotICAgIH0KKyAgICByZXR1cm4geyAqdGhpcywgSXRlcmF0b3I6OkltbWVkaWF0ZWx5
TW92ZVRvRW5kOjpZZXMgfTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAogCiBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCBmMTg5
ZGVkZjY3NDliY2MyMDE0NzJhZWQyYTg3MTZiYTY1NzQ2NTJlLi45MzRjYzE1ZDQ0MmQxYmIwMjM1
N2M0NTY5YWZhMmQ2MGI2Zjc2OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw2
IEBAIGNsYXNzIFRleHRTdHJlYW07CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKIAogZW51bSBBc1RleHRGbGFnIHsKQEAgLTg5LDc2ICs4OCwxNSBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoSXRlbUJ1ZmZlcihGdW5j
dGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4mJikgY29uc3Q7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJn
cyk7Ci0gICAgdm9pZCBhcHBlbmQoSXRlbUhhbmRsZSk7CisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBib29sIHRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cygp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoYm9vbCk7CiAKLSAgICBj
bGFzcyBpdGVyYXRvciB7Ci0gICAgcHVibGljOgotICAgICAgICBlbnVtIGNsYXNzIEltbWVkaWF0
ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9OwotICAgICAgICBpdGVyYXRvcihjb25zdCBEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRv
RW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAgICAgICAgICAgOiBtX2Rpc3BsYXlM
aXN0KGRpc3BsYXlMaXN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaW1tZWRpYXRlbHlN
b3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykKLSAgICAgICAgICAgICAgICBt
b3ZlVG9FbmQoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1vdmVDdXJz
b3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVu
dEl0ZW0oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIH5pdGVyYXRvcigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJu
ICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90
aGVyLm1fY3Vyc29yOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYg
b3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgICAgIHZvaWQgb3BlcmF0
b3IrKygpIHsgYWR2YW5jZSgpOyB9Ci0KLSAgICAgICAgc3RydWN0IFZhbHVlIHsKLSAgICAgICAg
ICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IGl0ZW07Ci0gICAgICAgICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGV4dGVudDsKLSAgICAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9
OwotICAgICAgICB9OwotCi0gICAgICAgIFZhbHVlIG9wZXJhdG9yKigpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgbV9pc1ZhbGlkID8gbWFr
ZU9wdGlvbmFsKEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pIDogV1RGOjpu
dWxsb3B0LAotICAgICAgICAgICAgICAgIG1fY3VycmVudEV4dGVudCwKLSAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLAotICAgICAgICAgICAgfTsKLSAgICAgICAgfQot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mRml4
ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKLQotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbW92ZVRvRW5kKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXJDdXJyZW50SXRlbSgpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUN1cnJl
bnRJdGVtKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZSgpOwotICAgICAg
ICBib29sIGF0RW5kKCkgY29uc3Q7Ci0KLSAgICAgICAgSXRlbUJ1ZmZlciogaXRlbUJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUJ1ZmZlcklmRXhpc3RzKCk7IH0KLQot
ICAgICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICAgICAgdWludDhf
dCogbV9jdXJzb3IgeyBudWxscHRyIH07Ci0gICAgICAgIHNpemVfdCBtX3JlYWRPbmx5QnVmZmVy
SW5kZXggeyAwIH07Ci0gICAgICAgIHNpemVfdCBtX2RyYXdpbmdJdGVtSW5kZXggeyAwIH07Ci0g
ICAgICAgIHVpbnQ4X3QqIG1fY3VycmVudEVuZE9mQnVmZmVyIHsgbnVsbHB0ciB9OwotCi0gICAg
ICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVy
Rm9yQ3VycmVudEl0ZW1dIHsgMCB9OwotICAgICAgICB1aW50OF90KiBtX2N1cnJlbnRCdWZmZXJG
b3JJdGVtIHsgbnVsbHB0ciB9OwotICAgICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fY3VycmVu
dEV4dGVudDsKLSAgICAgICAgc2l6ZV90IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgeyAwIH07
Ci0gICAgICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1ZSB9OwotICAgIH07Ci0KLSAgICBpdGVyYXRv
ciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMgfTsgfQotICAgIGl0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMsIGl0ZXJhdG9yOjpJbW1lZGlhdGVseU1vdmVUb0VuZDo6
WWVzIH07IH0KKyAgICBjbGFzcyBJdGVyYXRvcjsKKworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29u
c3Q7CisgICAgSXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSXRlbUJ1ZmZl
ciogaXRlbUJ1ZmZlcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5nZXQoKTsgfQpA
QCAtMTkxLDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0
YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgSXRlbUhhbmRsZSk7Cisg
ICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBjb25zdCBEaXNw
bGF5TGlzdEl0ZW0mKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsK
ICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IDBmODExNGI4MWRkYzVhYWJjMTdkNWIx
NTRlOGQ5N2M3MzU3ZDEyNTUuLjI5NzE0MjkwMGQ5YWM0OGQxYmZhNDQ4NjViNTYzOTIxMDIzYmJl
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0z
MiwyNjUgKzMyLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElTQUJMRUQKLUNTdHJpbmcgSXRl
bUhhbmRsZTo6ZGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIFRleHRTdHJlYW0gdHM7Ci0gICAg
dHMgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIHRzLnJlbGVhc2UoKS51dGY4KCk7Ci19Ci0jZW5kaWYK
LQotdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0g
ICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOiB7Ci0gICAgICAg
IGdldDxTYXZlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6IHsKLSAgICAgICAgZ2V0PFJlc3RvcmU+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJh
bnNsYXRlOiB7Ci0gICAgICAgIGdldDxUcmFuc2xhdGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOiB7Ci0gICAgICAg
IGdldDxSb3RhdGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6IHsKLSAgICAgICAgZ2V0PFNjYWxlPigpLmFwcGx5KGNv
bnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNh
dGVuYXRlQ1RNOiB7Ci0gICAgICAgIGdldDxDb25jYXRlbmF0ZUNUTT4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06IHsK
LSAgICAgICAgZ2V0PFNldENUTT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6IHsKLSAgICAg
ICAgZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6IHsK
LSAgICAgICAgZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xv
cjogewotICAgICAgICBnZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhp
Y2tuZXNzOiB7Ci0gICAgICAgIGdldDxTZXRTdHJva2VUaGlja25lc3M+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDogewotICAgICAgICBnZXQ8U2V0TGluZUNh
cD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRMaW5lRGFzaDogewotICAgICAgICBnZXQ8U2V0TGluZURhc2g+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
TGluZUpvaW46IHsKLSAgICAgICAgZ2V0PFNldExpbmVKb2luPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6
IHsKLSAgICAgICAgZ2V0PFNldE1pdGVyTGltaXQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6IHsKLSAgICAg
ICAgZ2V0PENsZWFyU2hhZG93PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6IHsKLSAgICAgICAgZ2V0PENsaXA+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcE91dDogewotICAgICAgICBnZXQ8Q2xpcE91dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjog
ewotICAgICAgICBnZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogewot
ICAgICAgICBnZXQ8Q2xpcE91dFRvUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDogewotICAgICAgICBnZXQ8
Q2xpcFBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdH
bHlwaHM6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB7Ci0gICAgICAgIGdldDxEcmF3SW1h
Z2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB7Ci0gICAgICAgIGdldDxEcmF3TmF0aXZl
SW1hZ2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHsKLSAgICAgICAgZ2V0PERyYXdQYXR0ZXJuPigpLmFw
cGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OiB7Ci0gICAgICAgIGdldDxEcmF3UmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZTogewotICAg
ICAgICBnZXQ8RHJhd0xpbmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDogewotICAgICAgICBnZXQ8
RHJhd0xpbmVzRm9yVGV4dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOiB7Ci0gICAg
ICAgIGdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOiB7Ci0g
ICAgICAgIGdldDxEcmF3RWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDogewotICAgICAgICBnZXQ8RHJh
d1BhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6IHsKLSAgICAgICAgZ2V0PERyYXdGb2N1c1Jp
bmdQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czogewotICAgICAgICBnZXQ8RHJhd0ZvY3Vz
UmluZ1JlY3RzPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OiB7Ci0gICAgICAgIGdldDxGaWxsUmVjdD4oKS5hcHBs
eShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhDb2xvcjogewotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDogewotICAgICAgICBnZXQ8RmlsbENvbXBvc2l0ZWRS
ZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDogewotICAgICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOiB7Ci0gICAgICAgIGdldDxGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5s
aW5lUGF0aDogewotICAgICAgICBnZXQ8RmlsbElubGluZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UGF0aDogewotICAgICAgICBnZXQ8RmlsbFBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6IHsKLSAgICAg
ICAgZ2V0PEZpbGxFbGxpcHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDogewotICAgICAgICBnZXQ8Rmx1
c2hDb250ZXh0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHsKLSAgICAgICAgZ2V0
PFB1dEltYWdlRGF0YT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHsKLSAgICAgICAgZ2V0PFBh
aW50RnJhbWVGb3JNZWRpYT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OiB7Ci0gICAgICAgIGdldDxTdHJva2VS
ZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZUxpbmU6IHsKLSAgICAgICAgZ2V0PFN0cm9rZUxpbmU+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKElOTElORV9QQVRI
X0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDogewotICAgICAgICBn
ZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6IHsKLSAgICAgICAg
Z2V0PFN0cm9rZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZTogewotICAgICAgICBnZXQ8U3Ryb2tl
RWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6IHsKLSAgICAgICAgZ2V0PENsZWFyUmVjdD4oKS5hcHBs
eShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpC
ZWdpblRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIGdldDxCZWdpblRyYW5zcGFyZW5jeUxh
eWVyPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIGdldDxFbmRUcmFuc3Bh
cmVuY3lMYXllcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNp
ZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOiB7Ci0gICAg
ICAgIGdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjogewotICAg
ICAgICBnZXQ8QXBwbHlGaWxsUGF0dGVybj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVG
YWN0b3I6IHsKLSAgICAgICAgZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCkuYXBwbHkoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgfQotfQotCiB2b2lkIEl0ZW1IYW5k
bGU6OmRlc3Ryb3koKQogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CkBAIC01NDcsMTYxICsyODgs
NiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQg
PSBmYWxzZTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJ
c1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmlzVmFsaWQo
KSk+PiA9IHRydWU7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci10eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhjb25zdCBJdGVtSGFu
ZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQpCi17Ci0gICAg
bmV3IChkZXN0aW5hdGlvbldpdGhPZmZzZXQpIEl0ZW0oaXRlbUhhbmRsZS5nZXQ8SXRlbT4oKSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci10eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGNvcHlJbnRvKGNvbnN0
IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uV2l0aE9mZnNldCkK
LXsKLSAgICBhdXRvKiBuZXdJdGVtID0gbmV3IChkZXN0aW5hdGlvbldpdGhPZmZzZXQpIEl0ZW0o
aXRlbUhhbmRsZS5nZXQ8SXRlbT4oKSk7Ci0gICAgcmV0dXJuIG5ld0l0ZW0tPmlzVmFsaWQoKTsK
LX0KLQotYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBj
b25zdAotewotICAgIGF1dG8gaXRlbVR5cGUgPSB0eXBlKCk7Ci0gICAgZGVzdGluYXRpb24uZGF0
YVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICBhdXRvIGl0ZW1PZmZz
ZXQgPSBkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKHVpbnQ2NF90KTsKLSAgICBzd2l0Y2ggKGl0
ZW1UeXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPENsaXBPdXRUb1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBQYXRoPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3Rm9jdXNSaW5nUGF0aD4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1c1JpbmdSZWN0cz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxE
cmF3R2x5cGhzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ltYWdlQnVmZmVyPigqdGhp
cywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lc0ZvclRleHQ+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3TmF0aXZlSW1hZ2U+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXR0ZXJu
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAg
ICAgIHJldHVybiBjb3B5SW50bzxEcmF3UGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PEZpbGxDb21wb3NpdGVkUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFBhdGg+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aENvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4g
Y29weUludG88RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxGaWxsUm91bmRlZFJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxQdXRJbWFnZURhdGE+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVEYXNoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRTdGF0
ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0g
ICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNp
ZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPEFwcGx5RmlsbFBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxBcHBseVN0cm9rZVBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNlbmRpZgotICAg
IGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1
cm4gY29weUludG88QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICBy
ZXR1cm4gY29weUludG88QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PENsZWFyUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFy
U2hhZG93OgotICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJTaGFkb3c+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICByZXR1cm4gY29weUlu
dG88Q2xpcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxDbGlwVG9JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gY29weUludG88Q29uY2F0ZW5h
dGVDVE0+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0Zv
ckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0RvdHNGb3JEb2N1
bWVudE1hcmtlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdF
bGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0VsbGlwc2U+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPERyYXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UmVjdD4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAg
ICAgICByZXR1cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPEZpbGxFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAg
IHJldHVybiBjb3B5SW50bzxGaWxsSW5saW5lUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotI2Vu
ZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxGaWxsUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNo
Q29udGV4dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZsdXNoQ29udGV4dD4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPE1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPFBhaW50RnJhbWVGb3JNZWRpYT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSZXN0b3JlPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICByZXR1cm4g
Y29weUludG88Um90YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2F2ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNhdmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNjYWxl
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAg
ICByZXR1cm4gY29weUludG88U2V0Q1RNPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0
SW5saW5lRmlsbENvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICByZXR1cm4gY29weUludG88U2V0SW5saW5l
RmlsbEdyYWRpZW50PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVTdHJv
a2VDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVD
YXA6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRMaW5lQ2FwPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxTZXRMaW5lSm9pbj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRNaXRlckxpbWl0Pigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNz
OgotICAgICAgICByZXR1cm4gY29weUludG88U2V0U3Ryb2tlVGhpY2tuZXNzPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFN0cm9rZUVsbGlwc2U+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRo
OgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlSW5saW5lUGF0aD4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPFN0cm9rZVJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlTGlu
ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPFRyYW5zbGF0ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIEl0ZW1CdWZmZXI6Okl0ZW1CdWZmZXIoSXRlbUJ1
ZmZlckhhbmRsZXMmJiBoYW5kbGVzKQogICAgIDogbV9yZWFkT25seUJ1ZmZlcnMoV1RGTW92ZSho
YW5kbGVzKSkKIHsKQEAgLTc3Niw3ICszNjIsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmNsZWFyKCkK
IAogRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5l
ZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHsKLSAgICBhdXRvIHNpemVGb3JCdWZmZXJTd2l0
Y2hJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlOjpNZXRhQ29t
bWFuZENoYW5nZUl0ZW1CdWZmZXIpOworICAgIGF1dG8gc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0g
PSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyPigpOwogICAgIGlmIChtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICsgbnVtYmVyT2ZCeXRlcyAr
IHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVtIDw9IG1fd3JpdGFibGVCdWZmZXIuY2FwYWNpdHkpCiAg
ICAgICAgIHJldHVybiBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpObzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGQ4NzU5MzJjMTc2ZjA3OTAzNmVmMGM0ZmJm
NWQyZGE3MTMzMTVhZDUuLjdlODY0YzIyZjIwYzFiNDcyZjM1ZTI1YjQwZTNkY2QzZmY5NjU0YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyArMjUsOSBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgiCisjaW5jbHVkZSAiRGlz
cGxheUxpc3RJdGVtcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KQEAgLTM4
LDkgKzQwLDYgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogY2xhc3MgRGlzcGxheUxpc3Q7
CiAKLWVudW0gSXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmllclR5cGU+Owot
CiAvLyBBbiBJdGVtQnVmZmVySGFuZGxlIHdyYXBzIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0
IGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuCiBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRs
ZSB7CiAgICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKQEAgLTYwLDE3ICs1OSwx
MSBAQCB1c2luZyBJdGVtQnVmZmVySGFuZGxlcyA9IFZlY3RvcjxJdGVtQnVmZmVySGFuZGxlLCAy
PjsKIHN0cnVjdCBJdGVtSGFuZGxlIHsKICAgICB1aW50OF90KiBkYXRhIHsgbnVsbHB0ciB9Owog
Ci0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlc3Ryb3koKTsKLSAgICBib29sIGlzRHJhd2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSh0eXBlKCkpOyB9CiAKICAgICBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISEoKnRoaXMpOyB9CiAgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhZGF0YTsgfQogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAh
TE9HX0RJU0FCTEVECi0gICAgQ1N0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwotI2VuZGlmCi0K
ICAgICBJdGVtVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+
KGRhdGFbMF0pOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IFQ6Oml0ZW1UeXBlOyB9CkBAIC03OSw4ICs3Miw2IEBAIHN0cnVj
dCBJdGVtSGFuZGxlIHsKICAgICAgICAgQVNTRVJUKGlzPFQ+KCkpOwogICAgICAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZkYXRhW3NpemVvZih1aW50NjRfdCldKTsKICAgICB9Ci0K
LSAgICBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0OwogfTsKIAog
ZW51bSBjbGFzcyBEaWRDaGFuZ2VJdGVtQnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTk4
LDcgKzg5LDcgQEAgY2xhc3MgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIE9w
dGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxl
TG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRh
dGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7CiB9OwogCiAvLyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5z
IGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEsIGFuZCBjb25zaXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVt
QnVmZmVySGFuZGxlICh0byB3aGljaCBkaXNwbGF5CkBAIC0xNjUsNyArMTU2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXJD
aGFuZ2VkID0gc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQocGFkZGVkU2l6ZU9mVHlwZUFuZEl0
ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3
YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxU
PigpKTsKIAogICAgICAgICBpZiAoIXN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6
dmFsdWUpCiAgICAgICAgICAgICBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRCdWZmZXJzLmFw
cGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc10gfSk7
CkBAIC0xODksNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0g
PSAmbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAg
ICBzdGFydE9mSXRlbVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAg
ICAgICAgbmV3IChzdGFydE9mSXRlbSArIHNpemVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpLCBkaWRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICAg
ICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8VD4oKSwgZGlk
Q2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgfQogCiAgICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQq
IG1fcmVhZGluZ0NsaWVudCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzQ5N2YzOTUw
NThhNjc2ODY0NDhhMjU1NzE3NDBjZjQwMzdhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVySWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmpl
Y3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CisKK2VudW0gSXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEl0ZW1C
dWZmZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmllclR5
cGU+OworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2OTI1MDA2NTFhYTJiYWQ0ZTg5MWQ4OTc0MDJi
MWFkMzBiNjBiMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzMwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5o
IgotCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci1uYW1lc3BhY2UgRGlzcGxheUxpc3QgewotCi1zdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5
dGVzKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTYXZlKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpSZXN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFJlc3RvcmUpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihUcmFuc2xhdGUpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihSb3RhdGUp
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNjYWxl
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIHNp
emVvZihDb25jYXRlbmF0ZUNUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKFNldENUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmls
bEdyYWRpZW50OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElubGluZUZpbGxHcmFkaWVudCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFNldElubGluZUZpbGxDb2xvcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5l
U3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lU3Ryb2tlQ29sb3Ip
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihTZXRTdHJva2VUaGlja25lc3MpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRl
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldFN0YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lQ2FwOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVDYXApOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVEYXNo
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIHNpemVv
ZihTZXRMaW5lSm9pbik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihTZXRNaXRlckxpbWl0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVh
clNoYWRvdzoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGVhclNoYWRvdyk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENs
aXBUb0ltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXRUb1BhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihEcmF3R2x5cGhzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0ltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd05hdGl2ZUlt
YWdlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihEcmF3UGF0dGVybik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAg
IHJldHVybiBzaXplb2YoRHJhd1JlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdMaW5lKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdMaW5lc0ZvclRleHQpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJl
dHVybiBzaXplb2YoRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcik7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0VsbGlwc2UpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXRo
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihEcmF3Rm9jdXNSaW5nUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3Vz
UmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdGb2N1c1JpbmdSZWN0cyk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJl
Y3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKEZpbGxSZWN0V2l0aENvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhHcmFkaWVu
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1
cm4gc2l6ZW9mKEZpbGxDb21wb3NpdGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJv
dW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSb3VuZGVkUmVjdCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKEZpbGxJbmxpbmVQYXRoKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQ
YXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNo
Q29udGV4dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVz
dGluYXRpb25JbWFnZUJ1ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFu
Z2VJdGVtQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKFB1dEltYWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZv
ck1lZGlhOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFBhaW50RnJhbWVGb3JNZWRpYSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VS
ZWN0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKFN0cm9rZUxpbmUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tl
SW5saW5lUGF0aCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZVBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlRWxsaXBzZSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsZWFyUmVjdCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihCZWdpblRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmRUcmFuc3BhcmVu
Y3lMYXllcik7Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0
dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihBcHBseVN0cm9rZVBhdHRlcm4pOwotICAgIGNh
c2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2YoQXBw
bHlGaWxsUGF0dGVybik7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNj
YWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RGV2aWNlU2NhbGVGYWN0b3Ip
OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQot
Ym9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cp
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNo
YWRvdzoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBP
dXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0
ZW5hdGVDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgSXRl
bVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJ
bmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNh
c2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2lu
OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0U3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNh
c2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xl
YXJSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zv
Y3VzUmluZ1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkVu
ZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVj
dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BB
VEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0Ogot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1h
Z2VEYXRhOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElO
TElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNl
bmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1zaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBl
IHR5cGUpCi17Ci0gICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBs
ZU9mKGFsaWdub2YodWludDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7Ci19Ci0KLWJv
b2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
UGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAg
IGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRl
OgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykK
LSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6
OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdMaW5lOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6
OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgot
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxp
bmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFu
ZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRl
OgotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZp
bGxDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0TGluZUNhcDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNr
bmVzczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJ
TkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5k
aWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUxpbmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi19IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggY2Q2YzFhNDk5Yzk4
MjE2ZTEyNjU4MGMzZTNjYzRhM2Q4YzI2OTQ5MC4uNzRiNmYzMjMzNGEyMDU0YTkxMWIzODQxNThh
ZjQyOWY5MDgxZmEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBA
IC05OCw5ICs5OCw1IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBBcHBs
eURldmljZVNjYWxlRmFjdG9yLAogfTsKIAotV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHBhZGRlZFNp
emVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGlz
SW5saW5lSXRlbShJdGVtVHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGlzRHJhd2luZ0l0ZW0o
SXRlbVR5cGUpOwotCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDE2ODczNjVk
NDdiNDRhOGU4ZThjYzJkODhmMTk3NGJkYjVlNDYyZDMuLmQ4OTIzNmRhYjI4NTZjZWM2MGQ1Yjg1
YmI4OTlkM2JjY2EzM2RkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEaXNwbGF5
TGlzdEl0ZW1zLmgiCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCIKICNpbmNs
dWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAtMjIwLDEyICsyMjEsMTIgQEAgU2V0U3RhdGU6OlNl
dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSwgY29u
c3QgUGF0dGVybkQKIHsKIH0KIAotdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSog
ZmlsbFBhdHRlcm5JbWFnZSkKK3ZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZp
bGxQYXR0ZXJuSW1hZ2UpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkg
JiYgc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ry
b2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2Up
LCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgICAgIGNvbnN0X2Nhc3Q8U2V0U3Rh
dGUqPih0aGlzKS0+bV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJu
OjpjcmVhdGUobWFrZVJlZigqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBh
cmFtZXRlcnMpOwogICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSAmJiBmaWxsUGF0dGVybklt
YWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJu
OjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1l
dGVycyk7CisgICAgICAgIGNvbnN0X2Nhc3Q8U2V0U3RhdGUqPih0aGlzKS0+bV9zdGF0ZUNoYW5n
ZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKmZpbGxQYXR0
ZXJuSW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOwogICAgIG1fc3RhdGVDaGFuZ2Uu
YXBwbHkoY29udGV4dCk7CiB9CiAKQEAgLTEwODMsMTkyICsxMDg0LDEyIEBAIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBlKQogICAgIHJl
dHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRl
bUhhbmRsZSBpdGVtKQotewotICAgIHRzIDw8IGl0ZW0udHlwZSgpOwotCi0gICAgc3dpdGNoIChp
dGVtLnR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8VHJhbnNsYXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpSb3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFJvdGF0ZT4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PFNjYWxlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldENUTT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENvbmNh
dGVuYXRlQ1RNPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxHcmFk
aWVudD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmls
bENvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRTdGF0
ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZUNhcD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExp
bmVEYXNoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9p
bjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZUpvaW4+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PFNldE1pdGVyTGltaXQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXA+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBP
dXQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVm
ZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBQYXRoPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3R2x5cGhzPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERy
YXdJbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdSZWN0Pigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5l
c0ZvclRleHQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3Rz
Rm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdF
bGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RWxsaXBzZT4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PERyYXdQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0
czoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RmlsbFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xv
cj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3Jh
ZGllbnQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxGaWxsUm91bmRlZFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElO
TElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxJbmxpbmVQYXRoPigpOwotICAgICAgICBicmVhazsKLSNl
bmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGaWxsUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVs
bGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCk7Ci0gICAgICAgIGJyZWFrOwotI2lmIEVOQUJM
RShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUlubGluZVBhdGg+KCk7Ci0gICAgICAgIGJy
ZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlRWxsaXBz
ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxDbGVhclJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgLy8gSXRl
bXMgd2l0aCBubyBhZGRpdGlvbmFsIGRhdGEuCi0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFy
ZW5jeUxheWVyOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBh
dHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSNlbmRpZgotICAg
IGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICBicmVhazsKLSAgICB9CitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
IGl0ZW0pCit7CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVt
KSB7CisgICAgICAgIHRzIDw8IGRpc3BsYXlMaXN0SXRlbS5pdGVtVHlwZTsKKyAgICAgICAgdHMg
PDwgZGlzcGxheUxpc3RJdGVtOworICAgIH0sIGl0ZW0pOwogICAgIHJldHVybiB0czsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggN2YxOTExMjc0ZjZhZjQ1MGZmOTRj
ZmJkMDRjMDQ0NjdlYWM1MDQ2NC4uZTJmYjE4YzAyYTY5NjYxMjNkYzA5NzE2MjU3N2RiYWE0OWFh
ODkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yNiwxMSArMjYsMTQg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgot
I2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RGbHVzaElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJl
Y3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNs
dWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyLmgiCkBAIC0zOCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewogY2xhc3MgVGV4dFN0cmVhbTsKQEAgLTI2OCw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERl
Y29kZXImKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2Uq
IHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5J
bWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIHN0cnVjdCBQYXR0ZXJuRGF0YSB7CkBAIC05MDIsNyArOTA2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSB7IHJldHVybiBtX2ZvbnRJZGVudGlmaWVy
OyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2FsQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIEZsb2F0UG9p
bnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAgY29u
c3QgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mIGdseXBocygpIGNvbnN0IHsgcmV0dXJu
IG1fZ2x5cGhzOyB9CkBAIC0yMjQ3LDcgKzIyNTEsODMgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7Cit1c2luZyBEaXNwbGF5TGlzdEl0ZW0g
PSBWYXJpYW50PAorICAgIFNhdmUsCisgICAgUmVzdG9yZSwKKyAgICBUcmFuc2xhdGUsCisgICAg
Um90YXRlLAorICAgIFNjYWxlLAorICAgIFNldENUTSwKKyAgICBDb25jYXRlbmF0ZUNUTSwKKyAg
ICBTZXRJbmxpbmVGaWxsR3JhZGllbnQsCisgICAgU2V0SW5saW5lRmlsbENvbG9yLAorICAgIFNl
dElubGluZVN0cm9rZUNvbG9yLAorICAgIFNldFN0cm9rZVRoaWNrbmVzcywKKyAgICBTZXRTdGF0
ZSwKKyAgICBTZXRMaW5lQ2FwLAorICAgIFNldExpbmVEYXNoLAorICAgIFNldExpbmVKb2luLAor
ICAgIFNldE1pdGVyTGltaXQsCisgICAgQ2xlYXJTaGFkb3csCisgICAgQ2xpcCwKKyAgICBDbGlw
T3V0LAorICAgIENsaXBUb0ltYWdlQnVmZmVyLAorICAgIENsaXBPdXRUb1BhdGgsCisgICAgQ2xp
cFBhdGgsCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAgRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzLAorICAgIERyYXdHbHlwaHMsCisgICAgRHJhd0ltYWdlQnVmZmVyLAorICAg
IERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGF0dGVybiwKKyAgICBCZWdpblRyYW5zcGFyZW5j
eUxheWVyLAorICAgIEVuZFRyYW5zcGFyZW5jeUxheWVyLAorICAgIERyYXdSZWN0LAorICAgIERy
YXdMaW5lLAorICAgIERyYXdMaW5lc0ZvclRleHQsCisgICAgRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlciwKKyAgICBEcmF3RWxsaXBzZSwKKyAgICBEcmF3UGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5n
UGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5nUmVjdHMsCisgICAgRmlsbFJlY3QsCisgICAgRmlsbFJl
Y3RXaXRoQ29sb3IsCisgICAgRmlsbFJlY3RXaXRoR3JhZGllbnQsCisgICAgRmlsbENvbXBvc2l0
ZWRSZWN0LAorICAgIEZpbGxSb3VuZGVkUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZSwKKyAgICBGaWxsSW5saW5lUGF0aCwKKyAgICBGaWxsUGF0aCwKKyAgICBGaWxsRWxsaXBzZSwK
KyAgICBQdXRJbWFnZURhdGEsCisgICAgUGFpbnRGcmFtZUZvck1lZGlhLAorICAgIFN0cm9rZVJl
Y3QsCisgICAgU3Ryb2tlTGluZSwKKyAgICBTdHJva2VJbmxpbmVQYXRoLAorICAgIFN0cm9rZVBh
dGgsCisgICAgU3Ryb2tlRWxsaXBzZSwKKyAgICBDbGVhclJlY3QsCisgICAgQXBwbHlTdHJva2VQ
YXR0ZXJuLAorICAgIEFwcGx5RmlsbFBhdHRlcm4sCisgICAgQXBwbHlEZXZpY2VTY2FsZUZhY3Rv
ciwKKyAgICBGbHVzaENvbnRleHQsCisgICAgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLAor
ICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj47CisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOworCitp
bmxpbmUgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
IGRpc3BsYXlMaXN0SXRlbSkKK3sKKyAgICByZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRv
JiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlMaXN0SXRlbS5pc0Ry
YXdpbmdJdGVtOworICAgIH0sIGRpc3BsYXlMaXN0SXRlbSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorY29uc3RleHByIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMo
KQoreworICAgIHJldHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihh
bGlnbm9mKHVpbnQ2NF90KSwgc2l6ZW9mKFQpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmRhZGQ1Y2NmYjg5NTFmZTg1MWJmNjBjNDllNDdm
ZDVmZDIyYzRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCkBAIC0wLDAgKzEsMjA2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworRGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0
ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kKQorICAgIDogbV9kaXNwbGF5TGlzdChk
aXNwbGF5TGlzdCkKK3sKKyAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRl
bHlNb3ZlVG9FbmQ6OlllcykgeworICAgICAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIo
KSkgeworICAgICAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9u
bHlCdWZmZXJzLnNpemUoKTsKKyAgICAgICAgICAgIG1fY3Vyc29yID0gZW5kT2ZDdXJyZW50QnVm
ZmVyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRP
ZkN1cnJlbnRCdWZmZXIoKTsKK30KKworI2lmIEFTU0VSVF9FTkFCTEVECitib29sIERpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAoreworICAgIGlmIChtX2Rpc3BsYXlMaXN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBhdXRvKiBpdGVtcyA9
IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGF1dG8gZW5kQ3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1z
LT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworICAgIHJldHVybiBtX2N1cnNvciA9PSBlbmRDdXJz
b3I7Cit9CisjZW5kaWYKKworYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigp
IGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVlPgoreworICAgIEFTU0VSVCghYXRFbmQoKSk7CisKKyAg
ICBhdXRvIGN1cnJlbnRJdGVtID0gdGhpcy0+Y3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJl
bnRJdGVtKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBjdXJyZW50RXh0ZW50OworICAgIGlmIChpc0RyYXdpbmdJdGVtKGN1cnJlbnRJdGVt
LnZhbHVlKCkpICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzLmlzRW1wdHko
KSkKKyAgICAgICAgY3VycmVudEV4dGVudCA9IG1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4
dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKKworICAgIHJldHVybiB7eyBjdXJyZW50SXRlbS52
YWx1ZSgpLCBjdXJyZW50RXh0ZW50LCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlcigpIH19OworICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3ZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpv
cGVyYXRvcisrKCkKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworCisgICAgLy8gRklYTUU6IHRo
ZXJlJ3Mgbm8gcmVhc29uIHRvIHJlLXJ1biBjdXJyZW50SXRlbSgpIG9yIGN1cnJlbnRJdGVtU2l6
ZUluQnVmZmVyKCkuCisKKyAgICBtX2N1cnNvciArPSBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlcigp
OworCisgICAgYXV0byBjdXJyZW50SXRlbSA9IHRoaXMtPmN1cnJlbnRJdGVtKCk7CisgICAgQVNT
RVJUKGN1cnJlbnRJdGVtKTsKKyAgICBpZiAoaXNEcmF3aW5nSXRlbShjdXJyZW50SXRlbS52YWx1
ZSgpKSkKKyAgICAgICAgKyttX2RyYXdpbmdJdGVtSW5kZXg7CisKKyAgICBpZiAobV9jdXJzb3Ig
PT0gZW5kT2ZDdXJyZW50QnVmZmVyKCkgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1
ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKKyAgICAgICAgbV9yZWFkT25seUJ1
ZmZlckluZGV4Kys7CisgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7
CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBzdGF0aWMg
aW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZv
aWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlu
bGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlz
VmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Cit9
CisKK3RlbXBsYXRlIDxzdGQ6OnNpemVfdCBJPgoraW5saW5lIE9wdGlvbmFsPERpc3BsYXlMaXN0
SXRlbT4gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpIGNvbnN0Cit7CisgICAg
Ly8gV2UgY2FuJ3QgdXNlIGVhcmx5LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1c2Ugb2YgdGVtcGxh
dGUgZXhwYW5zaW9uIGluIHRoZSBjb21waWxlci4KKyAgICAvLyBEb2luZyBzbyB3b3VsZCBlaXRo
ZXIgQSkgYnJlYWsgdGhlIFdlYktpdCBzdHlsZSBydWxlIGFib3V0IGRvaW5nICJpZiAoKSB7IHJl
dHVybjsgfSByZXR1cm47IiBpbnN0ZWFkIG9mICJpZiAoKSB7IHJldHVybjsgfSBlbHNlIHsgcmV0
dXJuOyB9IgorICAgIC8vIG9yIEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJl
Y3Vyc2Ugd2hlbiBnZW5lcmF0aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1
bmN0aW9uLgorICAgIGlmIGNvbnN0ZXhwciAoSSA8IFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlM
aXN0SXRlbT46OnZhbHVlKSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBX
VEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJLCBEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAg
IC8vIEZJWE1FOiBDaGVjayBmb3Igb3V0LW9mLWJvdW5kcworICAgICAgICBhdXRvIGl0ZW1UeXBl
ID0gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAgICAgaWYgKGl0ZW1U
eXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJu
IGN1cnJlbnRJdGVtPEkgKyAxPigpOworCisgICAgICAgIGlmIChEaXNwbGF5TGlzdEl0ZW1UeXBl
Ojppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGNvbnN0IERpc3BsYXlMaXN0SXRlbVR5cGUm
IGl0ZW0gPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBEaXNwbGF5TGlzdEl0ZW1UeXBlKj4obV9j
dXJzb3IgKyBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKGl0ZW0p
KQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNwbGF5TGlzdEl0ZW0oaXRlbSk7IC8vIEZJWE1F
OiBVc2UgeyB9cy4KKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0K
KworICAgICAgICBhdXRvJiBpdGVtcyA9ICppdGVtQnVmZmVyKCk7CisgICAgICAgIGF1dG8qIGNs
aWVudCA9IGl0ZW1zLm1fcmVhZGluZ0NsaWVudDsKKyAgICAgICAgaWYgKCFjbGllbnQpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIEZJWE1FOiBDaGVjayBm
b3Igb3V0LW9mLWJvdW5kcworICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9j
YXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOworICAgICAgICBjb25zdCBhdXRvKiBzdGFydE9m
RGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7CisgICAgICAgIGF1dG8gaXRl
bSA9IGNsaWVudC0+ZGVjb2RlSXRlbShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUp
OworICAgICAgICBpZiAoIWl0ZW0gfHwgIWlzVmFsaWQoaXRlbS52YWx1ZSgpKSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBEaXNwbGF5TGlzdEl0ZW0o
V1RGTW92ZShpdGVtLnZhbHVlKCkpKTsgLy8gRklYTUU6IFVzZSB7IH1zLgorICAgIH0KKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgST4KK2lubGlu
ZSBzdGQ6OnNpemVfdCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmN1cnJlbnRJdGVtU2l6ZUluQnVm
ZmVyKCkgY29uc3QKK3sKKyAgICAvLyBXZSBjYW4ndCB1c2UgZWFybHktcmV0dXJuIHN0eWxlIGhl
cmUgYmVjYXVzZSBvZiB0ZW1wbGF0ZSBleHBhbnNpb24gaW4gdGhlIGNvbXBpbGVyLgorICAgIC8v
IERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0IHN0eWxlIHJ1bGUgYWJv
dXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3RlYWQgb2YgImlmICgpIHsg
cmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgLy8gb3IgQikgY2F1c2UgdGhlIGNvbXBp
bGVyIHRvIGluZmluaXRlbHkgcmVjdXJzZSB3aGVuIGdlbmVyYXRpbmcgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb25zIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgaWYgY29uc3RleHByIChJIDwgV1RGOjp2
YXJpYW50X3NpemU8RGlzcGxheUxpc3RJdGVtPjo6dmFsdWUpIHsKKyAgICAgICAgQVNTRVJUKGN1
cnJlbnRJdGVtKCkpOworCisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6
OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJLCBEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIC8v
IEZJWE1FOiBDaGVjayBmb3Igb3V0LW9mLWJvdW5kcworICAgICAgICBhdXRvIGl0ZW1UeXBlID0g
c3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAgICAgaWYgKGl0ZW1UeXBl
ICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnRJdGVtU2l6ZUluQnVmZmVyPEkgKyAxPigpOworCisgICAgICAgIGlmIChEaXNwbGF5TGlz
dEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pCisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2
NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIHNpemVvZihEaXNw
bGF5TGlzdEl0ZW1UeXBlKSk7CisKKyAgICAgICAgLy8gRklYTUU6IENoZWNrIGZvciBvdXQtb2Yt
Ym91bmRzCisgICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0
X3QqPihtX2N1cnNvcilbMV07CisgICAgICAgIHJldHVybiAyICogc2l6ZW9mKHVpbnQ2NF90KSAr
IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOworICAg
IH0KKworICAgIEFTU0VSVCghY3VycmVudEl0ZW0oKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZl
cigpCit7CisgICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRl
bXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlcklu
ZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1
ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5k
ZXhdOworICAgICAgICBtX2N1cnNvciA9IGN1cnJlbnRCdWZmZXJIYW5kbGUuZGF0YTsKKyAgICB9
IGVsc2UgeworICAgICAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9m
UmVhZE9ubHlCdWZmZXJzKTsKKyAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1
ZmZlci5kYXRhOworICAgIH0KK30KKwordWludDhfdCogRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpl
bmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdAoreworICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVy
KCk7CisgICAgQVNTRVJUKGl0ZW1zKTsKKworICAgIGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZl
cnMgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOworICAgIGlmIChtX3JlYWRPbmx5
QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAgICAgICBhdXRvJiBj
dXJyZW50QnVmZmVySGFuZGxlID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlC
dWZmZXJJbmRleF07CisgICAgICAgIHJldHVybiBjdXJyZW50QnVmZmVySGFuZGxlLmRhdGEgKyBj
dXJyZW50QnVmZmVySGFuZGxlLmNhcGFjaXR5OworICAgIH0KKworICAgIEFTU0VSVChtX3JlYWRP
bmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOworICAgIHJldHVybiBp
dGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0
ZXM7Cit9CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0OTlkNzQ0MDVlNjRhZjZiNDkyNzcwOTI3MGYzYzFmNTVlNWNjNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRp
c3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitjbGFzcyBEaXNwbGF5TGlzdDo6
SXRlcmF0b3IgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQg
eyBObywgWWVzIH07CisgICAgSXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmLCBJbW1lZGlhdGVs
eU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObyk7CisKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAm
b3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CisgICAgdm9pZCBvcGVyYXRvcisrKCk7CisKKyAgICBzdHJ1Y3QgVmFsdWUg
eworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gaXRlbTsKKyAgICAgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBleHRlbnQ7CisgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OworICAg
IH07CisKKyAgICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgorICAgIE9wdGlvbmFsPERpc3BsYXlM
aXN0SXRlbT4gY3VycmVudEl0ZW0oKSBjb25zdDsKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3Qg
SSA9IDA+CisgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIoKTsKKyAgICB1aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKKworI2lmIEFT
U0VSVF9FTkFCTEVECisgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCisKKyAgICBJdGVt
QnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVm
ZmVySWZFeGlzdHMoKTsgfQorCisgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7
CisgICAgdWludDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07CisgICAgc2l6ZV90IG1fcmVhZE9u
bHlCdWZmZXJJbmRleCB7IDAgfTsKKyAgICBzaXplX3QgbV9kcmF3aW5nSXRlbUluZGV4IHsgMCB9
OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmlu
ZGV4IDEwZDk1ZDYzYjA4Yzc3ZjdmODVjM2QzYTc5NjBlZjU2ZjljMzk0NGYuLmU1MjhhMzVmZmUx
ODQ2YmI3ZmU4NjQ2YTY1YjVkMmIwMzgyYzMwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKQEAgLTExNiwyNiArMTE2LDE3IEBAIHZvaWQgUmVjb3JkZXI6OmFw
cGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hh
bmdlcywKICAgICAgICAgYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVudD4oKmNoYW5nZXMubV9z
dGF0ZS5maWxsR3JhZGllbnQsIGNoYW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBl
IHR5cGUpCi17Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPndpbGxB
cHBlbmRJdGVtT2ZUeXBlKHR5cGUpOwotCi0gICAgaWYgKGlzRHJhd2luZ0l0ZW0odHlwZSkKLSNp
ZiBVU0UoQ0cpCi0gICAgICAgIHx8IHR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVy
biB8fCB0eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4KLSNlbmRpZgotICAgICkg
ewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2VzID0gY3Vy
cmVudFN0YXRlKCkuc3RhdGVDaGFuZ2U7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFuZ2VzLmNoYW5n
ZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7Ci0gICAgICAgIGlm
IChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgewotICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERp
c3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9t
TGFzdFN0YXRlKSk7Ci0gICAgICAgICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGVDaGFu
Z2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgICAgICAgICBzdGF0ZUNoYW5nZXMubV9j
aGFuZ2VGbGFncyA9IHsgfTsKLSAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5n
U3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsKLSAgICAgICAgfQotICAgICAgICBjdXJyZW50
U3RhdGUoKS53YXNVc2VkRm9yRHJhd2luZyA9IHRydWU7Cit2b2lkIFJlY29yZGVyOjp3aWxsQXBw
ZW5kRHJhd2luZ0l0ZW0oKQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0
ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hh
bmdlcy5jaGFuZ2VzRnJvbVN0YXRlKGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwor
ICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
RGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlc0Zy
b21MYXN0U3RhdGUpKTsKKyAgICAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0YXRlQ2hhbmdl
cywgY2hhbmdlc0Zyb21MYXN0U3RhdGUpOworICAgICAgICBzdGF0ZUNoYW5nZXMubV9jaGFuZ2VG
bGFncyA9IHsgfTsKKyAgICAgICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0
YXRlQ2hhbmdlcy5tX3N0YXRlOwogICAgIH0KKyAgICBjdXJyZW50U3RhdGUoKS53YXNVc2VkRm9y
RHJhd2luZyA9IHRydWU7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnVwZGF0ZVN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCBlN2I0YTA3ZmNjYzg3ZGVhNmRlYTI1NGE1Yjc2Y2RiZGU4YzQxNmM2Li45ZDUwMjEwMjM0MjA0
MmRkY2I4Njc3Nzg3ODIwYjVlODY4YmJiYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3Mp
CiAgICAgewotICAgICAgICB3aWxsQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlwZSk7CisgICAg
ICAgIHdpbGxBcHBlbmRJdGVtT2ZUeXBlPFQ+KCk7CiAgICAgICAgIG1fZGlzcGxheUxpc3QuYXBw
ZW5kPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAKICAgICAgICAgaWYgY29uc3Rl
eHByIChUOjppc0RyYXdpbmdJdGVtKSB7CkBAIC0xNzEsNyArMTcxLDIxIEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxBcHBlbmRJdGVt
T2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHdp
bGxBcHBlbmRJdGVtT2ZUeXBlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2RlbGVnYXRlKQorICAg
ICAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW1PZlR5cGUoVDo6aXRlbVR5cGUpOwor
CisgICAgICAgIGlmIChUOjppc0RyYXdpbmdJdGVtCisjaWYgVVNFKENHKQorICAgICAgICAgICAg
fHwgVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybiB8fCBUOjppdGVt
VHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuCisjZW5kaWYKKyAgICAgICAgKQor
ICAgICAgICAgICAgd2lsbEFwcGVuZERyYXdpbmdJdGVtKCk7CisgICAgfQorCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKTsKIAogICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAKaW5kZXggZDE3MzdhMjc5YzM5N2UwOTA5M2QxMzg0MzNkYjM4NDdkNmY0NzQ5
Mi4uNjQxNDUzZDNkODI4ZjI3YmU0MWMyODIzZmNkMzU4MDIwZTFjZDBmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMu
aCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KQEAgLTUyLDkgKzUzLDggQEAgR3JhcGhpY3NDb250ZXh0JiBSZXBsYXllcjo6Y29u
dGV4dCgpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVm
ZmVycywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IFQm
IGltYWdlQnVmZmVySXRlbSkKIHsKLSAgICBhdXRvJiBpbWFnZUJ1ZmZlckl0ZW0gPSBpdGVtLmdl
dDxUPigpOwogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gaW1hZ2VCdWZmZXJJdGVtLmlt
YWdlQnVmZmVySWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGltYWdl
QnVmZmVycy5nZXQocmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBpbWFnZUJ1ZmZlckl0
ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlQnVmZmVyKTsKQEAgLTY0LDkgKzY0LDggQEAgaW5saW5l
IHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VC
dWZmZXJJdGVtKEdyYXBoaWMKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0
aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgY29u
c3QgVCYgbmF0aXZlSW1hZ2VJdGVtKQogewotICAgIGF1dG8mIG5hdGl2ZUltYWdlSXRlbSA9IGl0
ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBuYXRpdmVJbWFnZUl0
ZW0uaW1hZ2VJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlID0gbmF0aXZlSW1hZ2Vz
LmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIG5hdGl2ZUltYWdlSXRlbS5hcHBs
eShjb250ZXh0LCAqaW1hZ2UpOwpAQCAtNzUsMTAgKzc0LDggQEAgaW5saW5lIHN0YXRpYyBPcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdy
YXBoaWMKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCi1pbmxpbmUgc3RhdGlj
IE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2
ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIGNvbnN0IFNl
dFN0YXRlJiBzZXRTdGF0ZUl0ZW0pCiB7Ci0gICAgYXV0byYgc2V0U3RhdGVJdGVtID0gaXRlbS5n
ZXQ8U2V0U3RhdGU+KCk7Ci0KICAgICBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlID0g
bnVsbHB0cjsKICAgICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CiAK
QEAgLTk5LDkgKzk2LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8
Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJl
bmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRp
YyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZv
bnRzLCBjb25zdCBUJiBmb250SXRlbSkKIHsKLSAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0
PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRp
ZmllcigpOwogICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmll
cikpIHsKICAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwpAQCAtMTEwLDY4
ICsxMDYsNjggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gcmVzb3VyY2VJ
ZGVudGlmaWVyOwogfQogCi1zdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0o
SXRlbUhhbmRsZSBpdGVtKQordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseSA9IGZhbHNlOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseTxULCBzdGQ6OnZv
aWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5hcHBseShHcmFwaGljc0NvbnRleHQoKSkp
Pj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHkoY29uc3Qg
SXRlbSYsIEdyYXBoaWNzQ29udGV4dCYpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+
CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQXBwbHk8SXRlbT4s
IHZvaWQ+IGFwcGx5KGNvbnN0IEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0KQoreworICAgIHJldHVybiBpdGVtLmFwcGx5KGdyYXBoaWNzQ29udGV4dCk7Cit9CisK
K2F1dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIC0+
IEFwcGx5SXRlbVJlc3VsdAogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFw
cGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0IH07CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1h
Z2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywg
aXRlbSkpCisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgRHJh
d0ltYWdlQnVmZmVyJiBkcmF3SW1hZ2VCdWZmZXIpIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAg
ICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdl
QnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGRy
YXdJbWFnZUJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
LSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkgewotICAgICAg
ICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1
ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0
ZW0pKQorICAgIH0sIFsmXShjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgY2xpcFRvSW1hZ2VCdWZm
ZXIpIC0+IHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4geworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VC
dWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGNsaXBUb0ltYWdlQnVmZmVyKSkKICAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChp
dGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUlt
YWdlPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3Qg
RHJhd05hdGl2ZUltYWdlJiBkcmF3TmF0aXZlSW1hZ2UpIC0+IEFwcGx5SXRlbVJlc3VsdCB7Cisg
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5h
dGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMs
IGRyYXdOYXRpdmVJbWFnZSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQg
fTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0gICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERy
YXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCisgICAgfSwgWyZdKGNvbnN0IERy
YXdQYXR0ZXJuJiBkcmF3UGF0dGVybikgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBkcmF3UGF0dGVybikp
CiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVz
b3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAg
ICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBp
ZiAoaXRlbS5pczxEcmF3UGF0dGVybj4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+
KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQorICAgIH0sIFsmXShjb25zdCBEcmF3
R2x5cGhzJiBkcmF3R2x5cGhzKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBpZiAoYXV0
byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5
cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGRyYXdHbHlwaHMpKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8U2V0U3RhdGU+
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQorICAg
IH0sIFsmXShjb25zdCBTZXRTdGF0ZSYgc2V0U3RhdGUpIC0+IEFwcGx5SXRlbVJlc3VsdCB7Cisg
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNl
dFN0YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBzZXRTdGF0ZSkpCiAgICAgICAg
ICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdU
Rk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5p
czxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAg
ICAgICAgIGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246OkludmFsaWRJdGVtLCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYg
Y2xpcEl0ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAg
ICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjbGlwSXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBt
X2NvbnRleHQpOwogICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIFdURjo6bnVsbG9wdCB9Owog
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQot
ICAgIGlmIChpdGVtLmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsm
XShjb25zdCBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1S
ZXN1bHQgewogICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OwotICAg
ICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4o
KTsKICAgICAgICAgbV9jb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZl
ciwgY2xpcEl0ZW0uZGVzdGluYXRpb24oKSk7CiAgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
LSAgICB9Ci0KLSAgICBpdGVtLmFwcGx5KGNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIHsgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgLT4g
QXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaWYgd2UgY2Fu
IGp1c3QgY2FsbCBpdGVtLmFwcGx5KGNvbnRleHQoKSkgaW5zdGVhZCBvZiBkb2luZyBhbGwgdGhp
cyB0ZW1wbGF0ZSBnb29wLgorICAgICAgICBhcHBseShpdGVtLCBjb250ZXh0KCkpOworICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0pOworICAgIHJl
dHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiBSZXBsYXlSZXN1bHQgUmVwbGF5
ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5
TGlzdCkKQEAgLTE4NywyOCArMTgzLDMwIEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAgICAg
c2l6ZV90IGkgPSAwOwogI2VuZGlmCiAgICAgUmVwbGF5UmVzdWx0IHJlc3VsdDsKLSAgICBmb3Ig
KGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiBtX2Rpc3BsYXlMaXN0KSB7
CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBtX2Rpc3BsYXlMaXN0KSB7
CisgICAgICAgIGlmICghZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgICAgICByZXN1bHQucmVh
c29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVt
U2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworCiAgICAgICAgIGlmICgh
aW5pdGlhbENsaXAuaXNaZXJvKCkgJiYgZXh0ZW50ICYmICFleHRlbnQtPmludGVyc2VjdHMoaW5p
dGlhbENsaXApKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBz
dHJlYW0gPDwgInNraXBwaW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKICAgICAgICAgICAg
IHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAg
ICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJ
dGVtOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8
PCBpdGVtKTsKIAotICAgICAgICBpZiAoaXRlbS0+aXM8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5h
dGlvbkltYWdlQnVmZmVyPigpKSB7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbSkpIHsKICAgICAg
ICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAg
ICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gU3RvcFJlcGxheVJlYXNvbjo6Q2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjsKLSAgICAgICAgICAgIHJlc3VsdC5uZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlciA9IGl0ZW0tPmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyID0gV1RGOjpnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyPihpdGVtKS5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllcl0gPSBhcHBseUl0ZW0oKml0ZW0pOyByZWFzb25Gb3JTdG9w
cGluZykgeworICAgICAgICBpZiAoYXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXJdID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGlu
ZykgewogICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0
b3BwaW5nOwogICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIgPSBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yMTcsOCArMjE1LDggQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBs
YXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKICAg
ICAgICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAKICAg
ICAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpIHsKLSAgICAgICAgICAgIHJlcGxh
eUxpc3QtPmFwcGVuZCgqaXRlbSk7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRl
bSgpKQorICAgICAgICAgICAgcmVwbGF5TGlzdC0+YXBwZW5kKGl0ZW0pOworICAgICAgICAgICAg
aWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAgICAgICAgICAgcmVwbGF5TGlzdC0+YWRk
RHJhd2luZ0l0ZW1FeHRlbnQoV1RGTW92ZShleHRlbnQpKTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IDE4MWExMmIwZTUxOGU4ZGMy
MWQzYjc0OWYyNzEwMWQyYTNlOTZmMzkuLjllMDM5MjVjNmRmNWZkZDI0NTRjZWFhNzMxODE4ZjNj
OWRiYzI2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NiwxMiAr
NjYsMTMgQEAgcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseShJ
dGVtSGFuZGxlLCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2
aXJ0dWFsIGJvb2wgYXBwbHkoY29uc3QgRGlzcGxheUxpc3RJdGVtJiwgR3JhcGhpY3NDb250ZXh0
JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogICAgIAogcHJpdmF0ZToKICAgICBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKLSAgICBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJl
cGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IGFwcGx5
SXRlbShJdGVtSGFuZGxlKTsKKyAgICB1c2luZyBBcHBseUl0ZW1SZXN1bHQgPSBzdGQ6OnBhaXI8
T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4+OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0oY29uc3QgRGlzcGxheUxp
c3RJdGVtJik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCAw
NmQ5NDNkOTdhOWI2NGY3MGExZTc3OTZkOTE1MGViOTdmODI5NjM5Li4xYTc0ODY0MjEwY2YyN2Zl
OTE0OGJlMGNmMTdlMzg1YzY1OTViYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtNzQsMjggKzc0LDI0IEBA
IHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRl
bSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KCk7CisgICAg
ICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmIHB1dEltYWdlRGF0YUl0ZW0pIHsKICAgICAgICAgICAg
IHB1dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0KCksIHB1dEltYWdlRGF0
YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVjdCgpLCBwdXRJbWFnZURh
dGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RGb3JtYXQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlzPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkpIHsKKyAgICAgICAgfSwgWyZdKGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQmIGZsdXNoQ29udGV4dCkgewog
ICAgICAgICAgICAgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpOwotICAg
ICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoQ29udGV4dD4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBmbHVzaENvbnRleHQuaWRlbnRpZmllcigpOwogICAgICAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmRpZEZsdXNoKGlkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcj4oKSkgewotICAgICAgICAgICAgYXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9IGl0ZW0u
Z2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCku
aWRlbnRpZmllcigpOworICAgICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciYgbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
KSB7CisgICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJZGVudGlmaWVyID0gbWV0YUNvbW1hbmRD
aGFuZ2VJdGVtQnVmZmVyLmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5zZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChuZXh0QnVmZmVySWRlbnRpZmllciwg
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFw
cGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgICAgICB9LCBbJl0oY29uc3QgYXV0byYg
aXRlbSkgeworICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBs
eU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBX
VEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogICAgIH0KIAogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApp
bmRleCBlNGRkYzNkMTVhYjI1NGFmZWI4MTVkZjJlN2I0NTc5MGNkNjYwMjVmLi4yZjdhOGY0NDBk
MWMxMTYwMmIxNmNjOWU1ZjkxZTczMGNjOTZlOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CkBAIC0xMTQsMjAgKzExNCwxOCBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjphcHBseU1lZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5
TWVkaWFJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0
ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIGlmICghaXRlbS5pczxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1l
ZGlhPigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBtZWRpYUl0ZW0gPSBp
dGVtLmdldDxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgIGF1dG8gcGxh
eWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpOwotICAgIGlmICgh
cGxheWVyKQorICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IERp
c3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmIG1lZGlhSXRlbSkgeworICAgICAgICBpZiAo
YXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSkpCisg
ICAgICAgICAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0u
ZGVzdGluYXRpb24oKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29udGV4dC5wYWlu
dEZyYW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJl
dHVybiB0cnVlOworICAgIH0sIFtdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtNDM0LDEwMSArNDMyLDMz
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxh
eUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5h
cmd1bWVudHMpOwogfQogCi1PcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVp
bnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgorc3Rh
dGljIGlubGluZSBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVt
PiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlM
aXN0OjpJdGVtVHlwZSB0eXBlKQogewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRs
ZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0g
ICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBQYXRoPihkYXRh
LCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlz
cGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9u
KTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5n
UmVjdHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpEcmF3UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJu
IGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PihkYXRhLCBs
ZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RmlsbFBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZp
bGxQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yPihkYXRhLCBsZW5ndGgsIGhh
bmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkZpbGxSZWN0V2l0aEdyYWRpZW50PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0g
ICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURh
dGE6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlB1dEltYWdl
RGF0YT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oZGF0YSwgbGVuZ3RoLCBo
YW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBh
dGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlN0cm9rZVBh
dGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXA6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0
dGVybjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlJvdGF0ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZToKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlNldENUTToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0
SW5saW5lRmlsbENvbG9yOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsR3JhZGllbnQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGlu
ZVN0cm9rZUNvbG9yOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lQ2Fw
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlm
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlRyYW5zbGF0ZTogewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQorICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5
bGUgaGVyZSBiZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisg
ICAgLy8gRG9pbmcgc28gd291bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVs
ZSBhYm91dCBkb2luZyAiaWYgKCkgeyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYg
KCkgeyByZXR1cm47IH0gZWxzZSB7IHJldHVybjsgfSIKKyAgICAvLyBvciBCKSBjYXVzZSB0aGUg
Y29tcGlsZXIgdG8gaW5maW5pdGVseSByZWN1cnNlIHdoZW4gZ2VuZXJhdGluZyB0ZW1wbGF0ZSBz
cGVjaWFsaXphdGlvbnMgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiBjb25zdGV4cHIgKEkgPCBX
VEY6OnZhcmlhbnRfc2l6ZTxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjo6
dmFsdWUpIHsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFu
dF9hbHRlcm5hdGl2ZV90PEksIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+
OworCisgICAgICAgIGlmICh0eXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQor
ICAgICAgICAgICAgcmV0dXJuIGRlY29kZUl0ZW08SSArIDE+KGRhdGEsIGxlbmd0aCwgdHlwZSk7
CisKKyAgICAgICAgQVNTRVJUKCFEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pOwor
ICAgICAgICBpZiBjb25zdGV4cHIgKCFEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0p
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2lu
Z2xlT2JqZWN0PERpc3BsYXlMaXN0SXRlbVR5cGU+KGRhdGEsIGxlbmd0aCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0oV1RGTW92
ZShyZXN1bHQudmFsdWUoKSkpOyAvLyBGSVhNRTogVXNlIHsgfXMuCisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAorT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIFdlYktpdDo6ZGVjb2Rl
SXRlbShkYXRhLCBsZW5ndGgsIHR5cGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDM5
NDNkNTIxZDM2OTNmYmQyY2VmMzZiNDdkMzQ5NmIxYzJkZjM2NTkuLjgzMDhiNTc5MTU5NjEwNjMx
YTMwNjg5ZDNjNzI1MzkwNGNmY2Y3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VD
YWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQogCiAgICAgLy8gUmVuZGVy
aW5nIG9wZXJhdGlvbnMuCi0gICAgYm9vbCBhcHBseU1lZGlhSXRlbShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUhhbmRsZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisgICAgYm9vbCBh
cHBseU1lZGlhSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVt
JiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBz
ZW50LgogICAgIHZvaWQgZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTg2
LDE5ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2Vt
YXBob3JlJiYpOwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4g
ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsK
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRpb24p
Ci0gICAgewotICAgICAgICBpZiAoYXV0byBpdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5n
bGVPYmplY3Q8VD4oZGF0YSwgbGVuZ3RoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlYktp
dDIgc2hvdWxkIG5vdCBuZWVkIHRvIGtub3cgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhdCB0aGUg
aGFuZGxlIGFyZSByZXNlcnZlZCBmb3IgdGhlIHR5cGUuCi0gICAgICAgICAgICAvLyBOZWVkIHRv
IGZpZ3VyZSBvdXQgYSB3YXkgdG8ga2VlcCB0aGlzIGtub3dsZWRnZSB3aXRoaW4gZGlzcGxheSBs
aXN0IGNvZGUgaW4gV2ViQ29yZS4KLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBz
aXplb2YodWludDY0X3QpKSBUKFdURk1vdmUoKml0ZW0pKTsKLSAgICAgICAgICAgIHJldHVybiB7
eyBoYW5kbGVMb2NhdGlvbiB9fTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpIG92ZXJyaWRl
OwogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXQoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
IGRlc3RpbmF0aW9uKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGUmLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423824</attachid>
            <date>2021-03-21 04:48:55 -0700</date>
            <delta_ts>2021-03-21 14:22:00 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-223560-20210321044854.patch</filename>
            <type>text/plain</type>
            <size>143245</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5NGYyNzA5NmExZmRl
YWE2YmZmNjM5NTg3N2FjYWI5ZmJlMGY3Yy4uZTA1YWU5NzMzZmFiOGZmZjY2M2NlMDRhZWQ0Mzgw
MWJlNTk0ODgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBNaWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3Rl
YWQgb2YgSXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91
bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0Ojphc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6YXRFbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpp
dGVyYXRvcjo6YWR2YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVU
b0VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpp
dGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjp+aXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpv
cGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRl
cmF0b3I6Oml0ZW1CdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpiZWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6c3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29weUludG8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OnVuY2hlY2tlZEFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6aXNEcmF3
aW5nSXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlNldFN0YXRlOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6
OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0Ojppc0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3Vy
cmVudEl0ZW1TaXplSW5CdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjppdGVtQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmREcmF3aW5nSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBw
ZW5kSXRlbU9mVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojph
cHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBw
bHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9u
dEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOgorCiAyMDIx
LTAzLTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hbnkg
bWVkaWEvbWVkaWEtZnJhZ21lbnRzLyB0ZXN0cyBhcmUgY3Jhc2hpbmcgZHVlIHRvIG90aGVyIHRl
c3RzIHRoYXQgcnVuIGJlZm9yZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZThhMGRhZDdlMWEyNmNmMDg2
NzAyZGJhODkxMDk1NWNkZWFhZGJkLi4xMTJlMjk1OTIzMGQwZmYyOGJjMTIxZTFlODA1ZjYyMzE0
NGRkZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTIxICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBN
aWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3RlYWQgb2Yg
SXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0pOgorICAgICAg
ICAoV2ViS2l0OjpkZWNvZGVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRlY29kZUFuZENyZWF0ZSk6IERlbGV0ZWQuCisKIDIwMjEtMDMtMTkgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBbGxvdyBvcGVu
ZGlyZWN0b3J5ZCBhY2Nlc3MgaW4gYmFzZSBzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDNi
YzdiZjY3ZWEwMTQ3ZDk5ODhkNTQ3Mzg5MGRiMDliYzc1NDM4NjQuLmM0NmFhODNhMWIzOWEyNGZh
NGRjZTI2MmZiNjk1ZTAwZmNiNzNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTMwNyw4ICsx
MzA3LDEwIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVyYXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlNGZlYzc5OGNiMWY0YTlk
NWZlMzMyYTlmNjRmOWFiMWVhZDYyMTYzLi44M2NmZDU3MjZlN2I4MDYxY2RlNzA5MTU2OTNkODdm
Mjc3Y2RhN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAxOCw3ICsyMDE4LDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2ZWM3NGY4NTQzNmFjZjk5MDkzNGY3
MGNkYzk0ODE2ZGEwMTgzNTQuLmQyZjA0MzYzYmY0YTUzNjllZTM1YjU3YTA3Zjg1ZTk5N2E1YzI0
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYyNSw2ICs2MjUsOCBAQAogCQkxQzczQTcxNTIxODU3NTg3MDA0Q0NFQTUgLyog
VGV4dERlY29yYXRpb25UaGlja25lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQjZCNEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFDODFCOTVBMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1NjBF
OTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUw
NyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQzkz
Q0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM5M0NCQ0QyNjA1QkQ0MzAwOEZE
RUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgfTsKKwkJMUM5M0NCRDMyNjA2RjhFNzAw
OEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkQyMjYwNkYzRTMwMDhGREVG
OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYz
NDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNjg2OSw2ICs2ODcxLDkgQEAKIAkJMUM4RDI2Q0UyMkMwOTUxMzAwRDEyNUYzIC8q
IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM4RDI2RDAyMkMwOUNERTAwRDEyNUYzIC8qIGxpYmNvbXByZXNzaW9uLnRiZCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2Rl
LnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJjb21wcmVzc2lvbi50YmQ7
IHBhdGggPSB1c3IvbGliL2xpYmNvbXByZXNzaW9uLnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBWZXJzaW9uLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkNDMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JDRDI2MDVCRDQzMDA4RkRFRjkg
LyogRGlzcGxheUxpc3RJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkQyMjYwNkYzRTMwMDhG
REVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyogV0hM
U0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJERTIxRUVCNUY0MDBBMTE4
NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVjdXJz
aW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2NjAsNyArMTY2
NjUsNiBAQAogCQlGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNQYXN0ZWJvYXJkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTA0MURCQkRCQzIwMEVGMEQxNCAvKiBT
dGF0aWNQYXN0ZWJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM3N0Q1NTI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0
ZW1UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0Mzc3RDU2MjU1MUM5QzYw
MDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERp
c3BsYXlMaXN0SXRlbVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQw
RTc2RTIzM0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQ2xpcGJvYXJkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBD
bGlwYm9hcmRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2Fy
ZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDEzLDEwICsxODAxNywx
MiBAQAogCQkJCTcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmggKi8sCiAJCQkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgKi8sCiAJCQkJRjQyMkI4QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oICovLAorCQkJCTFDOTNDQkQyMjYwNkYzRTMwMDhGREVGOSAvKiBEaXNw
bGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJMEZFNUZCQ0MxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuY3BwICovLAogCQkJCTBGRTVGQkNEMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi8sCi0JCQkJRjQzNzdENTYyNTUxQzlDNjAw
ODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwICovLAogCQkJCUY0Mzc3RDU1MjU1MUM5
QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8sCisJCQkJMUM5M0NCQ0MyNjA1
QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovLAorCQkJCTFDOTNDQkNE
MjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8sCiAJCQkJMEZFNUZC
Q0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAogCQkJCTBG
RTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCiAJCQkJ
MEZFNUZCRDAxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovLApA
QCAtMzIwMzcsOCArMzIwNDMsMTAgQEAKIAkJCQk3MjQyQUM5NzI1NzU4RkUxMDA1QTlDRjEgLyog
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNF
MjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JEMzI2MDZGOEU3MDA4RkRFRjkgLyogRGlzcGxh
eUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxQzkzQ0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFG
MkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRkYzkxMTEwZTI3NS4u
ZTE3MTA2MDI4NWRiNjZmNGY4ODhlZmZiZTAxOWJhYWJmNDA4YmJmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE1NCwx
MCArMTU0LDEwIEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhp
Y3NDb250ZXh0U3RhdGUoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFw
aGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAogICAgIGVudW0gQ2hh
bmdlIDogdWludDMyX3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggYzA4MzIwZTU2
NTY3NWJlMTJhNjRjNjk2OTRiZTE1ZjgyN2I3OTg1ZS4uNzk4MWU2NjNlNDkwZGNjMTFlMmEyODA1
NjNhMTFiYmEzYmRlMjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgpAQCAtODQsMTIgKzg1LDEwIEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNs
ZWFyKCkKICAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOwogfQogCi1ib29sIERpc3BsYXlMaXN0
OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkK
K2Jvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywg
Y29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQogewotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkp
IHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6
Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdGF0ZSYgc3RhdGVJdGVtKSAtPiBib29sIHsKICAg
ICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9u
cykpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0
YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0aGUgaXRl
bSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNpZmljLgog
ICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0g
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NywzMCArOTYsMzAgQEAgYm9vbCBE
aXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFu
ZGxlIGl0ZW0pCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFu
Z2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAg
ICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgVVNFKENHKQotICAgIGNhc2Ug
SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJv
a2VQYXR0ZXJuOgotICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxh
dGZvcm1PcGVyYXRpb25zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnJl
YWs7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5RmlsbFBhdHRlcm4mKSAtPiBib29sIHsKKyAgICAg
ICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnM7
CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5U3Ryb2tlUGF0dGVybiYpIC0+IGJvb2wgeworICAgICAg
ICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9uczsK
ICNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQog
CiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChBc1RleHRGbGFncyBmbGFncykgY29uc3QKIHsK
ICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5l
LCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAgIGZvciAoYXV0byBb
aXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7Ci0gICAgICAgIGlmICgh
c2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCAqaXRlbSkpCisgICAgZm9yIChjb25zdCBhdXRvJiBk
aXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0
ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworICAgICAg
ICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVhbSk7CiAg
ICAgICAgIHN0cmVhbSA8PCBpdGVtOwotICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgp
KQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKICAgICAgICAgICAgIHN0cmVhbSA8
PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgcmV0dXJuIHN0cmVhbS5yZWxlYXNl
KCk7CkBAIC0xMzEsMTAgKzEzMCwxMSBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRTdHJl
YW0mIHRzKSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAg
IHRzIDw8ICJkaXNwbGF5IGxpc3QiOwogCi0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnQsIGl0
ZW1TaXplSW5CdWZmZXJdIDogKnRoaXMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlM
aXN0SXRlbSA6ICp0aGlzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0
ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIFRleHRT
dHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAgICB0cyA8PCBpdGVtOwotICAgICAg
ICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShp
dGVtKSkKICAgICAgICAgICAgIHRzIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KICAg
ICB0cy5zdGFydEdyb3VwKCk7CkBAIC0xODYsMjQ3ICsxODYsMjMgQEAgdm9pZCBEaXNwbGF5TGlz
dDo6c2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wgdmFsdWUpCiAgICAgbV90cmFja3NE
cmF3aW5nSXRlbUV4dGVudHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5k
KEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTYXZlPihpdGVtLmdldDxT
YXZlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFJlc3RvcmU+KGl0ZW0uZ2V0PFJlc3RvcmU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRy
YW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxUcmFuc2xhdGU+KGl0ZW0uZ2V0PFRyYW5z
bGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFJvdGF0ZT4oaXRlbS5nZXQ8Um90YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2Fs
ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTY2FsZT4oaXRlbS5nZXQ8U2NhbGU+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPENv
bmNhdGVuYXRlQ1RNPihpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldENUTT4oaXRlbS5nZXQ8U2V0
Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PihpdGVtLmdldDxTZXRJbmxp
bmVGaWxsR3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xv
cjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KGl0ZW0uZ2V0PFNl
dElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tl
Q29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KGl0ZW0u
Z2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJv
a2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0U3Ryb2tlVGhpY2tuZXNzPihp
dGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0
YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0YXRlPihpdGVtLmdldDxTZXRTdGF0ZT4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTZXRMaW5lQ2FwPihpdGVtLmdldDxTZXRMaW5lQ2FwPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lRGFzaD4oaXRlbS5n
ZXQ8U2V0TGluZURhc2g+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVKb2luPihpdGVtLmdldDxTZXRMaW5lSm9pbj4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTZXRNaXRlckxpbWl0PihpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclNoYWRvdz4o
aXRlbS5nZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8Q2xpcD4oaXRlbS5nZXQ8Q2xpcD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0PihpdGVtLmdldDxD
bGlwT3V0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VC
dWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcFBh
dGg+KGl0ZW0uZ2V0PENsaXBQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcz4oaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdp
bmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3R2x5cGhzPihpdGVtLmdldDxEcmF3R2x5cGhzPigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TmF0aXZl
SW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdHRlcm4+KGl0ZW0uZ2V0
PERyYXdQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3UmVjdD4oaXRlbS5nZXQ8RHJhd1JlY3Q+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdMaW5lPihpdGVt
LmdldDxEcmF3TGluZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxEcmF3TGlu
ZXNGb3JUZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFy
a2VyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KGl0
ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdFbGxpcHNlPihpdGVtLmdl
dDxEcmF3RWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RHJhd1BhdGg+KGl0ZW0uZ2V0PERyYXdQYXRoPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
Rm9jdXNSaW5nUGF0aD4oaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJlY3Q+KGl0
ZW0uZ2V0PEZpbGxSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xv
cjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oaXRlbS5nZXQ8Rmls
bFJlY3RXaXRoQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRp
ZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aEdyYWRpZW50PihpdGVtLmdl
dDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBv
c2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVjdD4oaXRl
bS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91
bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJvdW5kZWRSZWN0PihpdGVtLmdl
dDxGaWxsUm91bmRlZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
PihpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RmlsbElubGluZVBhdGg+KGl0ZW0uZ2V0PEZpbGxJbmxpbmVQYXRoPigp
KTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4g
YXBwZW5kPEZpbGxQYXRoPihpdGVtLmdldDxGaWxsUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbEVsbGlwc2U+KGl0ZW0u
Z2V0PEZpbGxFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpdGVtLmdldDxGbHVzaENvbnRleHQ+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0
aW9uSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4o
aXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UHV0SW1hZ2VEYXRhPihp
dGVtLmdldDxQdXRJbWFnZURhdGE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVG
b3JNZWRpYToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQYWludEZyYW1lRm9yTWVkaWE+KGl0ZW0u
Z2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVj
dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VSZWN0PihpdGVtLmdldDxTdHJva2VSZWN0
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFN0cm9rZUxpbmU+KGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCkpOwotI2lmIEVOQUJMRShJTkxJ
TkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlSW5saW5lUGF0aD4oaXRlbS5nZXQ8U3Ryb2tlSW5saW5l
UGF0aD4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFN0cm9rZVBhdGg+KGl0ZW0uZ2V0PFN0cm9rZVBhdGg+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ry
b2tlRWxsaXBzZT4oaXRlbS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPENsZWFyUmVjdD4oaXRlbS5nZXQ8
Q2xlYXJSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVy
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW0uZ2V0
PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5z
cGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZFRyYW5zcGFyZW5jeUxheWVy
PihpdGVtLmdldDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKSk7Ci0jaWYgVVNFKENHKQotICAgIGNh
c2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxB
cHBseVN0cm9rZVBhdHRlcm4+KGl0ZW0uZ2V0PEFwcGx5U3Ryb2tlUGF0dGVybj4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxB
cHBseUZpbGxQYXR0ZXJuPihpdGVtLmdldDxBcHBseUZpbGxQYXR0ZXJuPigpKTsKLSNlbmRpZgot
ICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2Fs
ZUZhY3Rvcj4oKSk7Ci0gICAgfQotfQotCi1ib29sIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6YXRF
bmQoKSBjb25zdAotewotICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSB8fCAhbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZm
ZXIoKTsKLSAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLm1fd3JpdGFibGVCdWZmZXIuZGF0YSAr
IGl0ZW1zLm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgcmV0dXJuIG1fY3Vyc29yID09IGVu
ZEN1cnNvcjsKLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJ
dGVtKCkKLXsKLSAgICBjbGVhckN1cnJlbnRJdGVtKCk7Ci0KLSAgICBpZiAoYXRFbmQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigpOwotICAgIGF1
dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0pOwotICAgIGlm
IChpc0RyYXdpbmdJdGVtKGl0ZW1UeXBlKSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVt
RXh0ZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0gbV9kaXNwbGF5
TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwotICAgICAgICBt
X2RyYXdpbmdJdGVtSW5kZXgrKzsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50
ID0gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byogY2xpZW50ID0gaXRlbXMubV9yZWFkaW5nQ2xp
ZW50OwotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbUluQnl0ZXMoaXRlbVR5cGUpOwotICAgIGlmIChjbGllbnQpIHsKLSAgICAgICAgbV9j
dXJyZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZp
eGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJ
dGVtKSk7Ci0gICAgICAgIGlmIChpc0lubGluZUl0ZW0oaXRlbVR5cGUpKSB7Ci0gICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoIUl0ZW1IYW5kbGUgeyBtX2N1cnNvciB9LnNhZmVDb3B5KHsgbV9jdXJy
ZW50QnVmZmVyRm9ySXRlbSB9KSkpCi0gICAgICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7
Ci0KLSAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gZGF0YUxlbmd0
aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07Ci0gICAgICAgICAg
ICBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7Ci0g
ICAgICAgICAgICBhdXRvIGRlY29kZWRJdGVtSGFuZGxlID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0
YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSwgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7
Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZWRJdGVtSGFuZGxlKSkKLSAgICAgICAg
ICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgbV9jdXJyZW50QnVmZmVy
Rm9ySXRlbVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICAgICAgICAg
IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5k
VXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IG1fY3Vyc29y
OwotICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6ZU9mVHlwZUFu
ZEl0ZW07Ci0gICAgfQotfQotCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6YWR2YW5jZSgp
Ci17Ci0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY3Vyc29yICs9
IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXI7Ci0KLSAgICBpZiAobV9jdXJzb3IgPT0gbV9jdXJy
ZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZlcigpLT5t
X3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4
Kys7Ci0gICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgfQot
Ci0gICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6OmNsZWFyQ3VycmVudEl0ZW0oKQordm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOwot
ICAgIGlmIChpdGVtcyAmJiBpdGVtcy0+bV9yZWFkaW5nQ2xpZW50ICYmIG1fY3VycmVudEJ1ZmZl
ckZvckl0ZW0pIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2lzVmFsaWQpKQotICAgICAgICAgICAg
SXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfS5kZXN0cm95KCk7Ci0KLSAgICAg
ICAgaWYgKFVOTElLRUxZKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZv
ckN1cnJlbnRJdGVtKSkKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0pOwotICAgIH0KLQotICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAwOwotICAgIG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0gPSBudWxscHRyOworICAgIFdURjo6dmlzaXQoWyZdKGNvbnN0
IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgYXBwZW5kKGl0ZW0pOworICAgIH0sIGl0ZW0pOwogfQog
Ci12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZVRvRW5kKCkKK2F1dG8gRGlzcGxheUxp
c3Q6OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICBpZiAoYXV0byBpdGVtcyA9IGl0
ZW1CdWZmZXIoKSkgewotICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVy
LmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICAgICAgbV9jdXJyZW50
RW5kT2ZCdWZmZXIgPSBtX2N1cnNvcjsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0g
aXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICB9CisgICAgcmV0dXJuIHsgKnRo
aXMgfTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0
T2ZDdXJyZW50QnVmZmVyKCkKK2F1dG8gRGlzcGxheUxpc3Q6OmVuZCgpIGNvbnN0IC0+IEl0ZXJh
dG9yCiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKLSAgICBpZiAoIWl0ZW1zKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRl
bXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICBpZiAobV9yZWFkT25seUJ1ZmZlcklu
ZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKLSAgICAgICAgYXV0byYgbmV4dEJ1ZmZl
ckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhd
OwotICAgICAgICBtX2N1cnNvciA9IG5leHRCdWZmZXJIYW5kbGUuZGF0YTsKLSAgICAgICAgbV9j
dXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvciArIG5leHRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7
Ci0gICAgfSBlbHNlIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25s
eUJ1ZmZlcnMpIHsKLSAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5k
YXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgaXRlbXMtPm1f
d3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgfQorICAgIHJldHVybiB7ICp0aGlzLCBJdGVyYXRv
cjo6SW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcyB9OwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIERp
c3BsYXlMaXN0CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCmluZGV4IGYxODlkZWRmNjc0OWJjYzIwMTQ3MmFlZDJhODcxNmJhNjU3NDY1MmUuLjkzNGNj
MTVkNDQyZDFiYjAyMzU3YzQ1NjlhZmEyZDYwYjZmNzY4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiBlbnVtIEFzVGV4dEZsYWcgewpAQCAt
ODksNzYgKzg4LDE1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hJ
dGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYpPiYmKSBjb25z
dDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgYXBwZW5k
KEFyZ3MmJi4uLiBhcmdzKTsKLSAgICB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICB2b2lk
IGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogICAgIGJvb2wgdHJhY2tzRHJhd2lu
Z0l0ZW1FeHRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHM7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhi
b29sKTsKIAotICAgIGNsYXNzIGl0ZXJhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0g
Y2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgeyBObywgWWVzIH07Ci0gICAgICAgIGl0ZXJhdG9y
KGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgaW1t
ZWRpYXRlbHlNb3ZlVG9FbmQgPSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6Tm8pCi0gICAgICAgICAg
ICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6WWVzKQotICAg
ICAgICAgICAgICAgIG1vdmVUb0VuZCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICAgICAgICAgICAg
ICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgfml0ZXJhdG9yKCkKLSAgICAgICAgewotICAgICAgICAgICAgY2xlYXJDdXJyZW50SXRlbSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVyLm1fZGlzcGxheUxpc3QgJiYg
bV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICAg
ICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0KLQotICAgICAgICBzdHJ1Y3QgVmFs
dWUgewotICAgICAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gaXRlbTsKLSAgICAgICAgICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwotICAgICAgICAgICAgc2l6ZV90IGl0ZW1TaXpl
SW5CdWZmZXIgeyAwIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgVmFsdWUgb3BlcmF0b3IqKCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBt
X2lzVmFsaWQgPyBtYWtlT3B0aW9uYWwoSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0gfSkgOiBXVEY6Om51bGxvcHQsCi0gICAgICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAot
ICAgICAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsCi0gICAgICAgICAgICB9
OwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID0gMjU2OwotCi0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG9FbmQoKTsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZHZh
bmNlKCk7Ci0gICAgICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKLQotICAgICAgICBJdGVtQnVmZmVy
KiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZF
eGlzdHMoKTsgfQotCi0gICAgICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0Owot
ICAgICAgICB1aW50OF90KiBtX2N1cnNvciB7IG51bGxwdHIgfTsKLSAgICAgICAgc2l6ZV90IG1f
cmVhZE9ubHlCdWZmZXJJbmRleCB7IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1J
bmRleCB7IDAgfTsKLSAgICAgICAgdWludDhfdCogbV9jdXJyZW50RW5kT2ZCdWZmZXIgeyBudWxs
cHRyIH07Ci0KLSAgICAgICAgdWludDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6
ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07Ci0gICAgICAgIHVpbnQ4X3QqIG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0gICAgICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbV9jdXJyZW50RXh0ZW50OwotICAgICAgICBzaXplX3QgbV9jdXJyZW50SXRlbVNpemVJ
bkJ1ZmZlciB7IDAgfTsKLSAgICAgICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07Ci0gICAgfTsK
LQotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4geyAqdGhpcyB9OyB9Ci0gICAg
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyAqdGhpcywgaXRlcmF0b3I6OkltbWVkaWF0
ZWx5TW92ZVRvRW5kOjpZZXMgfTsgfQorICAgIGNsYXNzIEl0ZXJhdG9yOworCisgICAgSXRlcmF0
b3IgYmVnaW4oKSBjb25zdDsKKyAgICBJdGVyYXRvciBlbmQoKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBJdGVtQnVmZmVyKiBpdGVtQnVmZmVySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX2l0
ZW1zLmdldCgpOyB9CkBAIC0xOTEsNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJ
dGVtSGFuZGxlKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0Rmxh
Z3MsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1f
aW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggMGY4MTE0Yjgx
ZGRjNWFhYmMxN2Q1YjE1NGU4ZDk3YzczNTdkMTI1NS4uYmE2ZThiYTVhN2EwOGY3NTg2OWU0ODYy
NTg4NTVlNzM0OTFlNjQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsNjc2ICszMiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi1D
U3RyaW5nIEl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9uKCkgY29uc3QKLXsKLSAgICBUZXh0U3RyZWFt
IHRzOwotICAgIHRzIDw8ICp0aGlzOwotICAgIHJldHVybiB0cy5yZWxlYXNlKCkudXRmOCgpOwot
fQotI2VuZGlmCi0KLXZvaWQgSXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQotewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZTog
ewotICAgICAgICBnZXQ8U2F2ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOiB7Ci0gICAgICAgIGdldDxSZXN0b3Jl
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OlRyYW5zbGF0ZTogewotICAgICAgICBnZXQ8VHJhbnNsYXRlPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZTog
ewotICAgICAgICBnZXQ8Um90YXRlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOiB7Ci0gICAgICAgIGdldDxTY2FsZT4o
KS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpDb25jYXRlbmF0ZUNUTTogewotICAgICAgICBnZXQ8Q29uY2F0ZW5hdGVDVE0+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0Q1RNOiB7Ci0gICAgICAgIGdldDxTZXRDVE0+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50
OiB7Ci0gICAgICAgIGdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmls
bENvbG9yOiB7Ci0gICAgICAgIGdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5l
U3Ryb2tlQ29sb3I6IHsKLSAgICAgICAgZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpLmFwcGx5
KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dFN0cm9rZVRoaWNrbmVzczogewotICAgICAgICBnZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpLmFw
cGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0YXRlOiB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6IHsKLSAgICAgICAgZ2V0
PFNldExpbmVDYXA+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6IHsKLSAgICAgICAgZ2V0PFNldExpbmVEYXNo
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OlNldExpbmVKb2luOiB7Ci0gICAgICAgIGdldDxTZXRMaW5lSm9pbj4oKS5hcHBseShj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRN
aXRlckxpbWl0OiB7Ci0gICAgICAgIGdldDxTZXRNaXRlckxpbWl0PigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93
OiB7Ci0gICAgICAgIGdldDxDbGVhclNoYWRvdz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOiB7Ci0gICAgICAgIGdldDxD
bGlwPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBPdXQ6IHsKLSAgICAgICAgZ2V0PENsaXBPdXQ+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1h
Z2VCdWZmZXI6IHsKLSAgICAgICAgZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRU
b1BhdGg6IHsKLSAgICAgICAgZ2V0PENsaXBPdXRUb1BhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6IHsKLSAg
ICAgICAgZ2V0PENsaXBQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczogewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogewotICAgICAgICBn
ZXQ8RHJhd0ltYWdlQnVmZmVyPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogewotICAgICAgICBnZXQ8
RHJhd05hdGl2ZUltYWdlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7Ci0gICAgICAgIGdldDxEcmF3UGF0
dGVybj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDogewotICAgICAgICBnZXQ8RHJhd1JlY3Q+KCkuYXBwbHkoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmU6IHsKLSAgICAgICAgZ2V0PERyYXdMaW5lPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6IHsKLSAg
ICAgICAgZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
cjogewotICAgICAgICBnZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxs
aXBzZTogewotICAgICAgICBnZXQ8RHJhd0VsbGlwc2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6IHsKLSAgICAg
ICAgZ2V0PERyYXdQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7Ci0gICAgICAgIGdldDxE
cmF3Rm9jdXNSaW5nUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6IHsKLSAgICAgICAgZ2V0
PERyYXdGb2N1c1JpbmdSZWN0cz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDogewotICAgICAgICBnZXQ8RmlsbFJl
Y3Q+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6IHsKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aENv
bG9yPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OiB7Ci0gICAgICAgIGdldDxGaWxsUmVjdFdp
dGhHcmFkaWVudD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6IHsKLSAgICAgICAgZ2V0PEZpbGxD
b21wb3NpdGVkUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6IHsKLSAgICAgICAgZ2V0PEZpbGxS
b3VuZGVkUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZTogewotICAgICAgICBnZXQ8
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbElubGluZVBhdGg6IHsKLSAgICAgICAgZ2V0PEZpbGxJbmxpbmVQYXRoPigpLmFwcGx5
KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFBhdGg6IHsKLSAgICAgICAgZ2V0PEZpbGxQYXRoPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNl
OiB7Ci0gICAgICAgIGdldDxGaWxsRWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6IHsKLSAgICAg
ICAgZ2V0PEZsdXNoQ29udGV4dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1h
Z2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
OgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB7Ci0g
ICAgICAgIGdldDxQdXRJbWFnZURhdGE+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOiB7Ci0gICAg
ICAgIGdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDogewotICAgICAgICBn
ZXQ8U3Ryb2tlUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOiB7Ci0gICAgICAgIGdldDxTdHJva2VMaW5l
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsK
LSAgICAgICAgZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOiB7
Ci0gICAgICAgIGdldDxTdHJva2VQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6IHsKLSAgICAgICAg
Z2V0PFN0cm9rZUVsbGlwc2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OiB7Ci0gICAgICAgIGdldDxDbGVhclJl
Y3Q+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjogewotICAgICAgICBnZXQ8QmVnaW5UcmFu
c3BhcmVuY3lMYXllcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjogewotICAgICAgICBnZXQ8
RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVy
bjogewotICAgICAgICBnZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRl
cm46IHsKLSAgICAgICAgZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURl
dmljZVNjYWxlRmFjdG9yOiB7Ci0gICAgICAgIGdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLX0KLQotdm9p
ZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKLXsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6IHsKLSAgICAgICAgZ2V0PENsaXBPdXRUb1BhdGg+
KCkufkNsaXBPdXRUb1BhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwUGF0aDogewotICAgICAgICBnZXQ8Q2xpcFBhdGg+KCkufkNsaXBQYXRoKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmlu
Z1BhdGg6IHsKLSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLn5EcmF3Rm9jdXNSaW5n
UGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdG
b2N1c1JpbmdSZWN0czogewotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLn5EcmF3
Rm9jdXNSaW5nUmVjdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOiB7Ci0gICAgICAgIGdldDxEcmF3R2x5cGhzPigpLn5EcmF3R2x5cGhz
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVz
Rm9yVGV4dDogewotICAgICAgICBnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5+RHJhd0xpbmVzRm9y
VGV4dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXRoOiB7Ci0gICAgICAgIGdldDxEcmF3UGF0aD4oKS5+RHJhd1BhdGgoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6IHsKLSAg
ICAgICAgZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKS5+RmlsbENvbXBvc2l0ZWRSZWN0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHsKLSAg
ICAgICAgZ2V0PEZpbGxQYXRoPigpLn5GaWxsUGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOiB7Ci0gICAgICAgIGdldDxG
aWxsUmVjdFdpdGhDb2xvcj4oKS5+RmlsbFJlY3RXaXRoQ29sb3IoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDogewotICAg
ICAgICBnZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkufkZpbGxSZWN0V2l0aEdyYWRpZW50KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6IHsKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLn5G
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDogewotICAgICAgICBnZXQ8RmlsbFJvdW5kZWRS
ZWN0PigpLn5GaWxsUm91bmRlZFJlY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHsKLSAgICAgICAgZ2V0PFB1dEltYWdlRGF0YT4o
KS5+UHV0SW1hZ2VEYXRhKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0TGluZURhc2g6IHsKLSAgICAgICAgZ2V0PFNldExpbmVEYXNoPigpLn5TZXRMaW5l
RGFzaCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0
YXRlOiB7Ci0gICAgICAgIGdldDxTZXRTdGF0ZT4oKS5+U2V0U3RhdGUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOiB7Ci0gICAgICAgIGdl
dDxTdHJva2VQYXRoPigpLn5TdHJva2VQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjogewotICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBseURldmljZVNjYWxl
RmFjdG9yPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFVTRShDRykKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOiB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEFwcGx5RmlsbFBhdHRlcm4+Ojp2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJv
a2VQYXR0ZXJuOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEFwcGx5U3Ryb2tlUGF0dGVybj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5U
cmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xlYXJSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OiB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENsZWFyU2hhZG93Pjo6
dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
Q2xpcD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwT3V0OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPENsaXBPdXQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6IHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xpcFRvSW1hZ2VCdWZmZXI+Ojp2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5h
dGVDVE06IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8Q29uY2F0ZW5hdGVDVE0+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjogewotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3RG90c0ZvckRv
Y3VtZW50TWFya2VyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdFbGxpcHNlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdFbGxpcHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogewotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3SW1hZ2VC
dWZmZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdOYXRpdmVJbWFnZT46OnZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogewotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3UGF0dGVybj46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TGluZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxEcmF3TGluZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3UmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZFRyYW5zcGFyZW5jeUxheWVy
Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxFbGxpcHNlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEZpbGxFbGxpcHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxp
bmVQYXRoOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPEZpbGxJbmxpbmVQYXRoPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6IHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RmlsbFJlY3Q+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OiB7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEZs
dXNoQ29udGV4dD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6IHsKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjog
ewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOiB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFBhaW50RnJhbWVGb3JN
ZWRpYT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpSZXN0b3JlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPFJlc3RvcmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Um90YXRlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFJvdGF0ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNhdmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6IHsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2NhbGU+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOiB7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldENUTT46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJ
bmxpbmVGaWxsQ29sb3I6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8U2V0SW5saW5lRmlsbENvbG9yPjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDogewot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRJ
bmxpbmVGaWxsR3JhZGllbnQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6IHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0SW5saW5lU3Ryb2tlQ29sb3I+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
TGluZUNhcDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxTZXRMaW5lQ2FwPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldExpbmVKb2luPjo6dmFsdWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6IHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0TWl0
ZXJMaW1pdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0U3Ryb2tlVGhpY2tuZXNzPjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6IHsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U3Ry
b2tlRWxsaXBzZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUo
SU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOiB7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFN0
cm9rZUlubGluZVBhdGg+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFN0cm9rZVJlY3Q+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZTogewotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VM
aW5lPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxUcmFuc2xhdGU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29u
c3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNlOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0gdHJ1ZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUg
SXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+
IGNvcHlJbnRvKGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uV2l0aE9mZnNldCkKLXsKLSAgICBuZXcgKGRlc3RpbmF0aW9uV2l0aE9mZnNldCkgSXRlbShp
dGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgSXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVt
PiwgYm9vbD4gY29weUludG8oY29uc3QgSXRlbUhhbmRsZSYgaXRlbUhhbmRsZSwgdWludDhfdCog
ZGVzdGluYXRpb25XaXRoT2Zmc2V0KQotewotICAgIGF1dG8qIG5ld0l0ZW0gPSBuZXcgKGRlc3Rp
bmF0aW9uV2l0aE9mZnNldCkgSXRlbShpdGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAgICByZXR1
cm4gbmV3SXRlbS0+aXNWYWxpZCgpOwotfQotCi1ib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0
ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0Ci17Ci0gICAgYXV0byBpdGVtVHlwZSA9IHR5cGUo
KTsKLSAgICBkZXN0aW5hdGlvbi5kYXRhWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5
cGUpOwotICAgIGF1dG8gaXRlbU9mZnNldCA9IGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YodWlu
dDY0X3QpOwotICAgIHN3aXRjaCAoaXRlbVR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
T3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88Q2xpcE91dFRvUGF0aD4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1
cm4gY29weUludG88Q2xpcFBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1
c1JpbmdQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zv
Y3VzUmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3VzUmluZ1JlY3Rz
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdHbHlwaHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xpbmVzRm9y
VGV4dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdOYXRpdmVJbWFnZT4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICByZXR1
cm4gY29weUludG88RHJhd1BhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXRoPigqdGhp
cywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0Ogot
ICAgICAgICByZXR1cm4gY29weUludG88RmlsbENvbXBvc2l0ZWRSZWN0PigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxGaWxsUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoQ29s
b3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhH
cmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aEdyYWRpZW50Pigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSb3VuZGVkUmVjdD4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFB1dEltYWdlRGF0YT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZURhc2g+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPFNldFN0YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVBhdGg+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxl
RmFjdG9yOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBs
eUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlGaWxsUGF0dGVybj4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVy
bjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVybj4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRyYW5zcGFyZW5jeUxh
eWVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0Ogot
ICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxD
bGVhclNoYWRvdz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBPdXQ+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBUb0ltYWdlQnVmZmVyPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxDb25jYXRlbmF0ZUNUTT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxE
cmF3RWxsaXBzZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xpbmU+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PERyYXdSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gY29weUludG88RW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5k
VHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRUcmFuc3BhcmVu
Y3lMYXllcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxp
cHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbEVsbGlwc2U+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxJbmxpbmVQYXRoPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gY29weUludG88
Rmx1c2hDb250ZXh0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gY29w
eUludG88TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
OgotICAgICAgICByZXR1cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgotICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRGcmFtZUZvck1lZGlhPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFJlc3RvcmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpS
b3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSb3RhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4gY29weUludG88U2F2
ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAg
ICByZXR1cm4gY29weUludG88U2NhbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRDVE0+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAg
ICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsQ29sb3I+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFNldElubGluZVN0cm9rZUNvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExp
bmVDYXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9p
bjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVKb2luPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFNldE1pdGVyTGltaXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRTdHJv
a2VUaGlja25lc3M+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlRWxsaXBzZT4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VJ
bmxpbmVQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlUmVjdD4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxTdHJva2VMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gY29weUludG88VHJhbnNsYXRlPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogSXRlbUJ1
ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVySGFuZGxlcyYmIGhhbmRsZXMpCiAgICAgOiBtX3Jl
YWRPbmx5QnVmZmVycyhXVEZNb3ZlKGhhbmRsZXMpKQogewpAQCAtNzE3LDcgKzQ3LDYgQEAgSXRl
bUJ1ZmZlcjo6fkl0ZW1CdWZmZXIoKQogSXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVy
JiYgb3RoZXIpCiAgICAgOiBtX3JlYWRpbmdDbGllbnQoc3RkOjpleGNoYW5nZShvdGhlci5tX3Jl
YWRpbmdDbGllbnQsIG51bGxwdHIpKQogICAgICwgbV93cml0aW5nQ2xpZW50KHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV93cml0aW5nQ2xpZW50LCBudWxscHRyKSkKLSAgICAsIG1faXRlbXNUb0Rlc3Ry
b3lJbkFsbG9jYXRlZEJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zVG9EZXN0cm95
SW5BbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9hbGxvY2F0ZWRCdWZmZXJzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9yZWFkT25s
eUJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlYWRPbmx5QnVmZmVycywgeyB9KSkKICAg
ICAsIG1fd3JpdGFibGVCdWZmZXIoc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRhYmxlQnVmZmVy
LCB7IH0pKQpAQCAtNzI5LDcgKzU4LDYgQEAgSXRlbUJ1ZmZlciYgSXRlbUJ1ZmZlcjo6b3BlcmF0
b3I9KEl0ZW1CdWZmZXImJiBvdGhlcikKIHsKICAgICBtX3JlYWRpbmdDbGllbnQgPSBzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fcmVhZGluZ0NsaWVudCwgbnVsbHB0cik7CiAgICAgbV93cml0aW5nQ2xp
ZW50ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRpbmdDbGllbnQsIG51bGxwdHIpOwotICAg
IG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSk7CiAgICAgbV9hbGxvY2F0
ZWRCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2FsbG9jYXRlZEJ1ZmZlcnMsIHsgfSk7
CiAgICAgbV9yZWFkT25seUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVhZE9ubHlC
dWZmZXJzLCB7IH0pOwogICAgIG1fd3JpdGFibGVCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fd3JpdGFibGVCdWZmZXIsIHsgfSk7CkBAIC03NjMsOSArOTEsNiBAQCB2b2lkIEl0ZW1CdWZm
ZXI6OmZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRs
ZSYpPiYmIG1hcAogCiB2b2lkIEl0ZW1CdWZmZXI6OmNsZWFyKCkKIHsKLSAgICBmb3IgKGF1dG8g
aXRlbSA6IHN0ZDo6ZXhjaGFuZ2UobV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycywg
eyB9KSkKLSAgICAgICAgaXRlbS5kZXN0cm95KCk7Ci0KICAgICBmb3IgKGF1dG8qIGJ1ZmZlciA6
IHN0ZDo6ZXhjaGFuZ2UobV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICAgICBmYXN0RnJl
ZShidWZmZXIpOwogCkBAIC03NzYsNyArMTAxLDcgQEAgdm9pZCBJdGVtQnVmZmVyOjpjbGVhcigp
CiAKIERpZENoYW5nZUl0ZW1CdWZmZXIgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZO
ZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpCiB7Ci0gICAgYXV0byBzaXplRm9yQnVmZmVyU3dp
dGNoSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZTo6TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICBhdXRvIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVt
ID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcj4oKTsKICAgICBpZiAobV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIG51bWJlck9mQnl0ZXMg
KyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA8PSBtX3dyaXRhYmxlQnVmZmVyLmNhcGFjaXR5KQog
ICAgICAgICByZXR1cm4gRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6Tm87CiAKQEAgLTc5Miw3ICsxMTcs
NyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklm
TmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogICAgIHJldHVybiBoYWRQcmV2aW91c0J1ZmZl
ciA/IERpZENoYW5nZUl0ZW1CdWZmZXI6OlllcyA6IERpZENoYW5nZUl0ZW1CdWZmZXI6Ok5vOwog
fQogCi12b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCit2
b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0
ZW0pCiB7CiAgICAgYXV0byBkYXRhID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRlbXBv
cmFyeUl0ZW0pOwogICAgIGlmICghZGF0YSkKQEAgLTgwMyw3ICsxMjgsNyBAQCB2b2lkIEl0ZW1C
dWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiAKICAgICBhdXRvIGJ1ZmZl
ckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNpdHlG
b3JFbmNvZGVkSXRlbSk7CiAKLSAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVt
YmVyT2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZW1wb3JhcnlJdGVtLnR5cGUoKSk7
CisgICAgbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUodGVtcG9yYXJ5SXRlbSkpOwogICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1i
ZXJPZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIu
ZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0
YS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBkODc1OTMyYzE3NmYwNzkwMzZlZjBjNGZiZjVkMmRh
NzEzMzE1YWQ1Li5lOTQzM2M0NTE4MjkxODRhMTFjNjliM2U1Nzc2OWJkMWIwNzlhNjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDkgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgorI2luY2x1ZGUgIkRpc3BsYXlM
aXN0SXRlbXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOCw5ICs0
MCw2IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0OwogCi1l
bnVtIEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJdGVtQnVmZmVySWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKLQogLy8g
QW4gSXRlbUJ1ZmZlckhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCBjb250
YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLgogc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGUgewog
ICAgIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CkBAIC01MywzNiArNTIsNiBAQCBz
dHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZSB7CiAKIHVzaW5nIEl0ZW1CdWZmZXJIYW5kbGVzID0gVmVj
dG9yPEl0ZW1CdWZmZXJIYW5kbGUsIDI+OwogCi0vLyBBbiBJdGVtSGFuZGxlIHdyYXBzIGEgcG9p
bnRlciB0byBhbiBJdGVtVHlwZSBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSBhbiBpdGVtIG9mIHRo
YXQgdHlwZS4KLS8vIEVhY2ggaXRlbSBoYW5kbGUgZGF0YSBwb2ludGVyIGlzIGFsaWduZWQgdG8g
OCBieXRlcywgYW5kIHRoZSBpdGVtIGl0c2VsZiBpcyBhbHNvIGFsaWduZWQKLS8vIHRvIDggYnl0
ZXMuIFRvIGVuc3VyZSB0aGlzLCB0aGUgaXRlbSB0eXBlIGNvbnNpc3RzIG9mIDggYnl0ZXMgKDEg
Ynl0ZSBmb3IgdGhlIHR5cGUgYW5kIDcKLS8vIGJ5dGVzIG9mIHBhZGRpbmcpLgotc3RydWN0IEl0
ZW1IYW5kbGUgewotICAgIHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07Ci0KLSAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJveSgp
OwotICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0Ojppc0RyYXdpbmdJdGVtKHR5cGUoKSk7IH0KLQotICAgIG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhISgqdGhpcyk7IH0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFkYXRhOyB9Ci0KLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElTQUJMRUQK
LSAgICBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIEl0ZW1UeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtVHlwZT4oZGF0YVswXSk7IH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXMoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gVDo6aXRlbVR5cGU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUJiBnZXQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzPFQ+KCkpOwotICAgICAgICByZXR1cm4gKnJl
aW50ZXJwcmV0X2Nhc3Q8VCo+KCZkYXRhW3NpemVvZih1aW50NjRfdCldKTsKLSAgICB9Ci0KLSAg
ICBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0OwotfTsKLQogZW51
bSBjbGFzcyBEaWRDaGFuZ2VJdGVtQnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogY2xhc3Mg
SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgewpAQCAtOTAsNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgSXRl
bUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCkgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShjb25z
dCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5nZUl0ZW1C
dWZmZXIpID0gMDsKIH07CiAKQEAgLTk4LDcgKzY3LDcgQEAgY2xhc3MgSXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JF
VFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJ
dGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlv
bmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7CiB9OwogCiAv
LyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEsIGFuZCBjb25z
aXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFuZGxlICh0byB3aGljaCBkaXNwbGF5CkBA
IC0xNDksMjYgKzExOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YSBiYWNrIGludG8gYW4gaXRl
bSBvZiB0eXBlIFQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9p
ZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUgfHwgIVQ6OmlzSW5saW5lSXRl
bSk7Ci0KLSAgICAgICAgaWYgKCFUOjppc0lubGluZUl0ZW0gJiYgbV93cml0aW5nQ2xpZW50KSB7
Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgICAgIF9fZGVjbHNwZWMoYWxpZ24oOCkpIHR5
cGVkZWYgdWludDhfdCBFbmNvZGluZ0J1ZmZlcltzaXplb2YodWludDY0X3QpICsgc2l6ZW9mKFQp
XTsKLSNlbHNlCi0gICAgICAgICAgICB1c2luZyBFbmNvZGluZ0J1ZmZlciBfX2F0dHJpYnV0ZV9f
KChhbGlnbmVkICg4KSkpID0gdWludDhfdFtzaXplb2YodWludDY0X3QpICsgc2l6ZW9mKFQpXTsK
LSNlbmRpZgotICAgICAgICAgICAgc3RhdGljIEVuY29kaW5nQnVmZmVyIHRlbXBvcmFyeUl0ZW1C
dWZmZXI7Ci0gICAgICAgICAgICB0ZW1wb3JhcnlJdGVtQnVmZmVyWzBdID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oVDo6aXRlbVR5cGUpOwotICAgICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJdGVtQnVm
ZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwot
ICAgICAgICAgICAgYXBwZW5kKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKLSAgICAgICAgICAg
IEl0ZW1IYW5kbGUgeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0uZGVzdHJveSgpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUgPT0g
VDo6aXNJbmxpbmVJdGVtKTsKKworICAgICAgICBpZiAoIVQ6OmlzSW5saW5lSXRlbSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93cml0aW5nQ2xpZW50KTsKKyAgICAgICAgICAgIGFw
cGVuZChEaXNwbGF5TGlzdEl0ZW0oVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlckNoYW5n
ZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUlu
Qnl0ZXMoVDo6aXRlbVR5cGUpKTsKLQotICAgICAgICBpZiAoIXN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxUPjo6dmFsdWUpCi0gICAgICAgICAgICBtX2l0ZW1zVG9EZXN0cm95SW5BbGxv
Y2F0ZWRCdWZmZXJzLmFwcGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVt
YmVyT2ZCeXRlc10gfSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJs
ZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxUPigpKTsKIAog
ICAgICAgICB1bmNoZWNrZWRBcHBlbmQ8VD4oYnVmZmVyQ2hhbmdlZCwgc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKICAgICB9CkBAIC0xODMsMTggKzE0MSwxNyBAQCBwcml2YXRlOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZCeXRlcywg
RGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBEaWRDaGFuZ2VJdGVt
QnVmZmVyIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChEaWRDaGFu
Z2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIsIEFyZ3MmJi4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0gPSAmbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3Jp
dHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAgICBzdGFydE9mSXRlbVswXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgbmV3IChzdGFydE9mSXRlbSArIHNpemVv
Zih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgZGlk
QXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpLCBk
aWRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbUluQnl0ZXM8VD4oKSwgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgfQogCiAg
ICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqIG1fcmVhZGluZ0NsaWVudCB7IG51bGxwdHIgfTsK
ICAgICBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCogbV93cml0aW5nQ2xpZW50IHsgbnVsbHB0ciB9
OwotICAgIFZlY3RvcjxJdGVtSGFuZGxlPiBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRCdWZm
ZXJzOwogICAgIFZlY3Rvcjx1aW50OF90Kj4gbV9hbGxvY2F0ZWRCdWZmZXJzOwogICAgIEl0ZW1C
dWZmZXJIYW5kbGVzIG1fcmVhZE9ubHlCdWZmZXJzOwogICAgIEl0ZW1CdWZmZXJIYW5kbGUgbV93
cml0YWJsZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzQ5N2YzOTUwNThhNjc2ODY0NDhhMjU1
NzE3NDBjZjQwMzdhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5o
CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2VudW0g
SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEl0ZW1CdWZmZXJJZGVudGlmaWVy
ID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmllclR5cGU+OworCit9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU2OTI1MDA2NTFhYTJiYWQ0ZTg5MWQ4OTc0MDJiMWFkMzBiNjBiMzEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgotCi0jaW5jbHVkZSAi
RGlzcGxheUxpc3RJdGVtcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgRGlz
cGxheUxpc3QgewotCi1zdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5
cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihTYXZlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFJlc3RvcmUpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5z
bGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihUcmFuc2xhdGUpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihSb3RhdGUpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNjYWxlKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIHNpemVvZihDb25jYXRlbmF0
ZUNUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gc2l6ZW9m
KFNldENUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKFNldElubGluZUZpbGxHcmFkaWVudCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElubGlu
ZUZpbGxDb2xvcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lU3Ryb2tlQ29sb3IpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRTdHJv
a2VUaGlja25lc3MpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKFNldFN0YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVDYXApOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVEYXNoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVEYXNoKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRMaW5lSm9pbik7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIHNpemVv
ZihTZXRNaXRlckxpbWl0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihDbGVhclNoYWRvdyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBUb0ltYWdlQnVmZmVy
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKENsaXBPdXRUb1BhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3R2x5
cGhzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRHJhd0ltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd05hdGl2ZUltYWdlKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3UGF0dGVy
bik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
RHJhd1JlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKERyYXdMaW5lKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0Ogot
ICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdMaW5lc0ZvclRleHQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0VsbGlwc2UpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXRoKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3Rm9j
dXNSaW5nUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKERyYXdGb2N1c1JpbmdSZWN0cyk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3QpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxS
ZWN0V2l0aENvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhHcmFkaWVudCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxD
b21wb3NpdGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSb3VuZGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxJbmxp
bmVQYXRoKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEZpbGxQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToK
LSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNoQ29udGV4dCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFB1dElt
YWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKFBhaW50RnJhbWVGb3JNZWRpYSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VSZWN0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZUxpbmUp
OwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlSW5saW5lUGF0aCk7Ci0j
ZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKFN0cm9rZVBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAg
ICAgIHJldHVybiBzaXplb2YoU3Ryb2tlRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xl
YXJSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsZWFyUmVjdCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdp
blRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lM
YXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmRUcmFuc3BhcmVuY3lMYXllcik7Ci0jaWYg
VVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAg
cmV0dXJuIHNpemVvZihBcHBseVN0cm9rZVBhdHRlcm4pOwotICAgIGNhc2UgSXRlbVR5cGU6OkFw
cGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2YoQXBwbHlGaWxsUGF0dGVybik7
Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBpc0RyYXdpbmdJ
dGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVt
VHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBh
dHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRv
UGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xv
cjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgIGNhc2UgSXRl
bVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgSXRlbVR5cGU6OlRy
YW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdHbHlwaHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRl
eHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zaXpl
X3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAg
cmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWlu
dDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7Ci19Ci0KLWJvb2wgaXNJbmxpbmVJdGVt
KEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUmVjdHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJl
Y3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0
dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFy
U2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVD
VE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5j
eUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJ
TkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlm
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hD
b250ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgIGNhc2UgSXRl
bVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgIGNhc2UgSXRl
bVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0Q1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRl
ckxpbWl0OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQot
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggY2Q2YzFhNDk5Yzk4MjE2ZTEyNjU4MGMzZTNj
YzRhM2Q4YzI2OTQ5MC4uOGE3MDBhNGY0MDdiNDNiZmZlNGMxODYzZTc2YzUxMDhhYjE5ZDYwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDkgKzk4LDUgQEAgZW51
bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3Is
CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzKEl0ZW1UeXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBl
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSk7Ci0KIH0gLy8g
bmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMTY4NzM2NWQ0N2I0NGE4ZThlOGNjMmQ4OGYx
OTc0YmRiNWU0NjJkMy4uZDg5MjM2ZGFiMjg1NmNlYzYwZDViODViYjg5OWQzYmNjYTMzZGQ2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKIAorI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVw
bGF5ZXIuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCkBAIC0yMjAsMTIgKzIyMSwxMiBAQCBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRAogewogfQog
Ci12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUlt
YWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQor
dm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFn
ZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkgY29u
c3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJuSW1h
Z2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5w
YXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRl
Q2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpz
dHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgaWYg
KG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpm
aWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29u
c3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRl
cm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBh
dHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0K
IApAQCAtMTA4MywxOTIgKzEwODQsMTIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCi17Ci0g
ICAgdHMgPDwgaXRlbS50eXBlKCk7Ci0KLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxUcmFuc2xh
dGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8Um90YXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2NhbGU+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8U2V0Q1RNPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRl
bmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0
cm9rZVRoaWNrbmVzcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
U3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxTZXRMaW5lQ2FwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRM
aW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZURhc2g+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTZXRMaW5lSm9pbj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TWl0ZXJMaW1pdD4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8Q2xpcD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcE91dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0
VG9QYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PERyYXdHbHlwaHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERy
YXdQYXR0ZXJuPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVj
dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1JlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3
TGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdD4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSb3VuZGVk
UmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RmlsbElubGluZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmx1c2hDb250ZXh0
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8UHV0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQ
YWludEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFBhaW50RnJhbWVGb3JN
ZWRpYT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ry
b2tlTGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQ
YXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNl
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PENsZWFyUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5U
cmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZh
Y3Rvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvLyBJdGVtcyB3aXRoIG5vIGFkZGl0aW9u
YWwgZGF0YS4KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlJl
c3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0jaWYgVVNF
KENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6Q2xl
YXJTaGFkb3c6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBXVEY6
OnZpc2l0KFsmXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgdHMgPDwg
ZGlzcGxheUxpc3RJdGVtLml0ZW1UeXBlOworICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0ZW07
CisgICAgfSwgaXRlbSk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAppbmRleCA3ZjE5MTEyNzRmNmFmNDUwZmY5NGNmYmQwNGMwNDQ2N2VhYzUwNDY0
Li40OTMyN2JlYjZkMjAxMmNhZWQzYWUxZjBjM2Y1ZmI2NjM5Nzk4NjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI2LDExICsyNiwxNCBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxp
c3QuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlz
dEl0ZW1UeXBlLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZv
bnQuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRl
ICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllcklkZW50aWZpZXIuaCIKQEAgLTM4
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0U3RyZWFt
OwpAQCAtMjY4LDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdl
LCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSog
ZmlsbFBhdHRlcm5JbWFnZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBhdHRlcm5E
YXRhIHsKQEAgLTkwMiw3ICs5MDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0Ry
YXdpbmdJdGVtID0gdHJ1ZTsKIAotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250
SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KKyAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRJ
ZGVudGlmaWVyOyB9CiAgICAgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IoKSBjb25zdCB7
IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBjb25zdCBWZWN0b3I8R2x5cGhCdWZm
ZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaHM7IH0KQEAgLTIy
NDcsNyArMjI1MSw5MCBAQCBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiB9OwogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBJdGVtSGFuZGxlKTsKK3VzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQ8CisgICAgU2F2
ZSwKKyAgICBSZXN0b3JlLAorICAgIFRyYW5zbGF0ZSwKKyAgICBSb3RhdGUsCisgICAgU2NhbGUs
CisgICAgU2V0Q1RNLAorICAgIENvbmNhdGVuYXRlQ1RNLAorICAgIFNldElubGluZUZpbGxHcmFk
aWVudCwKKyAgICBTZXRJbmxpbmVGaWxsQ29sb3IsCisgICAgU2V0SW5saW5lU3Ryb2tlQ29sb3Is
CisgICAgU2V0U3Ryb2tlVGhpY2tuZXNzLAorICAgIFNldFN0YXRlLAorICAgIFNldExpbmVDYXAs
CisgICAgU2V0TGluZURhc2gsCisgICAgU2V0TGluZUpvaW4sCisgICAgU2V0TWl0ZXJMaW1pdCwK
KyAgICBDbGVhclNoYWRvdywKKyAgICBDbGlwLAorICAgIENsaXBPdXQsCisgICAgQ2xpcFRvSW1h
Z2VCdWZmZXIsCisgICAgQ2xpcE91dFRvUGF0aCwKKyAgICBDbGlwUGF0aCwKKyAgICBCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcywKKyAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAg
RHJhd0dseXBocywKKyAgICBEcmF3SW1hZ2VCdWZmZXIsCisgICAgRHJhd05hdGl2ZUltYWdlLAor
ICAgIERyYXdQYXR0ZXJuLAorICAgIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIsCisgICAgRW5kVHJh
bnNwYXJlbmN5TGF5ZXIsCisgICAgRHJhd1JlY3QsCisgICAgRHJhd0xpbmUsCisgICAgRHJhd0xp
bmVzRm9yVGV4dCwKKyAgICBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyLAorICAgIERyYXdFbGxp
cHNlLAorICAgIERyYXdQYXRoLAorICAgIERyYXdGb2N1c1JpbmdQYXRoLAorICAgIERyYXdGb2N1
c1JpbmdSZWN0cywKKyAgICBGaWxsUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhDb2xvciwKKyAgICBG
aWxsUmVjdFdpdGhHcmFkaWVudCwKKyAgICBGaWxsQ29tcG9zaXRlZFJlY3QsCisgICAgRmlsbFJv
dW5kZWRSZWN0LAorICAgIEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlLAorICAgIEZpbGxJbmxpbmVQ
YXRoLAorICAgIEZpbGxQYXRoLAorICAgIEZpbGxFbGxpcHNlLAorICAgIFB1dEltYWdlRGF0YSwK
KyAgICBQYWludEZyYW1lRm9yTWVkaWEsCisgICAgU3Ryb2tlUmVjdCwKKyAgICBTdHJva2VMaW5l
LAorICAgIFN0cm9rZUlubGluZVBhdGgsCisgICAgU3Ryb2tlUGF0aCwKKyAgICBTdHJva2VFbGxp
cHNlLAorICAgIENsZWFyUmVjdCwKKyAgICBBcHBseVN0cm9rZVBhdHRlcm4sCisgICAgQXBwbHlG
aWxsUGF0dGVybiwKKyAgICBBcHBseURldmljZVNjYWxlRmFjdG9yLAorICAgIEZsdXNoQ29udGV4
dCwKKyAgICBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIsCisgICAgTWV0YUNvbW1hbmRDaGFu
Z2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPjsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK2lubGluZSBjb25zdGV4cHIgYm9v
bCBpc0RyYXdpbmdJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKQor
eworICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkg
eworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlzRHJhd2luZ0l0ZW07CisgICAgfSwg
ZGlzcGxheUxpc3RJdGVtKTsKK30KKworaW5saW5lIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlw
ZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkKK3sKKyAgICByZXR1cm4g
V1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgcmV0
dXJuIGRpc3BsYXlMaXN0SXRlbS5pdGVtVHlwZTsKKyAgICB9LCBkaXNwbGF5TGlzdEl0ZW0pOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0ZXhwciBzaXplX3QgcGFkZGVkU2l6ZU9m
VHlwZUFuZEl0ZW1JbkJ5dGVzKCkKK3sKKyAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSArIHJv
dW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIHNpemVvZihUKSk7Cit9CiAKIH0g
Ly8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUyN2VmMDA5ZmUx
NDM3Yjg4OGEwMTUyM2Q5MDIwMzNlYWNmMWJjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9y
LmNwcApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0
ZXJhdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CisKK0Rpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0VuZCBpbW1lZGlhdGVseU1vdmVUb0VuZCkKKyAg
ICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCit7CisgICAgaWYgKGltbWVkaWF0ZWx5TW92
ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1dG8g
aXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsKKyAgICAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRl
eCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgICAgICAgICBtX2N1cnNv
ciA9IGVuZE9mQ3VycmVudEJ1ZmZlcigpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAg
IG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Cit9CisKKyNpZiBBU1NFUlRfRU5B
QkxFRAorYm9vbCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Y29uc3QgYXV0byogaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgaWYgKCFpdGVtcykKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxl
QnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKKyAgICByZXR1cm4g
bV9jdXJzb3IgPT0gZW5kQ3Vyc29yOworfQorI2VuZGlmCisKK2F1dG8gRGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdCAtPiBPcHRpb25hbDxWYWx1ZT4KK3sKKyAgICBBU1NF
UlQoIWF0RW5kKCkpOworCisgICAgYXV0byBjdXJyZW50SXRlbSA9IHRoaXMtPmN1cnJlbnRJdGVt
KCk7CisgICAgaWYgKCFjdXJyZW50SXRlbSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gY3VycmVudEV4dGVudDsKKyAgICBpZiAoaXNEcmF3
aW5nSXRlbShjdXJyZW50SXRlbS52YWx1ZSgpKSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJ
dGVtRXh0ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBtX2Rpc3BsYXlM
aXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CisKKyAgICByZXR1
cm4ge3sgY3VycmVudEl0ZW0udmFsdWUoKSwgY3VycmVudEV4dGVudCwgY3VycmVudEl0ZW1TaXpl
SW5CdWZmZXIoKSB9fTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIERpc3Bs
YXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsK
KworICAgIG1fY3Vyc29yICs9IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyKCk7CisKKyAgICBpZiAo
Y3VycmVudEl0ZW1Jc0RyYXdpbmdJdGVtKCkpCisgICAgICAgICsrbV9kcmF3aW5nSXRlbUluZGV4
OworCisgICAgaWYgKG1fY3Vyc29yID09IGVuZE9mQ3VycmVudEJ1ZmZlcigpICYmIG1fcmVhZE9u
bHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7
CisgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCsrOworICAgICAgICBtb3ZlQ3Vyc29yVG9T
dGFydE9mQ3VycmVudEJ1ZmZlcigpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5
cGVuYW1lID0gdm9pZD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0g
ZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29s
IEhhc0lzVmFsaWQ8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuaXNW
YWxpZCgpKT4+ID0gdHJ1ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxp
bmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhSGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNW
YWxpZChjb25zdCBJdGVtJikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxIYXNJ
c1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mIGl0ZW0pCit7CisgICAgcmV0
dXJuIGl0ZW0uaXNWYWxpZCgpOworfQorCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgST4KK2lubGlu
ZSBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVu
dEl0ZW0oKSBjb25zdAoreworICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUg
aGVyZSBiZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAg
Ly8gRG9pbmcgc28gd291bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVsZSBh
Ym91dCBkb2luZyAiaWYgKCkgeyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYgKCkg
eyByZXR1cm47IH0gZWxzZSB7IHJldHVybjsgfSIKKyAgICAvLyBvciBCKSBjYXVzZSB0aGUgY29t
cGlsZXIgdG8gaW5maW5pdGVseSByZWN1cnNlIHdoZW4gZ2VuZXJhdGluZyB0ZW1wbGF0ZSBzcGVj
aWFsaXphdGlvbnMgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiBjb25zdGV4cHIgKEkgPCBXVEY6
OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICB1c2luZyBE
aXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8SSwgRGlzcGxh
eUxpc3RJdGVtPjsKKworICAgICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIG91dC1vZi1ib3VuZHMK
KyAgICAgICAgYXV0byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclsw
XSk7CisgICAgICAgIGlmIChpdGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlw
ZSkKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50SXRlbTxJICsgMT4oKTsKKworICAgICAgICBp
ZiAoRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKSB7CisgICAgICAgICAgICBjb25z
dCBEaXNwbGF5TGlzdEl0ZW1UeXBlJiBpdGVtID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGlz
cGxheUxpc3RJdGVtVHlwZSo+KG1fY3Vyc29yICsgc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAg
ICAgICBpZiAoaXNWYWxpZChpdGVtKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGxheUxp
c3RJdGVtKGl0ZW0pOyAvLyBGSVhNRTogVXNlIHsgfXMuCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZl
cigpOworICAgICAgICBhdXRvKiBjbGllbnQgPSBpdGVtcy5tX3JlYWRpbmdDbGllbnQ7CisgICAg
ICAgIGlmICghY2xpZW50KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIG91dC1vZi1ib3VuZHMKKyAgICAgICAgYXV0byBkYXRh
TGVuZ3RoID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fY3Vyc29yKVsxXTsKKyAgICAg
ICAgY29uc3QgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0
X3QpOworICAgICAgICBhdXRvIGl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEs
IGRhdGFMZW5ndGgsIGl0ZW1UeXBlKTsKKyAgICAgICAgaWYgKCFpdGVtIHx8ICFpc1ZhbGlkKGl0
ZW0udmFsdWUoKSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gRGlzcGxheUxpc3RJdGVtKFdURk1vdmUoaXRlbS52YWx1ZSgpKSk7IC8vIEZJWE1FOiBV
c2UgeyB9cy4KKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGUg
PHN0ZDo6c2l6ZV90IEk+CitpbmxpbmUgc3RkOjpzaXplX3QgRGlzcGxheUxpc3Q6Okl0ZXJhdG9y
OjpjdXJyZW50SXRlbVNpemVJbkJ1ZmZlcigpIGNvbnN0Cit7CisgICAgLy8gV2UgY2FuJ3QgdXNl
IGVhcmx5LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1c2Ugb2YgdGVtcGxhdGUgZXhwYW5zaW9uIGlu
IHRoZSBjb21waWxlci4KKyAgICAvLyBEb2luZyBzbyB3b3VsZCBlaXRoZXIgQSkgYnJlYWsgdGhl
IFdlYktpdCBzdHlsZSBydWxlIGFib3V0IGRvaW5nICJpZiAoKSB7IHJldHVybjsgfSByZXR1cm47
IiBpbnN0ZWFkIG9mICJpZiAoKSB7IHJldHVybjsgfSBlbHNlIHsgcmV0dXJuOyB9IgorICAgIC8v
IG9yIEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5l
cmF0aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIGlm
IGNvbnN0ZXhwciAoSSA8IFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0SXRlbT46OnZhbHVl
KSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0
ZXJuYXRpdmVfdDxJLCBEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIC8vIEZJWE1FOiBDaGVj
ayBmb3Igb3V0LW9mLWJvdW5kcworICAgICAgICBhdXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8
SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAgICAgaWYgKGl0ZW1UeXBlICE9IERpc3BsYXlM
aXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRJdGVtU2l6
ZUluQnVmZmVyPEkgKyAxPigpOworCisgICAgICAgIEFTU0VSVChjdXJyZW50SXRlbSgpKTsKKwor
ICAgICAgICBpZiAoRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKQorICAgICAgICAg
ICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2Yo
dWludDY0X3QpLCBzaXplb2YoRGlzcGxheUxpc3RJdGVtVHlwZSkpOworCisgICAgICAgIC8vIEZJ
WE1FOiBDaGVjayBmb3Igb3V0LW9mLWJvdW5kcworICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOworICAgICAgICByZXR1cm4g
MiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0
X3QpLCBkYXRhTGVuZ3RoKTsKKyAgICB9CisKKyAgICBBU1NFUlQoIWN1cnJlbnRJdGVtKCkpOwor
ICAgIHJldHVybiAwOworfQorCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgST4KK2lubGluZSBib29s
IERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW1Jc0RyYXdpbmdJdGVtKCkgY29uc3QK
K3sKKyAgICAvLyBXZSBjYW4ndCB1c2UgZWFybHktcmV0dXJuIHN0eWxlIGhlcmUgYmVjYXVzZSBv
ZiB0ZW1wbGF0ZSBleHBhbnNpb24gaW4gdGhlIGNvbXBpbGVyLgorICAgIC8vIERvaW5nIHNvIHdv
dWxkIGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0IHN0eWxlIHJ1bGUgYWJvdXQgZG9pbmcgImlm
ICgpIHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3RlYWQgb2YgImlmICgpIHsgcmV0dXJuOyB9IGVs
c2UgeyByZXR1cm47IH0iCisgICAgLy8gb3IgQikgY2F1c2UgdGhlIGNvbXBpbGVyIHRvIGluZmlu
aXRlbHkgcmVjdXJzZSB3aGVuIGdlbmVyYXRpbmcgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIG9m
IHRoaXMgZnVuY3Rpb24uCisgICAgaWYgY29uc3RleHByIChJIDwgV1RGOjp2YXJpYW50X3NpemU8
RGlzcGxheUxpc3RJdGVtPjo6dmFsdWUpIHsKKworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0
ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8SSwgRGlzcGxheUxpc3RJdGVtPjsK
KworICAgICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIG91dC1vZi1ib3VuZHMKKyAgICAgICAgYXV0
byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAgICAg
IGlmIChpdGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlcjxJICsgMT4oKTsKKworICAgICAgICBB
U1NFUlQoY3VycmVudEl0ZW0oKSk7CisKKyAgICAgICAgcmV0dXJuIERpc3BsYXlMaXN0SXRlbVR5
cGU6OmlzRHJhd2luZ0l0ZW07CisgICAgfQorCisgICAgQVNTRVJUKCFjdXJyZW50SXRlbSgpKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjptb3Zl
Q3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCit7CisgICAgYXV0byBpdGVtcyA9IGl0ZW1C
dWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG51
bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsK
KyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMp
IHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5
QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOworICAgICAgICBtX2N1cnNvciA9IGN1cnJl
bnRCdWZmZXJIYW5kbGUuZGF0YTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9yZWFk
T25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsKKyAgICAgICAgbV9j
dXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhOworICAgIH0KK30KKwordWludDhf
dCogRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjplbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdAorewor
ICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgQVNTRVJUKGl0ZW1zKTsKKworICAg
IGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnMu
c2l6ZSgpOworICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5
QnVmZmVycykgeworICAgICAgICBhdXRvJiBjdXJyZW50QnVmZmVySGFuZGxlID0gaXRlbXMtPm1f
cmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07CisgICAgICAgIHJldHVybiBj
dXJyZW50QnVmZmVySGFuZGxlLmRhdGEgKyBjdXJyZW50QnVmZmVySGFuZGxlLmNhcGFjaXR5Owor
ICAgIH0KKworICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFk
T25seUJ1ZmZlcnMpOworICAgIHJldHVybiBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhICsg
aXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Cit9CisKK30KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOTAyNTQwMWZlNTJjOGFmNzA5ODAy
ZGExMWEwNjA2MDkwOGZmYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RJdGVtcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxp
c3QgeworCitjbGFzcyBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgeworcHVibGljOgorICAgIGVudW0g
Y2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgeyBObywgWWVzIH07CisgICAgSXRlcmF0b3IoY29u
c3QgRGlzcGxheUxpc3QmLCBJbW1lZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRv
RW5kOjpObyk7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7
IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNv
ciA9PSBvdGhlci5tX2N1cnNvcjsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRv
ciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgdm9pZCBvcGVyYXRv
cisrKCk7CisKKyAgICBzdHJ1Y3QgVmFsdWUgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gaXRl
bTsKKyAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBleHRlbnQ7CisgICAgICAgIHNpemVfdCBp
dGVtU2l6ZUluQnVmZmVyIHsgMCB9OworICAgIH07CisKKyAgICBPcHRpb25hbDxWYWx1ZT4gb3Bl
cmF0b3IqKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkg
PSAwPgorICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gY3VycmVudEl0ZW0oKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSA9IDA+CisgICAgc3RkOjpzaXplX3QgY3VycmVu
dEl0ZW1TaXplSW5CdWZmZXIoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSA9
IDA+CisgICAgYm9vbCBjdXJyZW50SXRlbUlzRHJhd2luZ0l0ZW0oKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAg
ICB1aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKKworI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCisKKyAgICBJdGVtQnVmZmVyKiBp
dGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlz
dHMoKTsgfQorCisgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CisgICAgdWlu
dDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07CisgICAgc2l6ZV90IG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCB7IDAgfTsKKyAgICBzaXplX3QgbV9kcmF3aW5nSXRlbUluZGV4IHsgMCB9OworfTsKKwor
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDEwZDk1
ZDYzYjA4Yzc3ZjdmODVjM2QzYTc5NjBlZjU2ZjljMzk0NGYuLmU1MjhhMzVmZmUxODQ2YmI3ZmU4
NjQ2YTY1YjVkMmIwMzgyYzMwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKQEAgLTExNiwyNiArMTE2LDE3IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRl
Q2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywKICAg
ICAgICAgYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVudD4oKmNoYW5nZXMubV9zdGF0ZS5maWxs
R3JhZGllbnQsIGNoYW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CiB9
CiAKLXZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlIHR5cGUpCi17
Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVt
T2ZUeXBlKHR5cGUpOwotCi0gICAgaWYgKGlzRHJhd2luZ0l0ZW0odHlwZSkKLSNpZiBVU0UoQ0cp
Ci0gICAgICAgIHx8IHR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybiB8fCB0eXBl
ID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4KLSNlbmRpZgotICAgICkgewotICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2VzID0gY3VycmVudFN0YXRl
KCkuc3RhdGVDaGFuZ2U7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFuZ2VzLmNoYW5nZXNGcm9tU3Rh
dGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7Ci0gICAgICAgIGlmIChjaGFuZ2Vz
RnJvbUxhc3RTdGF0ZSkgewotICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0
cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRl
KSk7Ci0gICAgICAgICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGVDaGFuZ2VzLCBjaGFu
Z2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgICAgICAgICBzdGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFn
cyA9IHsgfTsKLSAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBz
dGF0ZUNoYW5nZXMubV9zdGF0ZTsKLSAgICAgICAgfQotICAgICAgICBjdXJyZW50U3RhdGUoKS53
YXNVc2VkRm9yRHJhd2luZyA9IHRydWU7Cit2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kRHJhd2lu
Z0l0ZW0oKQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZXMg
PSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5jaGFu
Z2VzRnJvbVN0YXRlKGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOworICAgIGlmIChj
aGFuZ2VzRnJvbUxhc3RTdGF0ZSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxp
c3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3Rh
dGUpKTsKKyAgICAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0YXRlQ2hhbmdlcywgY2hhbmdl
c0Zyb21MYXN0U3RhdGUpOworICAgICAgICBzdGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFncyA9IHsg
fTsKKyAgICAgICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0YXRlQ2hhbmdl
cy5tX3N0YXRlOwogICAgIH0KKyAgICBjdXJyZW50U3RhdGUoKS53YXNVc2VkRm9yRHJhd2luZyA9
IHRydWU7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mg
ZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBlN2I0YTA3
ZmNjYzg3ZGVhNmRlYTI1NGE1Yjc2Y2RiZGU4YzQxNmM2Li45ZDUwMjEwMjM0MjA0MmRkY2I4Njc3
Nzg3ODIwYjVlODY4YmJiYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IGNsYXNzLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewot
ICAgICAgICB3aWxsQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlwZSk7CisgICAgICAgIHdpbGxB
cHBlbmRJdGVtT2ZUeXBlPFQ+KCk7CiAgICAgICAgIG1fZGlzcGxheUxpc3QuYXBwZW5kPFQ+KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAKICAgICAgICAgaWYgY29uc3RleHByIChUOjpp
c0RyYXdpbmdJdGVtKSB7CkBAIC0xNzEsNyArMTcxLDIxIEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0
ZW1UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHdpbGxBcHBlbmRJ
dGVtT2ZUeXBlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICAgICAg
bV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW1PZlR5cGUoVDo6aXRlbVR5cGUpOworCisgICAgICAg
IGlmIChUOjppc0RyYXdpbmdJdGVtCisjaWYgVVNFKENHKQorICAgICAgICAgICAgfHwgVDo6aXRl
bVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybiB8fCBUOjppdGVtVHlwZSA9PSBJ
dGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuCisjZW5kaWYKKyAgICAgICAgKQorICAgICAgICAg
ICAgd2lsbEFwcGVuZERyYXdpbmdJdGVtKCk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKTsKIAogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKaW5kZXggZDE3MzdhMjc5YzM5N2UwOTA5M2QxMzg0MzNkYjM4NDdkNmY0NzQ5Mi4uYzBhMjJm
N2U3MWYxZWRmMmNlMDVlNDA3NzA2OWM3YWM2N2RkZDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxp
c3RSZXBsYXllci5oIgogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgorI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAt
NTIsOSArNTMsOCBAQCBHcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpjb250ZXh0KCkgY29uc3QK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFu
ZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgY29uc3QgVCYgaW1hZ2VCdWZmZXJJ
dGVtKQogewotICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAg
YXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChy
ZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGltYWdlQnVmZmVySXRlbS5hcHBseShjb250
ZXh0LCAqaW1hZ2VCdWZmZXIpOwpAQCAtNjQsOSArNjQsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3Jh
cGhpYwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0
ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBjb25zdCBUJiBuYXRpdmVJ
bWFnZUl0ZW0pCiB7Ci0gICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsK
ICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50
aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNl
SWRlbnRpZmllcikpIHsKICAgICAgICAgbmF0aXZlSW1hZ2VJdGVtLmFwcGx5KGNvbnRleHQsICpp
bWFnZSk7CkBAIC03NSwxMCArNzQsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpYwogICAgIHJl
dHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVt
SGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgY29uc3QgU2V0U3RhdGUmIHNldFN0
YXRlSXRlbSkKIHsKLSAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4o
KTsKLQogICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwogICAg
IE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0gbnVsbHB0cjsKIApAQCAtOTksOSArOTYs
OCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5s
aW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9u
dEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3Vy
Y2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIGNvbnN0IFQm
IGZvbnRJdGVtKQogewotICAgIGF1dG8mIGZvbnRJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBh
dXRvIHJlc291cmNlSWRlbnRpZmllciA9IGZvbnRJdGVtLmZvbnRJZGVudGlmaWVyKCk7CiAgICAg
aWYgKGF1dG8qIGZvbnQgPSBmb250cy5nZXQocmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAg
ICBmb250SXRlbS5hcHBseShjb250ZXh0LCAqZm9udCk7CkBAIC0xMTAsNjggKzEwNiw2OCBAQCBp
bmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlG
b250SXRlbShHcmFwaGljc0NvbnRleAogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9
CiAKLXN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0
ZW0pCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBzdGF0aWMgaW5saW5lIGNv
bnN0ZXhwciBib29sIEhhc0FwcGx5ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0FwcGx5PFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBl
KHN0ZDo6ZGVjbHZhbDxUPigpLmFwcGx5KEdyYXBoaWNzQ29udGV4dCgpKSk+PiA9IHRydWU7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8IUhhc0FwcGx5PEl0ZW0+LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiwgR3JhcGhp
Y3NDb250ZXh0JikKK3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxp
bmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHko
Y29uc3QgSXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCit7Cisg
ICAgcmV0dXJuIGl0ZW0uYXBwbHkoZ3JhcGhpY3NDb250ZXh0KTsKK30KKworYXV0byBSZXBsYXll
cjo6YXBwbHlJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVz
dWx0CiB7CiAgICAgaWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgY29u
dGV4dCgpKSkKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
IAotICAgIGlmIChpdGVtLmlzPERyYXdJbWFnZUJ1ZmZlcj4oKSkgewotICAgICAgICBpZiAoYXV0
byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08
RHJhd0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKKyAgICBh
dXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBEcmF3SW1hZ2VCdWZmZXIm
IGRyYXdJbWFnZUJ1ZmZlcikgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1dG8g
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERy
YXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgZHJhd0ltYWdlQnVmZmVy
KSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRS
ZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAg
ICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAg
IGlmIChpdGVtLmlzPENsaXBUb0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlw
VG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCisgICAgfSwg
WyZdKGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBjbGlwVG9JbWFnZUJ1ZmZlcikgLT4gc3RkOjpw
YWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+PiB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4
dCgpLCBtX2ltYWdlQnVmZmVycywgY2xpcFRvSW1hZ2VCdWZmZXIpKQogICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd05h
dGl2ZUltYWdlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRleHQo
KSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQorICAgIH0sIFsmXShjb25zdCBEcmF3TmF0aXZlSW1h
Z2UmIGRyYXdOYXRpdmVJbWFnZSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1
dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVt
PERyYXdOYXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgZHJhd05hdGl2ZUlt
YWdlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9Owog
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQot
ICAgIGlmIChpdGVtLmlzPERyYXdHbHlwaHM+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29u
dGV4dCgpLCBtX2ZvbnRzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd1BhdHRlcm4mIGRy
YXdQYXR0ZXJuKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBpZiAoYXV0byBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRl
cm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGRyYXdQYXR0ZXJuKSkKICAgICAgICAgICAg
IHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92
ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPERy
YXdQYXR0ZXJuPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4oY29udGV4dCgpLCBt
X25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgfSwgWyZdKGNvbnN0IERyYXdHbHlwaHMmIGRyYXdH
bHlwaHMpIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQo
KSwgbV9mb250cywgZHJhd0dseXBocykpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5
UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxTZXRTdGF0ZT4oKSkgewotICAgICAg
ICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0
ZUl0ZW0oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgfSwgWyZdKGNvbnN0
IFNldFN0YXRlJiBzZXRTdGF0ZSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1
dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKGNv
bnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIHNldFN0YXRlKSkKICAgICAgICAgICAgIHJldHVybiB7
IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzJiBjbGlwSXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYgKG1f
bWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0
ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwogICAgICAgICBtX21hc2tJbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNsaXBJdGVtLmRl
c3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNlKCksIG1fY29udGV4dCk7CiAg
ICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9w
UmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgV1RGOjpudWxsb3B0IH07CiAgICAgICAgIHJldHVy
biB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0u
aXM8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IEVuZENs
aXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAg
ICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVw
bGF5UmVhc29uOjpJbnZhbGlkSXRlbSwgV1RGOjpudWxsb3B0IH07Ci0gICAgICAgIGF1dG8mIGNs
aXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwogICAgICAgICBt
X2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1fbWFza0ltYWdlQnVmZmVyLCBjbGlwSXRlbS5k
ZXN0aW5hdGlvbigpKTsKICAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAg
IGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCB9OworICAgIH0sIFsmXShjb25zdCBhdXRvJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1
bHQgeworICAgICAgICAvLyBGSVhNRTogRmlndXJlIG91dCBpZiB3ZSBjYW4ganVzdCBjYWxsIGl0
ZW0uYXBwbHkoY29udGV4dCgpKSBpbnN0ZWFkIG9mIGRvaW5nIGFsbCB0aGlzIHRlbXBsYXRlIGdv
b3AuCisgICAgICAgIGFwcGx5KGl0ZW0sIGNvbnRleHQoKSk7CisgICAgICAgIHJldHVybiB7IFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlz
aXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAtMTg3
LDI4ICsxODMsMzAgQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKICAgICBzaXplX3QgaSA9IDA7
CiAjZW5kaWYKICAgICBSZXBsYXlSZXN1bHQgcmVzdWx0OwotICAgIGZvciAoYXV0byBbaXRlbSwg
ZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6IG1fZGlzcGxheUxpc3QpIHsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IG1fZGlzcGxheUxpc3QpIHsKKyAgICAgICAgaWYg
KCFkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGlu
ZyA9IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUlu
QnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworCiAgICAgICAgIGlmICghaW5pdGlh
bENsaXAuaXNaZXJvKCkgJiYgZXh0ZW50ICYmICFleHRlbnQtPmludGVyc2VjdHMoaW5pdGlhbENs
aXApKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0g
PDwgInNraXBwaW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKICAgICAgICAgICAgIHJlc3Vs
dC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgICAgIHJl
c3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
RGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVt
KTsKIAotICAgICAgICBpZiAoaXRlbS0+aXM8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbklt
YWdlQnVmZmVyPigpKSB7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbSkpIHsKICAgICAgICAgICAg
IHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAgICAgICAg
ICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gU3RvcFJlcGxheVJlYXNvbjo6Q2hhbmdlRGVz
dGluYXRpb25JbWFnZUJ1ZmZlcjsKLSAgICAgICAgICAgIHJlc3VsdC5uZXh0RGVzdGluYXRpb25J
bWFnZUJ1ZmZlciA9IGl0ZW0tPmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlv
bkltYWdlQnVmZmVyID0gV1RGOjpnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdl
QnVmZmVyPihpdGVtKS5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChhdXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllcl0gPSBhcHBseUl0ZW0oKml0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykg
eworICAgICAgICBpZiAoYXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXJdID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgewog
ICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5n
OwogICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBX
VEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0yMTcsOSArMjE1LDkgQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29u
c3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKICAgICAgICAg
cmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAKICAgICAgICAg
aWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpIHsKLSAgICAgICAgICAgIHJlcGxheUxpc3Qt
PmFwcGVuZCgqaXRlbSk7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgpKQot
ICAgICAgICAgICAgICAgIHJlcGxheUxpc3QtPmFkZERyYXdpbmdJdGVtRXh0ZW50KFdURk1vdmUo
ZXh0ZW50KSk7CisgICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoaXRlbSk7CisgICAgICAg
ICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKKyAgICAgICAgICAgICAgICByZXBsYXlMaXN0
LT5hZGREcmF3aW5nSXRlbUV4dGVudChPcHRpb25hbDxGbG9hdFJlY3Q+KGV4dGVudCkpOwogICAg
ICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRl
eCAxODFhMTJiMGU1MThlOGRjMjFkM2I3NDlmMjcxMDFkMmEzZTk2ZjM5Li45ZTAzOTI1YzZkZjVm
ZGQyNDU0Y2VhYTczMTgxOGYzYzlkYmMyNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjYsMTIgKzY2LDEzIEBAIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZSB7
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQotICAgICAgICB2
aXJ0dWFsIGJvb2wgYXBwbHkoSXRlbUhhbmRsZSwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKICAgICAKIHBy
aXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7Ci0gICAgc3RkOjpw
YWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CisgICAgdXNpbmcgQXBwbHlJdGVt
UmVzdWx0ID0gc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PjsKKyAgICBBcHBseUl0ZW1SZXN1bHQgYXBwbHlJ
dGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2Nv
bnRleHQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX21hc2tJbWFnZUJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmgKaW5kZXggMDZkOTQzZDk3YTliNjRmNzBhMWU3Nzk2ZDkxNTBlYjk3ZjgyOTYz
OS4uY2Q1MDZhMjkwNzI1NGIyMWIxZTE3YTJiOWIwMjViZmU2NDA2MzQzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NzQsMjggKzc0LDI0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wgYXBw
bHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0uaXM8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byYg
cHV0SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFn
ZURhdGE+KCk7CisgICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmIHB1dEltYWdlRGF0YUl0ZW0p
IHsKICAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0
KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVj
dCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RG
b3JtYXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkpIHsKKyAg
ICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQmIGZs
dXNoQ29udGV4dCkgewogICAgICAgICAgICAgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmZsdXNo
Q29udGV4dCgpOwotICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgICAg
ICBhdXRvIGlkZW50aWZpZXIgPSBmbHVzaENvbnRleHQuaWRlbnRpZmllcigpOwogICAgICAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZEZsdXNoKGlkZW50aWZpZXIsIG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21t
YW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSkgewotICAgICAgICAgICAgYXV0byBuZXh0QnVmZmVySWRl
bnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICB9LCBbJl0oY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciYgbWV0YUNvbW1hbmRD
aGFuZ2VJdGVtQnVmZmVyKSB7CisgICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJZGVudGlmaWVy
ID0gbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLmlkZW50aWZpZXIoKTsKICAgICAgICAgICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5zZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChuZXh0QnVm
ZmVySWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgICAgICB9LCBb
Jl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogICAgIH0KIAogICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAppbmRleCBlNGRkYzNkMTVhYjI1NGFmZWI4MTVkZjJlN2I0NTc5MGNkNjYw
MjVmLi41N2ZmNjI2OWMyMzkzZTg3MTQ4MzE2NmM4YTU5M2M2MDhmNTQxNDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTExNCwyMCArMTE0LDE4IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4g
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCi1ib29sIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
IGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlNZWRpYUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFpdGVtLmlzPERpc3BsYXlMaXN0OjpQYWlu
dEZyYW1lRm9yTWVkaWE+KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIG1l
ZGlhSXRlbSA9IGl0ZW0uZ2V0PERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0g
ICAgYXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7
Ci0gICAgaWYgKCFwbGF5ZXIpCisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihb
Jl0oY29uc3QgRGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSYgbWVkaWFJdGVtKSB7Cisg
ICAgICAgIGlmIChhdXRvIHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRp
ZmllcigpKSkKKyAgICAgICAgICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIs
IG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBj
b250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24o
KSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgfSwgW10oY29uc3QgYXV0byYgaXRlbSkgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRv
ciwgaXRlbSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC00MzQs
MTAxICs0MzIsMzMgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZShEaXNwbGF5TGlzdDo6SXRlbUIKICAgICAgICAgd2FrZVVwQW5k
QXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6
bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKLU9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRl
bShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5
cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3Qg
SSA9IDA+CitzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdEl0ZW0+IGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUpCiB7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KGRhdGEsIGxl
bmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
bGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xp
cFBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFu
ZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNS
aW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRy
YXdGb2N1c1JpbmdSZWN0cz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxl
TG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JU
ZXh0OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3TGlu
ZXNGb3JUZXh0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVh
dGU8RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJl
Y3Q+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6RmlsbFBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9j
YXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldExpbmVEYXNoPihkYXRhLCBsZW5ndGgsIGhhbmRs
ZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGU6Ci0g
ICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldFN0YXRlPihkYXRh
LCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6U3Ryb2tlUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENH
KQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGlu
ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhf
REFUQSkKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0j
ZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6Um90YXRlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpTYXZlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTY2FsZToKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlNldExpbmVDYXA6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVKb2lu
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9Q
QVRIX0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUlubGluZVBh
dGg6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdDoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRlOiB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgLy8gV2UgY2FuJ3QgdXNlIGVhcmx5
LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1c2Ugb2YgdGVtcGxhdGUgZXhwYW5zaW9uIGluIHRoZSBj
b21waWxlci4KKyAgICAvLyBEb2luZyBzbyB3b3VsZCBlaXRoZXIgQSkgYnJlYWsgdGhlIFdlYktp
dCBzdHlsZSBydWxlIGFib3V0IGRvaW5nICJpZiAoKSB7IHJldHVybjsgfSByZXR1cm47IiBpbnN0
ZWFkIG9mICJpZiAoKSB7IHJldHVybjsgfSBlbHNlIHsgcmV0dXJuOyB9IgorICAgIC8vIG9yIEIp
IGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0aW5n
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIGlmIGNvbnN0
ZXhwciAoSSA8IFdURjo6dmFyaWFudF9zaXplPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0g
V1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8SSwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0SXRlbT47CisKKyAgICAgICAgaWYgKHR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6
aXRlbVR5cGUpCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlSXRlbTxJICsgMT4oZGF0YSwgbGVu
Z3RoLCB0eXBlKTsKKworICAgICAgICBBU1NFUlQoIURpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5s
aW5lSXRlbSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIURpc3BsYXlMaXN0SXRlbVR5cGU6Omlz
SW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gSVBDOjpEZWNvZGVy
OjpkZWNvZGVTaW5nbGVPYmplY3Q8RGlzcGxheUxpc3RJdGVtVHlwZT4oZGF0YSwgbGVuZ3RoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
SXRlbShXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSk7IC8vIEZJWE1FOiBVc2UgeyB9cy4KKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCitPcHRpb25hbDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gV2Vi
S2l0OjpkZWNvZGVJdGVtKGRhdGEsIGxlbmd0aCwgdHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgKaW5kZXggMzk0M2Q1MjFkMzY5M2ZiZDJjZWYzNmI0N2QzNDk2YjFjMmRmMzY1OS4uYzljYzdj
MDg0ZmFkY2RiZjNiYjRhYzI5Y2E5NTlkOGYxYTllMzczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUmIHJlbW90ZVJl
c291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGU7IH0KIAogICAgIC8v
IFJlbmRlcmluZyBvcGVyYXRpb25zLgotICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworICAg
IGJvb2wgYXBwbHlNZWRpYUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMg
dG8gYmUgc2VudC4KICAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CkBAIC04NiwxOSArODYsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJ
UEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURf
UkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3Zl
cnJpZGU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlQW5kQ3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhhbmRsZUxv
Y2F0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IElQQzo6RGVjb2Rlcjo6ZGVj
b2RlU2luZ2xlT2JqZWN0PFQ+KGRhdGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBXZWJLaXQyIHNob3VsZCBub3QgbmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDggYnl0ZXMg
YXQgdGhlIGhhbmRsZSBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSB0eXBlLgotICAgICAgICAgICAgLy8g
TmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0aGluIGRp
c3BsYXkgbGlzdCBjb2RlIGluIFdlYkNvcmUuCi0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0
aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBv
dmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdl
QnVmZmVyJiBkZXN0aW5hdGlvbik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBu
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQs
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDg5NGQ5ZGQxOThjYWM1MjBkZDNhNDI1N2I1MDRj
YTFjNzg0ZDhmZWYuLmZjOTNkYWNhNjNlZjhlZjVlZDFkNzk2OTlhZmQzNmQzNWJkMTA4MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yOTcsOTkgKzI5NywyMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBp
dGVtKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkg
ewotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRv
UGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVj
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpF
bmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBQYXRo
PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFBhdGg+KCkpOwotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0g
ICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICAgICAgcmV0
dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
Rm9jdXNSaW5nUmVjdHM+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVu
Y29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oaXRlbS5n
ZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KCkpOwotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAg
ICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjpl
bmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihpdGVtLmdl
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICAg
ICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVy
OjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQYXRoPihpdGVt
LmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBhdGg+KCkpOwotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAg
ICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgICAgICByZXR1cm4g
SVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZp
bGxSZWN0V2l0aEdyYWRpZW50PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJl
Y3RXaXRoR3JhZGllbnQ+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgICAgICByZXR1cm4gSVBD
OjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5j
b2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUm91bmRl
ZFJlY3Q+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KCkp
OwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpF
bmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldExpbmVE
YXNoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KCkpOwotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAg
ICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlNldFN0YXRlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0
U3RhdGU+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
U3Ryb2tlUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmds
ZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ryb2tlUGF0aD4oaXRlbS5nZXQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlN0cm9rZVBhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cp
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQ
YXR0ZXJuOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBw
bHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgotICAgICAgICBjYXNlIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVs
bGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICBjYXNlIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50Ogot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lU3Ry
b2tlQ29sb3I6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
ZXRMaW5lQ2FwOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
U2V0TGluZUpvaW46Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpTZXRNaXRlckxpbWl0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUlu
bGluZVBhdGg6Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgc3Rh
dGljIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1IZWxwZXIoY29uc3Qg
VCYgaXRlbSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIVQ6OmlzSW5saW5lSXRlbSkK
KyAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxUPihp
dGVtKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
ZW5jb2RlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBp
dGVtKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoW10o
Y29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSAtPiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiB7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlSXRlbUhlbHBlcihkaXNwbGF5TGlzdEl0
ZW0pOworICAgICAgICB9LCBpdGVtKTsKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigpIG92ZXJy
aWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423836</attachid>
            <date>2021-03-21 14:22:02 -0700</date>
            <delta_ts>2021-03-21 16:27:14 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-223560-20210321142201.patch</filename>
            <type>text/plain</type>
            <size>146703</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5NGYyNzA5NmExZmRl
YWE2YmZmNjM5NTg3N2FjYWI5ZmJlMGY3Yy4uZTA1YWU5NzMzZmFiOGZmZjY2M2NlMDRhZWQ0Mzgw
MWJlNTk0ODgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBNaWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3Rl
YWQgb2YgSXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91
bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0Ojphc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6YXRFbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpp
dGVyYXRvcjo6YWR2YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVU
b0VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpp
dGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjp+aXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpv
cGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRl
cmF0b3I6Oml0ZW1CdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpiZWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6c3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29weUludG8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OnVuY2hlY2tlZEFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6aXNEcmF3
aW5nSXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlNldFN0YXRlOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6
OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0Ojppc0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3Vy
cmVudEl0ZW1TaXplSW5CdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjppdGVtQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmREcmF3aW5nSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBw
ZW5kSXRlbU9mVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojph
cHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBw
bHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9u
dEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOgorCiAyMDIx
LTAzLTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hbnkg
bWVkaWEvbWVkaWEtZnJhZ21lbnRzLyB0ZXN0cyBhcmUgY3Jhc2hpbmcgZHVlIHRvIG90aGVyIHRl
c3RzIHRoYXQgcnVuIGJlZm9yZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZThhMGRhZDdlMWEyNmNmMDg2
NzAyZGJhODkxMDk1NWNkZWFhZGJkLi4xMTJlMjk1OTIzMGQwZmYyOGJjMTIxZTFlODA1ZjYyMzE0
NGRkZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTIxICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBN
aWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3RlYWQgb2Yg
SXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0pOgorICAgICAg
ICAoV2ViS2l0OjpkZWNvZGVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRlY29kZUFuZENyZWF0ZSk6IERlbGV0ZWQuCisKIDIwMjEtMDMtMTkgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBbGxvdyBvcGVu
ZGlyZWN0b3J5ZCBhY2Nlc3MgaW4gYmFzZSBzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDNi
YzdiZjY3ZWEwMTQ3ZDk5ODhkNTQ3Mzg5MGRiMDliYzc1NDM4NjQuLmM0NmFhODNhMWIzOWEyNGZh
NGRjZTI2MmZiNjk1ZTAwZmNiNzNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTMwNyw4ICsx
MzA3LDEwIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVyYXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlNGZlYzc5OGNiMWY0YTlk
NWZlMzMyYTlmNjRmOWFiMWVhZDYyMTYzLi44M2NmZDU3MjZlN2I4MDYxY2RlNzA5MTU2OTNkODdm
Mjc3Y2RhN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAxOCw3ICsyMDE4LDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2ZWM3NGY4NTQzNmFjZjk5MDkzNGY3
MGNkYzk0ODE2ZGEwMTgzNTQuLmQyZjA0MzYzYmY0YTUzNjllZTM1YjU3YTA3Zjg1ZTk5N2E1YzI0
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYyNSw2ICs2MjUsOCBAQAogCQkxQzczQTcxNTIxODU3NTg3MDA0Q0NFQTUgLyog
VGV4dERlY29yYXRpb25UaGlja25lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQjZCNEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFDODFCOTVBMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1NjBF
OTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUw
NyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQzkz
Q0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM5M0NCQ0QyNjA1QkQ0MzAwOEZE
RUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgfTsKKwkJMUM5M0NCRDMyNjA2RjhFNzAw
OEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkQyMjYwNkYzRTMwMDhGREVG
OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYz
NDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNjg2OSw2ICs2ODcxLDkgQEAKIAkJMUM4RDI2Q0UyMkMwOTUxMzAwRDEyNUYzIC8q
IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM4RDI2RDAyMkMwOUNERTAwRDEyNUYzIC8qIGxpYmNvbXByZXNzaW9uLnRiZCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2Rl
LnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJjb21wcmVzc2lvbi50YmQ7
IHBhdGggPSB1c3IvbGliL2xpYmNvbXByZXNzaW9uLnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBWZXJzaW9uLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkNDMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JDRDI2MDVCRDQzMDA4RkRFRjkg
LyogRGlzcGxheUxpc3RJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkQyMjYwNkYzRTMwMDhG
REVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyogV0hM
U0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJERTIxRUVCNUY0MDBBMTE4
NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVjdXJz
aW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2NjAsNyArMTY2
NjUsNiBAQAogCQlGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNQYXN0ZWJvYXJkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTA0MURCQkRCQzIwMEVGMEQxNCAvKiBT
dGF0aWNQYXN0ZWJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM3N0Q1NTI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0
ZW1UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0Mzc3RDU2MjU1MUM5QzYw
MDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERp
c3BsYXlMaXN0SXRlbVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQw
RTc2RTIzM0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQ2xpcGJvYXJkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBD
bGlwYm9hcmRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2Fy
ZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDEzLDEwICsxODAxNywx
MiBAQAogCQkJCTcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmggKi8sCiAJCQkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgKi8sCiAJCQkJRjQyMkI4QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oICovLAorCQkJCTFDOTNDQkQyMjYwNkYzRTMwMDhGREVGOSAvKiBEaXNw
bGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJMEZFNUZCQ0MxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuY3BwICovLAogCQkJCTBGRTVGQkNEMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi8sCi0JCQkJRjQzNzdENTYyNTUxQzlDNjAw
ODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwICovLAogCQkJCUY0Mzc3RDU1MjU1MUM5
QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8sCisJCQkJMUM5M0NCQ0MyNjA1
QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovLAorCQkJCTFDOTNDQkNE
MjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8sCiAJCQkJMEZFNUZC
Q0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAogCQkJCTBG
RTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCiAJCQkJ
MEZFNUZCRDAxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovLApA
QCAtMzIwMzcsOCArMzIwNDMsMTAgQEAKIAkJCQk3MjQyQUM5NzI1NzU4RkUxMDA1QTlDRjEgLyog
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNF
MjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JEMzI2MDZGOEU3MDA4RkRFRjkgLyogRGlzcGxh
eUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxQzkzQ0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFG
MkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRkYzkxMTEwZTI3NS4u
ZTE3MTA2MDI4NWRiNjZmNGY4ODhlZmZiZTAxOWJhYWJmNDA4YmJmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE1NCwx
MCArMTU0LDEwIEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhp
Y3NDb250ZXh0U3RhdGUoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFw
aGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAogICAgIGVudW0gQ2hh
bmdlIDogdWludDMyX3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggYzA4MzIwZTU2
NTY3NWJlMTJhNjRjNjk2OTRiZTE1ZjgyN2I3OTg1ZS4uNzk4MWU2NjNlNDkwZGNjMTFlMmEyODA1
NjNhMTFiYmEzYmRlMjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgpAQCAtODQsMTIgKzg1LDEwIEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNs
ZWFyKCkKICAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOwogfQogCi1ib29sIERpc3BsYXlMaXN0
OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkK
K2Jvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywg
Y29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQogewotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkp
IHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6
Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdGF0ZSYgc3RhdGVJdGVtKSAtPiBib29sIHsKICAg
ICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9u
cykpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0
YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0aGUgaXRl
bSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNpZmljLgog
ICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0g
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NywzMCArOTYsMzAgQEAgYm9vbCBE
aXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFu
ZGxlIGl0ZW0pCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFu
Z2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAg
ICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgVVNFKENHKQotICAgIGNhc2Ug
SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJv
a2VQYXR0ZXJuOgotICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxh
dGZvcm1PcGVyYXRpb25zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnJl
YWs7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5RmlsbFBhdHRlcm4mKSAtPiBib29sIHsKKyAgICAg
ICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnM7
CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5U3Ryb2tlUGF0dGVybiYpIC0+IGJvb2wgeworICAgICAg
ICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9uczsK
ICNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQog
CiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChBc1RleHRGbGFncyBmbGFncykgY29uc3QKIHsK
ICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5l
LCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAgIGZvciAoYXV0byBb
aXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7Ci0gICAgICAgIGlmICgh
c2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCAqaXRlbSkpCisgICAgZm9yIChjb25zdCBhdXRvJiBk
aXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0
ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworICAgICAg
ICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVhbSk7CiAg
ICAgICAgIHN0cmVhbSA8PCBpdGVtOwotICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgp
KQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKICAgICAgICAgICAgIHN0cmVhbSA8
PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgcmV0dXJuIHN0cmVhbS5yZWxlYXNl
KCk7CkBAIC0xMzEsMTAgKzEzMCwxMSBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRTdHJl
YW0mIHRzKSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAg
IHRzIDw8ICJkaXNwbGF5IGxpc3QiOwogCi0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnQsIGl0
ZW1TaXplSW5CdWZmZXJdIDogKnRoaXMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlM
aXN0SXRlbSA6ICp0aGlzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0
ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIFRleHRT
dHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAgICB0cyA8PCBpdGVtOwotICAgICAg
ICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShp
dGVtKSkKICAgICAgICAgICAgIHRzIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KICAg
ICB0cy5zdGFydEdyb3VwKCk7CkBAIC0xODYsMjQ3ICsxODYsMjMgQEAgdm9pZCBEaXNwbGF5TGlz
dDo6c2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wgdmFsdWUpCiAgICAgbV90cmFja3NE
cmF3aW5nSXRlbUV4dGVudHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5k
KEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTYXZlPihpdGVtLmdldDxT
YXZlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFJlc3RvcmU+KGl0ZW0uZ2V0PFJlc3RvcmU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRy
YW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxUcmFuc2xhdGU+KGl0ZW0uZ2V0PFRyYW5z
bGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFJvdGF0ZT4oaXRlbS5nZXQ8Um90YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2Fs
ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTY2FsZT4oaXRlbS5nZXQ8U2NhbGU+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPENv
bmNhdGVuYXRlQ1RNPihpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldENUTT4oaXRlbS5nZXQ8U2V0
Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PihpdGVtLmdldDxTZXRJbmxp
bmVGaWxsR3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xv
cjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KGl0ZW0uZ2V0PFNl
dElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tl
Q29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KGl0ZW0u
Z2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJv
a2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0U3Ryb2tlVGhpY2tuZXNzPihp
dGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0
YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0YXRlPihpdGVtLmdldDxTZXRTdGF0ZT4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTZXRMaW5lQ2FwPihpdGVtLmdldDxTZXRMaW5lQ2FwPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lRGFzaD4oaXRlbS5n
ZXQ8U2V0TGluZURhc2g+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVKb2luPihpdGVtLmdldDxTZXRMaW5lSm9pbj4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTZXRNaXRlckxpbWl0PihpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclNoYWRvdz4o
aXRlbS5nZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8Q2xpcD4oaXRlbS5nZXQ8Q2xpcD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0PihpdGVtLmdldDxD
bGlwT3V0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VC
dWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcFBh
dGg+KGl0ZW0uZ2V0PENsaXBQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcz4oaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdp
bmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3R2x5cGhzPihpdGVtLmdldDxEcmF3R2x5cGhzPigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TmF0aXZl
SW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdHRlcm4+KGl0ZW0uZ2V0
PERyYXdQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3UmVjdD4oaXRlbS5nZXQ8RHJhd1JlY3Q+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdMaW5lPihpdGVt
LmdldDxEcmF3TGluZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxEcmF3TGlu
ZXNGb3JUZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFy
a2VyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KGl0
ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdFbGxpcHNlPihpdGVtLmdl
dDxEcmF3RWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RHJhd1BhdGg+KGl0ZW0uZ2V0PERyYXdQYXRoPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
Rm9jdXNSaW5nUGF0aD4oaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJlY3Q+KGl0
ZW0uZ2V0PEZpbGxSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xv
cjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oaXRlbS5nZXQ8Rmls
bFJlY3RXaXRoQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRp
ZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aEdyYWRpZW50PihpdGVtLmdl
dDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBv
c2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVjdD4oaXRl
bS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91
bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJvdW5kZWRSZWN0PihpdGVtLmdl
dDxGaWxsUm91bmRlZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
PihpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RmlsbElubGluZVBhdGg+KGl0ZW0uZ2V0PEZpbGxJbmxpbmVQYXRoPigp
KTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4g
YXBwZW5kPEZpbGxQYXRoPihpdGVtLmdldDxGaWxsUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbEVsbGlwc2U+KGl0ZW0u
Z2V0PEZpbGxFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpdGVtLmdldDxGbHVzaENvbnRleHQ+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0
aW9uSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4o
aXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UHV0SW1hZ2VEYXRhPihp
dGVtLmdldDxQdXRJbWFnZURhdGE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVG
b3JNZWRpYToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQYWludEZyYW1lRm9yTWVkaWE+KGl0ZW0u
Z2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVj
dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VSZWN0PihpdGVtLmdldDxTdHJva2VSZWN0
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFN0cm9rZUxpbmU+KGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCkpOwotI2lmIEVOQUJMRShJTkxJ
TkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlSW5saW5lUGF0aD4oaXRlbS5nZXQ8U3Ryb2tlSW5saW5l
UGF0aD4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFN0cm9rZVBhdGg+KGl0ZW0uZ2V0PFN0cm9rZVBhdGg+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ry
b2tlRWxsaXBzZT4oaXRlbS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPENsZWFyUmVjdD4oaXRlbS5nZXQ8
Q2xlYXJSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVy
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW0uZ2V0
PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5z
cGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZFRyYW5zcGFyZW5jeUxheWVy
PihpdGVtLmdldDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKSk7Ci0jaWYgVVNFKENHKQotICAgIGNh
c2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxB
cHBseVN0cm9rZVBhdHRlcm4+KGl0ZW0uZ2V0PEFwcGx5U3Ryb2tlUGF0dGVybj4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxB
cHBseUZpbGxQYXR0ZXJuPihpdGVtLmdldDxBcHBseUZpbGxQYXR0ZXJuPigpKTsKLSNlbmRpZgot
ICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2Fs
ZUZhY3Rvcj4oKSk7Ci0gICAgfQotfQotCi1ib29sIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6YXRF
bmQoKSBjb25zdAotewotICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSB8fCAhbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZm
ZXIoKTsKLSAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLm1fd3JpdGFibGVCdWZmZXIuZGF0YSAr
IGl0ZW1zLm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgcmV0dXJuIG1fY3Vyc29yID09IGVu
ZEN1cnNvcjsKLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJ
dGVtKCkKLXsKLSAgICBjbGVhckN1cnJlbnRJdGVtKCk7Ci0KLSAgICBpZiAoYXRFbmQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigpOwotICAgIGF1
dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0pOwotICAgIGlm
IChpc0RyYXdpbmdJdGVtKGl0ZW1UeXBlKSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVt
RXh0ZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0gbV9kaXNwbGF5
TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwotICAgICAgICBt
X2RyYXdpbmdJdGVtSW5kZXgrKzsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50
ID0gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byogY2xpZW50ID0gaXRlbXMubV9yZWFkaW5nQ2xp
ZW50OwotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbUluQnl0ZXMoaXRlbVR5cGUpOwotICAgIGlmIChjbGllbnQpIHsKLSAgICAgICAgbV9j
dXJyZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZp
eGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJ
dGVtKSk7Ci0gICAgICAgIGlmIChpc0lubGluZUl0ZW0oaXRlbVR5cGUpKSB7Ci0gICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoIUl0ZW1IYW5kbGUgeyBtX2N1cnNvciB9LnNhZmVDb3B5KHsgbV9jdXJy
ZW50QnVmZmVyRm9ySXRlbSB9KSkpCi0gICAgICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7
Ci0KLSAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gZGF0YUxlbmd0
aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07Ci0gICAgICAgICAg
ICBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7Ci0g
ICAgICAgICAgICBhdXRvIGRlY29kZWRJdGVtSGFuZGxlID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0
YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSwgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7
Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZWRJdGVtSGFuZGxlKSkKLSAgICAgICAg
ICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgbV9jdXJyZW50QnVmZmVy
Rm9ySXRlbVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICAgICAgICAg
IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5k
VXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IG1fY3Vyc29y
OwotICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6ZU9mVHlwZUFu
ZEl0ZW07Ci0gICAgfQotfQotCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6YWR2YW5jZSgp
Ci17Ci0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY3Vyc29yICs9
IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXI7Ci0KLSAgICBpZiAobV9jdXJzb3IgPT0gbV9jdXJy
ZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZlcigpLT5t
X3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4
Kys7Ci0gICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgfQot
Ci0gICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6OmNsZWFyQ3VycmVudEl0ZW0oKQordm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOwot
ICAgIGlmIChpdGVtcyAmJiBpdGVtcy0+bV9yZWFkaW5nQ2xpZW50ICYmIG1fY3VycmVudEJ1ZmZl
ckZvckl0ZW0pIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2lzVmFsaWQpKQotICAgICAgICAgICAg
SXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfS5kZXN0cm95KCk7Ci0KLSAgICAg
ICAgaWYgKFVOTElLRUxZKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZv
ckN1cnJlbnRJdGVtKSkKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0pOwotICAgIH0KLQotICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAwOwotICAgIG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0gPSBudWxscHRyOworICAgIFdURjo6dmlzaXQoWyZdKGNvbnN0
IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgYXBwZW5kKGl0ZW0pOworICAgIH0sIGl0ZW0pOwogfQog
Ci12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZVRvRW5kKCkKK2F1dG8gRGlzcGxheUxp
c3Q6OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICBpZiAoYXV0byBpdGVtcyA9IGl0
ZW1CdWZmZXIoKSkgewotICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVy
LmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICAgICAgbV9jdXJyZW50
RW5kT2ZCdWZmZXIgPSBtX2N1cnNvcjsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0g
aXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICB9CisgICAgcmV0dXJuIHsgKnRo
aXMgfTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0
T2ZDdXJyZW50QnVmZmVyKCkKK2F1dG8gRGlzcGxheUxpc3Q6OmVuZCgpIGNvbnN0IC0+IEl0ZXJh
dG9yCiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKLSAgICBpZiAoIWl0ZW1zKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRl
bXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICBpZiAobV9yZWFkT25seUJ1ZmZlcklu
ZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKLSAgICAgICAgYXV0byYgbmV4dEJ1ZmZl
ckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhd
OwotICAgICAgICBtX2N1cnNvciA9IG5leHRCdWZmZXJIYW5kbGUuZGF0YTsKLSAgICAgICAgbV9j
dXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvciArIG5leHRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7
Ci0gICAgfSBlbHNlIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25s
eUJ1ZmZlcnMpIHsKLSAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5k
YXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgaXRlbXMtPm1f
d3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgfQorICAgIHJldHVybiB7ICp0aGlzLCBJdGVyYXRv
cjo6SW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcyB9OwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIERp
c3BsYXlMaXN0CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCmluZGV4IGYxODlkZWRmNjc0OWJjYzIwMTQ3MmFlZDJhODcxNmJhNjU3NDY1MmUuLjkzNGNj
MTVkNDQyZDFiYjAyMzU3YzQ1NjlhZmEyZDYwYjZmNzY4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiBlbnVtIEFzVGV4dEZsYWcgewpAQCAt
ODksNzYgKzg4LDE1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hJ
dGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYpPiYmKSBjb25z
dDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgYXBwZW5k
KEFyZ3MmJi4uLiBhcmdzKTsKLSAgICB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICB2b2lk
IGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogICAgIGJvb2wgdHJhY2tzRHJhd2lu
Z0l0ZW1FeHRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHM7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhi
b29sKTsKIAotICAgIGNsYXNzIGl0ZXJhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0g
Y2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgeyBObywgWWVzIH07Ci0gICAgICAgIGl0ZXJhdG9y
KGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgaW1t
ZWRpYXRlbHlNb3ZlVG9FbmQgPSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6Tm8pCi0gICAgICAgICAg
ICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6WWVzKQotICAg
ICAgICAgICAgICAgIG1vdmVUb0VuZCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICAgICAgICAgICAg
ICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgfml0ZXJhdG9yKCkKLSAgICAgICAgewotICAgICAgICAgICAgY2xlYXJDdXJyZW50SXRlbSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVyLm1fZGlzcGxheUxpc3QgJiYg
bV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICAg
ICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0KLQotICAgICAgICBzdHJ1Y3QgVmFs
dWUgewotICAgICAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gaXRlbTsKLSAgICAgICAgICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwotICAgICAgICAgICAgc2l6ZV90IGl0ZW1TaXpl
SW5CdWZmZXIgeyAwIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgVmFsdWUgb3BlcmF0b3IqKCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBt
X2lzVmFsaWQgPyBtYWtlT3B0aW9uYWwoSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0gfSkgOiBXVEY6Om51bGxvcHQsCi0gICAgICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAot
ICAgICAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsCi0gICAgICAgICAgICB9
OwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID0gMjU2OwotCi0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG9FbmQoKTsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZHZh
bmNlKCk7Ci0gICAgICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKLQotICAgICAgICBJdGVtQnVmZmVy
KiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZF
eGlzdHMoKTsgfQotCi0gICAgICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0Owot
ICAgICAgICB1aW50OF90KiBtX2N1cnNvciB7IG51bGxwdHIgfTsKLSAgICAgICAgc2l6ZV90IG1f
cmVhZE9ubHlCdWZmZXJJbmRleCB7IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1J
bmRleCB7IDAgfTsKLSAgICAgICAgdWludDhfdCogbV9jdXJyZW50RW5kT2ZCdWZmZXIgeyBudWxs
cHRyIH07Ci0KLSAgICAgICAgdWludDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6
ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07Ci0gICAgICAgIHVpbnQ4X3QqIG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0gICAgICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbV9jdXJyZW50RXh0ZW50OwotICAgICAgICBzaXplX3QgbV9jdXJyZW50SXRlbVNpemVJ
bkJ1ZmZlciB7IDAgfTsKLSAgICAgICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07Ci0gICAgfTsK
LQotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4geyAqdGhpcyB9OyB9Ci0gICAg
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyAqdGhpcywgaXRlcmF0b3I6OkltbWVkaWF0
ZWx5TW92ZVRvRW5kOjpZZXMgfTsgfQorICAgIGNsYXNzIEl0ZXJhdG9yOworCisgICAgSXRlcmF0
b3IgYmVnaW4oKSBjb25zdDsKKyAgICBJdGVyYXRvciBlbmQoKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBJdGVtQnVmZmVyKiBpdGVtQnVmZmVySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX2l0
ZW1zLmdldCgpOyB9CkBAIC0xOTEsNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJ
dGVtSGFuZGxlKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0Rmxh
Z3MsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1f
aW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggMGY4MTE0Yjgx
ZGRjNWFhYmMxN2Q1YjE1NGU4ZDk3YzczNTdkMTI1NS4uYmE2ZThiYTVhN2EwOGY3NTg2OWU0ODYy
NTg4NTVlNzM0OTFlNjQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsNjc2ICszMiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi1D
U3RyaW5nIEl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9uKCkgY29uc3QKLXsKLSAgICBUZXh0U3RyZWFt
IHRzOwotICAgIHRzIDw8ICp0aGlzOwotICAgIHJldHVybiB0cy5yZWxlYXNlKCkudXRmOCgpOwot
fQotI2VuZGlmCi0KLXZvaWQgSXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQotewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZTog
ewotICAgICAgICBnZXQ8U2F2ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOiB7Ci0gICAgICAgIGdldDxSZXN0b3Jl
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OlRyYW5zbGF0ZTogewotICAgICAgICBnZXQ8VHJhbnNsYXRlPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZTog
ewotICAgICAgICBnZXQ8Um90YXRlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOiB7Ci0gICAgICAgIGdldDxTY2FsZT4o
KS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpDb25jYXRlbmF0ZUNUTTogewotICAgICAgICBnZXQ8Q29uY2F0ZW5hdGVDVE0+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0Q1RNOiB7Ci0gICAgICAgIGdldDxTZXRDVE0+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50
OiB7Ci0gICAgICAgIGdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmls
bENvbG9yOiB7Ci0gICAgICAgIGdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5l
U3Ryb2tlQ29sb3I6IHsKLSAgICAgICAgZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpLmFwcGx5
KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dFN0cm9rZVRoaWNrbmVzczogewotICAgICAgICBnZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpLmFw
cGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0YXRlOiB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6IHsKLSAgICAgICAgZ2V0
PFNldExpbmVDYXA+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6IHsKLSAgICAgICAgZ2V0PFNldExpbmVEYXNo
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OlNldExpbmVKb2luOiB7Ci0gICAgICAgIGdldDxTZXRMaW5lSm9pbj4oKS5hcHBseShj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRN
aXRlckxpbWl0OiB7Ci0gICAgICAgIGdldDxTZXRNaXRlckxpbWl0PigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93
OiB7Ci0gICAgICAgIGdldDxDbGVhclNoYWRvdz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOiB7Ci0gICAgICAgIGdldDxD
bGlwPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBPdXQ6IHsKLSAgICAgICAgZ2V0PENsaXBPdXQ+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1h
Z2VCdWZmZXI6IHsKLSAgICAgICAgZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRU
b1BhdGg6IHsKLSAgICAgICAgZ2V0PENsaXBPdXRUb1BhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6IHsKLSAg
ICAgICAgZ2V0PENsaXBQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczogewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogewotICAgICAgICBn
ZXQ8RHJhd0ltYWdlQnVmZmVyPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogewotICAgICAgICBnZXQ8
RHJhd05hdGl2ZUltYWdlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7Ci0gICAgICAgIGdldDxEcmF3UGF0
dGVybj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDogewotICAgICAgICBnZXQ8RHJhd1JlY3Q+KCkuYXBwbHkoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmU6IHsKLSAgICAgICAgZ2V0PERyYXdMaW5lPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6IHsKLSAg
ICAgICAgZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
cjogewotICAgICAgICBnZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxs
aXBzZTogewotICAgICAgICBnZXQ8RHJhd0VsbGlwc2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6IHsKLSAgICAg
ICAgZ2V0PERyYXdQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7Ci0gICAgICAgIGdldDxE
cmF3Rm9jdXNSaW5nUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6IHsKLSAgICAgICAgZ2V0
PERyYXdGb2N1c1JpbmdSZWN0cz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDogewotICAgICAgICBnZXQ8RmlsbFJl
Y3Q+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6IHsKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aENv
bG9yPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OiB7Ci0gICAgICAgIGdldDxGaWxsUmVjdFdp
dGhHcmFkaWVudD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6IHsKLSAgICAgICAgZ2V0PEZpbGxD
b21wb3NpdGVkUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6IHsKLSAgICAgICAgZ2V0PEZpbGxS
b3VuZGVkUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZTogewotICAgICAgICBnZXQ8
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbElubGluZVBhdGg6IHsKLSAgICAgICAgZ2V0PEZpbGxJbmxpbmVQYXRoPigpLmFwcGx5
KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFBhdGg6IHsKLSAgICAgICAgZ2V0PEZpbGxQYXRoPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNl
OiB7Ci0gICAgICAgIGdldDxGaWxsRWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6IHsKLSAgICAg
ICAgZ2V0PEZsdXNoQ29udGV4dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1h
Z2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
OgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB7Ci0g
ICAgICAgIGdldDxQdXRJbWFnZURhdGE+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOiB7Ci0gICAg
ICAgIGdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDogewotICAgICAgICBn
ZXQ8U3Ryb2tlUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOiB7Ci0gICAgICAgIGdldDxTdHJva2VMaW5l
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsK
LSAgICAgICAgZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOiB7
Ci0gICAgICAgIGdldDxTdHJva2VQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6IHsKLSAgICAgICAg
Z2V0PFN0cm9rZUVsbGlwc2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OiB7Ci0gICAgICAgIGdldDxDbGVhclJl
Y3Q+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjogewotICAgICAgICBnZXQ8QmVnaW5UcmFu
c3BhcmVuY3lMYXllcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjogewotICAgICAgICBnZXQ8
RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVy
bjogewotICAgICAgICBnZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRl
cm46IHsKLSAgICAgICAgZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURl
dmljZVNjYWxlRmFjdG9yOiB7Ci0gICAgICAgIGdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLX0KLQotdm9p
ZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKLXsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6IHsKLSAgICAgICAgZ2V0PENsaXBPdXRUb1BhdGg+
KCkufkNsaXBPdXRUb1BhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwUGF0aDogewotICAgICAgICBnZXQ8Q2xpcFBhdGg+KCkufkNsaXBQYXRoKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmlu
Z1BhdGg6IHsKLSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLn5EcmF3Rm9jdXNSaW5n
UGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdG
b2N1c1JpbmdSZWN0czogewotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLn5EcmF3
Rm9jdXNSaW5nUmVjdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOiB7Ci0gICAgICAgIGdldDxEcmF3R2x5cGhzPigpLn5EcmF3R2x5cGhz
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVz
Rm9yVGV4dDogewotICAgICAgICBnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5+RHJhd0xpbmVzRm9y
VGV4dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXRoOiB7Ci0gICAgICAgIGdldDxEcmF3UGF0aD4oKS5+RHJhd1BhdGgoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6IHsKLSAg
ICAgICAgZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKS5+RmlsbENvbXBvc2l0ZWRSZWN0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHsKLSAg
ICAgICAgZ2V0PEZpbGxQYXRoPigpLn5GaWxsUGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOiB7Ci0gICAgICAgIGdldDxG
aWxsUmVjdFdpdGhDb2xvcj4oKS5+RmlsbFJlY3RXaXRoQ29sb3IoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDogewotICAg
ICAgICBnZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkufkZpbGxSZWN0V2l0aEdyYWRpZW50KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6IHsKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLn5G
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDogewotICAgICAgICBnZXQ8RmlsbFJvdW5kZWRS
ZWN0PigpLn5GaWxsUm91bmRlZFJlY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHsKLSAgICAgICAgZ2V0PFB1dEltYWdlRGF0YT4o
KS5+UHV0SW1hZ2VEYXRhKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0TGluZURhc2g6IHsKLSAgICAgICAgZ2V0PFNldExpbmVEYXNoPigpLn5TZXRMaW5l
RGFzaCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0
YXRlOiB7Ci0gICAgICAgIGdldDxTZXRTdGF0ZT4oKS5+U2V0U3RhdGUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOiB7Ci0gICAgICAgIGdl
dDxTdHJva2VQYXRoPigpLn5TdHJva2VQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjogewotICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBseURldmljZVNjYWxl
RmFjdG9yPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFVTRShDRykKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOiB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEFwcGx5RmlsbFBhdHRlcm4+Ojp2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJv
a2VQYXR0ZXJuOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEFwcGx5U3Ryb2tlUGF0dGVybj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5U
cmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xlYXJSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OiB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENsZWFyU2hhZG93Pjo6
dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
Q2xpcD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwT3V0OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPENsaXBPdXQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6IHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xpcFRvSW1hZ2VCdWZmZXI+Ojp2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5h
dGVDVE06IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8Q29uY2F0ZW5hdGVDVE0+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjogewotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3RG90c0ZvckRv
Y3VtZW50TWFya2VyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdFbGxpcHNlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdFbGxpcHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogewotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3SW1hZ2VC
dWZmZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdOYXRpdmVJbWFnZT46OnZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogewotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3UGF0dGVybj46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TGluZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxEcmF3TGluZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3UmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZFRyYW5zcGFyZW5jeUxheWVy
Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxFbGxpcHNlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEZpbGxFbGxpcHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxp
bmVQYXRoOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPEZpbGxJbmxpbmVQYXRoPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6IHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RmlsbFJlY3Q+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OiB7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEZs
dXNoQ29udGV4dD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6IHsKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjog
ewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOiB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFBhaW50RnJhbWVGb3JN
ZWRpYT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpSZXN0b3JlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPFJlc3RvcmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Um90YXRlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFJvdGF0ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNhdmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6IHsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2NhbGU+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOiB7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldENUTT46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJ
bmxpbmVGaWxsQ29sb3I6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8U2V0SW5saW5lRmlsbENvbG9yPjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDogewot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRJ
bmxpbmVGaWxsR3JhZGllbnQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6IHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0SW5saW5lU3Ryb2tlQ29sb3I+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
TGluZUNhcDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxTZXRMaW5lQ2FwPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldExpbmVKb2luPjo6dmFsdWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6IHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0TWl0
ZXJMaW1pdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0U3Ryb2tlVGhpY2tuZXNzPjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6IHsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U3Ry
b2tlRWxsaXBzZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUo
SU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOiB7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFN0
cm9rZUlubGluZVBhdGg+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFN0cm9rZVJlY3Q+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZTogewotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VM
aW5lPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxUcmFuc2xhdGU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29u
c3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNlOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0gdHJ1ZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUg
SXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+
IGNvcHlJbnRvKGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uV2l0aE9mZnNldCkKLXsKLSAgICBuZXcgKGRlc3RpbmF0aW9uV2l0aE9mZnNldCkgSXRlbShp
dGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgSXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVt
PiwgYm9vbD4gY29weUludG8oY29uc3QgSXRlbUhhbmRsZSYgaXRlbUhhbmRsZSwgdWludDhfdCog
ZGVzdGluYXRpb25XaXRoT2Zmc2V0KQotewotICAgIGF1dG8qIG5ld0l0ZW0gPSBuZXcgKGRlc3Rp
bmF0aW9uV2l0aE9mZnNldCkgSXRlbShpdGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAgICByZXR1
cm4gbmV3SXRlbS0+aXNWYWxpZCgpOwotfQotCi1ib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0
ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0Ci17Ci0gICAgYXV0byBpdGVtVHlwZSA9IHR5cGUo
KTsKLSAgICBkZXN0aW5hdGlvbi5kYXRhWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5
cGUpOwotICAgIGF1dG8gaXRlbU9mZnNldCA9IGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YodWlu
dDY0X3QpOwotICAgIHN3aXRjaCAoaXRlbVR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
T3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88Q2xpcE91dFRvUGF0aD4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1
cm4gY29weUludG88Q2xpcFBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1
c1JpbmdQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zv
Y3VzUmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3VzUmluZ1JlY3Rz
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdHbHlwaHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xpbmVzRm9y
VGV4dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdOYXRpdmVJbWFnZT4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICByZXR1
cm4gY29weUludG88RHJhd1BhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXRoPigqdGhp
cywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0Ogot
ICAgICAgICByZXR1cm4gY29weUludG88RmlsbENvbXBvc2l0ZWRSZWN0PigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxGaWxsUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoQ29s
b3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhH
cmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aEdyYWRpZW50Pigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSb3VuZGVkUmVjdD4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFB1dEltYWdlRGF0YT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZURhc2g+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPFNldFN0YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVBhdGg+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxl
RmFjdG9yOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBs
eUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlGaWxsUGF0dGVybj4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVy
bjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVybj4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRyYW5zcGFyZW5jeUxh
eWVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0Ogot
ICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxD
bGVhclNoYWRvdz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBPdXQ+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBUb0ltYWdlQnVmZmVyPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxDb25jYXRlbmF0ZUNUTT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxE
cmF3RWxsaXBzZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xpbmU+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PERyYXdSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gY29weUludG88RW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5k
VHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRUcmFuc3BhcmVu
Y3lMYXllcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxp
cHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbEVsbGlwc2U+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxJbmxpbmVQYXRoPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gY29weUludG88
Rmx1c2hDb250ZXh0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gY29w
eUludG88TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
OgotICAgICAgICByZXR1cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgotICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRGcmFtZUZvck1lZGlhPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFJlc3RvcmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpS
b3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSb3RhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4gY29weUludG88U2F2
ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAg
ICByZXR1cm4gY29weUludG88U2NhbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRDVE0+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAg
ICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsQ29sb3I+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFNldElubGluZVN0cm9rZUNvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExp
bmVDYXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9p
bjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVKb2luPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFNldE1pdGVyTGltaXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRTdHJv
a2VUaGlja25lc3M+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlRWxsaXBzZT4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VJ
bmxpbmVQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlUmVjdD4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxTdHJva2VMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gY29weUludG88VHJhbnNsYXRlPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogSXRlbUJ1
ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVySGFuZGxlcyYmIGhhbmRsZXMpCiAgICAgOiBtX3Jl
YWRPbmx5QnVmZmVycyhXVEZNb3ZlKGhhbmRsZXMpKQogewpAQCAtNzE3LDcgKzQ3LDYgQEAgSXRl
bUJ1ZmZlcjo6fkl0ZW1CdWZmZXIoKQogSXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVy
JiYgb3RoZXIpCiAgICAgOiBtX3JlYWRpbmdDbGllbnQoc3RkOjpleGNoYW5nZShvdGhlci5tX3Jl
YWRpbmdDbGllbnQsIG51bGxwdHIpKQogICAgICwgbV93cml0aW5nQ2xpZW50KHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV93cml0aW5nQ2xpZW50LCBudWxscHRyKSkKLSAgICAsIG1faXRlbXNUb0Rlc3Ry
b3lJbkFsbG9jYXRlZEJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zVG9EZXN0cm95
SW5BbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9hbGxvY2F0ZWRCdWZmZXJzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9yZWFkT25s
eUJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlYWRPbmx5QnVmZmVycywgeyB9KSkKICAg
ICAsIG1fd3JpdGFibGVCdWZmZXIoc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRhYmxlQnVmZmVy
LCB7IH0pKQpAQCAtNzI5LDcgKzU4LDYgQEAgSXRlbUJ1ZmZlciYgSXRlbUJ1ZmZlcjo6b3BlcmF0
b3I9KEl0ZW1CdWZmZXImJiBvdGhlcikKIHsKICAgICBtX3JlYWRpbmdDbGllbnQgPSBzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fcmVhZGluZ0NsaWVudCwgbnVsbHB0cik7CiAgICAgbV93cml0aW5nQ2xp
ZW50ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRpbmdDbGllbnQsIG51bGxwdHIpOwotICAg
IG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSk7CiAgICAgbV9hbGxvY2F0
ZWRCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2FsbG9jYXRlZEJ1ZmZlcnMsIHsgfSk7
CiAgICAgbV9yZWFkT25seUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVhZE9ubHlC
dWZmZXJzLCB7IH0pOwogICAgIG1fd3JpdGFibGVCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fd3JpdGFibGVCdWZmZXIsIHsgfSk7CkBAIC03NjMsOSArOTEsNiBAQCB2b2lkIEl0ZW1CdWZm
ZXI6OmZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRs
ZSYpPiYmIG1hcAogCiB2b2lkIEl0ZW1CdWZmZXI6OmNsZWFyKCkKIHsKLSAgICBmb3IgKGF1dG8g
aXRlbSA6IHN0ZDo6ZXhjaGFuZ2UobV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycywg
eyB9KSkKLSAgICAgICAgaXRlbS5kZXN0cm95KCk7Ci0KICAgICBmb3IgKGF1dG8qIGJ1ZmZlciA6
IHN0ZDo6ZXhjaGFuZ2UobV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICAgICBmYXN0RnJl
ZShidWZmZXIpOwogCkBAIC03NzYsNyArMTAxLDcgQEAgdm9pZCBJdGVtQnVmZmVyOjpjbGVhcigp
CiAKIERpZENoYW5nZUl0ZW1CdWZmZXIgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZO
ZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpCiB7Ci0gICAgYXV0byBzaXplRm9yQnVmZmVyU3dp
dGNoSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZTo6TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICBhdXRvIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVt
ID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcj4oKTsKICAgICBpZiAobV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIG51bWJlck9mQnl0ZXMg
KyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA8PSBtX3dyaXRhYmxlQnVmZmVyLmNhcGFjaXR5KQog
ICAgICAgICByZXR1cm4gRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6Tm87CiAKQEAgLTc5Miw3ICsxMTcs
NyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklm
TmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogICAgIHJldHVybiBoYWRQcmV2aW91c0J1ZmZl
ciA/IERpZENoYW5nZUl0ZW1CdWZmZXI6OlllcyA6IERpZENoYW5nZUl0ZW1CdWZmZXI6Ok5vOwog
fQogCi12b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCit2
b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0
ZW0pCiB7CiAgICAgYXV0byBkYXRhID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRlbXBv
cmFyeUl0ZW0pOwogICAgIGlmICghZGF0YSkKQEAgLTgwMyw3ICsxMjgsNyBAQCB2b2lkIEl0ZW1C
dWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiAKICAgICBhdXRvIGJ1ZmZl
ckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNpdHlG
b3JFbmNvZGVkSXRlbSk7CiAKLSAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVt
YmVyT2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZW1wb3JhcnlJdGVtLnR5cGUoKSk7
CisgICAgbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUodGVtcG9yYXJ5SXRlbSkpOwogICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1i
ZXJPZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIu
ZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0
YS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBkODc1OTMyYzE3NmYwNzkwMzZlZjBjNGZiZjVkMmRh
NzEzMzE1YWQ1Li5lOTQzM2M0NTE4MjkxODRhMTFjNjliM2U1Nzc2OWJkMWIwNzlhNjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDkgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgorI2luY2x1ZGUgIkRpc3BsYXlM
aXN0SXRlbXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOCw5ICs0
MCw2IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0OwogCi1l
bnVtIEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJdGVtQnVmZmVySWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKLQogLy8g
QW4gSXRlbUJ1ZmZlckhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCBjb250
YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLgogc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGUgewog
ICAgIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CkBAIC01MywzNiArNTIsNiBAQCBz
dHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZSB7CiAKIHVzaW5nIEl0ZW1CdWZmZXJIYW5kbGVzID0gVmVj
dG9yPEl0ZW1CdWZmZXJIYW5kbGUsIDI+OwogCi0vLyBBbiBJdGVtSGFuZGxlIHdyYXBzIGEgcG9p
bnRlciB0byBhbiBJdGVtVHlwZSBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSBhbiBpdGVtIG9mIHRo
YXQgdHlwZS4KLS8vIEVhY2ggaXRlbSBoYW5kbGUgZGF0YSBwb2ludGVyIGlzIGFsaWduZWQgdG8g
OCBieXRlcywgYW5kIHRoZSBpdGVtIGl0c2VsZiBpcyBhbHNvIGFsaWduZWQKLS8vIHRvIDggYnl0
ZXMuIFRvIGVuc3VyZSB0aGlzLCB0aGUgaXRlbSB0eXBlIGNvbnNpc3RzIG9mIDggYnl0ZXMgKDEg
Ynl0ZSBmb3IgdGhlIHR5cGUgYW5kIDcKLS8vIGJ5dGVzIG9mIHBhZGRpbmcpLgotc3RydWN0IEl0
ZW1IYW5kbGUgewotICAgIHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07Ci0KLSAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJveSgp
OwotICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0Ojppc0RyYXdpbmdJdGVtKHR5cGUoKSk7IH0KLQotICAgIG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhISgqdGhpcyk7IH0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFkYXRhOyB9Ci0KLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElTQUJMRUQK
LSAgICBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIEl0ZW1UeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtVHlwZT4oZGF0YVswXSk7IH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXMoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gVDo6aXRlbVR5cGU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUJiBnZXQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzPFQ+KCkpOwotICAgICAgICByZXR1cm4gKnJl
aW50ZXJwcmV0X2Nhc3Q8VCo+KCZkYXRhW3NpemVvZih1aW50NjRfdCldKTsKLSAgICB9Ci0KLSAg
ICBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0OwotfTsKLQogZW51
bSBjbGFzcyBEaWRDaGFuZ2VJdGVtQnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogY2xhc3Mg
SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgewpAQCAtOTAsNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgSXRl
bUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCkgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShjb25z
dCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5nZUl0ZW1C
dWZmZXIpID0gMDsKIH07CiAKQEAgLTk4LDcgKzY3LDcgQEAgY2xhc3MgSXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JF
VFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJ
dGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlv
bmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7CiB9OwogCiAv
LyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEsIGFuZCBjb25z
aXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFuZGxlICh0byB3aGljaCBkaXNwbGF5CkBA
IC0xNDksMjYgKzExOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YSBiYWNrIGludG8gYW4gaXRl
bSBvZiB0eXBlIFQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9p
ZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUgfHwgIVQ6OmlzSW5saW5lSXRl
bSk7Ci0KLSAgICAgICAgaWYgKCFUOjppc0lubGluZUl0ZW0gJiYgbV93cml0aW5nQ2xpZW50KSB7
Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgICAgIF9fZGVjbHNwZWMoYWxpZ24oOCkpIHR5
cGVkZWYgdWludDhfdCBFbmNvZGluZ0J1ZmZlcltzaXplb2YodWludDY0X3QpICsgc2l6ZW9mKFQp
XTsKLSNlbHNlCi0gICAgICAgICAgICB1c2luZyBFbmNvZGluZ0J1ZmZlciBfX2F0dHJpYnV0ZV9f
KChhbGlnbmVkICg4KSkpID0gdWludDhfdFtzaXplb2YodWludDY0X3QpICsgc2l6ZW9mKFQpXTsK
LSNlbmRpZgotICAgICAgICAgICAgc3RhdGljIEVuY29kaW5nQnVmZmVyIHRlbXBvcmFyeUl0ZW1C
dWZmZXI7Ci0gICAgICAgICAgICB0ZW1wb3JhcnlJdGVtQnVmZmVyWzBdID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oVDo6aXRlbVR5cGUpOwotICAgICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJdGVtQnVm
ZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwot
ICAgICAgICAgICAgYXBwZW5kKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKLSAgICAgICAgICAg
IEl0ZW1IYW5kbGUgeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0uZGVzdHJveSgpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUgPT0g
VDo6aXNJbmxpbmVJdGVtKTsKKworICAgICAgICBpZiAoIVQ6OmlzSW5saW5lSXRlbSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93cml0aW5nQ2xpZW50KTsKKyAgICAgICAgICAgIGFw
cGVuZChEaXNwbGF5TGlzdEl0ZW0oVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlckNoYW5n
ZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUlu
Qnl0ZXMoVDo6aXRlbVR5cGUpKTsKLQotICAgICAgICBpZiAoIXN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxUPjo6dmFsdWUpCi0gICAgICAgICAgICBtX2l0ZW1zVG9EZXN0cm95SW5BbGxv
Y2F0ZWRCdWZmZXJzLmFwcGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVt
YmVyT2ZCeXRlc10gfSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJs
ZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxUPigpKTsKIAog
ICAgICAgICB1bmNoZWNrZWRBcHBlbmQ8VD4oYnVmZmVyQ2hhbmdlZCwgc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKICAgICB9CkBAIC0xODMsMTggKzE0MSwxNyBAQCBwcml2YXRlOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZCeXRlcywg
RGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBEaWRDaGFuZ2VJdGVt
QnVmZmVyIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChEaWRDaGFu
Z2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIsIEFyZ3MmJi4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0gPSAmbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3Jp
dHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAgICBzdGFydE9mSXRlbVswXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgbmV3IChzdGFydE9mSXRlbSArIHNpemVv
Zih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgZGlk
QXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpLCBk
aWRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbUluQnl0ZXM8VD4oKSwgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgfQogCiAg
ICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqIG1fcmVhZGluZ0NsaWVudCB7IG51bGxwdHIgfTsK
ICAgICBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCogbV93cml0aW5nQ2xpZW50IHsgbnVsbHB0ciB9
OwotICAgIFZlY3RvcjxJdGVtSGFuZGxlPiBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRCdWZm
ZXJzOwogICAgIFZlY3Rvcjx1aW50OF90Kj4gbV9hbGxvY2F0ZWRCdWZmZXJzOwogICAgIEl0ZW1C
dWZmZXJIYW5kbGVzIG1fcmVhZE9ubHlCdWZmZXJzOwogICAgIEl0ZW1CdWZmZXJIYW5kbGUgbV93
cml0YWJsZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzQ5N2YzOTUwNThhNjc2ODY0NDhhMjU1
NzE3NDBjZjQwMzdhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5o
CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2VudW0g
SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEl0ZW1CdWZmZXJJZGVudGlmaWVy
ID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmllclR5cGU+OworCit9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU2OTI1MDA2NTFhYTJiYWQ0ZTg5MWQ4OTc0MDJiMWFkMzBiNjBiMzEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgotCi0jaW5jbHVkZSAi
RGlzcGxheUxpc3RJdGVtcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgRGlz
cGxheUxpc3QgewotCi1zdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5
cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihTYXZlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFJlc3RvcmUpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5z
bGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihUcmFuc2xhdGUpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihSb3RhdGUpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNjYWxlKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIHNpemVvZihDb25jYXRlbmF0
ZUNUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gc2l6ZW9m
KFNldENUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKFNldElubGluZUZpbGxHcmFkaWVudCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElubGlu
ZUZpbGxDb2xvcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lU3Ryb2tlQ29sb3IpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRTdHJv
a2VUaGlja25lc3MpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKFNldFN0YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVDYXApOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVEYXNoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVEYXNoKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRMaW5lSm9pbik7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIHNpemVv
ZihTZXRNaXRlckxpbWl0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihDbGVhclNoYWRvdyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBUb0ltYWdlQnVmZmVy
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKENsaXBPdXRUb1BhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3R2x5
cGhzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRHJhd0ltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd05hdGl2ZUltYWdlKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3UGF0dGVy
bik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
RHJhd1JlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKERyYXdMaW5lKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0Ogot
ICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdMaW5lc0ZvclRleHQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0VsbGlwc2UpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXRoKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3Rm9j
dXNSaW5nUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKERyYXdGb2N1c1JpbmdSZWN0cyk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3QpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxS
ZWN0V2l0aENvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhHcmFkaWVudCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxD
b21wb3NpdGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSb3VuZGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxJbmxp
bmVQYXRoKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEZpbGxQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToK
LSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNoQ29udGV4dCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFB1dElt
YWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKFBhaW50RnJhbWVGb3JNZWRpYSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VSZWN0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZUxpbmUp
OwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlSW5saW5lUGF0aCk7Ci0j
ZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKFN0cm9rZVBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAg
ICAgIHJldHVybiBzaXplb2YoU3Ryb2tlRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xl
YXJSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsZWFyUmVjdCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdp
blRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lM
YXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmRUcmFuc3BhcmVuY3lMYXllcik7Ci0jaWYg
VVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAg
cmV0dXJuIHNpemVvZihBcHBseVN0cm9rZVBhdHRlcm4pOwotICAgIGNhc2UgSXRlbVR5cGU6OkFw
cGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2YoQXBwbHlGaWxsUGF0dGVybik7
Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBpc0RyYXdpbmdJ
dGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVt
VHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBh
dHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRv
UGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xv
cjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgIGNhc2UgSXRl
bVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgSXRlbVR5cGU6OlRy
YW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdHbHlwaHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRl
eHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zaXpl
X3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAg
cmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWlu
dDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7Ci19Ci0KLWJvb2wgaXNJbmxpbmVJdGVt
KEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUmVjdHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJl
Y3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0
dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFy
U2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVD
VE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5j
eUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJ
TkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlm
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hD
b250ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgIGNhc2UgSXRl
bVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgIGNhc2UgSXRl
bVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0Q1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRl
ckxpbWl0OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQot
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggY2Q2YzFhNDk5Yzk4MjE2ZTEyNjU4MGMzZTNj
YzRhM2Q4YzI2OTQ5MC4uOGE3MDBhNGY0MDdiNDNiZmZlNGMxODYzZTc2YzUxMDhhYjE5ZDYwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDkgKzk4LDUgQEAgZW51
bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3Is
CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzKEl0ZW1UeXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBl
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSk7Ci0KIH0gLy8g
bmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMTY4NzM2NWQ0N2I0NGE4ZThlOGNjMmQ4OGYx
OTc0YmRiNWU0NjJkMy4uZDg5MjM2ZGFiMjg1NmNlYzYwZDViODViYjg5OWQzYmNjYTMzZGQ2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKIAorI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVw
bGF5ZXIuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCkBAIC0yMjAsMTIgKzIyMSwxMiBAQCBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRAogewogfQog
Ci12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUlt
YWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQor
dm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFn
ZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkgY29u
c3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJuSW1h
Z2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5w
YXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRl
Q2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpz
dHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgaWYg
KG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpm
aWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29u
c3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRl
cm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBh
dHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0K
IApAQCAtMTA4MywxOTIgKzEwODQsMTIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCi17Ci0g
ICAgdHMgPDwgaXRlbS50eXBlKCk7Ci0KLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxUcmFuc2xh
dGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8Um90YXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2NhbGU+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8U2V0Q1RNPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRl
bmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0
cm9rZVRoaWNrbmVzcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
U3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxTZXRMaW5lQ2FwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRM
aW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZURhc2g+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTZXRMaW5lSm9pbj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TWl0ZXJMaW1pdD4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8Q2xpcD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcE91dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0
VG9QYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PERyYXdHbHlwaHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERy
YXdQYXR0ZXJuPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVj
dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1JlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3
TGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdD4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSb3VuZGVk
UmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RmlsbElubGluZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmx1c2hDb250ZXh0
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8UHV0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQ
YWludEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFBhaW50RnJhbWVGb3JN
ZWRpYT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ry
b2tlTGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQ
YXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNl
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PENsZWFyUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5U
cmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZh
Y3Rvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvLyBJdGVtcyB3aXRoIG5vIGFkZGl0aW9u
YWwgZGF0YS4KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlJl
c3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0jaWYgVVNF
KENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6Q2xl
YXJTaGFkb3c6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBXVEY6
OnZpc2l0KFsmXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgdHMgPDwg
ZGlzcGxheUxpc3RJdGVtLml0ZW1UeXBlOworICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0ZW07
CisgICAgfSwgaXRlbSk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAppbmRleCA3ZjE5MTEyNzRmNmFmNDUwZmY5NGNmYmQwNGMwNDQ2N2VhYzUwNDY0
Li40OTMyN2JlYjZkMjAxMmNhZWQzYWUxZjBjM2Y1ZmI2NjM5Nzk4NjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI2LDExICsyNiwxNCBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxp
c3QuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlz
dEl0ZW1UeXBlLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZv
bnQuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRl
ICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllcklkZW50aWZpZXIuaCIKQEAgLTM4
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0U3RyZWFt
OwpAQCAtMjY4LDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdl
LCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSog
ZmlsbFBhdHRlcm5JbWFnZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBhdHRlcm5E
YXRhIHsKQEAgLTkwMiw3ICs5MDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0Ry
YXdpbmdJdGVtID0gdHJ1ZTsKIAotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250
SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KKyAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRJ
ZGVudGlmaWVyOyB9CiAgICAgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IoKSBjb25zdCB7
IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBjb25zdCBWZWN0b3I8R2x5cGhCdWZm
ZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaHM7IH0KQEAgLTIy
NDcsNyArMjI1MSw5MCBAQCBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiB9OwogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBJdGVtSGFuZGxlKTsKK3VzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQ8CisgICAgU2F2
ZSwKKyAgICBSZXN0b3JlLAorICAgIFRyYW5zbGF0ZSwKKyAgICBSb3RhdGUsCisgICAgU2NhbGUs
CisgICAgU2V0Q1RNLAorICAgIENvbmNhdGVuYXRlQ1RNLAorICAgIFNldElubGluZUZpbGxHcmFk
aWVudCwKKyAgICBTZXRJbmxpbmVGaWxsQ29sb3IsCisgICAgU2V0SW5saW5lU3Ryb2tlQ29sb3Is
CisgICAgU2V0U3Ryb2tlVGhpY2tuZXNzLAorICAgIFNldFN0YXRlLAorICAgIFNldExpbmVDYXAs
CisgICAgU2V0TGluZURhc2gsCisgICAgU2V0TGluZUpvaW4sCisgICAgU2V0TWl0ZXJMaW1pdCwK
KyAgICBDbGVhclNoYWRvdywKKyAgICBDbGlwLAorICAgIENsaXBPdXQsCisgICAgQ2xpcFRvSW1h
Z2VCdWZmZXIsCisgICAgQ2xpcE91dFRvUGF0aCwKKyAgICBDbGlwUGF0aCwKKyAgICBCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcywKKyAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAg
RHJhd0dseXBocywKKyAgICBEcmF3SW1hZ2VCdWZmZXIsCisgICAgRHJhd05hdGl2ZUltYWdlLAor
ICAgIERyYXdQYXR0ZXJuLAorICAgIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIsCisgICAgRW5kVHJh
bnNwYXJlbmN5TGF5ZXIsCisgICAgRHJhd1JlY3QsCisgICAgRHJhd0xpbmUsCisgICAgRHJhd0xp
bmVzRm9yVGV4dCwKKyAgICBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyLAorICAgIERyYXdFbGxp
cHNlLAorICAgIERyYXdQYXRoLAorICAgIERyYXdGb2N1c1JpbmdQYXRoLAorICAgIERyYXdGb2N1
c1JpbmdSZWN0cywKKyAgICBGaWxsUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhDb2xvciwKKyAgICBG
aWxsUmVjdFdpdGhHcmFkaWVudCwKKyAgICBGaWxsQ29tcG9zaXRlZFJlY3QsCisgICAgRmlsbFJv
dW5kZWRSZWN0LAorICAgIEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlLAorICAgIEZpbGxJbmxpbmVQ
YXRoLAorICAgIEZpbGxQYXRoLAorICAgIEZpbGxFbGxpcHNlLAorICAgIFB1dEltYWdlRGF0YSwK
KyAgICBQYWludEZyYW1lRm9yTWVkaWEsCisgICAgU3Ryb2tlUmVjdCwKKyAgICBTdHJva2VMaW5l
LAorICAgIFN0cm9rZUlubGluZVBhdGgsCisgICAgU3Ryb2tlUGF0aCwKKyAgICBTdHJva2VFbGxp
cHNlLAorICAgIENsZWFyUmVjdCwKKyAgICBBcHBseVN0cm9rZVBhdHRlcm4sCisgICAgQXBwbHlG
aWxsUGF0dGVybiwKKyAgICBBcHBseURldmljZVNjYWxlRmFjdG9yLAorICAgIEZsdXNoQ29udGV4
dCwKKyAgICBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIsCisgICAgTWV0YUNvbW1hbmRDaGFu
Z2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPjsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK2lubGluZSBjb25zdGV4cHIgYm9v
bCBpc0RyYXdpbmdJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKQor
eworICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkg
eworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlzRHJhd2luZ0l0ZW07CisgICAgfSwg
ZGlzcGxheUxpc3RJdGVtKTsKK30KKworaW5saW5lIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlw
ZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkKK3sKKyAgICByZXR1cm4g
V1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgcmV0
dXJuIGRpc3BsYXlMaXN0SXRlbS5pdGVtVHlwZTsKKyAgICB9LCBkaXNwbGF5TGlzdEl0ZW0pOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0ZXhwciBzaXplX3QgcGFkZGVkU2l6ZU9m
VHlwZUFuZEl0ZW1JbkJ5dGVzKCkKK3sKKyAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSArIHJv
dW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIHNpemVvZihUKSk7Cit9CiAKIH0g
Ly8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg3N2U3YjljNDQ1
MzQyZDgwZTZmMjM0ZjBmYjllNGYxZjBhZjZiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9y
LmNwcApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0
ZXJhdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CisKK0Rpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0VuZCBpbW1lZGlhdGVseU1vdmVUb0VuZCkKKyAg
ICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCit7CisgICAgaWYgKGltbWVkaWF0ZWx5TW92
ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1dG8g
aXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsKKyAgICAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRl
eCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgICAgICAgICBtX2N1cnNv
ciA9IGVuZE9mQ3VycmVudEJ1ZmZlcigpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAg
IG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Cit9CisKKyNpZiBBU1NFUlRfRU5B
QkxFRAorYm9vbCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Y29uc3QgYXV0byogaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgaWYgKCFpdGVtcykKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxl
QnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKKyAgICByZXR1cm4g
bV9jdXJzb3IgPT0gZW5kQ3Vyc29yOworfQorI2VuZGlmCisKK2F1dG8gRGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdCAtPiBPcHRpb25hbDxWYWx1ZT4KK3sKKyAgICBBU1NF
UlQoIWF0RW5kKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SXRlbUluZm8pOworCisgICAgYXV0
byBjdXJyZW50SXRlbUluZm8gPSBjdXJyZW50SXRlbSgpOworICAgIGlmICghY3VycmVudEl0ZW1J
bmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgbV9jdXJyZW50SXRlbUlu
Zm8gPSB7eyBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciwgY3VycmVudEl0ZW1JbmZvLT5p
c0RyYXdpbmdJdGVtIH19OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBjdXJyZW50RXh0ZW50
OworICAgIGlmIChjdXJyZW50SXRlbUluZm8tPmlzRHJhd2luZ0l0ZW0gJiYgIW1fZGlzcGxheUxp
c3QubV9kcmF3aW5nSXRlbUV4dGVudHMuaXNFbXB0eSgpKQorICAgICAgICBjdXJyZW50RXh0ZW50
ID0gbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhd
OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoY3VycmVudEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0
ZW0pLCBXVEZNb3ZlKGN1cnJlbnRFeHRlbnQpLCBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZl
ciB9fTsKK30KKwordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKQorewor
ICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEl0ZW1JbmZvKTsKKwor
ICAgIGlmIChtX2N1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSkKKyAgICAgICAgKyttX2Ry
YXdpbmdJdGVtSW5kZXg7CisKKyAgICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVtSW5mby0+c2l6
ZUluQnVmZmVyOworCisgICAgaWYgKG1fY3Vyc29yID09IGVuZE9mQ3VycmVudEJ1ZmZlcigpICYm
IG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMu
c2l6ZSgpKSB7CisgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCsrOworICAgICAgICBtb3Zl
Q3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOworICAgIH0KKworICAgIG1fY3VycmVudEl0
ZW1JbmZvID0geyB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBz
dGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQgPSBmYWxzZTsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBz
dGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVl
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0m
KQoreworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3Rh
dGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJv
b2w+IGlzVmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4gaXRlbS5pc1ZhbGlk
KCk7Cit9CisKK3RlbXBsYXRlIDxzdGQ6OnNpemVfdCBJPgoraW5saW5lIGF1dG8gRGlzcGxheUxp
c3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpIGNvbnN0IC0+IE9wdGlvbmFsPEN1cnJlbnRJdGVt
UmVzdWx0PgoreworICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBi
ZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgLy8gRG9p
bmcgc28gd291bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBk
b2luZyAiaWYgKCkgeyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1
cm47IH0gZWxzZSB7IHJldHVybjsgfSIKKyAgICAvLyBvciBCKSBjYXVzZSB0aGUgY29tcGlsZXIg
dG8gaW5maW5pdGVseSByZWN1cnNlIHdoZW4gZ2VuZXJhdGluZyB0ZW1wbGF0ZSBzcGVjaWFsaXph
dGlvbnMgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlh
bnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICB1c2luZyBEaXNwbGF5
TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8SSwgRGlzcGxheUxpc3RJ
dGVtPjsKKworICAgICAgICBjb25zdCBhdXRvKiBlbmRPZkN1cnJlbnRCdWZmZXIgPSB0aGlzLT5l
bmRPZkN1cnJlbnRCdWZmZXIoKTsKKworICAgICAgICBpZiAobV9jdXJzb3IgKyAxID4gZW5kT2ZD
dXJyZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBhdXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAg
ICAgICAgaWYgKGl0ZW1UeXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRJdGVtPEkgKyAxPigpOworCisgICAgICAgIGlmIChEaXNw
bGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChtX2N1cnNv
ciArIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxEaXNwbGF5TGlzdEl0ZW1UeXBlPigp
ID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgRGlzcGxheUxpc3RJdGVtVHlwZSo+KG1fY3Vyc29yICsgc2l6ZW9mKHVpbnQ2NF90KSk7Cisg
ICAgICAgICAgICBpZiAoIWlzVmFsaWQoaXRlbSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVm
ZmVyID0gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50
NjRfdCksIHNpemVvZihEaXNwbGF5TGlzdEl0ZW1UeXBlKSk7CisgICAgICAgICAgICByZXR1cm4g
e3sgaXRlbSwgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsIERpc3BsYXlMaXN0SXRlbVR5cGU6Omlz
RHJhd2luZ0l0ZW0gfX07CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiBjbGllbnQgPSBpdGVt
QnVmZmVyKCktPm1fcmVhZGluZ0NsaWVudDsKKyAgICAgICAgaWYgKCFjbGllbnQpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGlmIChtX2N1cnNvciArIDIgKiBz
aXplb2YodWludDY0X3QpID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9j
YXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOworICAgICAgICBjb25zdCBhdXRvKiBzdGFydE9m
RGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7CisgICAgICAgIGlmIChzdGFy
dE9mRGF0YSArIGRhdGFMZW5ndGggPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1dG8gaXRlbSA9IGNsaWVudC0+ZGVjb2Rl
SXRlbShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUpOworICAgICAgICBpZiAoIWl0
ZW0gfHwgIWlzVmFsaWQoaXRlbS52YWx1ZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHN0ZDo6c2l6ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gIDIg
KiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90
KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKGl0ZW0udmFsdWUoKSks
IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJ
dGVtIH19OworICAgIH0KKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3ZvaWQgRGlz
cGxheUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCit7
CisgICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1f
cmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwg
bnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZlckhh
bmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOwor
ICAgICAgICBtX2N1cnNvciA9IGN1cnJlbnRCdWZmZXJIYW5kbGUuZGF0YTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9u
bHlCdWZmZXJzKTsKKyAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5k
YXRhOworICAgIH0KK30KKwordWludDhfdCogRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjplbmRPZkN1
cnJlbnRCdWZmZXIoKSBjb25zdAoreworICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Cisg
ICAgQVNTRVJUKGl0ZW1zKTsKKworICAgIGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMgPSBp
dGVtcy0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOworICAgIGlmIChtX3JlYWRPbmx5QnVmZmVy
SW5kZXggPCBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAgICAgICBhdXRvJiBjdXJyZW50
QnVmZmVySGFuZGxlID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJ
bmRleF07CisgICAgICAgIHJldHVybiBjdXJyZW50QnVmZmVySGFuZGxlLmRhdGEgKyBjdXJyZW50
QnVmZmVySGFuZGxlLmNhcGFjaXR5OworICAgIH0KKworICAgIEFTU0VSVChtX3JlYWRPbmx5QnVm
ZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOworICAgIHJldHVybiBpdGVtcy0+
bV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Cit9
CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdjNmYxOGRjZjQ0YTI0ODZhZmUwY2Y0MjJiZjNlZmJlNGMwOGM0NzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVyYXRvci5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRpc3BsYXlM
aXN0LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitjbGFzcyBEaXNwbGF5TGlzdDo6SXRlcmF0
b3IgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgeyBObywg
WWVzIH07CisgICAgSXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmLCBJbW1lZGlhdGVseU1vdmVU
b0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObyk7CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIu
bV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsgfQorICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CisgICAgdm9pZCBvcGVyYXRvcisrKCk7CisKKyAgICBzdHJ1Y3QgVmFsdWUgeworICAg
ICAgICBEaXNwbGF5TGlzdEl0ZW0gaXRlbTsKKyAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBl
eHRlbnQ7CisgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OworICAgIH07CisK
KyAgICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
c3RydWN0IEN1cnJlbnRJdGVtUmVzdWx0IHsKKyAgICAgICAgRGlzcGxheUxpc3RJdGVtIGRpc3Bs
YXlMaXN0SXRlbTsKKyAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVmZmVyOworICAgICAgICBi
b29sIGlzRHJhd2luZ0l0ZW07CisgICAgfTsKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSA9
IDA+CisgICAgT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1bHQ+IGN1cnJlbnRJdGVtKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVm
ZmVyKCk7CisgICAgdWludDhfdCogZW5kT2ZDdXJyZW50QnVmZmVyKCkgY29uc3Q7CisKKyNpZiBB
U1NFUlRfRU5BQkxFRAorICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKKyNlbmRpZgorCisgICAgSXRl
bUJ1ZmZlciogaXRlbUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUJ1
ZmZlcklmRXhpc3RzKCk7IH0KKworICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0
OworICAgIHN0cnVjdCBDdXJyZW50SXRlbUluZm8geworICAgICAgICBzdGQ6OnNpemVfdCBzaXpl
SW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3aW5nSXRlbTsKKyAgICB9OworICAgIG11dGFi
bGUgT3B0aW9uYWw8Q3VycmVudEl0ZW1JbmZvPiBtX2N1cnJlbnRJdGVtSW5mbzsKKyAgICB1aW50
OF90KiBtX2N1cnNvciB7IG51bGxwdHIgfTsKKyAgICBzaXplX3QgbV9yZWFkT25seUJ1ZmZlcklu
ZGV4IHsgMCB9OworICAgIHNpemVfdCBtX2RyYXdpbmdJdGVtSW5kZXggeyAwIH07Cit9OworCit9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMTBkOTVk
NjNiMDhjNzdmN2Y4NWMzZDNhNzk2MGVmNTZmOWMzOTQ0Zi4uZTUyOGEzNWZmZTE4NDZiYjdmZTg2
NDZhNjViNWQyYjAzODJjMzBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtMTE2LDI2ICsxMTYsMTcgQEAgdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVD
aGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLAogICAg
ICAgICBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigqY2hhbmdlcy5tX3N0YXRlLmZpbGxH
cmFkaWVudCwgY2hhbmdlcy5tX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKIH0K
IAotdm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkKLXsK
LSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW1P
ZlR5cGUodHlwZSk7Ci0KLSAgICBpZiAoaXNEcmF3aW5nSXRlbSh0eXBlKQotI2lmIFVTRShDRykK
LSAgICAgICAgfHwgdHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuIHx8IHR5cGUg
PT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybgotI2VuZGlmCi0gICAgKSB7Ci0gICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUo
KS5zdGF0ZUNoYW5nZTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MgY2hhbmdlc0Zyb21MYXN0U3RhdGUgPSBzdGF0ZUNoYW5nZXMuY2hhbmdlc0Zyb21TdGF0
ZShjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKLSAgICAgICAgaWYgKGNoYW5nZXNG
cm9tTGFzdFN0YXRlKSB7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3Rz
LCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUp
KTsKLSAgICAgICAgICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZUNoYW5nZXMsIGNoYW5n
ZXNGcm9tTGFzdFN0YXRlKTsKLSAgICAgICAgICAgIHN0YXRlQ2hhbmdlcy5tX2NoYW5nZUZsYWdz
ID0geyB9OwotICAgICAgICAgICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0
YXRlQ2hhbmdlcy5tX3N0YXRlOwotICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRTdGF0ZSgpLndh
c1VzZWRGb3JEcmF3aW5nID0gdHJ1ZTsKK3ZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmREcmF3aW5n
SXRlbSgpCit7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlcyA9
IGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFuZ2VzLmNoYW5n
ZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7CisgICAgaWYgKGNo
YW5nZXNGcm9tTGFzdFN0YXRlKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlz
dHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0
ZSkpOworICAgICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGVDaGFuZ2VzLCBjaGFuZ2Vz
RnJvbUxhc3RTdGF0ZSk7CisgICAgICAgIHN0YXRlQ2hhbmdlcy5tX2NoYW5nZUZsYWdzID0geyB9
OworICAgICAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFuZ2Vz
Lm1fc3RhdGU7CiAgICAgfQorICAgIGN1cnJlbnRTdGF0ZSgpLndhc1VzZWRGb3JEcmF3aW5nID0g
dHJ1ZTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBm
bGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGU3YjRhMDdm
Y2NjODdkZWE2ZGVhMjU0YTViNzZjZGJkZThjNDE2YzYuLjlkNTAyMTAyMzQyMDQyZGRjYjg2Nzc3
ODc4MjBiNWU4NjhiYmJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
Y2xhc3MuLi4gQXJncz4KICAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKICAgICB7Ci0g
ICAgICAgIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKTsKKyAgICAgICAgd2lsbEFw
cGVuZEl0ZW1PZlR5cGU8VD4oKTsKICAgICAgICAgbV9kaXNwbGF5TGlzdC5hcHBlbmQ8VD4oc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKIAogICAgICAgICBpZiBjb25zdGV4cHIgKFQ6Omlz
RHJhd2luZ0l0ZW0pIHsKQEAgLTE3MSw3ICsxNzEsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
ICAgIH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRl
bVR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgd2lsbEFwcGVuZEl0
ZW1PZlR5cGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgICAgICBt
X2RlbGVnYXRlLT53aWxsQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlwZSk7CisKKyAgICAgICAg
aWYgKFQ6OmlzRHJhd2luZ0l0ZW0KKyNpZiBVU0UoQ0cpCisgICAgICAgICAgICB8fCBUOjppdGVt
VHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuIHx8IFQ6Oml0ZW1UeXBlID09IEl0
ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4KKyNlbmRpZgorICAgICAgICApCisgICAgICAgICAg
ICB3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHdpbGxBcHBlbmREcmF3aW5nSXRlbSgpOwogCiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cAppbmRleCBkMTczN2EyNzljMzk3ZTA5MDkzZDEzODQzM2RiMzg0N2Q2ZjQ3NDkyLi5lMzJlMDYx
OTc3ZWM2YjgwOTVmM2U2NTk2YTY4MjMxNmViZGRhYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlcGxheWVyLmgiCiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisjaW5jbHVkZSAi
RGlzcGxheUxpc3RJdGVyYXRvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC01
Miw5ICs1Myw4IEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQoKSBjb25zdAog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5k
bGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBjb25zdCBUJiBpbWFnZUJ1ZmZlckl0
ZW0pCiB7Ci0gICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBh
dXRvIHJlc291cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50
aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcnMuZ2V0KHJl
c291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRl
eHQsICppbWFnZUJ1ZmZlcik7CkBAIC02NCw5ICs2NCw4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFw
aGljCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRl
bUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIGNvbnN0IFQmIG5hdGl2ZUlt
YWdlSXRlbSkKIHsKLSAgICBhdXRvJiBuYXRpdmVJbWFnZUl0ZW0gPSBpdGVtLmdldDxUPigpOwog
ICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gbmF0aXZlSW1hZ2VJdGVtLmltYWdlSWRlbnRp
ZmllcigpOwogICAgIGlmIChhdXRvKiBpbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQocmVzb3VyY2VJ
ZGVudGlmaWVyKSkgewogICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29udGV4dCwgKmlt
YWdlKTsKQEAgLTc1LDEwICs3NCw4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljCiAgICAgcmV0
dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1I
YW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBjb25zdCBTZXRTdGF0ZSYgc2V0U3Rh
dGVJdGVtKQogewotICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigp
OwotCiAgICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CiAgICAg
TmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwogCkBAIC05OSw5ICs5Niw4
IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBh
cHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxp
bmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250
SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJj
ZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywgY29uc3QgVCYg
Zm9udEl0ZW0pCiB7Ci0gICAgYXV0byYgZm9udEl0ZW0gPSBpdGVtLmdldDxUPigpOwogICAgIGF1
dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gZm9udEl0ZW0uZm9udElkZW50aWZpZXIoKTsKICAgICBp
ZiAoYXV0byogZm9udCA9IGZvbnRzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAg
IGZvbnRJdGVtLmFwcGx5KGNvbnRleHQsICpmb250KTsKQEAgLTExMCw2OCArMTA2LDY4IEBAIGlu
bGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZv
bnRJdGVtKEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0K
IAotc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRl
bSkKK2V4dGVybiBHcmFwaGljc0NvbnRleHQmIHN5bnRoZXNpemVMVmFsdWVHcmFwaGljc0NvbnRl
eHQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBzdGF0aWMgaW5saW5lIGNv
bnN0ZXhwciBib29sIEhhc0FwcGx5ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0FwcGx5PFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBl
KHN0ZDo6ZGVjbHZhbDxUPigpLmFwcGx5KHN5bnRoZXNpemVMVmFsdWVHcmFwaGljc0NvbnRleHQp
KT4+ID0gdHJ1ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhSGFzQXBwbHk8SXRlbT4sIHZvaWQ+IGFwcGx5KGNvbnN0
IEl0ZW0mLCBHcmFwaGljc0NvbnRleHQmKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVt
Pgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0FwcGx5PEl0ZW0+
LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCkKK3sKKyAgICByZXR1cm4gaXRlbS5hcHBseShncmFwaGljc0NvbnRleHQpOworfQor
CithdXRvIFJlcGxheWVyOjphcHBseUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKSAt
PiBBcHBseUl0ZW1SZXN1bHQKIHsKICAgICBpZiAobV9kZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5h
cHBseShpdGVtLCBjb250ZXh0KCkpKQogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCB9OwogCi0gICAgaWYgKGl0ZW0uaXM8RHJhd0ltYWdlQnVmZmVyPigpKSB7Cisg
ICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgRHJhd0ltYWdlQnVm
ZmVyJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdl
QnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPENsaXBU
b0ltYWdlQnVmZmVyPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBp
dGVtKSAtPiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdl
QnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPERyYXdO
YXRpdmVJbWFnZT4oKSkgeworICAgIH0sIFsmXShjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0p
IC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNv
bnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd0dseXBocz4oKSkg
ewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBw
bHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQorICAgIH0s
IFsmXShjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAg
ICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZl
SW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkK
ICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNv
dXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlm
IChpdGVtLmlzPERyYXdQYXR0ZXJuPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4o
Y29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgfSwgWyZdKGNvbnN0IERyYXdH
bHlwaHMmIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGlmIChhdXRvIG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNv
bnRleHQoKSwgbV9mb250cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5
UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxTZXRTdGF0ZT4oKSkgeworICAgIH0s
IFsmXShjb25zdCBTZXRTdGF0ZSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAg
aWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJ
dGVtKGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAo
bV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpJbnZhbGlkSXRlbSwgV1RGOjpudWxsb3B0IH07Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0g
aXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7CiAgICAgICAgIG1fbWFza0lt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0ZW0u
ZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0KTsK
ICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0
b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBXVEY6Om51bGxvcHQgfTsKICAgICAgICAgcmV0
dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRl
bS5pczxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgRW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBjbGlwSXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAg
ICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246OkludmFsaWRJdGVtLCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYg
Y2xpcEl0ZW0gPSBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7CiAgICAgICAg
IG1fY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9tYXNrSW1hZ2VCdWZmZXIsIGNsaXBJdGVt
LmRlc3RpbmF0aW9uKCkpOwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAg
ICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0g
ICAgaXRlbS5hcHBseShjb250ZXh0KCkpOwotICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0IH07CisgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIC0+IEFwcGx5SXRlbVJl
c3VsdCB7CisgICAgICAgIGFwcGx5KGl0ZW0sIGNvbnRleHQoKSk7CisgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6
dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAt
MTg3LDI4ICsxODMsMzAgQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKICAgICBzaXplX3QgaSA9
IDA7CiAjZW5kaWYKICAgICBSZXBsYXlSZXN1bHQgcmVzdWx0OwotICAgIGZvciAoYXV0byBbaXRl
bSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6IG1fZGlzcGxheUxpc3QpIHsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IG1fZGlzcGxheUxpc3QpIHsKKyAgICAgICAg
aWYgKCFkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9w
cGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6
ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworCiAgICAgICAgIGlmICghaW5p
dGlhbENsaXAuaXNaZXJvKCkgJiYgZXh0ZW50ICYmICFleHRlbnQtPmludGVyc2VjdHMoaW5pdGlh
bENsaXApKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJl
YW0gPDwgInNraXBwaW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKICAgICAgICAgICAgIHJl
c3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgICAg
IHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVt
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBp
dGVtKTsKIAotICAgICAgICBpZiAoaXRlbS0+aXM8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyPigpKSB7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbSkpIHsKICAgICAgICAg
ICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAgICAg
ICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gU3RvcFJlcGxheVJlYXNvbjo6Q2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjsKLSAgICAgICAgICAgIHJlc3VsdC5uZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlciA9IGl0ZW0tPmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1h
Z2VCdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5h
dGlvbkltYWdlQnVmZmVyID0gV1RGOjpnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbklt
YWdlQnVmZmVyPihpdGVtKS5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChhdXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllcl0gPSBhcHBseUl0ZW0oKml0ZW0pOyByZWFzb25Gb3JTdG9wcGlu
ZykgeworICAgICAgICBpZiAoYXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXJdID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykg
ewogICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3Bw
aW5nOwogICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0yMTcsOSArMjE1LDkgQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXko
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKICAgICAg
ICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAKICAgICAg
ICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpIHsKLSAgICAgICAgICAgIHJlcGxheUxp
c3QtPmFwcGVuZCgqaXRlbSk7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgp
KQotICAgICAgICAgICAgICAgIHJlcGxheUxpc3QtPmFkZERyYXdpbmdJdGVtRXh0ZW50KFdURk1v
dmUoZXh0ZW50KSk7CisgICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoaXRlbSk7CisgICAg
ICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKKyAgICAgICAgICAgICAgICByZXBsYXlM
aXN0LT5hZGREcmF3aW5nSXRlbUV4dGVudChPcHRpb25hbDxGbG9hdFJlY3Q+KGV4dGVudCkpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApp
bmRleCAxODFhMTJiMGU1MThlOGRjMjFkM2I3NDlmMjcxMDFkMmEzZTk2ZjM5Li45ZTAzOTI1YzZk
ZjVmZGQyNDU0Y2VhYTczMTgxOGYzYzlkYmMyNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjYsMTIgKzY2LDEzIEBAIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0
ZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgYXBwbHkoSXRlbUhhbmRsZSwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKICAgICAK
IHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7Ci0gICAgc3Rk
OjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CisgICAgdXNpbmcgQXBwbHlJ
dGVtUmVzdWx0ID0gc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PjsKKyAgICBBcHBseUl0ZW1SZXN1bHQgYXBw
bHlJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX21hc2tJbWFnZUJ1
ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmgKaW5kZXggMDZkOTQzZDk3YTliNjRmNzBhMWU3Nzk2ZDkxNTBlYjk3Zjgy
OTYzOS4uY2Q1MDZhMjkwNzI1NGIyMWIxZTE3YTJiOWIwMjViZmU2NDA2MzQzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzQsMjggKzc0LDI0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wg
YXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0uaXM8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0
byYgcHV0SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJ
bWFnZURhdGE+KCk7CisgICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZd
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmIHB1dEltYWdlRGF0YUl0
ZW0pIHsKICAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0Rm9y
bWF0KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0uc3Jj
UmVjdCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVtLmRl
c3RGb3JtYXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkpIHsK
KyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQm
IGZsdXNoQ29udGV4dCkgewogICAgICAgICAgICAgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmZs
dXNoQ29udGV4dCgpOwotICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gaXRlbS5nZXQ8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKS5pZGVudGlmaWVyKCk7CisgICAgICAg
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBmbHVzaENvbnRleHQuaWRlbnRpZmllcigpOwogICAgICAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZEZsdXNoKGlkZW50aWZpZXIsIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFD
b21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSkgewotICAgICAgICAgICAgYXV0byBuZXh0QnVmZmVy
SWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICB9LCBbJl0oY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciYgbWV0YUNvbW1h
bmRDaGFuZ2VJdGVtQnVmZmVyKSB7CisgICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJZGVudGlm
aWVyID0gbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLmlkZW50aWZpZXIoKTsKICAgICAgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5zZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChuZXh0
QnVmZmVySWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgICAgICB9
LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogICAgIH0KIAogICAg
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCBlNGRkYzNkMTVhYjI1NGFmZWI4MTVkZjJlN2I0NTc5MGNk
NjYwMjVmLi4yMTM0NDFkZGM1ZGU3NTI0OWQ3MWU3ZjA1OTZjNGMxYzU0YTllMGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTExNCwyMCArMTE0LDE4IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1
cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCi1ib29sIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK2Jvb2wgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRl
bSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFpdGVtLmlzPERpc3BsYXlMaXN0OjpQYWludEZyYW1l
Rm9yTWVkaWE+KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIG1lZGlhSXRl
bSA9IGl0ZW0uZ2V0PERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgYXV0
byBwbGF5ZXIgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7Ci0gICAg
aWYgKCFwbGF5ZXIpCisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29u
c3QgRGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSYgbWVkaWFJdGVtKSB7CisgICAgICAg
IGlmIChhdXRvIHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigp
KSkKKyAgICAgICAgICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlh
SXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjb250ZXh0
LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgfSwgW10oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRl
bSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xODIsNyArMTgw
LDcgQEAgRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpz
dWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICBlbHNlCiAgICAgICAgIHJlcGxheWVy
RGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPigm
ZGVzdGluYXRpb24pOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
ciB7CisgICAgcmV0dXJuIERpc3BsYXlMaXN0OjpSZXBsYXllciB7CiAgICAgICAgIGRlc3RpbmF0
aW9uLmNvbnRleHQoKSwKICAgICAgICAgZGlzcGxheUxpc3QsCiAgICAgICAgICZyZW1vdGVSZXNv
dXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCksCkBAIC0zMTEsMTIgKzMwOSwxMiBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BV
UHJvY2Vzc1dha2V1cE1lcwogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0
ZW1CdWZmZXJUb1JlYWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCiB7
CiAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIEdQVVByb2Nl
c3NXYWtldXBSZWFzb246OlVuc3BlY2lmaWVkIH0sIFdURjo6bnVsbG9wdCB9fTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPEltYWdlRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMyNiw3ICszMjQsNyBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaW1hZ2VEYXRhKSk7
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1
dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0zMzYsNyArMzM0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRE
YXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3AKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybFN0cmluZykpOwogfQogCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzQ2LDcgKzM0NCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkYXRhKSk7CiB9CiAKLXZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJbWFn
ZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAt
MzU2LDcgKzM1NCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFG
b3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShkYXRhKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVz
ZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9u
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC0zNjUsMTggKzM2MywxOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJl
YWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZwogICAgICAgICBhdXRv
IGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGlk
ZW50aWZpZXIpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFnZShXZWJD
b3JlOjpCYWNraW5nU3RvcmVDb3B5OjpEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGF1
dG8gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHk6
OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgYXV0byBiYWNrZW5kU2l6ZSA9IGltYWdlQnVmZmVyLT5iYWNrZW5k
U2l6ZSgpOwotICAgICAgICBhdXRvIHJlc3VsdFNpemUgPSBwcmVzZXJ2ZVJlc29sdXRpb24gPT0g
V2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMgPyBiYWNrZW5kU2l6ZSA6IGltYWdlQnVm
ZmVyLT5sb2dpY2FsU2l6ZSgpOworICAgICAgICBhdXRvIHJlc3VsdFNpemUgPSBwcmVzZXJ2ZVJl
c29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMgPyBiYWNrZW5kU2l6ZSA6IGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpOwogICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFNpemUsIHsgfSk7CiAgICAgICAgIGlmICghYml0
bWFwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNvbnRleHQtPmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIHJl
c3VsdFNpemUsIEZsb2F0UmVjdCB7IHsgfSwgcmVzdWx0U2l6ZSB9LCBGbG9hdFJlY3QgeyB7IH0s
IGJhY2tlbmRTaXplIH0sIHsgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7Cisg
ICAgICAgIGNvbnRleHQtPmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIHJlc3VsdFNpemUsIEZsb2F0
UmVjdCB7IHsgfSwgcmVzdWx0U2l6ZSB9LCBGbG9hdFJlY3QgeyB7IH0sIGJhY2tlbmRTaXplIH0s
IHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CiAgICAgICAgIGJpdG1hcC0+Y3JlYXRlSGFu
ZGxlKGhhbmRsZSk7CiAgICAgfSgpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFu
ZGxlKSk7CkBAIC00MzQsMTAxICs0MzIsMzMgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShEaXNwbGF5TGlzdDo6SXRlbUIKICAg
ICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dh
a2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKLU9wdGlvbmFsPERpc3Bs
YXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBEaXNw
bGF5TGlzdDo6SXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCit0ZW1wbGF0
ZSA8c3RkOjpzaXplX3QgSSA9IDA+CitzdGF0aWMgaW5saW5lIE9wdGlvbmFsPERpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdEl0ZW0+IGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUpCiB7Ci0gICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAg
ICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDbGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6Q2xpcFBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGRhdGEsIGxlbmd0
aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OkRyYXdGb2N1c1JpbmdSZWN0cz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVy
biBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGlu
ZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpE
cmF3TGluZXNGb3JUZXh0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0
aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0
OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsQ29tcG9z
aXRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0
ZTxEaXNwbGF5TGlzdDo6RmlsbFBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24p
OwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAg
ICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6UHV0SW1hZ2VEYXRhPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVy
biBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldExpbmVEYXNoPihkYXRhLCBsZW5ndGgs
IGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3Rh
dGU6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldFN0YXRl
PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6U3Ryb2tlUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYg
VVNFKENHKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJu
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0j
ZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lM
YXllcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6Q2xpcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xp
cE91dDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpE
cmF3TGluZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5F
X1BBVEhfREFUQSkKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbElubGluZVBh
dGg6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0
ZW1CdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JN
ZWRpYToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Um90YXRlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTY2FsZToKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExp
bmVKb2luOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0Ogot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElO
TElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUlu
bGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tl
UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRlOiB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgLy8gV2UgY2FuJ3QgdXNl
IGVhcmx5LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1c2Ugb2YgdGVtcGxhdGUgZXhwYW5zaW9uIGlu
IHRoZSBjb21waWxlci4KKyAgICAvLyBEb2luZyBzbyB3b3VsZCBlaXRoZXIgQSkgYnJlYWsgdGhl
IFdlYktpdCBzdHlsZSBydWxlIGFib3V0IGRvaW5nICJpZiAoKSB7IHJldHVybjsgfSByZXR1cm47
IiBpbnN0ZWFkIG9mICJpZiAoKSB7IHJldHVybjsgfSBlbHNlIHsgcmV0dXJuOyB9IgorICAgIC8v
IG9yIEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5l
cmF0aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIGlm
IGNvbnN0ZXhwciAoSSA8IFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RG
Ojp2YXJpYW50X2FsdGVybmF0aXZlX3Q8SSwgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT47
CisKKyAgICAgICAgaWYgKHR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6aXRlbVR5cGUpCisg
ICAgICAgICAgICByZXR1cm4gZGVjb2RlSXRlbTxJICsgMT4oZGF0YSwgbGVuZ3RoLCB0eXBlKTsK
KworICAgICAgICBBU1NFUlQoIURpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5saW5lSXRlbSk7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoIURpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5saW5lSXRlbSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5n
bGVPYmplY3Q8RGlzcGxheUxpc3RJdGVtVHlwZT4oZGF0YSwgbGVuZ3RoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSB9OworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK09wdGlvbmFsPERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlM
aXN0OjpJdGVtVHlwZSB0eXBlKQoreworICAgIHJldHVybiBXZWJLaXQ6OmRlY29kZUl0ZW0oZGF0
YSwgbGVuZ3RoLCB0eXBlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAzOTQzZDUyMWQz
NjkzZmJkMmNlZjM2YjQ3ZDM0OTZiMWMyZGYzNjU5Li5jOWNjN2MwODRmYWRjZGJmM2JiNGFjMjlj
YTk1OWQ4ZjFhOWUzNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNyArNzEsNyBAQCBwdWJs
aWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0
dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQogCiAgICAgLy8gUmVuZGVyaW5nIG9wZXJhdGlv
bnMuCi0gICAgYm9vbCBhcHBseU1lZGlhSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhh
bmRsZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisgICAgYm9vbCBhcHBseU1lZGlhSXRl
bShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIHZv
aWQgZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTg2LDE5ICs4Niw3IEBA
IHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYpOwog
ICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCi0gICAgewotICAg
ICAgICBpZiAoYXV0byBpdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8VD4o
ZGF0YSwgbGVuZ3RoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlYktpdDIgc2hvdWxkIG5v
dCBuZWVkIHRvIGtub3cgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhdCB0aGUgaGFuZGxlIGFyZSBy
ZXNlcnZlZCBmb3IgdGhlIHR5cGUuCi0gICAgICAgICAgICAvLyBOZWVkIHRvIGZpZ3VyZSBvdXQg
YSB3YXkgdG8ga2VlcCB0aGlzIGtub3dsZWRnZSB3aXRoaW4gZGlzcGxheSBsaXN0IGNvZGUgaW4g
V2ViQ29yZS4KLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBzaXplb2YodWludDY0
X3QpKSBUKFdURk1vdmUoKml0ZW0pKTsKLSAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2Nh
dGlvbiB9fTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0K
KyAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJO
X1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpIG92ZXJyaWRlOwogCiAgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9u
KTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5leHREZXN0aW5hdGlvbkltYWdl
QnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW5p
dGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUmLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKaW5kZXggODk0ZDlkZDE5OGNhYzUyMGRkM2E0MjU3YjUwNGNhMWM3ODRkOGZlZi4uZmM5M2Rh
Y2E2M2VmOGVmNWVkMWQ3OTY5OWFmZDM2ZDM1YmQxMDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKQEAgLTI5Nyw5OSArMjk3LDIwIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNvZGVJ
dGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0pIGNvbnN0IG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICAgICAg
cmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpDbGlwT3V0VG9QYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91
dFRvUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmds
ZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpDbGlwUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJ
UEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNS
aW5nUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjpl
bmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0
cz4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0cz4oKSk7
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhz
OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0dseXBocz4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5j
b2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNG
b3JUZXh0PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4o
KSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0
aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3UGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNv
ZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxDb21wb3Np
dGVkUmVjdD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVj
dD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxs
UGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVj
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGaWxsUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVu
Y29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RX
aXRoQ29sb3I+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xv
cj4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxs
UmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29k
ZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ+
KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZToKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNp
bmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+
KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4o
KSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91
bmRlZFJlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVP
YmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oaXRlbS5nZXQ8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oKSk7Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgICAgICBy
ZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlB1dEltYWdlRGF0YT4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdl
RGF0YT4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
ZXRMaW5lRGFzaDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmds
ZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KGl0ZW0uZ2V0PFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgICAgIHJldHVybiBJUEM6
OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3Rh
dGU+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oKSk7Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAg
ICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpTdHJva2VQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ry
b2tlUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0j
ZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDbGlwT3V0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RN
OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUo
SU5MSU5FX1BBVEhfREFUQSkKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFD
b21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTYXZlOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdHJva2VUaGlj
a25lc3M6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJv
a2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdDoK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUxpbmU6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbUhlbHBlcihjb25zdCBUJiBpdGVtKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByICghVDo6aXNJbmxpbmVJdGVtKQorICAgICAgICAgICAgcmV0dXJu
IElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFQ+KGl0ZW0pOworICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIGNvbnN0IG92ZXJyaWRl
CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBkaXNwbGF5
TGlzdEl0ZW0pIC0+IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHsKKyAgICAgICAgICAg
IHJldHVybiBlbmNvZGVJdGVtSGVscGVyKGRpc3BsYXlMaXN0SXRlbSk7CisgICAgICAgIH0sIGl0
ZW0pOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1h
Z2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423840</attachid>
            <date>2021-03-21 16:27:16 -0700</date>
            <delta_ts>2021-03-21 21:51:33 -0700</delta_ts>
            <desc>Tests pass but needs ChangeLog</desc>
            <filename>bug-223560-20210321162715.patch</filename>
            <type>text/plain</type>
            <size>160084</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5NGYyNzA5NmExZmRl
YWE2YmZmNjM5NTg3N2FjYWI5ZmJlMGY3Yy4uZTA1YWU5NzMzZmFiOGZmZjY2M2NlMDRhZWQ0Mzgw
MWJlNTk0ODgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBNaWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3Rl
YWQgb2YgSXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91
bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0Ojphc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6YXRFbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpp
dGVyYXRvcjo6YWR2YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVU
b0VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpp
dGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjp+aXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpv
cGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRl
cmF0b3I6Oml0ZW1CdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpiZWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6c3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29weUludG8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OnVuY2hlY2tlZEFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6aXNEcmF3
aW5nSXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlNldFN0YXRlOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6
OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0Ojppc0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3Vy
cmVudEl0ZW1TaXplSW5CdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjppdGVtQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmREcmF3aW5nSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBw
ZW5kSXRlbU9mVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojph
cHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBw
bHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9u
dEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOgorCiAyMDIx
LTAzLTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hbnkg
bWVkaWEvbWVkaWEtZnJhZ21lbnRzLyB0ZXN0cyBhcmUgY3Jhc2hpbmcgZHVlIHRvIG90aGVyIHRl
c3RzIHRoYXQgcnVuIGJlZm9yZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZThhMGRhZDdlMWEyNmNmMDg2
NzAyZGJhODkxMDk1NWNkZWFhZGJkLi4xMTJlMjk1OTIzMGQwZmYyOGJjMTIxZTFlODA1ZjYyMzE0
NGRkZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTIxICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBN
aWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3RlYWQgb2Yg
SXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0pOgorICAgICAg
ICAoV2ViS2l0OjpkZWNvZGVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRlY29kZUFuZENyZWF0ZSk6IERlbGV0ZWQuCisKIDIwMjEtMDMtMTkgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBbGxvdyBvcGVu
ZGlyZWN0b3J5ZCBhY2Nlc3MgaW4gYmFzZSBzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDNi
YzdiZjY3ZWEwMTQ3ZDk5ODhkNTQ3Mzg5MGRiMDliYzc1NDM4NjQuLmM0NmFhODNhMWIzOWEyNGZh
NGRjZTI2MmZiNjk1ZTAwZmNiNzNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTMwNyw4ICsx
MzA3LDEwIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVyYXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlNGZlYzc5OGNiMWY0YTlk
NWZlMzMyYTlmNjRmOWFiMWVhZDYyMTYzLi44M2NmZDU3MjZlN2I4MDYxY2RlNzA5MTU2OTNkODdm
Mjc3Y2RhN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAxOCw3ICsyMDE4LDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2ZWM3NGY4NTQzNmFjZjk5MDkzNGY3
MGNkYzk0ODE2ZGEwMTgzNTQuLjk4MWFlMjc3YzQxNjQzMmVhZjZkNTM1OGIyOGUzMDUxOTMwMmRj
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYyNSw2ICs2MjUsOCBAQAogCQkxQzczQTcxNTIxODU3NTg3MDA0Q0NFQTUgLyog
VGV4dERlY29yYXRpb25UaGlja25lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQjZCNEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFDODFCOTVBMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1NjBF
OTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUw
NyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQzkz
Q0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM5M0NCQ0QyNjA1QkQ0MzAwOEZE
RUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxQzkzQ0JEMzI2MDZGOEU3MDA4RkRFRjkgLyogRGlzcGxh
eUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM5M0NCRDIyNjA2RjNFMzAwOEZERUY5IC8qIERpc3BsYXlMaXN0
SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQ0FGMzQ4MTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FG
MzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjM0ODIwQTZDNDA1MjAwQUJF
MDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmpl
Y3QubW0gKi87IH07CiAJCTFDQUYzNDgzMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0FGMzQ4MDBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02ODY5LDYg
KzY4NzEsOSBAQAogCQkxQzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMgLyogV0hMU0xTdGFuZGFyZExp
YnJhcnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJh
cnlVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhEMjZEMDIy
QzA5Q0RFMDBEMTI1RjMgLyogbGliY29tcHJlc3Npb24udGJkICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNlZC1keWxp
Yi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYmNvbXByZXNzaW9uLnRiZDsgcGF0aCA9IHVzci9saWIv
bGliY29tcHJlc3Npb24udGJkOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJMUM5MDRERjkw
QkE5RDJDODAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM5M0NCQ0MyNjA1QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDOTNDQkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5M0NCRDIyNjA2RjNFMzAwOEZERUY5IC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlBRTVD
QTIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDOUFFNUNCMjFFRDlERjUwMDY5RDVGMiAvKiBXSExTTEhpZ2hab21iaWVGaW5k
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xIaWdoWm9tYmllRmluZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQTBDMkRFMjFFRUI1RjQwMEExMTg2MCAvKiBXSExTTFJlY3Vy
c2lvbkNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZWN1cnNpb25DaGVja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjY2MCw3ICsxNjY2NSw2IEBACiAJCUY0MzNF
OTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlz
dEl0ZW1UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbVR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQzNzdENTYyNTUxQzlDNjAwODBBQkZFIC8qIERpc3Bs
YXlMaXN0SXRlbVR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtVHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzZFMjMzRDk0RDMwMDYz
RjlBQiAvKiBDbGlwYm9hcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2xpcGJvYXJkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MEU3NkYy
MzNEOTREMzAwNjNGOUFCIC8qIE5hdmlnYXRvckNsaXBib2FyZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JDbGlwYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQ0MEU3NzAyMzNEOTRENDAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkSXRlbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwMTMsMTAgKzE4MDE3LDEyIEBACiAJCQkJNzJFQTA5
RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAqLywKIAkJCQlG
NDIyQjhCNjI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCAqLywK
IAkJCQlGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgg
Ki8sCisJCQkJMUM5M0NCRDIyNjA2RjNFMzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZl
cklkZW50aWZpZXIuaCAqLywKIAkJCQkwRkU1RkJDQzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RJdGVtcy5jcHAgKi8sCiAJCQkJMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0SXRlbXMuaCAqLywKLQkJCQlGNDM3N0Q1NjI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxh
eUxpc3RJdGVtVHlwZS5jcHAgKi8sCiAJCQkJRjQzNzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERp
c3BsYXlMaXN0SXRlbVR5cGUuaCAqLywKKwkJCQkxQzkzQ0JDQzI2MDVCRDQzMDA4RkRFRjkgLyog
RGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8sCisJCQkJMUM5M0NCQ0QyNjA1QkQ0MzAwOEZERUY5
IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLywKIAkJCQkwRkU1RkJDRTFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8sCiAJCQkJMEZFNUZCQ0YxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLywKIAkJCQkwRkU1RkJEMDFDM0RENTFF
MDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5jcHAgKi8sCkBAIC0zMjAzNyw4ICszMjA0
MywxMCBAQAogCQkJCTcyNDJBQzk3MjU3NThGRTEwMDVBOUNGMSAvKiBEaXNwbGF5TGlzdEZsdXNo
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5M0UyNDA4OTYzNTAwREU0RDJG
IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RDQwQkM5
MjU1NDYzQkYwMDcyMTM0OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTFDOTNDQkQzMjYwNkY4RTcwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQzNzdENTcyNTUxQzlD
NjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFD
OTNDQkNGMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QUYyRDY5MTQ0MzVEMDUwMDE2
QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBi
YjMyYmYzNTk3NDI0YjdlOWFhMGRiY2MxMDk3NGRjOTExMTBlMjc1Li5lMTcxMDYwMjg1ZGI2NmY0
Zjg4OGVmZmJlMDE5YmFhYmY0MDhiYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTU0LDEwICsxNTQsMTAgQEAgc3Ry
dWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgp
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRl
KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9w
ZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9
KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwogCiAgICAgZW51bSBDaGFuZ2UgOiB1aW50MzJfdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBjMDgzMjBlNTY1Njc1YmUxMmE2NGM2OTY5
NGJlMTVmODI3Yjc5ODVlLi43OTgxZTY2M2U0OTBkY2MxMWUyYTI4MDU2M2ExMWJiYTNiZGUyMjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgor
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CkBAIC04NCwxMiArODUsMTAgQEAgdm9pZCBEaXNwbGF5TGlzdDo6Y2xlYXIoKQogICAgIG1fbmF0
aXZlSW1hZ2VzLmNsZWFyKCk7CiB9CiAKLWJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JG
bGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQorYm9vbCBEaXNwbGF5TGlz
dDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mIGl0ZW0pCiB7Ci0gICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewotICAgIGNhc2UgSXRl
bVR5cGU6OlNldFN0YXRlOgorICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZd
KGNvbnN0IFNldFN0YXRlJiBzdGF0ZUl0ZW0pIC0+IGJvb2wgewogICAgICAgICBpZiAoIShmbGFn
cyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewotICAgICAgICAg
ICAgY29uc3QgYXV0byYgc3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogZm9yIG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0
YXRlLWNoYW5nZSBmbGFncyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMuCiAgICAgICAgICAgICBpZiAo
c3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTk3LDMwICs5NiwzMCBAQCBib29sIERpc3BsYXlMaXN0OjpzaG91
bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICAg
ICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlG
aWxsUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAg
ICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBicmVhazsKKyAgICB9LCBbJl0o
Y29uc3QgQXBwbHlGaWxsUGF0dGVybiYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZmxhZ3Mg
JiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9uczsKKyAgICB9LCBbJl0oY29u
c3QgQXBwbHlTdHJva2VQYXR0ZXJuJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBmbGFncyAm
IEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zOwogI2VuZGlmCi0gICAgZGVm
YXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtd
KGNvbnN0IGF1dG8mKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7Cisg
ICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFN0cmluZyBEaXNwbGF5
TGlzdDo6YXNUZXh0KEFzVGV4dEZsYWdzIGZsYWdzKSBjb25zdAogewogICAgIFRleHRTdHJlYW0g
c3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZv
cm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7Ci0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnQsIGl0
ZW1TaXplSW5CdWZmZXJdIDogKnRoaXMpIHsKLSAgICAgICAgaWYgKCFzaG91bGREdW1wRm9yRmxh
Z3MoZmxhZ3MsICppdGVtKSkKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6
ICp0aGlzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5C
dWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAgIGlmICghc2hvdWxkRHVt
cEZvckZsYWdzKGZsYWdzLCBpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAoc3RyZWFtKTsKICAgICAgICAgc3RyZWFtIDw8
IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLT5pc0RyYXdpbmdJdGVtKCkpCisgICAgICAgIGlmIChp
c0RyYXdpbmdJdGVtKGl0ZW0pKQogICAgICAgICAgICAgc3RyZWFtIDw8ICIgZXh0ZW50ICIgPDwg
ZXh0ZW50OwogICAgIH0KICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKQEAgLTEzMSwxMCAr
MTMwLDExIEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAg
ICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAgdHMgPDwgImRpc3BsYXkg
bGlzdCI7CiAKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0g
OiAqdGhpcykgeworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogKnRoaXMp
IHsKKyAgICAgICAgY29uc3QgYXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0g
PSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29w
ZSBncm91cCh0cyk7CiAgICAgICAgIHRzIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLT5pc0Ry
YXdpbmdJdGVtKCkpCisgICAgICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQogICAgICAgICAg
ICAgdHMgPDwgIiBleHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHRzLnN0YXJ0R3JvdXAo
KTsKQEAgLTE4NiwyNDcgKzE4NiwyMyBAQCB2b2lkIERpc3BsYXlMaXN0OjpzZXRUcmFja3NEcmF3
aW5nSXRlbUV4dGVudHMoYm9vbCB2YWx1ZSkKICAgICBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50
cyA9IHZhbHVlOwogfQogCi12b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVt
KQotewotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZl
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNhdmU+KGl0ZW0uZ2V0PFNhdmU+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UmVzdG9yZT4oaXRl
bS5nZXQ8UmVzdG9yZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFRyYW5zbGF0ZT4oaXRlbS5nZXQ8VHJhbnNsYXRlPigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Um90YXRlPihpdGVt
LmdldDxSb3RhdGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFNjYWxlPihpdGVtLmdldDxTY2FsZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KGl0
ZW0uZ2V0PENvbmNhdGVuYXRlQ1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8U2V0Q1RNPihpdGVtLmdldDxTZXRDVE0+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KGl0ZW0uZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFNldElubGluZUZpbGxDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9y
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lU3Ry
b2tlQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxTZXRTdHJva2VUaGlja25lc3M+KGl0ZW0uZ2V0PFNldFN0cm9r
ZVRoaWNrbmVzcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8U2V0U3RhdGU+KGl0ZW0uZ2V0PFNldFN0YXRlPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVDYXA+KGl0
ZW0uZ2V0PFNldExpbmVDYXA+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVEYXNoPihpdGVtLmdldDxTZXRMaW5lRGFzaD4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8U2V0TGluZUpvaW4+KGl0ZW0uZ2V0PFNldExpbmVKb2luPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldE1pdGVyTGltaXQ+
KGl0ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hh
ZG93OgotICAgICAgICByZXR1cm4gYXBwZW5kPENsZWFyU2hhZG93PihpdGVtLmdldDxDbGVhclNo
YWRvdz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxDbGlwPihpdGVtLmdldDxDbGlwPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0Ogot
ICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBPdXQ+KGl0ZW0uZ2V0PENsaXBPdXQ+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5k
PENsaXBUb0ltYWdlQnVmZmVyPihpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlw
T3V0VG9QYXRoPihpdGVtLmdldDxDbGlwT3V0VG9QYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRlbS5nZXQ8Q2xp
cFBhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVt
LmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gYXBwZW5kPERy
YXdHbHlwaHM+KGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGl0
ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5nZXQ8
RHJhd05hdGl2ZUltYWdlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UGF0dGVybj4oaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPERy
YXdSZWN0PihpdGVtLmdldDxEcmF3UmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0xpbmU+KGl0ZW0uZ2V0PERyYXdMaW5lPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4g
YXBwZW5kPERyYXdMaW5lc0ZvclRleHQ+KGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oaXRlbS5nZXQ8RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0VsbGlwc2U+KGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxE
cmF3UGF0aD4oaXRlbS5nZXQ8RHJhd1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdG
b2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdQYXRoPihp
dGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zv
Y3VzUmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdSZWN0cz4o
aXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdD4oaXRlbS5nZXQ8RmlsbFJlY3Q+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1
cm4gYXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdy
YWRpZW50PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8RmlsbENvbXBvc2l0ZWRSZWN0PihpdGVtLmdldDxGaWxsQ29tcG9z
aXRlZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxGaWxsUm91bmRlZFJlY3Q+KGl0ZW0uZ2V0PEZpbGxSb3VuZGVkUmVj
dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KGl0ZW0uZ2V0PEZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlPigpKTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxG
aWxsSW5saW5lUGF0aD4oaXRlbS5nZXQ8RmlsbElubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFBhdGg+
KGl0ZW0uZ2V0PEZpbGxQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsRWxsaXBzZT4oaXRlbS5nZXQ8RmlsbEVsbGlwc2U+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxGbHVzaENvbnRleHQ+KGl0ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4o
aXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPihpdGVtLmdldDxNZXRhQ29t
bWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0
YToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQdXRJbWFnZURhdGE+KGl0ZW0uZ2V0PFB1dEltYWdl
RGF0YT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFBhaW50RnJhbWVGb3JNZWRpYT4oaXRlbS5nZXQ8UGFpbnRGcmFtZUZv
ck1lZGlhPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICByZXR1
cm4gYXBwZW5kPFN0cm9rZVJlY3Q+KGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlTGluZT4o
aXRlbS5nZXQ8U3Ryb2tlTGluZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTdHJva2VJbmxpbmVQYXRoPihpdGVtLmdldDxTdHJva2VJbmxpbmVQYXRoPigpKTsKLSNlbmRp
ZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
U3Ryb2tlUGF0aD4oaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VFbGxpcHNlPihpdGVt
LmdldDxTdHJva2VFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8Q2xlYXJSZWN0PihpdGVtLmdldDxDbGVhclJlY3Q+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW0uZ2V0PEVuZFRy
YW5zcGFyZW5jeUxheWVyPigpKTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBw
bHlTdHJva2VQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5U3Ryb2tlUGF0dGVy
bj4oaXRlbS5nZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpB
cHBseUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+
KGl0ZW0uZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlw
ZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxBcHBseURl
dmljZVNjYWxlRmFjdG9yPihpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpKTsKLSAg
ICB9Ci19Ci0KLWJvb2wgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjphdEVuZCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpIHx8ICFtX2lzVmFsaWQpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigpOwotICAgIGF1dG8g
ZW5kQ3Vyc29yID0gaXRlbXMubV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMubV93cml0dGVu
TnVtYmVyT2ZCeXRlczsKLSAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOwotfQotCi12
b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQotewotICAgIGNs
ZWFyQ3VycmVudEl0ZW0oKTsKLQotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvJiBpdGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBpdGVtVHlwZSA9IHN0
YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7Ci0gICAgaWYgKGlzRHJhd2luZ0l0ZW0o
aXRlbVR5cGUpICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzLmlzRW1wdHko
KSkgewotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0
ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07Ci0gICAgICAgIG1fZHJhd2luZ0l0ZW1JbmRl
eCsrOwotICAgIH0gZWxzZQotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBhdXRvKiBjbGllbnQgPSBpdGVtcy5tX3JlYWRpbmdDbGllbnQ7Ci0gICAgYXV0byBw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhp
dGVtVHlwZSk7Ci0gICAgaWYgKGNsaWVudCkgewotICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJ
dGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJy
ZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKLSAgICAgICAg
aWYgKGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSgh
SXRlbUhhbmRsZSB7IG1fY3Vyc29yIH0uc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVt
IH0pKSkKLSAgICAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLQotICAgICAgICAgICAg
bV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdCo+KG1fY3Vyc29yKVsxXTsKLSAgICAgICAgICAgIGF1dG8qIHN0YXJ0T2ZE
YXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKLSAgICAgICAgICAgIGF1dG8g
ZGVjb2RlZEl0ZW1IYW5kbGUgPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFM
ZW5ndGgsIGl0ZW1UeXBlLCBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKLSAgICAgICAgICAgIGlm
IChVTkxJS0VMWSghZGVjb2RlZEl0ZW1IYW5kbGUpKQotICAgICAgICAgICAgICAgIG1faXNWYWxp
ZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtWzBdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwotICAgICAgICAgICAgbV9jdXJyZW50SXRlbVNp
emVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihh
bGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gbV9jdXJzb3I7Ci0gICAgICAgIG1fY3Vy
cmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbTsKLSAgICB9Ci19
Ci0KLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjphZHZhbmNlKCkKLXsKLSAgICBpZiAoYXRF
bmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jdXJzb3IgKz0gbV9jdXJyZW50SXRlbVNp
emVJbkJ1ZmZlcjsKLQotICAgIGlmIChtX2N1cnNvciA9PSBtX2N1cnJlbnRFbmRPZkJ1ZmZlciAm
JiBtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBpdGVtQnVmZmVyKCktPm1fcmVhZE9ubHlCdWZmZXJz
LnNpemUoKSkgewotICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXgrKzsKLSAgICAgICAgbW92
ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICB9Ci0KLSAgICB1cGRhdGVDdXJy
ZW50SXRlbSgpOwotfQotCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6Y2xlYXJDdXJyZW50
SXRlbSgpCit2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBp
dGVtKQogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKGl0ZW1zICYm
IGl0ZW1zLT5tX3JlYWRpbmdDbGllbnQgJiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSkgewotICAg
ICAgICBpZiAoTElLRUxZKG1faXNWYWxpZCkpCi0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9j
dXJyZW50QnVmZmVyRm9ySXRlbSB9LmRlc3Ryb3koKTsKLQotICAgICAgICBpZiAoVU5MSUtFTFko
bV9jdXJyZW50QnVmZmVyRm9ySXRlbSAhPSBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0pKQot
ICAgICAgICAgICAgZmFzdEZyZWUobV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAgfQotCi0g
ICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDA7Ci0gICAgbV9jdXJyZW50QnVmZmVyRm9y
SXRlbSA9IG51bGxwdHI7CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYgaXRlbSkgewor
ICAgICAgICBhcHBlbmQoaXRlbSk7CisgICAgfSwgaXRlbSk7CiB9CiAKLXZvaWQgRGlzcGxheUxp
c3Q6Oml0ZXJhdG9yOjptb3ZlVG9FbmQoKQorYXV0byBEaXNwbGF5TGlzdDo6YmVnaW4oKSBjb25z
dCAtPiBJdGVyYXRvcgogewotICAgIGlmIChhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpKSB7Ci0g
ICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5t
X3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1f
Y3Vyc29yOwotICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXggPSBpdGVtcy0+bV9yZWFkT25s
eUJ1ZmZlcnMuc2l6ZSgpOwotICAgIH0KKyAgICByZXR1cm4geyAqdGhpcyB9OwogfQogCi12b2lk
IERpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIo
KQorYXV0byBEaXNwbGF5TGlzdDo6ZW5kKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICBhdXRv
IGl0ZW1zID0gaXRlbUJ1ZmZlcigpOwotICAgIGlmICghaXRlbXMpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMgPSBpdGVtcy0+bV9yZWFkT25seUJ1
ZmZlcnMuc2l6ZSgpOwotICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJl
YWRPbmx5QnVmZmVycykgewotICAgICAgICBhdXRvJiBuZXh0QnVmZmVySGFuZGxlID0gaXRlbXMt
Pm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07Ci0gICAgICAgIG1fY3Vy
c29yID0gbmV4dEJ1ZmZlckhhbmRsZS5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZl
ciA9IG1fY3Vyc29yICsgbmV4dEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKLSAgICB9IGVsc2UgaWYg
KG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgewotICAg
ICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGE7Ci0gICAgICAgIG1f
Y3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZC
eXRlczsKLSAgICB9CisgICAgcmV0dXJuIHsgKnRoaXMsIEl0ZXJhdG9yOjpJbW1lZGlhdGVseU1v
dmVUb0VuZDo6WWVzIH07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKIAogVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggZjE4OWRl
ZGY2NzQ5YmNjMjAxNDcyYWVkMmE4NzE2YmE2NTc0NjUyZS4uODhiMWJiNmQwMzYxMDI4NDlmYjc2
OTdlOTAyZmNiNDJjNzc5NDMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNiBA
QCBjbGFzcyBUZXh0U3RyZWFtOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKIGVudW0gQXNUZXh0RmxhZyB7CkBAIC04OSw3NiArODgsMTUgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaEl0ZW1CdWZmZXIoRnVuY3Rp
b248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+JiYpIGNvbnN0OwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3Mp
OwotICAgIHZvaWQgYXBwZW5kKEl0ZW1IYW5kbGUpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYpOwogCiAgICAgYm9vbCB0cmFja3NEcmF3aW5nSXRlbUV4dGVudHMoKSBj
b25zdCB7IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50czsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wpOwogCi0gICAgY2xh
c3MgaXRlcmF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBjbGFzcyBJbW1lZGlhdGVs
eU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKLSAgICAgICAgaXRlcmF0b3IoY29uc3QgRGlzcGxheUxp
c3QmIGRpc3BsYXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0VuZCBpbW1lZGlhdGVseU1vdmVUb0Vu
ZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObykKLSAgICAgICAgICAgIDogbV9kaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGltbWVkaWF0ZWx5TW92
ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpCi0gICAgICAgICAgICAgICAgbW92
ZVRvRW5kKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtb3ZlQ3Vyc29y
VG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwotICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRJ
dGVtKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB+aXRlcmF0b3IoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAm
bV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhl
ci5tX2N1cnNvcjsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90
aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgICAgICB2b2lkIG9wZXJhdG9y
KysoKSB7IGFkdmFuY2UoKTsgfQotCi0gICAgICAgIHN0cnVjdCBWYWx1ZSB7Ci0gICAgICAgICAg
ICBPcHRpb25hbDxJdGVtSGFuZGxlPiBpdGVtOwotICAgICAgICAgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBleHRlbnQ7Ci0gICAgICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsK
LSAgICAgICAgfTsKLQotICAgICAgICBWYWx1ZSBvcGVyYXRvciooKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIG1faXNWYWxpZCA/IG1ha2VP
cHRpb25hbChJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KSA6IFdURjo6bnVs
bG9wdCwKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRFeHRlbnQsCi0gICAgICAgICAgICAgICAg
bV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkZpeGVk
QnVmZmVyRm9yQ3VycmVudEl0ZW0gPSAyNTY7Ci0KLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwotICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIG1vdmVUb0VuZCgpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
Q3VycmVudEl0ZW0oKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVDdXJyZW50
SXRlbSgpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsKLSAgICAgICAg
Ym9vbCBhdEVuZCgpIGNvbnN0OwotCi0gICAgICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJZkV4aXN0cygpOyB9Ci0KLSAg
ICAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgICAgIHVpbnQ4X3Qq
IG1fY3Vyc29yIHsgbnVsbHB0ciB9OwotICAgICAgICBzaXplX3QgbV9yZWFkT25seUJ1ZmZlcklu
ZGV4IHsgMCB9OwotICAgICAgICBzaXplX3QgbV9kcmF3aW5nSXRlbUluZGV4IHsgMCB9OwotICAg
ICAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQotICAgICAg
ICB1aW50OF90IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbVtzaXplT2ZGaXhlZEJ1ZmZlckZv
ckN1cnJlbnRJdGVtXSB7IDAgfTsKLSAgICAgICAgdWludDhfdCogbV9jdXJyZW50QnVmZmVyRm9y
SXRlbSB7IG51bGxwdHIgfTsKLSAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1cnJlbnRF
eHRlbnQ7Ci0gICAgICAgIHNpemVfdCBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyIHsgMCB9Owot
ICAgICAgICBib29sIG1faXNWYWxpZCB7IHRydWUgfTsKLSAgICB9OwotCi0gICAgaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiB7ICp0aGlzIH07IH0KLSAgICBpdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiB7ICp0aGlzLCBpdGVyYXRvcjo6SW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Olll
cyB9OyB9CisgICAgY2xhc3MgSXRlcmF0b3I7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBJdGVyYXRv
ciBiZWdpbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEl0ZXJhdG9yIGVuZCgpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZmZXJJZkV4aXN0cygpIGNvbnN0
IHsgcmV0dXJuIG1faXRlbXMuZ2V0KCk7IH0KQEAgLTE5MSw3ICsxMjksNyBAQCBwcml2YXRlOgog
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3Mo
QXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOworICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JG
bGFncyhBc1RleHRGbGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBJbWFnZUJ1
ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0
aXZlSW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApp
bmRleCAwZjgxMTRiODFkZGM1YWFiYzE3ZDViMTU0ZThkOTdjNzM1N2QxMjU1Li5iYTZlOGJhNWE3
YTA4Zjc1ODY5ZTQ4NjI1ODg1NWU3MzQ5MWU2NDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2NzYgKzMyLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFM
T0dfRElTQUJMRUQKLUNTdHJpbmcgSXRlbUhhbmRsZTo6ZGVzY3JpcHRpb24oKSBjb25zdAotewot
ICAgIFRleHRTdHJlYW0gdHM7Ci0gICAgdHMgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIHRzLnJlbGVh
c2UoKS51dGY4KCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTYXZlOiB7Ci0gICAgICAgIGdldDxTYXZlPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6IHsKLSAgICAg
ICAgZ2V0PFJlc3RvcmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOiB7Ci0gICAgICAgIGdldDxUcmFuc2xhdGU+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Um90YXRlOiB7Ci0gICAgICAgIGdldDxSb3RhdGU+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6IHsKLSAgICAg
ICAgZ2V0PFNjYWxlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOiB7Ci0gICAgICAgIGdldDxDb25jYXRl
bmF0ZUNUTT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRDVE06IHsKLSAgICAgICAgZ2V0PFNldENUTT4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsR3JhZGllbnQ6IHsKLSAgICAgICAgZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRJbmxpbmVGaWxsQ29sb3I6IHsKLSAgICAgICAgZ2V0PFNldElubGluZUZpbGxDb2xvcj4o
KS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjogewotICAgICAgICBnZXQ8U2V0SW5saW5lU3Ryb2tl
Q29sb3I+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOiB7Ci0gICAgICAgIGdldDxTZXRTdHJva2VU
aGlja25lc3M+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDog
ewotICAgICAgICBnZXQ8U2V0TGluZUNhcD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDogewotICAgICAgICBn
ZXQ8U2V0TGluZURhc2g+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46IHsKLSAgICAgICAgZ2V0PFNldExpbmVK
b2luPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6IHsKLSAgICAgICAgZ2V0PFNldE1pdGVyTGltaXQ+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJTaGFkb3c6IHsKLSAgICAgICAgZ2V0PENsZWFyU2hhZG93PigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6IHsK
LSAgICAgICAgZ2V0PENsaXA+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDogewotICAgICAgICBnZXQ8Q2xpcE91dD4o
KS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjogewotICAgICAgICBnZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcE91dFRvUGF0aDogewotICAgICAgICBnZXQ8Q2xpcE91dFRvUGF0aD4oKS5hcHBs
eShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwUGF0aDogewotICAgICAgICBnZXQ8Q2xpcFBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVy
OiB7Ci0gICAgICAgIGdldDxEcmF3SW1hZ2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB7
Ci0gICAgICAgIGdldDxEcmF3TmF0aXZlSW1hZ2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHsKLSAgICAg
ICAgZ2V0PERyYXdQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB7Ci0gICAgICAgIGdldDxEcmF3UmVj
dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TGluZTogewotICAgICAgICBnZXQ8RHJhd0xpbmU+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVz
Rm9yVGV4dDogewotICAgICAgICBnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0Zv
ckRvY3VtZW50TWFya2VyOiB7Ci0gICAgICAgIGdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdFbGxpcHNlOiB7Ci0gICAgICAgIGdldDxEcmF3RWxsaXBzZT4oKS5hcHBseShj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0aDogewotICAgICAgICBnZXQ8RHJhd1BhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6IHsK
LSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czog
ewotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OiB7Ci0gICAg
ICAgIGdldDxGaWxsUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjogewotICAgICAgICBnZXQ8
RmlsbFJlY3RXaXRoQ29sb3I+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsKLSAgICAgICAg
Z2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDogewotICAg
ICAgICBnZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDogewotICAg
ICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOiB7
Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDogewotICAgICAgICBnZXQ8RmlsbElubGlu
ZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDogewotICAgICAgICBnZXQ8RmlsbFBhdGg+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbEVsbGlwc2U6IHsKLSAgICAgICAgZ2V0PEZpbGxFbGxpcHNlPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29u
dGV4dDogewotICAgICAgICBnZXQ8Rmx1c2hDb250ZXh0PigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJ
bWFnZURhdGE6IHsKLSAgICAgICAgZ2V0PFB1dEltYWdlRGF0YT4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9y
TWVkaWE6IHsKLSAgICAgICAgZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0
OiB7Ci0gICAgICAgIGdldDxTdHJva2VSZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6IHsKLSAgICAgICAg
Z2V0PFN0cm9rZUxpbmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
SW5saW5lUGF0aDogewotICAgICAgICBnZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZVBhdGg6IHsKLSAgICAgICAgZ2V0PFN0cm9rZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBz
ZTogewotICAgICAgICBnZXQ8U3Ryb2tlRWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6IHsKLSAgICAg
ICAgZ2V0PENsZWFyUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAg
IGdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOiB7
Ci0gICAgICAgIGdldDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKS5hcHBseShjb250ZXh0KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBw
bHlTdHJva2VQYXR0ZXJuOiB7Ci0gICAgICAgIGdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
QXBwbHlGaWxsUGF0dGVybjogewotICAgICAgICBnZXQ8QXBwbHlGaWxsUGF0dGVybj4oKS5hcHBs
eShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGNhc2UgSXRl
bVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6IHsKLSAgICAgICAgZ2V0PEFwcGx5RGV2aWNl
U2NhbGVGYWN0b3I+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgfQotfQotCi12b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQotewotICAgIHN3aXRjaCAodHlw
ZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogewotICAgICAgICBnZXQ8
Q2xpcE91dFRvUGF0aD4oKS5+Q2xpcE91dFRvUGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOiB7Ci0gICAgICAgIGdldDxDbGlwUGF0aD4o
KS5+Q2xpcFBhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3Rm9jdXNSaW5nUGF0aDogewotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCku
fkRyYXdGb2N1c1JpbmdQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOiB7Ci0gICAgICAgIGdldDxEcmF3Rm9jdXNSaW5n
UmVjdHM+KCkufkRyYXdGb2N1c1JpbmdSZWN0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHsKLSAgICAgICAgZ2V0PERyYXdHbHlwaHM+
KCkufkRyYXdHbHlwaHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TGluZXNGb3JUZXh0OiB7Ci0gICAgICAgIGdldDxEcmF3TGluZXNGb3JUZXh0Pigp
Ln5EcmF3TGluZXNGb3JUZXh0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1BhdGg6IHsKLSAgICAgICAgZ2V0PERyYXdQYXRoPigpLn5EcmF3UGF0aCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3Np
dGVkUmVjdDogewotICAgICAgICBnZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLn5GaWxsQ29tcG9z
aXRlZFJlY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUGF0aDogewotICAgICAgICBnZXQ8RmlsbFBhdGg+KCkufkZpbGxQYXRoKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6IHsK
LSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLn5GaWxsUmVjdFdpdGhDb2xvcigpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OiB7Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKS5+RmlsbFJlY3RX
aXRoR3JhZGllbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZTogewotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoUm91
bmRlZEhvbGU+KCkufkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OiB7Ci0gICAgICAgIGdl
dDxGaWxsUm91bmRlZFJlY3Q+KCkufkZpbGxSb3VuZGVkUmVjdCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YTogewotICAgICAgICBnZXQ8
UHV0SW1hZ2VEYXRhPigpLn5QdXRJbWFnZURhdGEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDogewotICAgICAgICBnZXQ8U2V0TGluZURh
c2g+KCkuflNldExpbmVEYXNoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0U3RhdGU6IHsKLSAgICAgICAgZ2V0PFNldFN0YXRlPigpLn5TZXRTdGF0ZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6
IHsKLSAgICAgICAgZ2V0PFN0cm9rZVBhdGg+KCkuflN0cm9rZVBhdGgoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOiB7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEFw
cGx5RGV2aWNlU2NhbGVGYWN0b3I+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
aWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46IHsKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlGaWxs
UGF0dGVybj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseVN0cm9rZVBhdHRlcm46IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlTdHJva2VQYXR0ZXJuPjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcjogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDogewotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGVhclJlY3Q+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6
IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
Q2xlYXJTaGFkb3c+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxDbGlwPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xpcE91dD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjogewotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGlwVG9JbWFn
ZUJ1ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpDb25jYXRlbmF0ZUNUTTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxDb25jYXRlbmF0ZUNUTT46OnZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6IHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0VsbGlwc2U+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPERyYXdJbWFnZUJ1ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJu
OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PERyYXdQYXR0ZXJuPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdMaW5lOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdMaW5lPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdSZWN0Pjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kczogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RW5kVHJh
bnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RmlsbEVsbGlwc2U+Ojp2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbElubGluZVBhdGg6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8RmlsbElubGluZVBhdGg+Ojp2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDogewotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxGaWxsUmVj
dD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpG
bHVzaENvbnRleHQ6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8Rmx1c2hDb250ZXh0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcjogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFu
Z2VJdGVtQnVmZmVyOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj46OnZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6
IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
UGFpbnRGcmFtZUZvck1lZGlhPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8UmVzdG9yZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6IHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Um90YXRlPjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6IHsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2F2ZT46OnZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZTogewot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTY2Fs
ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRDVE06IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8U2V0Q1RNPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRJbmxpbmVGaWxsQ29sb3I+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmls
bEdyYWRpZW50OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPFNldElubGluZUZpbGxHcmFkaWVudD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjogewotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRJbmxp
bmVTdHJva2VDb2xvcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldExpbmVDYXA+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46IHsKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0TGluZUpvaW4+Ojp2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0
ZXJMaW1pdDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxTZXRNaXRlckxpbWl0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczogewotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRTdHJva2VUaGlja25lc3M+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlRWxsaXBzZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxTdHJva2VFbGxpcHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUlubGluZVBhdGg6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8U3Ryb2tlSW5saW5lUGF0aD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6IHsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U3Ryb2tlUmVjdD46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VMaW5lOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPFN0cm9rZUxpbmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFRyYW5zbGF0ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZv
aWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRf
dDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBJdGVtPgotdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhSGFzSXNWYWxp
ZDxJdGVtPiwgYm9vbD4gY29weUludG8oY29uc3QgSXRlbUhhbmRsZSYgaXRlbUhhbmRsZSwgdWlu
dDhfdCogZGVzdGluYXRpb25XaXRoT2Zmc2V0KQotewotICAgIG5ldyAoZGVzdGluYXRpb25XaXRo
T2Zmc2V0KSBJdGVtKGl0ZW1IYW5kbGUuZ2V0PEl0ZW0+KCkpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxI
YXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFu
ZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQpCi17Ci0gICAgYXV0byogbmV3SXRl
bSA9IG5ldyAoZGVzdGluYXRpb25XaXRoT2Zmc2V0KSBJdGVtKGl0ZW1IYW5kbGUuZ2V0PEl0ZW0+
KCkpOwotICAgIHJldHVybiBuZXdJdGVtLT5pc1ZhbGlkKCk7Ci19Ci0KLWJvb2wgSXRlbUhhbmRs
ZTo6c2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKLXsKLSAgICBhdXRvIGl0
ZW1UeXBlID0gdHlwZSgpOwotICAgIGRlc3RpbmF0aW9uLmRhdGFbMF0gPSBzdGF0aWNfY2FzdDx1
aW50OF90PihpdGVtVHlwZSk7Ci0gICAgYXV0byBpdGVtT2Zmc2V0ID0gZGVzdGluYXRpb24uZGF0
YSArIHNpemVvZih1aW50NjRfdCk7Ci0gICAgc3dpdGNoIChpdGVtVHlwZSkgewotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0
VG9QYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd0ZvY3VzUmluZ1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3
Rm9jdXNSaW5nUmVjdHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0dseXBocz4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxEcmF3TGluZXNGb3JUZXh0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd05hdGl2ZUlt
YWdlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UGF0dGVybj4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88
RHJhd1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29t
cG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsQ29tcG9zaXRlZFJlY3Q+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxG
aWxsUmVjdFdpdGhDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RX
aXRoR3JhZGllbnQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFJvdW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJvdW5kZWRSZWN0Pigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAg
ICAgICByZXR1cm4gY29weUludG88UHV0SW1hZ2VEYXRhPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxT
ZXRMaW5lRGFzaD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0
YXRlOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0U3RhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gY29weUlu
dG88U3Ryb2tlUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFw
cGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBseURldmlj
ZVNjYWxlRmFjdG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jaWYgVVNFKENHKQotICAgIGNhc2Ug
SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBs
eUZpbGxQYXR0ZXJuPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBw
bHlTdHJva2VQYXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlTdHJva2VQYXR0
ZXJuPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGVhclJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGVhclJlY3Q+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPENsZWFyU2hhZG93PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXA+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICByZXR1cm4gY29w
eUludG88Q2xpcE91dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gY29weUludG88Q2xpcFRvSW1hZ2VCdWZm
ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNU
TToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENvbmNhdGVuYXRlQ1RNPigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPERyYXdFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TGluZT4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICBy
ZXR1cm4gY29weUludG88RHJhd1JlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PEVuZFRyYW5zcGFyZW5jeUxheWVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsRWxsaXBzZT4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88Rmls
bElubGluZVBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3Q+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxGbHVzaENvbnRleHQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAg
ICAgIHJldHVybiBjb3B5SW50bzxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxQYWludEZyYW1lRm9yTWVk
aWE+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAg
ICAgICByZXR1cm4gY29weUludG88UmVzdG9yZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFJvdGF0ZT4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxTYXZlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2NhbGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTY2FsZT4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNl
dENUTT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZp
bGxDb2xvcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZUZpbGxDb2xvcj4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVu
dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZUZpbGxHcmFkaWVudD4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgot
ICAgICAgICByZXR1cm4gY29weUludG88U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICByZXR1cm4g
Y29weUludG88U2V0TGluZUNhcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVKb2luOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZUpvaW4+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAg
ICAgICByZXR1cm4gY29weUludG88U2V0TWl0ZXJMaW1pdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFNldFN0cm9rZVRoaWNrbmVzcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VF
bGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFN0cm9rZUlubGluZVBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNlbmRpZgotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJv
a2VSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGlu
ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZUxpbmU+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxUcmFuc2xhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1CdWZmZXJIYW5kbGVzJiYgaGFuZGxl
cykKICAgICA6IG1fcmVhZE9ubHlCdWZmZXJzKFdURk1vdmUoaGFuZGxlcykpCiB7CkBAIC03MTcs
NyArNDcsNiBAQCBJdGVtQnVmZmVyOjp+SXRlbUJ1ZmZlcigpCiBJdGVtQnVmZmVyOjpJdGVtQnVm
ZmVyKEl0ZW1CdWZmZXImJiBvdGhlcikKICAgICA6IG1fcmVhZGluZ0NsaWVudChzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fcmVhZGluZ0NsaWVudCwgbnVsbHB0cikpCiAgICAgLCBtX3dyaXRpbmdDbGll
bnQoc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRpbmdDbGllbnQsIG51bGxwdHIpKQotICAgICwg
bV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
aXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCiAgICAgLCBtX2FsbG9jYXRl
ZEJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX2FsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCiAg
ICAgLCBtX3JlYWRPbmx5QnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVhZE9ubHlCdWZm
ZXJzLCB7IH0pKQogICAgICwgbV93cml0YWJsZUJ1ZmZlcihzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
d3JpdGFibGVCdWZmZXIsIHsgfSkpCkBAIC03MjksNyArNTgsNiBAQCBJdGVtQnVmZmVyJiBJdGVt
QnVmZmVyOjpvcGVyYXRvcj0oSXRlbUJ1ZmZlciYmIG90aGVyKQogewogICAgIG1fcmVhZGluZ0Ns
aWVudCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZWFkaW5nQ2xpZW50LCBudWxscHRyKTsKICAg
ICBtX3dyaXRpbmdDbGllbnQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fd3JpdGluZ0NsaWVudCwg
bnVsbHB0cik7Ci0gICAgbV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycyA9IHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycywgeyB9KTsK
ICAgICBtX2FsbG9jYXRlZEJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fYWxsb2NhdGVk
QnVmZmVycywgeyB9KTsKICAgICBtX3JlYWRPbmx5QnVmZmVycyA9IHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV9yZWFkT25seUJ1ZmZlcnMsIHsgfSk7CiAgICAgbV93cml0YWJsZUJ1ZmZlciA9IHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV93cml0YWJsZUJ1ZmZlciwgeyB9KTsKQEAgLTc2Myw5ICs5MSw2IEBA
IHZvaWQgSXRlbUJ1ZmZlcjo6Zm9yRWFjaEl0ZW1CdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBJ
dGVtQnVmZmVySGFuZGxlJik+JiYgbWFwCiAKIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xlYXIoKQogewot
ICAgIGZvciAoYXV0byBpdGVtIDogc3RkOjpleGNoYW5nZShtX2l0ZW1zVG9EZXN0cm95SW5BbGxv
Y2F0ZWRCdWZmZXJzLCB7IH0pKQotICAgICAgICBpdGVtLmRlc3Ryb3koKTsKLQogICAgIGZvciAo
YXV0byogYnVmZmVyIDogc3RkOjpleGNoYW5nZShtX2FsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCiAg
ICAgICAgIGZhc3RGcmVlKGJ1ZmZlcik7CiAKQEAgLTc3Niw3ICsxMDEsNyBAQCB2b2lkIEl0ZW1C
dWZmZXI6OmNsZWFyKCkKIAogRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3Jp
dGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHsKLSAgICBhdXRvIHNp
emVGb3JCdWZmZXJTd2l0Y2hJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0
ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIpOworICAgIGF1dG8gc2l6ZUZvckJ1
ZmZlclN3aXRjaEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8TWV0YUNvbW1h
bmRDaGFuZ2VJdGVtQnVmZmVyPigpOwogICAgIGlmIChtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICsg
bnVtYmVyT2ZCeXRlcyArIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVtIDw9IG1fd3JpdGFibGVCdWZm
ZXIuY2FwYWNpdHkpCiAgICAgICAgIHJldHVybiBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpObzsKIApA
QCAtNzkyLDcgKzExNyw3IEBAIERpZENoYW5nZUl0ZW1CdWZmZXIgSXRlbUJ1ZmZlcjo6c3dhcFdy
aXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpCiAgICAgcmV0dXJuIGhh
ZFByZXZpb3VzQnVmZmVyID8gRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6WWVzIDogRGlkQ2hhbmdlSXRl
bUJ1ZmZlcjo6Tm87CiB9CiAKLXZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKEl0ZW1IYW5kbGUgdGVt
cG9yYXJ5SXRlbSkKK3ZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIGRhdGEgPSBtX3dyaXRpbmdDbGllbnQtPmVu
Y29kZUl0ZW0odGVtcG9yYXJ5SXRlbSk7CiAgICAgaWYgKCFkYXRhKQpAQCAtODAzLDcgKzEyOCw3
IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKEl0ZW1IYW5kbGUgdGVtcG9yYXJ5SXRlbSkKIAog
ICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKGFkZGl0
aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKIAotICAgIG1fd3JpdGFibGVCdWZmZXIuZGF0
YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRlbXBvcmFy
eUl0ZW0udHlwZSgpKTsKKyAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVy
T2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSh0ZW1wb3JhcnlJdGVtKSk7
CiAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fd3JpdGFibGVCdWZmZXIuZGF0YSAr
IG1fd3JpdHRlbk51bWJlck9mQnl0ZXMpWzFdID0gZGF0YUxlbmd0aDsKICAgICBtZW1jcHkobV93
cml0YWJsZUJ1ZmZlci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIDIgKiBzaXplb2Yo
dWludDY0X3QpLCBkYXRhLT5kYXRhQXNVSW50OFB0cigpLCBkYXRhTGVuZ3RoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGQ4NzU5MzJjMTc2ZjA3OTAz
NmVmMGM0ZmJmNWQyZGE3MTMzMTVhZDUuLmU5NDMzYzQ1MTgyOTE4NGExMWM2OWIzZTU3NzY5YmQx
YjA3OWE2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
NyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1
ZmZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgiCisjaW5j
bHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KQEAgLTM4LDkgKzQwLDYgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogY2xhc3MgRGlz
cGxheUxpc3Q7CiAKLWVudW0gSXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEl0
ZW1CdWZmZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmll
clR5cGU+OwotCiAvLyBBbiBJdGVtQnVmZmVySGFuZGxlIHdyYXBzIGEgcG9pbnRlciB0byBhIGJ1
ZmZlciB0aGF0IGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuCiBzdHJ1Y3QgSXRlbUJ1
ZmZlckhhbmRsZSB7CiAgICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKQEAgLTUz
LDM2ICs1Miw2IEBAIHN0cnVjdCBJdGVtQnVmZmVySGFuZGxlIHsKIAogdXNpbmcgSXRlbUJ1ZmZl
ckhhbmRsZXMgPSBWZWN0b3I8SXRlbUJ1ZmZlckhhbmRsZSwgMj47CiAKLS8vIEFuIEl0ZW1IYW5k
bGUgd3JhcHMgYSBwb2ludGVyIHRvIGFuIEl0ZW1UeXBlIGZvbGxvd2VkIGltbWVkaWF0ZWx5IGJ5
IGFuIGl0ZW0gb2YgdGhhdCB0eXBlLgotLy8gRWFjaCBpdGVtIGhhbmRsZSBkYXRhIHBvaW50ZXIg
aXMgYWxpZ25lZCB0byA4IGJ5dGVzLCBhbmQgdGhlIGl0ZW0gaXRzZWxmIGlzIGFsc28gYWxpZ25l
ZAotLy8gdG8gOCBieXRlcy4gVG8gZW5zdXJlIHRoaXMsIHRoZSBpdGVtIHR5cGUgY29uc2lzdHMg
b2YgOCBieXRlcyAoMSBieXRlIGZvciB0aGUgdHlwZSBhbmQgNwotLy8gYnl0ZXMgb2YgcGFkZGlu
ZykuCi1zdHJ1Y3QgSXRlbUhhbmRsZSB7Ci0gICAgdWludDhfdCogZGF0YSB7IG51bGxwdHIgfTsK
LQotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkZXN0cm95KCk7Ci0gICAgYm9vbCBpc0RyYXdpbmdJdGVtKCkgY29uc3QgeyByZXR1cm4g
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0odHlwZSgpKTsgfQotCi0gICAgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhKCp0aGlzKTsgfQotICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIWRhdGE7IH0KLQotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwg
IUxPR19ESVNBQkxFRAotICAgIENTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKLSNlbmRpZgot
Ci0gICAgSXRlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZW1UeXBl
PihkYXRhWzBdKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpcygpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBUOjppdGVtVHlwZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQmIGdldCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaXM8VD4oKSk7Ci0gICAg
ICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxUKj4oJmRhdGFbc2l6ZW9mKHVpbnQ2NF90KV0p
OwotICAgIH0KLQotICAgIGJvb2wgc2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29u
c3Q7Ci19OwotCiBlbnVtIGNsYXNzIERpZENoYW5nZUl0ZW1CdWZmZXIgOiBib29sIHsgTm8sIFll
cyB9OwogCiBjbGFzcyBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CkBAIC05MCw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JdGVtQnVmZmVyV3JpdGluZ0NsaWVudCgpIHsgfQogCiAg
ICAgdmlydHVhbCBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KSA9IDA7
Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5kbGUp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0o
Y29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRB
cHBlbmREYXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QgbnVtYmVyT2ZCeXRlcywg
RGlkQ2hhbmdlSXRlbUJ1ZmZlcikgPSAwOwogfTsKIApAQCAtOTgsNyArNjcsNyBAQCBjbGFzcyBJ
dGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SXRlbUJ1ZmZl
clJlYWRpbmdDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8SXRlbUhhbmRsZT4g
V0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIEl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgPSAwOworICAg
IHZpcnR1YWwgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVj
b2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUp
ID0gMDsKIH07CiAKIC8vIEFuIEl0ZW1CdWZmZXIgY29udGFpbnMgZGlzcGxheSBsaXN0IGl0ZW0g
ZGF0YSwgYW5kIGNvbnNpc3RzIG9mIGEgcmVhZHdyaXRlIEl0ZW1CdWZmZXJIYW5kbGUgKHRvIHdo
aWNoIGRpc3BsYXkKQEAgLTE0OSwyNiArMTE4LDE1IEBAIHB1YmxpYzoKICAgICAvLyBkYXRhIGJh
Y2sgaW50byBhbiBpdGVtIG9mIHR5cGUgVC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFz
cy4uLiBBcmdzPiB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKICAgICB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSB8fCAh
VDo6aXNJbmxpbmVJdGVtKTsKLQotICAgICAgICBpZiAoIVQ6OmlzSW5saW5lSXRlbSAmJiBtX3dy
aXRpbmdDbGllbnQpIHsKLSNpZiBDT01QSUxFUihNU1ZDKQotICAgICAgICAgICAgX19kZWNsc3Bl
YyhhbGlnbig4KSkgdHlwZWRlZiB1aW50OF90IEVuY29kaW5nQnVmZmVyW3NpemVvZih1aW50NjRf
dCkgKyBzaXplb2YoVCldOwotI2Vsc2UKLSAgICAgICAgICAgIHVzaW5nIEVuY29kaW5nQnVmZmVy
IF9fYXR0cmlidXRlX18oKGFsaWduZWQgKDgpKSkgPSB1aW50OF90W3NpemVvZih1aW50NjRfdCkg
KyBzaXplb2YoVCldOwotI2VuZGlmCi0gICAgICAgICAgICBzdGF0aWMgRW5jb2RpbmdCdWZmZXIg
dGVtcG9yYXJ5SXRlbUJ1ZmZlcjsKLSAgICAgICAgICAgIHRlbXBvcmFyeUl0ZW1CdWZmZXJbMF0g
PSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjppdGVtVHlwZSk7Ci0gICAgICAgICAgICBuZXcgKHRl
bXBvcmFyeUl0ZW1CdWZmZXIgKyBzaXplb2YodWludDY0X3QpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7Ci0gICAgICAgICAgICBhcHBlbmQoeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0p
OwotICAgICAgICAgICAgSXRlbUhhbmRsZSB7IHRlbXBvcmFyeUl0ZW1CdWZmZXIgfS5kZXN0cm95
KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFQ+Ojp2YWx1ZSA9PSBUOjppc0lubGluZUl0ZW0pOworCisgICAgICAgIGlmICghVDo6aXNJbmxp
bmVJdGVtKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3dyaXRpbmdDbGllbnQpOwor
ICAgICAgICAgICAgYXBwZW5kKERpc3BsYXlMaXN0SXRlbShUKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1
dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOwotCi0gICAgICAgIGlmICghc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKLSAgICAgICAgICAgIG1faXRlbXNU
b0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMuYXBwZW5kKHsgJm1fd3JpdGFibGVCdWZmZXIuZGF0
YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSB9KTsKKyAgICAgICAgYXV0byBidWZmZXJDaGFuZ2Vk
ID0gc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzPFQ+KCkpOwogCiAgICAgICAgIHVuY2hlY2tlZEFwcGVuZDxUPihidWZmZXJDaGFuZ2VkLCBz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgIH0KQEAgLTE4MywxOCArMTQxLDE3IEBA
IHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRBcHBlbmREYXRhKHNpemVfdCBu
dW1iZXJPZkJ5dGVzLCBEaWRDaGFuZ2VJdGVtQnVmZmVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IERpZENoYW5nZUl0ZW1CdWZmZXIgc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51
bWJlck9mQnl0ZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKEl0ZW1IYW5kbGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgdW5jaGVja2Vk
QXBwZW5kKERpZENoYW5nZUl0ZW1CdWZmZXIgZGlkQ2hhbmdlSXRlbUJ1ZmZlciwgQXJncyYmLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICBhdXRvKiBzdGFydE9mSXRlbSA9ICZtX3dyaXRhYmxlQnVm
ZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc107CiAgICAgICAgIHN0YXJ0T2ZJdGVtWzBd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwogICAgICAgICBuZXcgKHN0YXJ0
T2ZJdGVtICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OwotICAgICAgICBkaWRBcHBlbmREYXRhKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhU
OjppdGVtVHlwZSksIGRpZENoYW5nZUl0ZW1CdWZmZXIpOworICAgICAgICBkaWRBcHBlbmREYXRh
KHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxUPigpLCBkaWRDaGFuZ2VJdGVtQnVmZmVy
KTsKICAgICB9CiAKICAgICBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCogbV9yZWFkaW5nQ2xpZW50
IHsgbnVsbHB0ciB9OwogICAgIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50KiBtX3dyaXRpbmdDbGll
bnQgeyBudWxscHRyIH07Ci0gICAgVmVjdG9yPEl0ZW1IYW5kbGU+IG1faXRlbXNUb0Rlc3Ryb3lJ
bkFsbG9jYXRlZEJ1ZmZlcnM7CiAgICAgVmVjdG9yPHVpbnQ4X3QqPiBtX2FsbG9jYXRlZEJ1ZmZl
cnM7CiAgICAgSXRlbUJ1ZmZlckhhbmRsZXMgbV9yZWFkT25seUJ1ZmZlcnM7CiAgICAgSXRlbUJ1
ZmZlckhhbmRsZSBtX3dyaXRhYmxlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc3NDk3ZjM5NTA1
OGE2NzY4NjQ0OGEyNTU3MTc0MGNmNDAzN2FhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXJJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKKworZW51bSBJdGVtQnVmZmVySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgSXRlbUJ1
ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlw
ZT47CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY5MjUwMDY1MWFhMmJhZDRlODkxZDg5NzQwMmIx
YWQzMGI2MGIzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgi
Ci0KLSNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LW5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7Ci0KLXN0YXRpYyBzaXplX3Qgc2l6ZU9mSXRlbUluQnl0
ZXMoSXRlbVR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTYXZlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNhdmUpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlJlc3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoUmVzdG9yZSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFRyYW5zbGF0ZSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFJvdGF0ZSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2NhbGUp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKENvbmNhdGVuYXRlQ1RNKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAg
IHJldHVybiBzaXplb2YoU2V0Q1RNKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxs
R3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lRmlsbEdyYWRpZW50KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoU2V0SW5saW5lRmlsbENvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVT
dHJva2VDb2xvcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRJbmxpbmVTdHJva2VDb2xvcik7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFNldFN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0U3RhdGUpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVDYXA6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0TGluZUNhcCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0TGluZURhc2gp
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICByZXR1cm4gc2l6ZW9m
KFNldExpbmVKb2luKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKFNldE1pdGVyTGltaXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFy
U2hhZG93OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsZWFyU2hhZG93KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXApOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ2xpcE91dCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ2xp
cFRvSW1hZ2VCdWZmZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAg
ICAgIHJldHVybiBzaXplb2YoQ2xpcE91dFRvUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cFBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ2xpcFBhdGgpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKERyYXdHbHlwaHMpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3SW1hZ2VCdWZmZXIpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3TmF0aXZlSW1h
Z2UpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKERyYXdQYXR0ZXJuKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAg
cmV0dXJuIHNpemVvZihEcmF3UmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoRHJhd0xpbmUpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0xpbmVzRm9yVGV4dCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3RWxsaXBzZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3RWxsaXBzZSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd1BhdGgp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKERyYXdGb2N1c1JpbmdQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNS
aW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0ZvY3VzUmluZ1JlY3RzKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVj
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRmlsbFJlY3RXaXRoQ29sb3IpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSZWN0V2l0aEdyYWRpZW50
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRmlsbENvbXBvc2l0ZWRSZWN0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91
bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJvdW5kZWRSZWN0KTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIHNp
emVvZihGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoRmlsbElubGluZVBhdGgpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBh
dGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxFbGxpcHNlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxFbGxpcHNlKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmx1c2hD
b250ZXh0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoTWV0YUNvbW1hbmRDaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoTWV0YUNvbW1hbmRDaGFuZ2VJdGVt
QnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoUHV0SW1hZ2VEYXRhKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9y
TWVkaWE6Ci0gICAgICAgIHJldHVybiBzaXplb2YoUGFpbnRGcmFtZUZvck1lZGlhKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZVJl
Y3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoU3Ryb2tlTGluZSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VJ
bmxpbmVQYXRoKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAg
ICAgIHJldHVybiBzaXplb2YoU3Ryb2tlUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
RWxsaXBzZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VFbGxpcHNlKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ2xlYXJSZWN0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVu
ZFRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZFRyYW5zcGFyZW5j
eUxheWVyKTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0
ZXJuOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5U3Ryb2tlUGF0dGVybik7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihBcHBs
eUZpbGxQYXR0ZXJuKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3I6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik7
Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1i
b29sIGlzRHJhd2luZ0l0ZW0oSXRlbVR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykK
LSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6
OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hh
ZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91
dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwT3V0VG9QYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgSXRlbVR5
cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRl
bmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2Ug
SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpSZXN0b3JlOgotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dENUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZVN0cm9rZUNvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRTdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVh
clJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0xpbmVzRm9yVGV4dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bh
dGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5k
VHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0
OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFU
SF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91
bmRlZEhvbGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgIGNhc2Ug
SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFn
ZURhdGE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2Vu
ZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
dHJva2VSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGUg
dHlwZSkKLXsKLSAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxl
T2YoYWxpZ25vZih1aW50NjRfdCksIHNpemVPZkl0ZW1JbkJ5dGVzKHR5cGUpKTsKLX0KLQotYm9v
bCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQ
YXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhz
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENHKQot
ICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6
QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFu
c3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVy
OgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNh
c2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0xpbmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0j
aWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGlu
ZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFu
Z2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmls
bENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lQ2FwOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgIGNhc2UgSXRl
bVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tu
ZXNzOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRp
ZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlTGluZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAppbmRleCBjZDZjMWE0OTljOTgy
MTZlMTI2NTgwYzNlM2NjNGEzZDhjMjY5NDkwLi44YTcwMGE0ZjQwN2I0M2JmZmU0YzE4NjNlNzZj
NTEwOGFiMTlkNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTgs
OSArOTgsNSBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgQXBwbHlEZXZp
Y2VTY2FsZUZhY3RvciwKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHNpemVfdCBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGUpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lubGlu
ZUl0ZW0oSXRlbVR5cGUpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1U
eXBlKTsKLQogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAxNjg3MzY1ZDQ3YjQ0
YThlOGU4Y2MyZDg4ZjE5NzRiZGI1ZTQ2MmQzLi5kODkyMzZkYWIyODU2Y2VjNjBkNWI4NWJiODk5
ZDNiY2NhMzNkZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJ
dGVtcy5oIgogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgiCiAjaW5jbHVkZSAi
RGlzcGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKQEAgLTIyMCwxMiArMjIxLDEyIEBAIFNldFN0YXRlOjpTZXRTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBh
dHRlcm5ECiB7CiB9CiAKLXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQ
YXR0ZXJuSW1hZ2UpCit2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0
dGVybkltYWdlKSBjb25zdAogewogICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0
cm9rZVBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9z
dHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBjb25zdF9jYXN0PFNldFN0YXRlKj4o
dGhpcyktPm1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3Jl
YXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0
ZXJzKTsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkK
LSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3Jl
YXRlKG1ha2VSZWYoKmZpbGxQYXR0ZXJuSW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMp
OworICAgICAgICBjb25zdF9jYXN0PFNldFN0YXRlKj4odGhpcyktPm1fc3RhdGVDaGFuZ2UubV9z
dGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybklt
YWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKICAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5
KGNvbnRleHQpOwogfQogCkBAIC0xMDgzLDE5MiArMTA4NCwxMiBAQCBzdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkKICAgICByZXR1cm4g
dHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5k
bGUgaXRlbSkKLXsKLSAgICB0cyA8PCBpdGVtLnR5cGUoKTsKLQotICAgIHN3aXRjaCAoaXRlbS50
eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFRyYW5zbGF0ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Um90YXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxSb3RhdGU+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTY2Fs
ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTZXRDVE0+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDb25jYXRlbmF0
ZUNUTT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmls
bEdyYWRpZW50OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xv
cjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3RhdGU+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVDYXA+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lRGFz
aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVKb2luPigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxT
ZXRNaXRlckxpbWl0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0Pigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3SW1h
Z2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdMaW5lPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TGluZXNGb3JU
ZXh0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRv
Y3VtZW50TWFya2VyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBz
ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0VsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxE
cmF3UGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3Vz
UmluZ1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PEZpbGxSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RmlsbFJvdW5kZWRSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU+KCk7Ci0gICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShJTkxJTkVf
UEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxGaWxsSW5saW5lUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmls
bFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNl
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGbHVzaENvbnRleHQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxQdXRJbWFnZURhdGE+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VSZWN0PigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTdHJva2VMaW5lPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VJbmxpbmVQYXRoPigpOwotICAgICAgICBicmVhazsK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFN0cm9rZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUVsbGlwc2U+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8Q2xlYXJSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxC
ZWdpblRyYW5zcGFyZW5jeUxheWVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxBcHBs
eURldmljZVNjYWxlRmFjdG9yPigpOwotICAgICAgICBicmVhazsKLQotICAgIC8vIEl0ZW1zIHdp
dGggbm8gYWRkaXRpb25hbCBkYXRhLgotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lM
YXllcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJu
OgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVt
KQoreworICAgIFdURjo6dmlzaXQoWyZdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkgewor
ICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0ZW0uaXRlbVR5cGU7CisgICAgICAgIHRzIDw8IGRp
c3BsYXlMaXN0SXRlbTsKKyAgICB9LCBpdGVtKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDdmMTkxMTI3NGY2YWY0NTBmZjk0Y2ZiZDA0
YzA0NDY3ZWFjNTA0NjQuLjQ5MzI3YmViNmQyMDEyY2FlZDNhZTFmMGMzZjVmYjY2Mzk3OTg2MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjYsMTEgKzI2LDE0IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNs
dWRlICJEaXNwbGF5TGlzdC5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIkRpc3BsYXlMaXN0SXRlbVR5cGUuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0Lmgi
CiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5jbHVkZSAi
R3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVySWRlbnRp
Zmllci5oIgpAQCAtMzgsNiArNDEsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9UeXBl
Q2FzdHMuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNs
YXNzIFRleHRTdHJlYW07CkBAIC0yNjgsNyArMjcyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVy
Jik7CiAKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJv
a2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKKyAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2Us
IE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBz
dHJ1Y3QgUGF0dGVybkRhdGEgewpAQCAtOTAyLDcgKzkwNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQor
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFu
Y2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBGbG9hdFBvaW50IGFu
Y2hvclBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIGNvbnN0IFZl
Y3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiBnbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX2ds
eXBoczsgfQpAQCAtMjI0Nyw3ICsyMjUxLDkwIEBAIHByaXZhdGU6CiAgICAgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIEl0ZW1IYW5kbGUpOwordXNpbmcgRGlzcGxheUxpc3RJdGVtID0gVmFy
aWFudDwKKyAgICBTYXZlLAorICAgIFJlc3RvcmUsCisgICAgVHJhbnNsYXRlLAorICAgIFJvdGF0
ZSwKKyAgICBTY2FsZSwKKyAgICBTZXRDVE0sCisgICAgQ29uY2F0ZW5hdGVDVE0sCisgICAgU2V0
SW5saW5lRmlsbEdyYWRpZW50LAorICAgIFNldElubGluZUZpbGxDb2xvciwKKyAgICBTZXRJbmxp
bmVTdHJva2VDb2xvciwKKyAgICBTZXRTdHJva2VUaGlja25lc3MsCisgICAgU2V0U3RhdGUsCisg
ICAgU2V0TGluZUNhcCwKKyAgICBTZXRMaW5lRGFzaCwKKyAgICBTZXRMaW5lSm9pbiwKKyAgICBT
ZXRNaXRlckxpbWl0LAorICAgIENsZWFyU2hhZG93LAorICAgIENsaXAsCisgICAgQ2xpcE91dCwK
KyAgICBDbGlwVG9JbWFnZUJ1ZmZlciwKKyAgICBDbGlwT3V0VG9QYXRoLAorICAgIENsaXBQYXRo
LAorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAorICAgIEVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcywKKyAgICBEcmF3R2x5cGhzLAorICAgIERyYXdJbWFnZUJ1ZmZlciwKKyAgICBEcmF3
TmF0aXZlSW1hZ2UsCisgICAgRHJhd1BhdHRlcm4sCisgICAgQmVnaW5UcmFuc3BhcmVuY3lMYXll
ciwKKyAgICBFbmRUcmFuc3BhcmVuY3lMYXllciwKKyAgICBEcmF3UmVjdCwKKyAgICBEcmF3TGlu
ZSwKKyAgICBEcmF3TGluZXNGb3JUZXh0LAorICAgIERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIs
CisgICAgRHJhd0VsbGlwc2UsCisgICAgRHJhd1BhdGgsCisgICAgRHJhd0ZvY3VzUmluZ1BhdGgs
CisgICAgRHJhd0ZvY3VzUmluZ1JlY3RzLAorICAgIEZpbGxSZWN0LAorICAgIEZpbGxSZWN0V2l0
aENvbG9yLAorICAgIEZpbGxSZWN0V2l0aEdyYWRpZW50LAorICAgIEZpbGxDb21wb3NpdGVkUmVj
dCwKKyAgICBGaWxsUm91bmRlZFJlY3QsCisgICAgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUsCisg
ICAgRmlsbElubGluZVBhdGgsCisgICAgRmlsbFBhdGgsCisgICAgRmlsbEVsbGlwc2UsCisgICAg
UHV0SW1hZ2VEYXRhLAorICAgIFBhaW50RnJhbWVGb3JNZWRpYSwKKyAgICBTdHJva2VSZWN0LAor
ICAgIFN0cm9rZUxpbmUsCisgICAgU3Ryb2tlSW5saW5lUGF0aCwKKyAgICBTdHJva2VQYXRoLAor
ICAgIFN0cm9rZUVsbGlwc2UsCisgICAgQ2xlYXJSZWN0LAorICAgIEFwcGx5U3Ryb2tlUGF0dGVy
biwKKyAgICBBcHBseUZpbGxQYXR0ZXJuLAorICAgIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IsCisg
ICAgRmx1c2hDb250ZXh0LAorICAgIE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciwKKyAgICBN
ZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+OworCitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKKworaW5saW5l
IGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNw
bGF5TGlzdEl0ZW0pCit7CisgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgZGlz
cGxheUxpc3RJdGVtKSB7CisgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdEl0ZW0uaXNEcmF3aW5n
SXRlbTsKKyAgICB9LCBkaXNwbGF5TGlzdEl0ZW0pOworfQorCitpbmxpbmUgY29uc3RleHByIEl0
ZW1UeXBlIGl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKQor
eworICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkg
eworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLml0ZW1UeXBlOworICAgIH0sIGRpc3Bs
YXlMaXN0SXRlbSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIHNpemVf
dCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJldHVybiBzaXplb2Yo
dWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZW9m
KFQpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODc3ZTdiOWM0NDUzNDJkODBlNmYyMzRmMGZiOWU0ZjFmMGFmNmI3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlcmF0b3IuY3BwCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IERpc3BsYXlMaXN0IHsKKworRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5
TW92ZVRvRW5kKQorICAgIDogbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKK3sKKyAgICBpZiAo
aW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykgeworICAg
ICAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKSkgeworICAgICAgICAgICAgbV9yZWFk
T25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICAg
ICAgICAgIG1fY3Vyc29yID0gZW5kT2ZDdXJyZW50QnVmZmVyKCk7CisgICAgICAgIH0KKyAgICB9
IGVsc2UKKyAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKK30KKwor
I2lmIEFTU0VSVF9FTkFCTEVECitib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBj
b25zdAoreworICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBjb25zdCBhdXRvKiBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAo
IWl0ZW1zKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gZW5kQ3Vyc29yID0gaXRl
bXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVz
OworICAgIHJldHVybiBtX2N1cnNvciA9PSBlbmRDdXJzb3I7Cit9CisjZW5kaWYKKworYXV0byBE
aXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVl
PgoreworICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRJdGVtSW5m
byk7CisKKyAgICBhdXRvIGN1cnJlbnRJdGVtSW5mbyA9IGN1cnJlbnRJdGVtKCk7CisgICAgaWYg
KCFjdXJyZW50SXRlbUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBt
X2N1cnJlbnRJdGVtSW5mbyA9IHt7IGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyLCBjdXJy
ZW50SXRlbUluZm8tPmlzRHJhd2luZ0l0ZW0gfX07CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGN1cnJlbnRFeHRlbnQ7CisgICAgaWYgKGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAm
JiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpCisgICAgICAg
IGN1cnJlbnRFeHRlbnQgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJh
d2luZ0l0ZW1JbmRleF07CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZShjdXJyZW50SXRlbUluZm8t
PmRpc3BsYXlMaXN0SXRlbSksIFdURk1vdmUoY3VycmVudEV4dGVudCksIGN1cnJlbnRJdGVtSW5m
by0+c2l6ZUluQnVmZmVyIH19OworfQorCit2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3Bl
cmF0b3IrKygpCit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50
SXRlbUluZm8pOworCisgICAgaWYgKG1fY3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtKQor
ICAgICAgICArK21fZHJhd2luZ0l0ZW1JbmRleDsKKworICAgIG1fY3Vyc29yICs9IG1fY3VycmVu
dEl0ZW1JbmZvLT5zaXplSW5CdWZmZXI7CisKKyAgICBpZiAobV9jdXJzb3IgPT0gZW5kT2ZDdXJy
ZW50QnVmZmVyKCkgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZlcigpLT5tX3Jl
YWRPbmx5QnVmZmVycy5zaXplKCkpIHsKKyAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4Kys7
CisgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7CisgICAgfQorCisg
ICAgbV9jdXJyZW50SXRlbUluZm8gPSB7IH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBl
bmFtZSA9IHZvaWQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZh
bHNlOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBI
YXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmlzVmFs
aWQoKSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMgaW5saW5l
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFs
aWQoY29uc3QgSXRlbSYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNW
YWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVtJiBpdGVtKQoreworICAgIHJldHVy
biBpdGVtLmlzVmFsaWQoKTsKK30KKwordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEk+CitpbmxpbmUg
YXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkgY29uc3QgLT4gT3B0aW9u
YWw8Q3VycmVudEl0ZW1SZXN1bHQ+Cit7CisgICAgLy8gV2UgY2FuJ3QgdXNlIGVhcmx5LXJldHVy
biBzdHlsZSBoZXJlIGJlY2F1c2Ugb2YgdGVtcGxhdGUgZXhwYW5zaW9uIGluIHRoZSBjb21waWxl
ci4KKyAgICAvLyBEb2luZyBzbyB3b3VsZCBlaXRoZXIgQSkgYnJlYWsgdGhlIFdlYktpdCBzdHls
ZSBydWxlIGFib3V0IGRvaW5nICJpZiAoKSB7IHJldHVybjsgfSByZXR1cm47IiBpbnN0ZWFkIG9m
ICJpZiAoKSB7IHJldHVybjsgfSBlbHNlIHsgcmV0dXJuOyB9IgorICAgIC8vIG9yIEIpIGNhdXNl
IHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0aW5nIHRlbXBs
YXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIGlmIGNvbnN0ZXhwciAo
SSA8IFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0SXRlbT46OnZhbHVlKSB7CisgICAgICAg
IHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJ
LCBEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIGNvbnN0IGF1dG8qIGVuZE9mQ3VycmVudEJ1
ZmZlciA9IHRoaXMtPmVuZE9mQ3VycmVudEJ1ZmZlcigpOworCisgICAgICAgIGlmIChtX2N1cnNv
ciArIDEgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9j
dXJzb3JbMF0pOworICAgICAgICBpZiAoaXRlbVR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6
aXRlbVR5cGUpCisgICAgICAgICAgICByZXR1cm4gY3VycmVudEl0ZW08SSArIDE+KCk7CisKKyAg
ICAgICAgaWYgKERpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5saW5lSXRlbSkgeworICAgICAgICAg
ICAgaWYgKG1fY3Vyc29yICsgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPERpc3BsYXlM
aXN0SXRlbVR5cGU+KCkgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSAqcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBEaXNwbGF5TGlzdEl0ZW1UeXBlKj4obV9jdXJzb3IgKyBzaXplb2Yo
dWludDY0X3QpKTsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZChpdGVtKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgc3RkOjpzaXplX3QgY3VycmVu
dEl0ZW1TaXplSW5CdWZmZXIgPSBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVP
ZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAg
ICAgICAgIHJldHVybiB7eyBpdGVtLCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxp
c3RJdGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9fTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8q
IGNsaWVudCA9IGl0ZW1CdWZmZXIoKS0+bV9yZWFkaW5nQ2xpZW50OworICAgICAgICBpZiAoIWNs
aWVudCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKG1f
Y3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCkgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07CisgICAgICAgIGNvbnN0
IGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKKyAg
ICAgICAgaWYgKHN0YXJ0T2ZEYXRhICsgZGF0YUxlbmd0aCA+IGVuZE9mQ3VycmVudEJ1ZmZlcikK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBpdGVtID0g
Y2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSk7Cisg
ICAgICAgIGlmICghaXRlbSB8fCAhaXNWYWxpZChpdGVtLnZhbHVlKCkpKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXpl
SW5CdWZmZXIgPSAgMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFs
aWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUo
aXRlbS52YWx1ZSgpKSwgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsIERpc3BsYXlMaXN0SXRlbVR5
cGU6OmlzRHJhd2luZ0l0ZW0gfX07CisgICAgfQorCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
K30KKwordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJy
ZW50QnVmZmVyKCkKK3sKKyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIGlmICgh
aXRlbXMpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZl
cnMgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOworICAgIGlmIChtX3JlYWRPbmx5
QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAgICAgICBhdXRvJiBj
dXJyZW50QnVmZmVySGFuZGxlID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlC
dWZmZXJJbmRleF07CisgICAgICAgIG1fY3Vyc29yID0gY3VycmVudEJ1ZmZlckhhbmRsZS5kYXRh
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0g
bnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOworICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dy
aXRhYmxlQnVmZmVyLmRhdGE7CisgICAgfQorfQorCit1aW50OF90KiBEaXNwbGF5TGlzdDo6SXRl
cmF0b3I6OmVuZE9mQ3VycmVudEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgYXV0byBpdGVtcyA9IGl0
ZW1CdWZmZXIoKTsKKyAgICBBU1NFUlQoaXRlbXMpOworCisgICAgYXV0byBudW1iZXJPZlJlYWRP
bmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgaWYgKG1f
cmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7CisgICAgICAg
IGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9y
ZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRCdWZmZXJIYW5kbGUu
ZGF0YSArIGN1cnJlbnRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7CisgICAgfQorCisgICAgQVNTRVJU
KG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyk7CisgICAg
cmV0dXJuIGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVt
YmVyT2ZCeXRlczsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjhhMjZhYTJlMjU2MTlmYWZiMzkxMDk0NWFjYTMyNTRmMDFjYTg2YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRGlzcGxheUxpc3QuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2NsYXNzIERpc3Bs
YXlMaXN0OjpJdGVyYXRvciB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBJbW1lZGlhdGVseU1v
dmVUb0VuZCB7IE5vLCBZZXMgfTsKKyAgICBJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYsIElt
bWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKTsKKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlM
aXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29y
OyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZXJhdG9yKyso
KTsKKworICAgIHN0cnVjdCBWYWx1ZSB7CisgICAgICAgIERpc3BsYXlMaXN0SXRlbSBpdGVtOwor
ICAgICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGV4dGVudDsKKyAgICAgICAgc2l6ZV90IGl0ZW1T
aXplSW5CdWZmZXIgeyAwIH07CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQ3VycmVu
dEl0ZW1SZXN1bHQgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gZGlzcGxheUxpc3RJdGVtOwor
ICAgICAgICBzdGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3aW5n
SXRlbTsKKyAgICB9OworICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBJID0gMD4KKyAgICBPcHRp
b25hbDxDdXJyZW50SXRlbVJlc3VsdD4gY3VycmVudEl0ZW0oKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAgICB1
aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKKworI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCisKKyAgICBJdGVtQnVmZmVyKiBpdGVt
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMo
KTsgfQorCisgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CisgICAgc3RydWN0
IEN1cnJlbnRJdGVtSW5mbyB7CisgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1ZmZlcjsKKyAg
ICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAgbXV0YWJsZSBPcHRpb25hbDxD
dXJyZW50SXRlbUluZm8+IG1fY3VycmVudEl0ZW1JbmZvOworICAgIHVpbnQ4X3QqIG1fY3Vyc29y
IHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3JlYWRPbmx5QnVmZmVySW5kZXggeyAwIH07Cisg
ICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAgfTsKK307CisKK30KK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAxMGQ5NWQ2M2IwOGM3N2Y3Zjg1
YzNkM2E3OTYwZWY1NmY5YzM5NDRmLi5lNTI4YTM1ZmZlMTg0NmJiN2ZlODY0NmE2NWI1ZDJiMDM4
MmMzMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0x
MTYsMjYgKzExNiwxNyBAQCB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsCiAgICAgICAgIGFwcGVuZDxT
ZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCpjaGFuZ2VzLm1fc3RhdGUuZmlsbEdyYWRpZW50LCBjaGFu
Z2VzLm1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogfQogCi12b2lkIFJlY29y
ZGVyOjp3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSB0eXBlKQotewotICAgIGlmIChtX2Rl
bGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT53aWxsQXBwZW5kSXRlbU9mVHlwZSh0eXBlKTsK
LQotICAgIGlmIChpc0RyYXdpbmdJdGVtKHR5cGUpCi0jaWYgVVNFKENHKQotICAgICAgICB8fCB0
eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4gfHwgdHlwZSA9PSBJdGVtVHlwZTo6
QXBwbHlTdHJva2VQYXR0ZXJuCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlcyA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdl
OwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2Vz
RnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5jaGFuZ2VzRnJvbVN0YXRlKGN1cnJlbnRTdGF0
ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwotICAgICAgICBpZiAoY2hhbmdlc0Zyb21MYXN0U3RhdGUp
IHsKLSAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAi
cHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
KHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkpOwotICAgICAgICAg
ICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0YXRlQ2hhbmdlcywgY2hhbmdlc0Zyb21MYXN0U3Rh
dGUpOwotICAgICAgICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07Ci0gICAg
ICAgICAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFuZ2VzLm1f
c3RhdGU7Ci0gICAgICAgIH0KLSAgICAgICAgY3VycmVudFN0YXRlKCkud2FzVXNlZEZvckRyYXdp
bmcgPSB0cnVlOwordm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZERyYXdpbmdJdGVtKCkKK3sKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2VzID0gY3VycmVudFN0YXRl
KCkuc3RhdGVDaGFuZ2U7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgY2hhbmdlc0Zyb21MYXN0U3RhdGUgPSBzdGF0ZUNoYW5nZXMuY2hhbmdlc0Zyb21TdGF0ZShj
dXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKKyAgICBpZiAoY2hhbmdlc0Zyb21MYXN0
U3RhdGUpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8
ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKSk7CisgICAgICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZUNoYW5nZXMsIGNoYW5nZXNGcm9tTGFzdFN0YXRl
KTsKKyAgICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07CisgICAgICAgIGN1
cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsKICAg
ICB9CisgICAgY3VycmVudFN0YXRlKCkud2FzVXNlZEZvckRyYXdpbmcgPSB0cnVlOwogfQogCiB2
b2lkIFJlY29yZGVyOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTdiNGEwN2ZjY2M4N2RlYTZkZWEy
NTRhNWI3NmNkYmRlOGM0MTZjNi4uOWQ1MDIxMDIzNDIwNDJkZGNiODY3Nzc4NzgyMGI1ZTg2OGJi
YmJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xNTQsNyAr
MTU0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdz
PgogICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgd2lsbEFw
cGVuZEl0ZW1PZlR5cGUoVDo6aXRlbVR5cGUpOworICAgICAgICB3aWxsQXBwZW5kSXRlbU9mVHlw
ZTxUPigpOwogICAgICAgICBtX2Rpc3BsYXlMaXN0LmFwcGVuZDxUPihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOwogCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoVDo6aXNEcmF3aW5nSXRlbSkg
ewpAQCAtMTcxLDcgKzE3MSwyMSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZSgpCisg
ICAgeworICAgICAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgICAgIG1fZGVsZWdhdGUtPndp
bGxBcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKTsKKworICAgICAgICBpZiAoVDo6aXNEcmF3
aW5nSXRlbQorI2lmIFVTRShDRykKKyAgICAgICAgICAgIHx8IFQ6Oml0ZW1UeXBlID09IEl0ZW1U
eXBlOjpBcHBseVN0cm9rZVBhdHRlcm4gfHwgVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5
U3Ryb2tlUGF0dGVybgorI2VuZGlmCisgICAgICAgICkKKyAgICAgICAgICAgIHdpbGxBcHBlbmRE
cmF3aW5nSXRlbSgpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEFwcGVu
ZERyYXdpbmdJdGVtKCk7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGQxNzM3
YTI3OWMzOTdlMDkwOTNkMTM4NDMzZGIzODQ3ZDZmNDc0OTIuLmUzMmUwNjE5NzdlYzZiODA5NWYz
ZTY1OTZhNjgyMzE2ZWJkZGFhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIK
IAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTUyLDkgKzUzLDggQEAg
R3JhcGhpY3NDb250ZXh0JiBSZXBsYXllcjo6Y29udGV4dCgpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRsZSBpdGVtKQoraW5s
aW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1h
Z2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJI
YXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IFQmIGltYWdlQnVmZmVySXRlbSkKIHsKLSAgICBh
dXRvJiBpbWFnZUJ1ZmZlckl0ZW0gPSBpdGVtLmdldDxUPigpOwogICAgIGF1dG8gcmVzb3VyY2VJ
ZGVudGlmaWVyID0gaW1hZ2VCdWZmZXJJdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpOwogICAg
IGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGltYWdlQnVmZmVycy5nZXQocmVzb3VyY2VJZGVudGlm
aWVyKSkgewogICAgICAgICBpbWFnZUJ1ZmZlckl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlQnVm
ZmVyKTsKQEAgLTY0LDkgKzY0LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWMKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0p
CitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBw
bHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJ
bWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgY29uc3QgVCYgbmF0aXZlSW1hZ2VJdGVtKQogewot
ICAgIGF1dG8mIG5hdGl2ZUltYWdlSXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNv
dXJjZUlkZW50aWZpZXIgPSBuYXRpdmVJbWFnZUl0ZW0uaW1hZ2VJZGVudGlmaWVyKCk7CiAgICAg
aWYgKGF1dG8qIGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7
CiAgICAgICAgIG5hdGl2ZUltYWdlSXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2UpOwpAQCAtNzUs
MTAgKzc0LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWMKICAgICByZXR1cm4gcmVzb3VyY2VJ
ZGVudGlmaWVyOwogfQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQor
aW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5
U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VI
YXNoTWFwJiBuYXRpdmVJbWFnZXMsIGNvbnN0IFNldFN0YXRlJiBzZXRTdGF0ZUl0ZW0pCiB7Ci0g
ICAgYXV0byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7Ci0KICAgICBOYXRp
dmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlID0gbnVsbHB0cjsKICAgICBOYXRpdmVJbWFnZSog
ZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CiAKQEAgLTk5LDkgKzk2LDggQEAgaW5saW5lIHN0
YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJ
dGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywg
SXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBjb25zdCBUJiBmb250SXRlbSkKIHsK
LSAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlk
ZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBmb250
ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgZm9udEl0ZW0uYXBw
bHkoY29udGV4dCwgKmZvbnQpOwpAQCAtMTEwLDY4ICsxMDYsNjggQEAgaW5saW5lIHN0YXRpYyBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhp
Y3NDb250ZXgKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCi1zdGQ6OnBhaXI8
T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQorZXh0ZXJuIEdy
YXBoaWNzQ29udGV4dCYgc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dDsKK3RlbXBsYXRl
PHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wg
SGFzQXBwbHkgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgY29u
c3RleHByIGJvb2wgSGFzQXBwbHk8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFs
PFQ+KCkuYXBwbHkoc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dCkpPj4gPSB0cnVlOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PCFIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHkoY29uc3QgSXRlbSYsIEdyYXBo
aWNzQ29udGV4dCYpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMgaW5s
aW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQXBwbHk8SXRlbT4sIHZvaWQ+IGFwcGx5
KGNvbnN0IEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQorewor
ICAgIHJldHVybiBpdGVtLmFwcGx5KGdyYXBoaWNzQ29udGV4dCk7Cit9CisKK2F1dG8gUmVwbGF5
ZXI6OmFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIC0+IEFwcGx5SXRlbVJl
c3VsdAogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIGNv
bnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07
CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKKyAgICBhdXRvIHZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pIC0+
IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRl
eHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+
KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0ZW0pIC0+IHN0ZDo6
cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPj4gewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNvbnRl
eHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigp
KSB7CisgICAgfSwgWyZdKGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkgLT4gQXBwbHlJdGVt
UmVzdWx0IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
ciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX25h
dGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQg
fTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0gICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERy
YXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCisgICAgfSwgWyZdKGNvbnN0IERy
YXdQYXR0ZXJuJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBpZiAoYXV0byBt
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJh
d1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3Zl
KG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJh
d1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1f
bmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd0dseXBocyYgaXRlbSkg
LT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgpLCBtX2Zv
bnRzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAg
IH0KLQotICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IFNl
dFN0YXRlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAoYXV0byBtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0oY29udGV4dCgp
LCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5
UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyYg
Y2xpcEl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChtX21hc2tJbWFnZUJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVt
LCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlwSXRlbS5kZXN0aW5hdGlvbigp
LnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRleHQpOwogICAgICAgICBpZiAo
IW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNv
bjo6T3V0T2ZNZW1vcnksIFdURjo6bnVsbG9wdCB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAoIW1f
bWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0
ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAgbV9jb250ZXh0LmNs
aXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0uZGVzdGluYXRpb24o
KSk7CiAgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpdGVtLmFwcGx5
KGNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
KyAgICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAg
ICAgYXBwbHkoaXRlbSwgY29udGV4dCgpKTsKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9y
LCBpdGVtKTsKIH0KIAogUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QpCkBAIC0xODcsMjggKzE4Mywz
MCBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgIHNpemVfdCBpID0gMDsKICNlbmRpZgog
ICAgIFJlcGxheVJlc3VsdCByZXN1bHQ7Ci0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnQsIGl0
ZW1TaXplSW5CdWZmZXJdIDogbV9kaXNwbGF5TGlzdCkgeworICAgIGZvciAoY29uc3QgYXV0byYg
ZGlzcGxheUxpc3RJdGVtIDogbV9kaXNwbGF5TGlzdCkgeworICAgICAgICBpZiAoIWRpc3BsYXlM
aXN0SXRlbSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gU3RvcFJl
cGxheVJlYXNvbjo6SW52YWxpZEl0ZW07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0g
ZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisKICAgICAgICAgaWYgKCFpbml0aWFsQ2xpcC5pc1pl
cm8oKSAmJiBleHRlbnQgJiYgIWV4dGVudC0+aW50ZXJzZWN0cyhpbml0aWFsQ2xpcCkpIHsKICAg
ICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAic2tpcHBp
bmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwogICAgICAgICAgICAgcmVzdWx0Lm51bWJlck9m
Qnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICghaXRlbSkgewotICAgICAgICAgICAgcmVzdWx0LnJlYXNv
bkZvclN0b3BwaW5nID0gU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW07Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlz
dHMsIHN0cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwogCi0gICAg
ICAgIGlmIChpdGVtLT5pczxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+
KCkpIHsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWV0YUNvbW1hbmRDaGFu
Z2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKSkgewogICAgICAgICAgICAgcmVzdWx0Lm51
bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAgICByZXN1bHQu
cmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlvbklt
YWdlQnVmZmVyOwotICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
ID0gaXRlbS0+Z2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKS5p
ZGVudGlmaWVyKCk7CisgICAgICAgICAgICByZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIgPSBXVEY6OmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0
ZW0pLmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKGF1dG8gW3JlYXNvbkZvclN0b3BwaW5nLCBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyXSA9IGFwcGx5SXRlbSgqaXRlbSk7IHJlYXNvbkZvclN0b3BwaW5nKSB7CisgICAgICAg
IGlmIChhdXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
Zmllcl0gPSBhcHBseUl0ZW0oaXRlbSk7IHJlYXNvbkZvclN0b3BwaW5nKSB7CiAgICAgICAgICAg
ICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqcmVhc29uRm9yU3RvcHBpbmc7CiAgICAgICAg
ICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IFdURk1vdmUobWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIx
Nyw5ICsyMTUsOSBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAgICByZXN1bHQubnVt
YmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKIAogICAgICAgICBpZiAoVU5MSUtF
TFkodHJhY2tSZXBsYXlMaXN0KSkgewotICAgICAgICAgICAgcmVwbGF5TGlzdC0+YXBwZW5kKCpp
dGVtKTsKLSAgICAgICAgICAgIGlmIChpdGVtLT5pc0RyYXdpbmdJdGVtKCkpCi0gICAgICAgICAg
ICAgICAgcmVwbGF5TGlzdC0+YWRkRHJhd2luZ0l0ZW1FeHRlbnQoV1RGTW92ZShleHRlbnQpKTsK
KyAgICAgICAgICAgIHJlcGxheUxpc3QtPmFwcGVuZChpdGVtKTsKKyAgICAgICAgICAgIGlmIChp
c0RyYXdpbmdJdGVtKGl0ZW0pKQorICAgICAgICAgICAgICAgIHJlcGxheUxpc3QtPmFkZERyYXdp
bmdJdGVtRXh0ZW50KE9wdGlvbmFsPEZsb2F0UmVjdD4oZXh0ZW50KSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IDE4MWExMmIw
ZTUxOGU4ZGMyMWQzYjc0OWYyNzEwMWQyYTNlOTZmMzkuLjllMDM5MjVjNmRmNWZkZDI0NTRjZWFh
NzMxODE4ZjNjOWRiYzI2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02NiwxMiArNjYsMTMgQEAgcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBhcHBseShJdGVtSGFuZGxlLCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoY29uc3QgRGlzcGxheUxpc3RJdGVtJiwgR3JhcGhp
Y3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogICAgIAogcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKLSAgICBzdGQ6OnBhaXI8T3B0aW9u
YWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAgICB1c2luZyBBcHBseUl0ZW1SZXN1bHQgPSBz
dGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4+OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0oY29uc3Qg
RGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aAppbmRleCAwNmQ5NDNkOTdhOWI2NGY3MGExZTc3OTZkOTE1MGViOTdmODI5NjM5Li5jZDUwNmEy
OTA3MjU0YjIxYjFlMTdhMmI5YjAyNWJmZTY0MDYzNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCwyOCArNzQs
MjQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwdXRJbWFnZURh
dGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKTsK
KyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YSYgcHV0SW1hZ2VEYXRhSXRlbSkgewogICAgICAg
ICAgICAgcHV0SW1hZ2VEYXRhKHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQoKSwgcHV0SW1h
Z2VEYXRhSXRlbS5pbWFnZURhdGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0KCksIHB1dElt
YWdlRGF0YUl0ZW0uZGVzdFBvaW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdEZvcm1hdCgpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0u
aXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKSkgeworICAgICAgICB9LCBb
Jl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dCYgZmx1c2hDb250ZXh0
KSB7CiAgICAgICAgICAgICBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCk7
Ci0gICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6Rmx1c2hDb250ZXh0PigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIGF1dG8gaWRl
bnRpZmllciA9IGZsdXNoQ29udGV4dC5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuZGlkRmx1c2goaWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyPigpKSB7Ci0gICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJZGVudGlmaWVyID0g
aXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZl
cj4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyJiBtZXRhQ29tbWFuZENoYW5nZUl0ZW1C
dWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBtZXRhQ29t
bWFuZENoYW5nZUl0ZW1CdWZmZXIuaWRlbnRpZmllcigpOwogICAgICAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKG5leHRCdWZmZXJJZGVudGlm
aWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuYXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgICAgIH0sIFsmXShjb25zdCBh
dXRvJiBpdGVtKSB7CisgICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiAgICAgfQogCiAgICAgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCmluZGV4IGU0ZGRjM2QxNWFiMjU0YWZlYjgxNWRmMmU3YjQ1NzkwY2Q2NjAyNWYuLjIxMzQ0
MWRkYzVkZTc1MjQ5ZDcxZTdmMDU5NmM0YzFjNTRhOWUwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTE0LDIwICsxMTQsMTggQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBs
eU1lZGlhSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVtLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBpZiAoIWl0ZW0uaXM8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYgbWVkaWFJdGVtID0gaXRlbS5nZXQ8
RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKTsKLSAgICBhdXRvIHBsYXllciA9IG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXBsYXllcikK
KyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBEaXNwbGF5TGlz
dDo6UGFpbnRGcmFtZUZvck1lZGlhJiBtZWRpYUl0ZW0pIHsKKyAgICAgICAgaWYgKGF1dG8gcGxh
eWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpKQorICAgICAgICAg
ICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJdGVtLmRlc3RpbmF0
aW9uKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnRleHQucGFpbnRGcmFtZUZv
ck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBpdGVtKTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE4Miw3ICsxODAsNyBAQCBEaXNwbGF5
TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBE
aXNwbGF5TGlzdDo6RGlzcAogICAgIGVsc2UKICAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0
YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KCZkZXN0aW5hdGlvbik7
CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHsKKyAgICByZXR1
cm4gRGlzcGxheUxpc3Q6OlJlcGxheWVyIHsKICAgICAgICAgZGVzdGluYXRpb24uY29udGV4dCgp
LAogICAgICAgICBkaXNwbGF5TGlzdCwKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5p
bWFnZUJ1ZmZlcnMoKSwKQEAgLTMxMSwxMiArMzA5LDEyIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVw
TWVzCiAgICAgfQogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVt
QnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlm
aWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVh
ZChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllcikKIHsKICAgICBtX3BlbmRp
bmdXYWtldXBJbmZvID0ge3t7IGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpo
ZWFkZXJTaXplKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vzc1dha2V1cFJlYXNv
bjo6VW5zcGVjaWZpZWQgfSwgV1RGOjpudWxsb3B0IH19OwogfQogCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgSW50UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJD
b3JlOjpJbWFnZURhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8SW1h
Z2VEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMzI2LDcgKzMyNCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJ
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShpbWFnZURhdGEpKTsKIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2
ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMzNiw3
ICszMzQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFn
ZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcAogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUodXJsU3RyaW5nKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWlu
dDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25h
bDxkb3VibGU+IHF1YWxpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0zNDYsNyArMzQ0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW8KICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZvckltYWdlQnVmZmVyKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zNTYsNyArMzU0LDcg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZvckltYWdlQnVmZmVy
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmMKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGRhdGEpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVC
aXRtYXBGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlv
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVh
YmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM2NSwxOCArMzYz
LDE4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9y
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nCiAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoaWRlbnRpZmllcik7CiAg
ICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1
dG8gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdT
dG9yZUNvcHk6OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGlt
YWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weTo6RG9udENvcHlCYWNr
aW5nU3RvcmUpOwogICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBhdXRvIGJhY2tlbmRTaXplID0gaW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCk7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0U2l6ZSA9IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb246OlllcyA/IGJhY2tlbmRTaXplIDogaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCk7CisgICAgICAgIGF1dG8gcmVzdWx0U2l6ZSA9IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcyA/IGJhY2tlbmRTaXplIDogaW1hZ2VCdWZmZXItPmxvZ2lj
YWxTaXplKCk7CiAgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUocmVzdWx0U2l6ZSwgeyB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAgICAgICAgIGlmICghY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgY29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgcmVzdWx0U2l6ZSwgRmxv
YXRSZWN0IHsgeyB9LCByZXN1bHRTaXplIH0sIEZsb2F0UmVjdCB7IHsgfSwgYmFja2VuZFNpemUg
fSwgeyBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvcjo6Q29weSB9KTsKKyAgICAgICAgY29udGV4
dC0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgcmVzdWx0U2l6ZSwgRmxvYXRSZWN0IHsgeyB9LCBy
ZXN1bHRTaXplIH0sIEZsb2F0UmVjdCB7IHsgfSwgYmFja2VuZFNpemUgfSwgeyBDb21wb3NpdGVP
cGVyYXRvcjo6Q29weSB9KTsKICAgICAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsK
ICAgICB9KCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGUpKTsKQEAgLTQz
NCwxMDEgKzQzMiwzMyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQgogICAgICAgICB3YWtlVXBB
bmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RG
OjpudWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIAotT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJ
dGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVt
VHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKK3RlbXBsYXRlIDxzdGQ6OnNpemVf
dCBJID0gMD4KK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
SXRlbT4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBEaXNw
bGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkKIHsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBo
YW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRo
OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwUGF0aD4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0
czoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3Vz
UmluZ1JlY3RzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlv
bik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0g
ICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRl
eHQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6RHJhd1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpGaWxsUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4oZGF0YSwgbGVuZ3Ro
LCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxS
ZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihkYXRhLCBsZW5ndGgs
IGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1h
Z2VEYXRhOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpQdXRJ
bWFnZURhdGE+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRp
b24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAg
cmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0U3RhdGU+KGRhdGEsIGxlbmd0
aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJv
a2VQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTdHJv
a2VQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1BhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNhdmU6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlNldElubGluZUZpbGxDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0
SW5saW5lRmlsbEdyYWRpZW50OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJ
bmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGlu
ZUNhcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNl
bmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICAvLyBXZSBjYW4ndCB1c2UgZWFybHktcmV0dXJu
IHN0eWxlIGhlcmUgYmVjYXVzZSBvZiB0ZW1wbGF0ZSBleHBhbnNpb24gaW4gdGhlIGNvbXBpbGVy
LgorICAgIC8vIERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0IHN0eWxl
IHJ1bGUgYWJvdXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3RlYWQgb2Yg
ImlmICgpIHsgcmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgLy8gb3IgQikgY2F1c2Ug
dGhlIGNvbXBpbGVyIHRvIGluZmluaXRlbHkgcmVjdXJzZSB3aGVuIGdlbmVyYXRpbmcgdGVtcGxh
dGUgc3BlY2lhbGl6YXRpb25zIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgaWYgY29uc3RleHByIChJ
IDwgV1RGOjp2YXJpYW50X3NpemU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT46OnZhbHVl
KSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0
ZXJuYXRpdmVfdDxJLCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjsKKworICAgICAgICBp
ZiAodHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJl
dHVybiBkZWNvZGVJdGVtPEkgKyAxPihkYXRhLCBsZW5ndGgsIHR5cGUpOworCisgICAgICAgIEFT
U0VSVCghRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKTsKKyAgICAgICAgaWYgY29u
c3RleHByICghRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byByZXN1bHQgPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxEaXNw
bGF5TGlzdEl0ZW1UeXBlPihkYXRhLCBsZW5ndGgpKQorICAgICAgICAgICAgICAgIHJldHVybiB7
IFdURk1vdmUocmVzdWx0LnZhbHVlKCkpIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIH0KIAorT3B0aW9uYWw8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRl
bT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
IHR5cGUpCit7CisgICAgcmV0dXJuIFdlYktpdDo6ZGVjb2RlSXRlbShkYXRhLCBsZW5ndGgsIHR5
cGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDM5NDNkNTIxZDM2OTNmYmQyY2VmMzZi
NDdkMzQ5NmIxYzJkZjM2NTkuLmM5Y2M3YzA4NGZhZGNkYmYzYmI0YWMyOWNhOTU5ZDhmMWE5ZTM3
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlOyB9CiAKICAgICAvLyBSZW5kZXJpbmcgb3BlcmF0aW9ucy4KLSAgICBib29s
IGFwcGx5TWVkaWFJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmKTsKKyAgICBib29sIGFwcGx5TWVkaWFJdGVtKGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCiAgICAgdm9pZCBkaWRDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtODYsMTkgKzg2LDcgQEAgcHJpdmF0ZToKICAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAgICAgdm9pZCBzdGFy
dExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWlu
dDhfdCogaGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChhdXRv
IGl0ZW0gPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxUPihkYXRhLCBsZW5ndGgp
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2ViS2l0MiBzaG91bGQgbm90IG5lZWQgdG8ga25v
dyB0aGF0IHRoZSBmaXJzdCA4IGJ5dGVzIGF0IHRoZSBoYW5kbGUgYXJlIHJlc2VydmVkIGZvciB0
aGUgdHlwZS4KLSAgICAgICAgICAgIC8vIE5lZWQgdG8gZmlndXJlIG91dCBhIHdheSB0byBrZWVw
IHRoaXMga25vd2xlZGdlIHdpdGhpbiBkaXNwbGF5IGxpc3QgY29kZSBpbiBXZWJDb3JlLgotICAg
ICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFQoV1RGTW92
ZSgqaXRlbSkpOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19OwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQorICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVS
TiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFw
cGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRp
b24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYsIEdQVVBy
b2Nlc3NXYWtldXBSZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA4OTRk
OWRkMTk4Y2FjNTIwZGQzYTQyNTdiNTA0Y2ExYzc4NGQ4ZmVmLi5mYzkzZGFjYTYzZWY4ZWY1ZWQx
ZDc5Njk5YWZkMzZkMzViZDEwODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAt
Mjk3LDk5ICsyOTcsMjAgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0oV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpF
bmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBPdXRU
b1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPigpKTsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgot
ICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpDbGlwUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkNsaXBQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6
ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0
aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPigpKTsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1Jp
bmdSZWN0czoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9i
amVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPihpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPigpKTsKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgICAg
ICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHM+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVT
aW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGl0ZW0u
Z2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PigpKTsKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICAg
ICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3UGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRo
PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxD
b21wb3NpdGVkUmVjdDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNp
bmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PihpdGVt
LmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAg
ICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGaWxsUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQ
YXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2Rl
U2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4oaXRl
bS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yPigpKTsKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRp
ZW50OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oaXRlbS5nZXQ8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oaXRlbS5nZXQ8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpKTsKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAg
ICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RmlsbFJvdW5kZWRSZWN0PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVu
Y29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VE
YXRhPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigpKTsKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVEYXNoOgot
ICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlNldExpbmVEYXNoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5j
b2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oaXRlbS5nZXQ8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgICAgICByZXR1cm4g
SVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlN0
cm9rZVBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJva2VQYXRoPigpKTsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RGV2aWNl
U2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENHKQotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lM
YXllcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFy
UmVjdDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFy
U2hhZG93OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xp
cDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFn
ZUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFy
a2VyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0Vs
bGlwc2U6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbElu
bGluZVBhdGg6Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxSZWN0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlJvdGF0ZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlNhdmU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
Y2FsZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldENU
TToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGlu
ZUZpbGxDb2xvcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICBjYXNlIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0j
aWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBlbmNvZGVJdGVtSGVscGVyKGNvbnN0IFQmIGl0ZW0pCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIgKCFUOjppc0lubGluZUl0ZW0pCisgICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVy
OjplbmNvZGVTaW5nbGVPYmplY3Q8VD4oaXRlbSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkgLT4g
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4geworICAgICAgICAgICAgcmV0dXJuIGVuY29k
ZUl0ZW1IZWxwZXIoZGlzcGxheUxpc3RJdGVtKTsKKyAgICAgICAgfSwgaXRlbSk7CiAgICAgfQog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RX
ZWJLaXRBUEkueGNzY2hlbWUgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdlYktpdEFQSS54Y3NjaGVtZQppbmRl
eCA1ZjVlYzJlNGFlYzM5ZWRjMzlmYzdmODVjN2Q5NjdlNWM0OTQ2OTRlLi43N2M4MDFlYTkwOGJh
NzUwZjYxNWYxNDcwM2QzNmQ2NjdjMGY3MTczIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdl
YktpdEFQSS54Y3NjaGVtZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdlYktpdEFQSS54Y3NjaGVtZQpA
QCAtNTAsNiArNTAsMTIgQEAKICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29u
dGFpbmVyOlRlc3RXZWJLaXRBUEkueGNvZGVwcm9qIj4KICAgICAgICAgIDwvQnVpbGRhYmxlUmVm
ZXJlbmNlPgogICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICAgICA8Q29tbWFu
ZExpbmVBcmd1bWVudHM+CisgICAgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudAorICAgICAgICAg
ICAgYXJndW1lbnQgPSAiLS1ndGVzdF9maWx0ZXI9RGlzcGxheUxpc3RUZXN0cy5BcHBlbmRJdGVt
cyIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAgPC9Db21tYW5kTGlu
ZUFyZ3VtZW50PgorICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50cz4KICAgIDwvTGF1bmNoQWN0
aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxl
YXNlIgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3Bs
YXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3Bs
YXlMaXN0VGVzdHMuY3BwCmluZGV4IDFjZTE0NjI4Y2VkNWUwMDY0MjVkMmVjMjlmMWRlMGViNzFm
ZTEzNzQuLmQ4YjI2ZmJkOTdlM2VkMmY4MjQyMjU3NWM2NGUwNjNiZmM1ZDMyMDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3RJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnQuaD4KIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNTgsNyArNTksODggQEAgc3RhdGljIFBhdGgg
Y3JlYXRlQ29tcGxleFBhdGgoKQogCiBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1z
KQogeworICAgIFZlY3RvcjxGaWxsUGF0aD4gZmlsbFBhdGhTdG9yYWdlOworICAgIFZlY3RvcjxG
aWxsUmVjdFdpdGhHcmFkaWVudD4gZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlOworICAgIFZl
Y3RvcjxGaWxsUmVjdFdpdGhDb2xvcj4gZmlsbFJlY3RXaXRoQ29sb3JTdG9yYWdlOworCisgICAg
Y2xhc3MgUmVhZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICBSZWFkaW5nQ2xpZW50KGNvbnN0IFZlY3RvcjxGaWxsUGF0aD4m
IGZpbGxQYXRoU3RvcmFnZSwgY29uc3QgVmVjdG9yPEZpbGxSZWN0V2l0aEdyYWRpZW50PiYgZmls
bFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlLCBjb25zdCBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+
JiBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAgICAgICAgICA6IG1fZmlsbFBhdGhTdG9y
YWdlKGZpbGxQYXRoU3RvcmFnZSkKKyAgICAgICAgICAgICwgbV9maWxsUmVjdFdpdGhHcmFkaWVu
dFN0b3JhZ2UoZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlKQorICAgICAgICAgICAgLCBtX2Zp
bGxSZWN0V2l0aENvbG9yU3RvcmFnZShmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxp
c3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHR5cGUgPT0gSXRlbVR5cGU6OkZpbGxQYXRoKQorICAgICAgICAgICAgICAg
IHJldHVybiB7IERpc3BsYXlMaXN0SXRlbShtX2ZpbGxQYXRoU3RvcmFnZVsqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pIH07CisgICAgICAgICAgICBpZiAodHlwZSA9PSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsg
RGlzcGxheUxpc3RJdGVtKG1fZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlWypyZWludGVycHJl
dF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSkgfTsKKyAgICAgICAgICAgIGlmICh0eXBlID09
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcikKKyAgICAgICAgICAgICAgICByZXR1cm4geyBE
aXNwbGF5TGlzdEl0ZW0obV9maWxsUmVjdFdpdGhDb2xvclN0b3JhZ2VbKnJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKSB9OworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisKKyAg
ICAgICAgY29uc3QgVmVjdG9yPEZpbGxQYXRoPiYgbV9maWxsUGF0aFN0b3JhZ2U7CisgICAgICAg
IGNvbnN0IFZlY3RvcjxGaWxsUmVjdFdpdGhHcmFkaWVudD4mIG1fZmlsbFJlY3RXaXRoR3JhZGll
bnRTdG9yYWdlOworICAgICAgICBjb25zdCBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBtX2Zp
bGxSZWN0V2l0aENvbG9yU3RvcmFnZTsKKyAgICB9OworCisgICAgY2xhc3MgV3JpdGluZ0NsaWVu
dCA6IHB1YmxpYyBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAg
ICBXcml0aW5nQ2xpZW50KFZlY3RvcjxGaWxsUGF0aD4mIGZpbGxQYXRoU3RvcmFnZSwgVmVjdG9y
PEZpbGxSZWN0V2l0aEdyYWRpZW50PiYgZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlLCBWZWN0
b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAgICAg
ICAgICA6IG1fZmlsbFBhdGhTdG9yYWdlKGZpbGxQYXRoU3RvcmFnZSkKKyAgICAgICAgICAgICwg
bV9maWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UoZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdl
KQorICAgICAgICAgICAgLCBtX2ZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZShmaWxsUmVjdFdpdGhD
b2xvclN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgZmlu
YWwKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX0xFKGNhcGFjaXR5LCBnbG9iYWxJdGVt
QnVmZmVyQ2FwYWNpdHkpOworICAgICAgICAgICAgcmV0dXJuIHsgSXRlbUJ1ZmZlcklkZW50aWZp
ZXI6OmdlbmVyYXRlKCksIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0
eSB9OworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRl
bShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGxQYXRoPihpdGVtKSkgewor
ICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IG1fZmlsbFBhdGhTdG9yYWdlLnNpemUoKTsK
KyAgICAgICAgICAgICAgICBtX2ZpbGxQYXRoU3RvcmFnZS5hcHBlbmQoV1RGOjpnZXQ8RmlsbFBh
dGg+KGl0ZW0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmluZGV4KSwgc2l6ZW9mKGluZGV4KSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxsUmVjdFdp
dGhHcmFkaWVudD4oaXRlbSkpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXggPSBtX2Zp
bGxSZWN0V2l0aEdyYWRpZW50U3RvcmFnZS5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9maWxs
UmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UuYXBwZW5kKFdURjo6Z2V0PEZpbGxSZWN0V2l0aEdyYWRp
ZW50PihpdGVtKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZpbmRleCksIHNpemVvZihpbmRleCkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsbFJlY3RX
aXRoQ29sb3I+KGl0ZW0pKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbV9maWxs
UmVjdFdpdGhDb2xvclN0b3JhZ2Uuc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fZmlsbFJlY3RX
aXRoQ29sb3JTdG9yYWdlLmFwcGVuZChXVEY6OmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oaXRlbSkp
OworICAgICAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNoYXIqPigmaW5kZXgpLCBzaXplb2YoaW5kZXgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgSXRlbUJ1
ZmZlckhhbmRsZSYsIHNpemVfdCwgRGlkQ2hhbmdlSXRlbUJ1ZmZlcikgZmluYWwKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgVmVjdG9yPEZpbGxQYXRoPiYgbV9maWxsUGF0aFN0b3Jh
Z2U7CisgICAgICAgIFZlY3RvcjxGaWxsUmVjdFdpdGhHcmFkaWVudD4mIG1fZmlsbFJlY3RXaXRo
R3JhZGllbnRTdG9yYWdlOworICAgICAgICBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBtX2Zp
bGxSZWN0V2l0aENvbG9yU3RvcmFnZTsKKyAgICB9OworCiAgICAgRGlzcGxheUxpc3QgbGlzdDsK
KyAgICBXcml0aW5nQ2xpZW50IHdyaXRpbmdDbGllbnQoZmlsbFBhdGhTdG9yYWdlLCBmaWxsUmVj
dFdpdGhHcmFkaWVudFN0b3JhZ2UsIGZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZSk7CisgICAgUmVh
ZGluZ0NsaWVudCByZWFkaW5nQ2xpZW50KGZpbGxQYXRoU3RvcmFnZSwgZmlsbFJlY3RXaXRoR3Jh
ZGllbnRTdG9yYWdlLCBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpOworICAgIGxpc3Quc2V0SXRl
bUJ1ZmZlckNsaWVudCgmd3JpdGluZ0NsaWVudCk7CisgICAgbGlzdC5zZXRJdGVtQnVmZmVyQ2xp
ZW50KCZyZWFkaW5nQ2xpZW50KTsKIAogICAgIEVYUEVDVF9UUlVFKGxpc3QuaXNFbXB0eSgpKTsK
IApAQCAtNzgsNTYgKzE2MCwzNSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1z
KQogICAgIEVYUEVDVF9GQUxTRShsaXN0LmlzRW1wdHkoKSk7CiAKICAgICBib29sIG9ic2VydmVk
VW5leHBlY3RlZEl0ZW0gPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBz
aXplXSA6IGxpc3QpIHsKLSAgICAgICAgc3dpdGNoIChoYW5kbGUtPnR5cGUoKSkgewotICAgICAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJV
RShoYW5kbGUtPmlzPFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBp
dGVtID0gaGFuZGxlLT5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOworICAgIGZvciAoY29uc3Qg
YXV0byYgZGlzcGxheUxpc3RJdGVtIDogbGlzdCkgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRl
bSwgZXh0ZW50LCBzaXplXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworICAgICAgICAKKyAg
ICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3Ryb2tl
VGhpY2tuZXNzJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0RyYXdp
bmdJdGVtKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnRoaWNrbmVzcygpLCAxLjUpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFBhdGg6IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgp
KTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8RmlsbFBhdGg+KCkpOwotICAg
ICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PEZpbGxQYXRoPigpOworICAgICAgICB9
LCBbJl0oY29uc3QgRmlsbFBhdGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0
ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5wYXRoKCkucGxh
dGZvcm1QYXRoKCksIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsK
LSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwot
ICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50
PigpOworICAgICAgICB9LCBbJl0oY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pIHsK
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAg
ICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgxLiwgMS4sIDEwLiwgMTAuKSk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEoJml0ZW0uZ3JhZGllbnQoKSwgZ3JhZGllbnQucHRyKCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0
SW5saW5lRmlsbENvbG9yOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLT5pc0Ry
YXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxTZXRJbmxp
bmVGaWxsQ29sb3I+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PFNl
dElubGluZUZpbGxDb2xvcj4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFNldElubGluZUZpbGxD
b2xvciYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRl
bSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5jb2xvcigpLCBDb2xvcjo6cmVkKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKLSAgICAgICAgICAg
IEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGhhbmRsZS0+aXM8U3Ryb2tlSW5saW5lUGF0aD4oKSk7Ci0gICAgICAgICAgICBhdXRv
JiBpdGVtID0gaGFuZGxlLT5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKKyAgICAgICAgfSwgWyZd
KGNvbnN0IFN0cm9rZUlubGluZVBhdGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBjb25zdCBhdXRvIHBhdGggPSBpdGVt
LnBhdGgoKTsKICAgICAgICAgICAgIGF1dG8mIGxpbmUgPSBwYXRoLmlubGluZURhdGE8TGluZURh
dGE+KCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEobGluZS5zdGFydCwgRmxvYXRQb2ludCgwLCAw
KSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEobGluZS5lbmQsIEZsb2F0UG9pbnQoMTAuLCAxNS4p
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY2FzZSBJ
dGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IE1ldGFDb21tYW5kQ2hh
bmdlSXRlbUJ1ZmZlciYpIHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mKSB7CiAgICAgICAg
ICAgICBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIFdURjo6dmlzaXQodmlz
aXRvciwgaXRlbSk7CiAgICAgfQogCiAgICAgRVhQRUNUX0ZBTFNFKG9ic2VydmVkVW5leHBlY3Rl
ZEl0ZW0pOwpAQCAtMTQ3LDExICsyMDgsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBl
bmRJdGVtcykKIAogICAgIGxpc3QuYXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihGbG9hdFJlY3Qg
eyAwLCAwLCAxMDAsIDEwMCB9LCBDb2xvcjo6YmxhY2spOwogCi0gICAgZm9yIChhdXRvIFtoYW5k
bGUsIGV4dGVudCwgc2l6ZV0gOiBsaXN0KSB7Ci0gICAgICAgIEVYUEVDVF9FUShoYW5kbGUtPnR5
cGUoKSwgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
aGFuZGxlLT5pczxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBk
aXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8RmlsbFJlY3RXaXRoQ29sb3I+KGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkpOwor
ICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gV1RGOjpnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KGRp
c3BsYXlMaXN0SXRlbS0+aXRlbSk7CisgICAgICAgIEVYUEVDVF9FUShpdGVtLml0ZW1UeXBlLCBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3IpOwogCi0gICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5k
bGUtPmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKICAgICAgICAgRVhQRUNUX0VRKCppdGVtLmNv
bG9yKCkudHJ5R2V0QXNTUkdCQUJ5dGVzKCksIENvbG9yOjpibGFjayk7CiAgICAgICAgIEVYUEVD
VF9FUShpdGVtLnJlY3QoKSwgRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAgfQpAQCAt
MTczLDEyICsyMzQsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50
KQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIGZp
bmFsCisgICAgICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJO
IGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1U
eXBlIHR5cGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJ
dGVtVHlwZTo6U3Ryb2tlUGF0aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aCwg
c2l6ZW9mKHNpemVfdCkpOwotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVv
Zih1aW50NjRfdCkpIFN0cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBz
aXplX3QqPihkYXRhKV0pOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19
OworICAgICAgICAgICAgcmV0dXJuIHsgRGlzcGxheUxpc3RJdGVtKFN0cm9rZVBhdGgobV9pdGVt
c1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pKSB9OwogICAgICAgICB9
CiAKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1zOwpAQCAtMTk0LDE0
ICsyNTQsMTQgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAg
IHByaXZhdGU6CiAgICAgICAgIEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXpl
X3QgY2FwYWNpdHkpIGZpbmFsCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9MVChjYXBh
Y2l0eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5KTsKKyAgICAgICAgICAgIEVYUEVDVF9MRShj
YXBhY2l0eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5KTsKICAgICAgICAgICAgIHJldHVybiB7
IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZm
ZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZW5jb2RlSXRlbShJdGVtSGFuZGxlIGhhbmRsZSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIGNv
bnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNp
emUoKTsKLSAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKGhhbmRsZS5nZXQ8U3Ryb2tlUGF0aD4o
KSk7CisgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChXVEY6OmdldDxTdHJva2VQYXRoPihpdGVt
KSk7CiAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oJmluZGV4KSwgc2l6ZW9mKHNpemVfdCkpOwogICAgICAgICB9CiAKQEAg
LTIyNSw4ICsyODUsOCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQp
CiAgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlckNsaWVudCgmcmVhZGVyKTsKIAogICAgIFZl
Y3RvcjxJdGVtVHlwZT4gaXRlbVR5cGVzOwotICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnQs
IHNpemVdIDogc2hhbGxvd0NvcHkpCi0gICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoaGFuZGxlLT50
eXBlKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogc2hhbGxvd0Nv
cHkpCisgICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoaXRlbVR5cGUoZGlzcGxheUxpc3RJdGVtLT5p
dGVtKSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uoc2hhbGxvd0NvcHkuaXNFbXB0eSgpKTsKICAgICBF
WFBFQ1RfRVEoaXRlbVR5cGVzLnNpemUoKSwgNFUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRl
eCBiNTY5ZjM0MDdlMDc1MTVmNjJlMTkwMWVlMDIyZDQxOTQ3ZmYzODlhLi4xYjI1ZWYyMjUyYzk0
YzJiNmE2YjI0YjM5NjY2ODcwYzg0MDAzOGVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NSw3
ICs4NSw3IEBAIHN0YXRpYyBJdGVtQnVmZmVySWRlbnRpZmllciBnbG9iYWxCdWZmZXJJZGVudGlm
aWVyID0gSXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyCiAKIGNsYXNzIFJlYWRpbmdDbGllbnQg
OiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHJpdmF0ZToKLSAgICBPcHRpb25h
bDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90
Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KikgZmluYWwKKyAgICBPcHRpb25hbDxE
aXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUpIGZpbmFsCiAgICAgewogICAgICAgICBFWFBFQ1Rf
RVEodHlwZSwgSXRlbVR5cGU6OkZpbGxQYXRoKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxC
dWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNp
dHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1I
YW5kbGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KICAgICB2b2lk
IGRpZEFwcGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCwgRGlkQ2hhbmdl
SXRlbUJ1ZmZlcikgZmluYWwgeyB9CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423854</attachid>
            <date>2021-03-21 21:51:34 -0700</date>
            <delta_ts>2021-03-22 18:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223560-20210321215133.patch</filename>
            <type>text/plain</type>
            <size>167875</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5NGYyNzA5NmExZmRl
YWE2YmZmNjM5NTg3N2FjYWI5ZmJlMGY3Yy4uZGE5MzljZmZkMTEwNDg5ZjQxN2ExNjY0OTA3YjNk
ZTBkNTBlYzM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAyMS0wMy0yMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gUmVwbGFjZSBJdGVtSGFuZGxlIHdpdGggYSBjb25zdCBWYXJpYW50JgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gs
IHdlIHdlcmUgcmVwcmVzZW50aW5nIHRoZSBjb25jZXB0IG9mICJhbiB1bmtub3duIERpc3BsYXlM
aXN0SXRlbSIgd2l0aCBJdGVtSGFuZGxlLAorICAgICAgICB3aGljaCB3YXMgYSBwb2ludGVyIHRv
IGEgYnl0ZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIERpc3BsYXlMaXN0OjpJdGVyYXRvci4gVGhl
IGZpcnN0IGJ5dGUgd2FzIGFuCisgICAgICAgIGVudW0gdmFsdWUgd2hpY2ggdG9sZCB5b3UgaG93
IHRvIGludGVycHJldCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkYXRhLiBUaGUgcmVtYWluZGVyIG9m
IHRoZSBieXRlcworICAgICAgICB3ZXJlIGp1c3QgYW5kIG9iamVjdCwgcGxhY2VkIHRoZXJlIGJ5
IHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgVGhpcyBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUg
YXMgYSBWYXJpYW50LiBVc2luZyBhIHJlYWwgdmFyaWFudCBoYXMgYSBmZXcgYmVuZWZpdHMgb3Zl
ciB0aGlzIGN1c3RvbQorICAgICAgICBzb2x1dGlvbiwgdGhvdWdoOgorICAgICAgICAxLiBCZXR0
ZXIgdHlwZSBzYWZldHkuIFdlIGRvbid0IGhhdmUgdG8gcmVhZCBpbmRpdmlkdWFsIGJ5dGVzIGFu
ZCBpbnRlcnByZXQgb3RoZXIgYnl0ZXMgb3Vyc2VsdmVzLgorICAgICAgICAgICAgICAgSW5zdGVh
ZCwgd2UgY2FuIHJlbHkgb24gdGhlIFZhcmlhbnQgaW5mcmFzdHJ1Y3R1cmUgdG8gZG8gdGhpcywg
d2hpY2ggaXMgdmVyeSB3ZWxsLXRlc3RlZC4KKyAgICAgICAgMi4gSXQncyBsZXNzIGVycm9yLXBy
b25lLCBiZWNhdXNlIHdlIGNhbiB1c2UgdGVtcGxhdGUgbWV0YXByb2dyYW1taW5nIHRvIGNhdXNl
IHRoZSBjb21waWxlciB0bworICAgICAgICAgICAgICAgZ2VuZXJhdGUgZnVuY3Rpb25zIGZvciB1
cy4gRm9yIGV4YW1wbGUsIHdlIGNhbiBkbyBzb21ldGhpbmcgbGlrZQorCisgICAgICAgIHJldHVy
biBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkgLT4gYm9vbCB7Cisg
ICAgICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlzRHJhd2luZ0l0ZW07CisgICAgICAg
IH0sIGRpc3BsYXlMaXN0SXRlbSk7CisKKyAgICAgICAgaW5zdGVhZCBvZgorCisgICAgICAgIHN3
aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKKyAgICAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoK
KyAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgSXRl
bVR5cGU6OkNsZWFyUmVjdDoKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Cisg
ICAgICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgorICAgICAgICAuLi4KKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIFRoaXMgcGF0Y2ggYWN0dWFsbHkgZGVs
ZXRlcyBhbGwgb2YgdGhlIHBsYWNlcyB3aGVyZSB3ZSBoYXZlIGJpZyBzd2ljaCBzdGF0ZW1lbnRz
IG9mIGRyYXdpbmcgY29tbWFuZHMsCisgICAgICAgIGFuZCByZXBsYWNlcyB0aGVtIGFsbCB3aXRo
IHNpbWlsYXIgdGVtcGxhdGUgbWV0YXByb2dyYW1taW5nLiBBcyBzdWNoLCB0aGlzIHBhdGNoIGRl
bGV0ZXMgbW9yZSB0aGFuCisgICAgICAgIDEyMDAgbGluZXMgdGhhbiBpdCBhZGRzLgorCisgICAg
ICAgIE1vc3Qgb2YgdGhpcyBwYXRjaCBpcyBqdXN0IGEgZGlyZWN0IHRyYW5zbGF0aW9uIGZyb20g
SXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0gKHdoaWNoIGlzIGEgdHlwZWRlZgorICAgICAg
ICB0byBhIFZhcmlhbnQpLCBsaW5lLWJ5LWxpbmUuIEhvd2V2ZXIsIHRoZXJlIGFyZSB0d28gbm9u
LXRyaXZpYWwgY2hhbmdlczoKKworICAgICAgICAxLiBUaGUgY29tcGxleGl0eSBpbnNpZGUgRGlz
cGxheUxpc3Q6Okl0ZXJhdG9yIGlzIHNpZ25pZmljYW50bHkgcmVkdWNlZCBiZWNhdXNlIGl0IG5v
IGxvbmdlciBoYXMgdG8KKyAgICAgICAgICAgICAgIGFsbG9jYXRlIHRoZSBiYWNraW5nIHN0b3Jh
Z2UgZm9yIHRoZSBJdGVtSGFuZGxlLiBJJ3ZlIGFsc28gc2ltcGxpZmllZCB0aGUgcmV0dXJuIHR5
cGUgb2YKKyAgICAgICAgICAgICAgIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkg
dG8gbWFrZSBpdCBhIGxpdHRsZSBtb3JlIGNsZWFyIHdoYXQgdGhlIGZpZWxkcyBtZWFuLgorICAg
ICAgICAyLiBJJ3ZlIG1hZGUgdXNpbmcgYSBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCBhbmQgSXRl
bUJ1ZmZlcldyaXRpbmdDbGllbnQgcmVxdWlyZWQgZm9yIHVzaW5nIG5vbi1pbmxpbmUKKyAgICAg
ICAgICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtcy4gVGhlc2UgY2xpZW50cyB3ZXJlIGFsd2F5cyBz
cGVjaWZpZWQgaW4gV2ViS2l0IC0gdGhleSB3ZXJlIG9ubHkgb3B0aW9uYWwgZm9yCisgICAgICAg
ICAgICAgICB0ZXN0aW5nLiBIb3dldmVyLCB0aGUgY29kZSBjb3VsZCBiZSBzaWduaWZpY2FudGx5
IHNpbXBsaWZpZWQgaWYgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhlCisgICAgICAgICAgICAg
ICBjYXNlIG9mIG5vbi1pbmxpbmUgaXRlbXMgd2l0aG91dCB0aGVzZSBjbGllbnRzLiBBbmQsIHBo
aWxvc29waGljYWxseSwgdGhlc2UgY2xpZW50cyAqc2hvdWxkKiBiZQorICAgICAgICAgICAgICAg
cmVxdWlyZWQgdG8gZG8gZW5jb2RpbmcvZGVjb2RpbmcsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3Ig
bm9uLWlubGluZSBpdGVtcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBp
cyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOiBM
aW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJvbSBJdGVtSGFuZGxlIHRvCisgICAgICAgICAgICAg
IERpc3BsYXlMaXN0SXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdDo6YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6IFdlIGNhbiBtYWtlIHRoZSBjb21waWxlciBnZW5l
cmF0ZSB0aGlzIGZ1bmN0aW9uIQorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjphdEVuZCBjb25zdCk6IERlbGV0ZWQuIE1vdmVkIHRvIERpc3Bs
YXlMaXN0SXRlcmF0b3IuY3BwCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQuIERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6YWR2YW5j
ZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6Y2xlYXJDdXJyZW50SXRlbSk6IERlbGV0ZWQuIERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZVRv
RW5kKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6IERl
bGV0ZWQuIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjppdGVyYXRvcjo6aXRlcmF0b3IpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6On5pdGVyYXRvcik6IERlbGV0ZWQu
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVy
YXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuIERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRv
cjo6b3BlcmF0b3IrKyk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4g
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJh
dG9yOjppdGVtQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmJlZ2luIGNvbnN0KTogRGVsZXRlZC4gTW92ZWQg
dG8gdGhlIC5jcHAgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6ZW5kIGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcik6IEJlY2F1c2UgdGhp
cyBwYXRjaCBzdGFydHMgcmVxdWlyaW5nIGEKKyAgICAgICAgICAgIEl0ZW1CdWZmZXJSZWFkaW5n
Q2xpZW50IGZvciBhbnkgbm9uLWlubGluZSBpdGVtcywgd2hpY2ggaXMgbm8gcHJvYmxlbSBiZWNh
c3VlIHdlIHdlcmUgYWx3YXlzCisgICAgICAgICAgICBzcGVjaWZ5aW5nIG9uZSBpbiBXZWJLaXQg
YW55d2F5LCB3ZSBubyBsb25nZXIgbmVlZCBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRCdWZm
ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6Om9wZXJhdG9y
PSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmNs
ZWFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6
c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZTo6ZGVzY3JpcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5KTogRGVsZXRlZC4gV2UgY2FuIG1ha2Ug
dGhlIGNvbXBpbGVyIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6IERlbGV0ZWQuIFRoZXJlIHdlcmUgdHdv
IHBsYWNlcyB3aGVyZSB0aGlzIHdhcyB1c2VkOgorICAgICAgICAgICAgMS4gV2Ugcm91bmQtdHJp
cHBlZCB0aHJvdWdoIEl0ZW1IYW5kbGUgd2hlbmV2ZXIgYXBwZW5kaW5nIGFuIGl0ZW0sIGp1c3Qg
c28gd2UgY291bGQgcGFzcyBkYXRhIHRvCisgICAgICAgICAgICAgICAgICAgSXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQuIFRoaXMgaXMgdW5uZWNlc3Nhcnkgbm93IHRoYXQgd2UgY2FuIGp1c3QgcGFz
cyBEaXNwbGF5TGlzdEl0ZW0KKyAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgorICAgICAgICAg
ICAgMi4gRGVzdHJveWluZyBub24taW5saW5lIGl0ZW1zIHdoaWNoIHdlcmUgYXBwZW5kZWQgd2l0
aG91dCBhIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50LiBBYm92ZSBJCisgICAgICAgICAgICAgICAg
ICAgZGVzY3JpYmUgdGhhdCB0aGlzIHBhdGNoIHN0YXJ0cyByZXF1aXJpbmcgYSBJdGVtQnVmZmVy
UmVhZGluZ0NsaWVudCBmb3IgYW55IG5vbi1pbmxpbmUgaXRlbXMsCisgICAgICAgICAgICAgICAg
ICAgd2hpY2ggaXMgbm8gcHJvYmxlbSBiZWNhc3VlIHdlIHdlcmUgYWx3YXlzIHNwZWNpZnlpbmcg
b25lIGluIFdlYktpdCBhbnl3YXkuCisgICAgICAgICAgICBTbywgbmVpdGhlciBvZiB0aGVzZSBz
aXR1YXRpb25zIHN1cnZpdmVkIHRoaXMgcGF0Y2gsIHNvIHRoaXMgZW50aXJlIGZ1bmN0aW9uIGlz
IGRlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29weUludG8pOiBEZWxl
dGVkLiBUaGVyZSdzIG5vIG5lZWQgZm9yIHRoaXMgbm93IHRoYXQgdGhlIGl0ZXJhdG9yIGRvZXNu
J3QKKyAgICAgICAgICAgIGFsbG9jYXRlIHN0b3JhZ2UgZm9yIHRoZSBJdGVtSGFuZGxlLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KTog
RGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6bV9hbGxvY2F0
ZWRCdWZmZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKTogTWlncmF0ZSBmcm9tIEl0ZW1IYW5kbGUgdG8gRGlz
cGxheUxpc3RJdGVtLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6
OnVuY2hlY2tlZEFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhh
bmRsZTo6aXNEcmF3aW5nSXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6b3BlcmF0b3IhIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjp0
eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlOjppcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUhhbmRsZTo6Z2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOiBB
ZGRlZC4gTW92ZWQgZnJvbQorICAgICAgICAgICAgICBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcDogUmVtb3ZlZC4gVGhlIGNvbXBpbGVyIGNhbiBnZW5lcmF0ZSBhbGwgb2YKKyAgICAg
ICAgICAgICAgdGhlc2UgZnVuY3Rpb25zISEhCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDogTW92ZWQgdG8gRGlzcGxheUxpc3RJ
dGVtcy5oCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjph
cHBseSBjb25zdCk6IGFwcGx5KCkgbmVlZHMgdG8gYmUgY29uc3QgZm9yIHRoZSB0ZW1wbGF0ZQor
ICAgICAgICAgICAgICBtZXRhcHJvZ3JhbW1pbmcgdG8gd29yay4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KTogVGhlIGNvbXBpbGVyIGNhbiBnZW5lcmF0ZSB0aGlz
IGZ1bmN0aW9uIQorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBs
eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzOjpmb250SWRlbnRpZmllciBjb25zdCk6IE5lZWRzIHRvIGJlIGNvbnN0IGZvciB0aGUgdGVt
cGxhdGUKKyAgICAgICAgICAgICAgbWV0YXByb2dyYW1taW5nIHRvIHdvcmsuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6IE1vdmVkIGZyb20gRGlzcGxheUxp
c3RJdGVtQnVmZmVySWRlbnRpZmllci5oCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
aXRlbVR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3R2x5cGhzOjpmb250SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOiBB
ZGRlZC4gVGhlIHNpbXBsaWZpZWQgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICAgICAgdGhl
IGl0ZXJhdG9yLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29u
c3QpOiBUaGlzIGlzIHRoZSBtYWdpYy4gV2UgY2FuIGFjdHVhbGx5CisgICAgICAgICAgICAgIHJl
Y3Vyc2Ugb3ZlciB0aGUgc2V0IG9mIHR5cGVzIGluIHRoZSB2YXJpYW50LiBXZSBkbyB0aGlzIHdp
dGggYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdGhhdCBpcyBvZiB0eXBlCisgICAgICAgICAgICAgIHNp
emVfdC4gV2UgdXNlICJpZiBjb25zdGV4cHIiIHRvIGhhbmRsZSB0aGUgYmFzZSBjYXNlLCBhbmQg
d2UgcHVsbCBvdXQgdGhlIHR5cGUgYnkgdXNpbmcKKyAgICAgICAgICAgICAgV1RGOjp2YXJpYW50
X2FsdGVybmF0aXZlX3Qgd2l0aCB0aGUgSSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuIE9uY2Ugd2UgaGF2
ZSB0aGUgcGFydGljdWxhciB0eXBlIGluIHRoZQorICAgICAgICAgICAgICBWYXJpYW50LCB3ZSBw
dWxsIG91dCBpdHMgaXRlbVR5cGUgYW5kIGNvbXBhcmUgYWdhaW5zdCB0aGUgaXRlbVR5cGUgaW4g
dGhlIGJ1ZmZlci4gSWYgaXQgZG9lc24ndAorICAgICAgICAgICAgICBtYXRjaCwgd2UgcmVjdXJz
ZSB3aXRoIEkgKyAxLCBhbmQgaXQgZG9lcyBtYXRjaCwgd2UgcnVuIHRoZSBzYW1lIHBhcnNpbmcg
cm91dGluZXMgdGhhdCB3ZXJlIGluIHRoZQorICAgICAgICAgICAgICBvbGQgaW1wbGVtZW50YXRp
b24gb2YgdGhlIGl0ZXJhdG9yIGJlZm9yZSB0aGlzIHBhdGNoLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1
cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oOiBBZGRlZC4gVGhp
cyBpcyBzaWduaWZpY2FudGx5IHNpbXBsaWZpZWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgd2F5
IGl0IHdvcmtlZCBiZWZvcmUgdGhpcyBwYXRjaC4gV2Ugbm8gbG9uZ2VyIGhhdmUgdG8gYWxsb2Nh
dGUgc3RvcmFnZSBmb3IgdGhlIEl0ZW1IYW5kbGVzLiBXZSBoYXZlCisgICAgICAgICAgICAgIHNp
Z25pZmljYW50bHkgZmV3ZXIgbWVtYmVyIHZhcmlhYmxlcywgdG9vLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6Oml0ZW1CdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZERyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW1PZlR5cGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJ
dGVtT2ZUeXBlKTogTW92ZWQgZnJvbSB0aGUgLmNwcCBmaWxlLiBCZWNhdXNlIGl0J3MgYSB0ZW1w
bGF0ZSwKKyAgICAgICAgICAgICAgaXQgaGFzIHRvIGJlIGhlcmUuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKTogTGluZS1ieS1s
aW5lIHRyYW5zbGF0aW9uIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlOYXRpdmVJbWFnZUl0ZW0pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseVNldFN0YXRlSXRlbSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseSk6IEhlbHBlci4gT25seSBjYWxs
IHRoZSBhcHBseSBmdW5jdGlvbiBpbiB0aGUgRGlzcGxheUxpc3QgaXRlbSBpZiBpdCBleGlzdHMu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6IExp
bmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0ZW1IYW5kbGUgdG8gRGlzcGxheUxpc3RJdGVt
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOiBVcGRh
dGUgZm9yIHRoZSBuZXcgcmV0dXJuIHR5cGUgb2YKKyAgICAgICAgICAgICAgRGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpvcGVyYXRvciooKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOiBMaW5lLWJ5LWxpbmUgdHJhbnNsYXRp
b24gZnJvbSBJdGVtSGFuZGxlIHRvCisgICAgICAgICAgICAgIERpc3BsYXlMaXN0SXRlbS4KKwog
MjAyMS0wMy0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YW55IG1lZGlhL21lZGlhLWZyYWdtZW50cy8gdGVzdHMgYXJlIGNyYXNoaW5nIGR1ZSB0byBvdGhl
ciB0ZXN0cyB0aGF0IHJ1biBiZWZvcmUgdGhlbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGU4YTBkYWQ3ZTFhMjZj
ZjA4NjcwMmRiYTg5MTA5NTVjZGVhYWRiZC4uMDcwNDI3MzM1Yzg2MzJjYTNmZTc1NDJkYTEzZWI0
NDdlM2ZkOGU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMy0yMSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gUmVwbGFjZSBJdGVtSGFuZGxlIHdpdGggYSBjb25zdCBWYXJpYW50JgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyLmg6IExpbmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0ZW1I
YW5kbGUgdG8gRGlzcGxheUxpc3RJdGVtLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdCk6IFRoaXMgZmlsZSBoYXMgInVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlIiBzbyB3ZSBkb24ndCBuZWVkIHRvCisgICAgICAgICAgICAgIHF1YWxpZnkg
bmFtZXMuIERyb3AgdGhlIFdlYkNvcmU6Oi4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1
ZmZlcik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXREYXRhRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcik6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJ
bWFnZUJ1ZmZlcik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVJdGVtKTogVGhlIGNv
bXBpbGVyIGNhbiBnZW5lcmF0ZSB0aGlzIGZ1bmN0aW9uIGZvciB1cywgaW4gbXVjaCB0aGUgc2Ft
ZSB3YXkgdGhhdCBpdCBkaWQKKyAgICAgICAgICAgICAgZm9yIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6Y3VycmVudEl0ZW0oKS4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRlY29kZUFuZENyZWF0ZSk6IERlbGV0ZWQuIE5vIGxvbmdlciBuZWNlc3Nhcnkgbm93IHRoYXQg
dGhlIGNvbXBpbGVyCisgICAgICAgICAgICAgIGlzIGdlbmVyYXRpbmcgb3VyIGZ1bmN0aW9ucyBm
b3IgdXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjplbmNv
ZGVJdGVtSGVscGVyKTogVGhlIGNvbXBpbGVyIGNhbiBnZW5lcmF0ZSB0aGlzIGZ1bmN0aW9uIGZv
ciB1cy4KKwogMjAyMS0wMy0xOSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbbWFjT1NdIEFsbG93IG9wZW5kaXJlY3RvcnlkIGFjY2VzcyBpbiBiYXNlIHN5
c3RlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggM2JjN2JmNjdlYTAxNDdkOTk4OGQ1NDczODkwZGIw
OWJjNzU0Mzg2NC4uYzQ2YWE4M2ExYjM5YTI0ZmE0ZGNlMjYyZmI2OTVlMDBmY2I3M2VjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzA3LDggKzEzMDcsMTAgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IGU0ZmVjNzk4Y2IxZjRhOWQ1ZmUzMzJhOWY2NGY5YWIxZWFkNjIxNjMuLjgz
Y2ZkNTcyNmU3YjgwNjFjZGU3MDkxNTY5M2Q4N2YyNzdjZGE3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0yMDE4LDcgKzIwMTgsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYTZlYzc0Zjg1NDM2YWNmOTkwOTM0ZjcwY2RjOTQ4MTZkYTAxODM1NC4uOTgxYWUyNzdj
NDE2NDMyZWFmNmQ1MzU4YjI4ZTMwNTE5MzAyZGM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjI1LDYgKzYyNSw4IEBACiAJ
CTFDNzNBNzE1MjE4NTc1ODcwMDRDQ0VBNSAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCNkI0RjgyMTdC
ODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM4MUI5NUEwRTk3MzMwODAwMjY2
RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JD
b250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTgwRTk3MzMw
ODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDOTNDQkNGMjYwNUJENDMwMDhGREVGOSAvKiBEaXNw
bGF5TGlzdEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzkzQ0JDRDI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDOTND
QkQzMjYwNkY4RTcwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzkzQ0JEMjI2
MDZGM0UzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYzNDgxMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJT
Y3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0YwQTZD
NDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLzsgfTsKIAkJMUNBRjM0ODMwQTZD
NDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2RSAv
KiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY4NjksNiArNjg3MSw5IEBACiAJCTFDOEQyNkNFMjJDMDk1
MTMwMEQxMjVGMyAvKiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDOEQyNkQwMjJDMDlDREUwMEQxMjVGMyAvKiBsaWJjb21wcmVz
c2lvbi50YmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSAic291cmNlY29kZS50ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliY29t
cHJlc3Npb24udGJkOyBwYXRoID0gdXNyL2xpYi9saWJjb21wcmVzc2lvbi50YmQ7IHNvdXJjZVRy
ZWUgPSBTREtST09UOyB9OwogCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JDQzI2MDVCRDQzMDA4RkRFRjkg
LyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5M0NCQ0QyNjA1
QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlz
cGxheUxpc3RJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JE
MjI2MDZGM0UzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOUFFNUNBMjFFRDlERjUwMDY5RDVGMiAvKiBXSExTTEhp
Z2hab21iaWVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xIaWdoWm9tYmllRmlu
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5QUU1Q0IyMUVEOURGNTAw
NjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEhp
Z2hab21iaWVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMEMyREUy
MUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE2NjYwLDcgKzE2NjY1LDYgQEAKIAkJRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRp
Y1Bhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUGFz
dGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMzRTkwNDFEQkJEQkMy
MDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0
aWNQYXN0ZWJvYXJkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzNzdENTUy
NTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlzcGxheUxpc3RJdGVtVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNDM3
N0Q1NjI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQ0MEU3NkUyMzNEOTREMzAwNjNGOUFCIC8qIENsaXBib2FyZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc2RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2aWdhdG9y
Q2xpcGJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvckNs
aXBib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc3MDIzM0Q5NEQ0
MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDbGlwYm9hcmRJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODAx
MywxMCArMTgwMTcsMTIgQEAKIAkJCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJCUY0MjJCOEI2MjUzRjcwNjUwMDRFNzdFOCAvKiBE
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwICovLAogCQkJCUY0MjJCOEI1MjUzRjcwNjUwMDRFNzdF
OCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLywKKwkJCQkxQzkzQ0JEMjI2MDZGM0UzMDA4
RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovLAogCQkJCTBGRTVG
QkNDMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmNwcCAqLywKIAkJCQkwRkU1
RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oICovLAotCQkJCUY0Mzc3
RDU2MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAqLywKIAkJCQlG
NDM3N0Q1NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovLAorCQkJ
CTFDOTNDQkNDMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCAqLywK
KwkJCQkxQzkzQ0JDRDI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oICov
LAogCQkJCTBGRTVGQkNFMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cCAqLywKIAkJCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRl
ci5oICovLAogCQkJCTBGRTVGQkQwMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcCAqLywKQEAgLTMyMDM3LDggKzMyMDQzLDEwIEBACiAJCQkJNzI0MkFDOTcyNTc1OEZF
MTAwNUE5Q0YxIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NUFEMDkzRTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENDBCQzkyNTU0NjNCRjAwNzIxMzQ5IC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM5M0NCRDMyNjA2RjhFNzAwOEZE
RUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVt
VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM5M0NCQ0YyNjA1QkQ0MzAwOEZERUY5IC8qIERp
c3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1
RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGJiMzJiZjM1OTc0MjRiN2U5YWEwZGJjYzEwOTc0
ZGM5MTExMGUyNzUuLmUxNzEwNjAyODVkYjY2ZjRmODg4ZWZmYmUwMTliYWFiZjQwOGJiZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCkBAIC0xNTQsMTAgKzE1NCwxMCBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewog
ICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJh
dG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7CiAK
ICAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmlu
ZGV4IGMwODMyMGU1NjU2NzViZTEyYTY0YzY5Njk0YmUxNWY4MjdiNzk4NWUuLjc5ODFlNjYzZTQ5
MGRjYzExZTJhMjgwNTYzYTExYmJhM2JkZTIyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCIKICNp
bmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTg0LDEyICs4NSwxMCBAQCB2b2lkIERp
c3BsYXlMaXN0OjpjbGVhcigpCiAgICAgbV9uYXRpdmVJbWFnZXMuY2xlYXIoKTsKIH0KIAotYm9v
bCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVt
SGFuZGxlIGl0ZW0pCitib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0
RmxhZ3MgZmxhZ3MsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBzd2l0Y2gg
KGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CisgICAgYXV0byB2
aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3RhdGUmIHN0YXRlSXRlbSkg
LT4gYm9vbCB7CiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0
Zm9ybU9wZXJhdGlvbnMpKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBp
dGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5
IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9y
bS1zcGVjaWZpYy4KICAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2No
YW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTcsMzAgKzk2
LDMwIEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBm
bGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNo
YW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0cnVlOwogI2lmIFVTRShD
RykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5
cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFn
OjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGJyZWFrOworICAgIH0sIFsmXShjb25zdCBBcHBseUZpbGxQYXR0ZXJuJikgLT4g
Ym9vbCB7CisgICAgICAgIHJldHVybiBmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZv
cm1PcGVyYXRpb25zOworICAgIH0sIFsmXShjb25zdCBBcHBseVN0cm9rZVBhdHRlcm4mKSAtPiBi
b29sIHsKKyAgICAgICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9y
bU9wZXJhdGlvbnM7CiAjZW5kaWYKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgfSwgW10oY29uc3QgYXV0byYpIC0+IGJvb2wgeworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9y
LCBpdGVtKTsKIH0KIAogU3RyaW5nIERpc3BsYXlMaXN0Ojphc1RleHQoQXNUZXh0RmxhZ3MgZmxh
Z3MpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW0oVGV4dFN0cmVhbTo6TGluZU1vZGU6
Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVhbTo6Rm9ybWF0dGluZzo6U1ZHU3R5bGVSZWN0KTsKLSAg
ICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiAqdGhpcykgewot
ICAgICAgICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgKml0ZW0pKQorICAgIGZvciAo
Y29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKKyAgICAgICAgY29uc3QgYXV0
byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFs
dWUoKTsKKyAgICAgICAgaWYgKCFzaG91bGREdW1wRm9yRmxhZ3MoZmxhZ3MsIGl0ZW0pKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91
cChzdHJlYW0pOwogICAgICAgICBzdHJlYW0gPDwgaXRlbTsKLSAgICAgICAgaWYgKGl0ZW0tPmlz
RHJhd2luZ0l0ZW0oKSkKKyAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAg
ICAgICBzdHJlYW0gPDwgIiBleHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHJldHVybiBz
dHJlYW0ucmVsZWFzZSgpOwpAQCAtMTMxLDEwICsxMzAsMTEgQEAgdm9pZCBEaXNwbGF5TGlzdDo6
ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdy
b3VwKHRzKTsKICAgICB0cyA8PCAiZGlzcGxheSBsaXN0IjsKIAotICAgIGZvciAoYXV0byBbaXRl
bSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7CisgICAgZm9yIChjb25zdCBh
dXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRl
bSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwog
ICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICAgICAgdHMgPDwg
aXRlbTsKLSAgICAgICAgaWYgKGl0ZW0tPmlzRHJhd2luZ0l0ZW0oKSkKKyAgICAgICAgaWYgKGlz
RHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAgICAgICB0cyA8PCAiIGV4dGVudCAiIDw8IGV4dGVu
dDsKICAgICB9CiAgICAgdHMuc3RhcnRHcm91cCgpOwpAQCAtMTg2LDI0NyArMTg2LDIzIEBAIHZv
aWQgRGlzcGxheUxpc3Q6OnNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhib29sIHZhbHVlKQog
ICAgIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzID0gdmFsdWU7CiB9CiAKLXZvaWQgRGlzcGxh
eUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCi17Ci0gICAgc3dpdGNoIChpdGVtLnR5cGUo
KSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2F2
ZT4oaXRlbS5nZXQ8U2F2ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxSZXN0b3JlPihpdGVtLmdldDxSZXN0b3JlPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8VHJhbnNsYXRlPihp
dGVtLmdldDxUcmFuc2xhdGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxSb3RhdGU+KGl0ZW0uZ2V0PFJvdGF0ZT4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2NhbGU+KGl0ZW0uZ2V0PFNj
YWxlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxDb25jYXRlbmF0ZUNUTT4oaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRDVE0+
KGl0ZW0uZ2V0PFNldENUTT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdy
YWRpZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVudD4oaXRl
bS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJ
bmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9y
PihpdGVtLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldElubGluZVN0cm9r
ZUNvbG9yPihpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0cm9r
ZVRoaWNrbmVzcz4oaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRTdGF0ZT4oaXRlbS5n
ZXQ8U2V0U3RhdGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8U2V0TGluZUNhcD4oaXRlbS5nZXQ8U2V0TGluZUNhcD4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TGlu
ZURhc2g+KGl0ZW0uZ2V0PFNldExpbmVEYXNoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRM
aW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lSm9pbj4oaXRlbS5nZXQ8U2V0
TGluZUpvaW4+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8U2V0TWl0ZXJMaW1pdD4oaXRlbS5nZXQ8U2V0TWl0ZXJMaW1pdD4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
Q2xlYXJTaGFkb3c+KGl0ZW0uZ2V0PENsZWFyU2hhZG93PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwOgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXA+KGl0ZW0uZ2V0PENsaXA+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcE91
dD4oaXRlbS5nZXQ8Q2xpcE91dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VC
dWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0
PENsaXBUb0ltYWdlQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRo
OgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PENsaXBPdXRU
b1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4g
YXBwZW5kPENsaXBQYXRoPihpdGVtLmdldDxDbGlwUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlw
aHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0dseXBocz4oaXRlbS5nZXQ8RHJhd0dseXBo
cz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1
cm4gYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8RHJhd05hdGl2ZUltYWdlPihpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdQYXR0
ZXJuPihpdGVtLmdldDxEcmF3UGF0dGVybj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Jl
Y3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1JlY3Q+KGl0ZW0uZ2V0PERyYXdSZWN0Pigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxE
cmF3TGluZT4oaXRlbS5nZXQ8RHJhd0xpbmU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4dD4oaXRl
bS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyPihpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3RWxs
aXBzZT4oaXRlbS5nZXQ8RHJhd0VsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdQYXRoPihpdGVtLmdldDxEcmF3UGF0aD4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5k
PEZpbGxSZWN0PihpdGVtLmdldDxGaWxsUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+
KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhHcmFk
aWVudD4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsQ29tcG9z
aXRlZFJlY3Q+KGl0ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSb3VuZGVk
UmVjdD4oaXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZT4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkpOwotI2lm
IEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQ
YXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxJbmxpbmVQYXRoPihpdGVtLmdldDxGaWxs
SW5saW5lUGF0aD4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUGF0aD4oaXRlbS5nZXQ8RmlsbFBhdGg+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxF
bGxpcHNlPihpdGVtLmdldDxGaWxsRWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1
c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZsdXNoQ29udGV4dD4oaXRlbS5nZXQ8
Rmx1c2hDb250ZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8TWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gYXBwZW5kPFB1
dEltYWdlRGF0YT4oaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UGFpbnRGcmFtZUZv
ck1lZGlhPihpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlUmVjdD4oaXRlbS5n
ZXQ8U3Ryb2tlUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxTdHJva2VMaW5lPihpdGVtLmdldDxTdHJva2VMaW5lPigpKTsKLSNp
ZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxp
bmVQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZUlubGluZVBhdGg+KGl0ZW0uZ2V0
PFN0cm9rZUlubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
UGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VQYXRoPihpdGVtLmdldDxTdHJva2VQ
YXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFN0cm9rZUVsbGlwc2U+KGl0ZW0uZ2V0PFN0cm9rZUVsbGlwc2U+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclJl
Y3Q+KGl0ZW0uZ2V0PENsZWFyUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFu
c3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpblRyYW5zcGFyZW5jeUxh
eWVyPihpdGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRUcmFu
c3BhcmVuY3lMYXllcj4oaXRlbS5nZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotI2lmIFVT
RShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8QXBwbHlTdHJva2VQYXR0ZXJuPihpdGVtLmdldDxBcHBseVN0cm9rZVBhdHRl
cm4+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8QXBwbHlGaWxsUGF0dGVybj4oaXRlbS5nZXQ8QXBwbHlGaWxsUGF0dGVybj4o
KSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KGl0ZW0uZ2V0PEFw
cGx5RGV2aWNlU2NhbGVGYWN0b3I+KCkpOwotICAgIH0KLX0KLQotYm9vbCBEaXNwbGF5TGlzdDo6
aXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKLXsKLSAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5
KCkgfHwgIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvJiBpdGVt
cyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy5tX3dyaXRhYmxl
QnVmZmVyLmRhdGEgKyBpdGVtcy5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIHJldHVybiBt
X2N1cnNvciA9PSBlbmRDdXJzb3I7Ci19Ci0KLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjp1
cGRhdGVDdXJyZW50SXRlbSgpCi17Ci0gICAgY2xlYXJDdXJyZW50SXRlbSgpOwotCi0gICAgaWYg
KGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZm
ZXIoKTsKLSAgICBhdXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29y
WzBdKTsKLSAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtVHlwZSkgJiYgIW1fZGlzcGxheUxpc3Qu
bV9kcmF3aW5nSXRlbUV4dGVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fY3VycmVudEV4dGVu
dCA9IG1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4
XTsKLSAgICAgICAgbV9kcmF3aW5nSXRlbUluZGV4Kys7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
Y3VycmVudEV4dGVudCA9IFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1z
Lm1fcmVhZGluZ0NsaWVudDsKLSAgICBhdXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKTsKLSAgICBpZiAoY2xpZW50KSB7
Ci0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1
cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbSkpOwotICAgICAgICBpZiAoaXNJbmxpbmVJdGVtKGl0ZW1UeXBlKSkg
ewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5zYWZl
Q29weSh7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSkpKQotICAgICAgICAgICAgICAgIG1faXNW
YWxpZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0g
cGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBh
dXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFd
OwotICAgICAgICAgICAgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2Yo
dWludDY0X3QpOwotICAgICAgICAgICAgYXV0byBkZWNvZGVkSXRlbUhhbmRsZSA9IGNsaWVudC0+
ZGVjb2RlSXRlbShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUsIG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0pOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFkZWNvZGVkSXRlbUhhbmRs
ZSkpCi0gICAgICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7
Ci0gICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50
NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3Ro
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0gPSBtX2N1cnNvcjsKLSAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtOwotICAgIH0KLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6OmFkdmFuY2UoKQotewotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyOwotCi0gICAgaWYgKG1fY3Vy
c29yID09IG1fY3VycmVudEVuZE9mQnVmZmVyICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0
ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fcmVhZE9u
bHlCdWZmZXJJbmRleCsrOwotICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZl
cigpOwotICAgIH0KLQotICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci19Ci0KLXZvaWQgRGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKCkKK3ZvaWQgRGlzcGxheUxpc3Q6OmFw
cGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0
ZW1CdWZmZXIoKTsKLSAgICBpZiAoaXRlbXMgJiYgaXRlbXMtPm1fcmVhZGluZ0NsaWVudCAmJiBt
X2N1cnJlbnRCdWZmZXJGb3JJdGVtKSB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9pc1ZhbGlkKSkK
LSAgICAgICAgICAgIEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0uZGVzdHJv
eSgpOwotCi0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1f
Zml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSkpCi0gICAgICAgICAgICBmYXN0RnJlZShtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtKTsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVy
ID0gMDsKLSAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gbnVsbHB0cjsKKyAgICBXVEY6OnZp
c2l0KFsmXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgIGFwcGVuZChpdGVtKTsKKyAgICB9
LCBpdGVtKTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVUb0VuZCgpCith
dXRvIERpc3BsYXlMaXN0OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgaWYgKGF1
dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93
cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAg
ICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3I7Ci0gICAgICAgIG1fcmVhZE9ubHlC
dWZmZXJJbmRleCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7Ci0gICAgfQorICAg
IHJldHVybiB7ICp0aGlzIH07CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjptb3Zl
Q3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCithdXRvIERpc3BsYXlMaXN0OjplbmQoKSBj
b25zdCAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAg
aWYgKCFpdGVtcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBudW1iZXJPZlJlYWRPbmx5
QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7Ci0gICAgaWYgKG1fcmVh
ZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7Ci0gICAgICAgIGF1
dG8mIG5leHRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25s
eUJ1ZmZlckluZGV4XTsKLSAgICAgICAgbV9jdXJzb3IgPSBuZXh0QnVmZmVySGFuZGxlLmRhdGE7
Ci0gICAgICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBuZXh0QnVmZmVySGFu
ZGxlLmNhcGFjaXR5OwotICAgIH0gZWxzZSBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51
bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7Ci0gICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3Jp
dGFibGVCdWZmZXIuZGF0YTsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNv
ciArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIH0KKyAgICByZXR1cm4geyAq
dGhpcywgSXRlcmF0b3I6OkltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMgfTsKIH0KIAotCiB9IC8v
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdAogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaAppbmRleCBmMTg5ZGVkZjY3NDliY2MyMDE0NzJhZWQyYTg3MTZiYTY1
NzQ2NTJlLi44OGIxYmI2ZDAzNjEwMjg0OWZiNzY5N2U5MDJmY2I0MmM3Nzk0MzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw2IEBAIGNsYXNzIFRleHRTdHJlYW07CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLQogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogZW51bSBBc1Rl
eHRGbGFnIHsKQEAgLTg5LDc2ICs4OCwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmb3JFYWNoSXRlbUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5k
bGUmKT4mJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdz
PiB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncyk7Ci0gICAgdm9pZCBhcHBlbmQoSXRlbUhhbmRs
ZSk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBib29s
IHRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tzRHJhd2lu
Z0l0ZW1FeHRlbnRzOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUcmFja3NEcmF3aW5n
SXRlbUV4dGVudHMoYm9vbCk7CiAKLSAgICBjbGFzcyBpdGVyYXRvciB7Ci0gICAgcHVibGljOgot
ICAgICAgICBlbnVtIGNsYXNzIEltbWVkaWF0ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9OwotICAg
ICAgICBpdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5
TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5v
KQotICAgICAgICAgICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9F
bmQ6OlllcykKLSAgICAgICAgICAgICAgICBtb3ZlVG9FbmQoKTsKLSAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0g
ICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIH5pdGVyYXRvcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFy
Q3VycmVudEl0ZW0oKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rp
c3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9Ci0gICAgICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IrKygpIHsgYWR2YW5jZSgpOyB9Ci0KLSAgICAg
ICAgc3RydWN0IFZhbHVlIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IGl0ZW07
Ci0gICAgICAgICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGV4dGVudDsKLSAgICAgICAgICAgIHNp
emVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OwotICAgICAgICB9OwotCi0gICAgICAgIFZhbHVl
IG9wZXJhdG9yKigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICAgICAgbV9pc1ZhbGlkID8gbWFrZU9wdGlvbmFsKEl0ZW1IYW5kbGUgeyBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtIH0pIDogV1RGOjpudWxsb3B0LAotICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEV4dGVudCwKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsK
LQotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50
QnVmZmVyKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVRvRW5kKCk7Ci0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWR2YW5jZSgpOwotICAgICAgICBib29sIGF0RW5kKCkgY29uc3Q7Ci0KLSAgICAg
ICAgSXRlbUJ1ZmZlciogaXRlbUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3Qu
aXRlbUJ1ZmZlcklmRXhpc3RzKCk7IH0KLQotICAgICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9k
aXNwbGF5TGlzdDsKLSAgICAgICAgdWludDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07Ci0gICAg
ICAgIHNpemVfdCBtX3JlYWRPbmx5QnVmZmVySW5kZXggeyAwIH07Ci0gICAgICAgIHNpemVfdCBt
X2RyYXdpbmdJdGVtSW5kZXggeyAwIH07Ci0gICAgICAgIHVpbnQ4X3QqIG1fY3VycmVudEVuZE9m
QnVmZmVyIHsgbnVsbHB0ciB9OwotCi0gICAgICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1
cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1dIHsgMCB9OwotICAgICAg
ICB1aW50OF90KiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OwotICAgICAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IG1fY3VycmVudEV4dGVudDsKLSAgICAgICAgc2l6ZV90IG1fY3Vy
cmVudEl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1
ZSB9OwotICAgIH07Ci0KLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgKnRo
aXMgfTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMsIGl0ZXJh
dG9yOjpJbW1lZGlhdGVseU1vdmVUb0VuZDo6WWVzIH07IH0KKyAgICBjbGFzcyBJdGVyYXRvcjsK
KworICAgIFdFQkNPUkVfRVhQT1JUIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgSXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSXRlbUJ1ZmZl
ciogaXRlbUJ1ZmZlcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5nZXQoKTsgfQpA
QCAtMTkxLDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0
YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgSXRlbUhhbmRsZSk7Cisg
ICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBjb25zdCBEaXNw
bGF5TGlzdEl0ZW0mKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsK
ICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IDBmODExNGI4MWRkYzVhYWJjMTdkNWIx
NTRlOGQ5N2M3MzU3ZDEyNTUuLmJhNmU4YmE1YTdhMDhmNzU4NjllNDg2MjU4ODU1ZTczNDkxZTY0
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDY3
NiArMzIsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsK
IAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotQ1N0cmluZyBJdGVtSGFu
ZGxlOjpkZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgVGV4dFN0cmVhbSB0czsKLSAgICB0cyA8
PCAqdGhpczsKLSAgICByZXR1cm4gdHMucmVsZWFzZSgpLnV0ZjgoKTsKLX0KLSNlbmRpZgotCi12
b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBz
d2l0Y2ggKHR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6IHsKLSAgICAgICAgZ2V0
PFNhdmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6UmVzdG9yZTogewotICAgICAgICBnZXQ8UmVzdG9yZT4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xh
dGU6IHsKLSAgICAgICAgZ2V0PFRyYW5zbGF0ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6IHsKLSAgICAgICAgZ2V0
PFJvdGF0ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpTY2FsZTogewotICAgICAgICBnZXQ8U2NhbGU+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5h
dGVDVE06IHsKLSAgICAgICAgZ2V0PENvbmNhdGVuYXRlQ1RNPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTTogewotICAg
ICAgICBnZXQ8U2V0Q1RNPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDogewotICAgICAgICBn
ZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjogewotICAg
ICAgICBnZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOiB7
Ci0gICAgICAgIGdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKS5hcHBseShjb250ZXh0KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25l
c3M6IHsKLSAgICAgICAgZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZTogewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOiB7Ci0gICAgICAgIGdldDxTZXRMaW5lQ2FwPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVEYXNoOiB7Ci0gICAgICAgIGdldDxTZXRMaW5lRGFzaD4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5l
Sm9pbjogewotICAgICAgICBnZXQ8U2V0TGluZUpvaW4+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDogewot
ICAgICAgICBnZXQ8U2V0TWl0ZXJMaW1pdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzogewotICAgICAgICBn
ZXQ8Q2xlYXJTaGFkb3c+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDogewotICAgICAgICBnZXQ8Q2xpcD4oKS5hcHBseShj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
T3V0OiB7Ci0gICAgICAgIGdldDxDbGlwT3V0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOiB7Ci0g
ICAgICAgIGdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOiB7Ci0gICAg
ICAgIGdldDxDbGlwT3V0VG9QYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOiB7Ci0gICAgICAgIGdldDxDbGlw
UGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczogewotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHsKLSAgICAgICAgZ2V0PERyYXdJbWFnZUJ1
ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHsKLSAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFn
ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjogewotICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1JlY3Q6IHsKLSAgICAgICAgZ2V0PERyYXdSZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7Ci0gICAgICAg
IGdldDxEcmF3TGluZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OiB7Ci0gICAgICAgIGdldDxEcmF3
TGluZXNGb3JUZXh0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6IHsKLSAgICAgICAg
Z2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6IHsKLSAgICAg
ICAgZ2V0PERyYXdFbGxpcHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOiB7Ci0gICAgICAgIGdldDxEcmF3UGF0
aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDogewotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1Bh
dGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOiB7Ci0gICAgICAgIGdldDxEcmF3Rm9jdXNSaW5n
UmVjdHM+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFJlY3Q6IHsKLSAgICAgICAgZ2V0PEZpbGxSZWN0PigpLmFwcGx5KGNv
bnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxS
ZWN0V2l0aENvbG9yOiB7Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKS5hcHBseShj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdFdpdGhHcmFkaWVudDogewotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbENvbXBvc2l0ZWRSZWN0OiB7Ci0gICAgICAgIGdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJvdW5kZWRSZWN0OiB7Ci0gICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6IHsKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lm
IEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQ
YXRoOiB7Ci0gICAgICAgIGdldDxGaWxsSW5saW5lUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRo
OiB7Ci0gICAgICAgIGdldDxGaWxsUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZTogewotICAgICAgICBn
ZXQ8RmlsbEVsbGlwc2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OiB7Ci0gICAgICAgIGdldDxGbHVzaENv
bnRleHQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAg
IGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YTogewotICAgICAgICBnZXQ8UHV0
SW1hZ2VEYXRhPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogewotICAgICAgICBnZXQ8UGFpbnRG
cmFtZUZvck1lZGlhPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6IHsKLSAgICAgICAgZ2V0PFN0cm9rZVJlY3Q+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlTGluZTogewotICAgICAgICBnZXQ8U3Ryb2tlTGluZT4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOiB7Ci0gICAgICAgIGdldDxT
dHJva2VJbmxpbmVQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDogewotICAgICAgICBnZXQ8
U3Ryb2tlUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOiB7Ci0gICAgICAgIGdldDxTdHJva2VFbGxp
cHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsZWFyUmVjdDogewotICAgICAgICBnZXQ8Q2xlYXJSZWN0PigpLmFwcGx5KGNv
bnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAgICAgICAgZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAgICAgICAgZ2V0PEVuZFRyYW5zcGFyZW5j
eUxheWVyPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFVT
RShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46IHsKLSAgICAgICAg
Z2V0PEFwcGx5U3Ryb2tlUGF0dGVybj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOiB7Ci0gICAgICAg
IGdldDxBcHBseUZpbGxQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cjogewotICAgICAgICBnZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgSXRlbUhhbmRsZTo6
ZGVzdHJveSgpCi17Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0VG9QYXRoOiB7Ci0gICAgICAgIGdldDxDbGlwT3V0VG9QYXRoPigpLn5DbGlwT3V0VG9Q
YXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBh
dGg6IHsKLSAgICAgICAgZ2V0PENsaXBQYXRoPigpLn5DbGlwUGF0aCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7Ci0gICAg
ICAgIGdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKS5+RHJhd0ZvY3VzUmluZ1BhdGgoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6
IHsKLSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKS5+RHJhd0ZvY3VzUmluZ1JlY3Rz
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czogewotICAgICAgICBnZXQ8RHJhd0dseXBocz4oKS5+RHJhd0dseXBocygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6IHsKLSAg
ICAgICAgZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkufkRyYXdMaW5lc0ZvclRleHQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDogewotICAgICAg
ICBnZXQ8RHJhd1BhdGg+KCkufkRyYXdQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OiB7Ci0gICAgICAgIGdldDxGaWxs
Q29tcG9zaXRlZFJlY3Q+KCkufkZpbGxDb21wb3NpdGVkUmVjdCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB7Ci0gICAgICAgIGdldDxGaWxs
UGF0aD4oKS5+RmlsbFBhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjogewotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoQ29s
b3I+KCkufkZpbGxSZWN0V2l0aENvbG9yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsKLSAgICAgICAgZ2V0PEZpbGxS
ZWN0V2l0aEdyYWRpZW50PigpLn5GaWxsUmVjdFdpdGhHcmFkaWVudCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOiB7
Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKS5+RmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUm91bmRlZFJlY3Q6IHsKLSAgICAgICAgZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKS5+RmlsbFJv
dW5kZWRSZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
UHV0SW1hZ2VEYXRhOiB7Ci0gICAgICAgIGdldDxQdXRJbWFnZURhdGE+KCkuflB1dEltYWdlRGF0
YSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVE
YXNoOiB7Ci0gICAgICAgIGdldDxTZXRMaW5lRGFzaD4oKS5+U2V0TGluZURhc2goKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZTogewotICAgICAg
ICBnZXQ8U2V0U3RhdGU+KCkuflNldFN0YXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDogewotICAgICAgICBnZXQ8U3Ryb2tlUGF0aD4o
KS5+U3Ryb2tlUGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj46OnZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6QXBwbHlGaWxsUGF0dGVybjogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBseUZpbGxQYXR0ZXJuPjo6dmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjogewot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBs
eVN0cm9rZVBhdHRlcm4+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYK
LSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczogewotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJSZWN0OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPENsZWFyUmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGVhclNoYWRvdz46OnZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOiB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENsaXA+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDogewot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGlw
T3V0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBUb0ltYWdlQnVmZmVyOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPENsaXBUb0ltYWdlQnVmZmVyPjo6dmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOiB7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENvbmNhdGVu
YXRlQ1RNPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
RWxsaXBzZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxEcmF3RWxsaXBzZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0ltYWdlQnVmZmVyPjo6dmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd1BhdHRlcm4+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHsKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0xpbmU+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1JlY3Q6IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8RHJhd1JlY3Q+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRUcmFuc3BhcmVuY3lMYXllcjogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxFbmRUcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZTogewot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxGaWxs
RWxsaXBzZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDogewotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxGaWxsSW5s
aW5lUGF0aD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEZpbGxSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDogewotICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxGbHVzaENvbnRleHQ+Ojp2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNv
bW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOiB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6IHsKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8TWV0YUNvbW1hbmRDaGFu
Z2VJdGVtQnVmZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxQYWludEZyYW1lRm9yTWVkaWE+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZTogewot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxSZXN0
b3JlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OlJvdGF0ZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxSb3RhdGU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2F2ZTogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxTYXZlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNjYWxlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTTogewotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRDVE0+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9y
OiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFNldElubGluZUZpbGxDb2xvcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6IHsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0SW5saW5lRmlsbEdyYWRp
ZW50Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZVN0cm9rZUNvbG9yOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldElubGluZVN0cm9rZUNvbG9yPjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6IHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0TGlu
ZUNhcD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRMaW5lSm9pbjogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxTZXRMaW5lSm9pbj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OiB7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldE1pdGVyTGltaXQ+Ojp2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tl
VGhpY2tuZXNzOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPFNldFN0cm9rZVRoaWNrbmVzcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOiB7Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFN0cm9rZUVsbGlwc2U+Ojp2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDogewotICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VJbmxpbmVQYXRo
Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlUmVjdDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxTdHJva2VSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6IHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U3Ryb2tlTGluZT46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6IHsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VHJh
bnNsYXRlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhh
c0lzVmFsaWQgPSBmYWxzZTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdGV4cHIg
Ym9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigp
LmlzVmFsaWQoKSk+PiA9IHRydWU7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci10eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhjb25z
dCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQp
Ci17Ci0gICAgbmV3IChkZXN0aW5hdGlvbldpdGhPZmZzZXQpIEl0ZW0oaXRlbUhhbmRsZS5nZXQ8
SXRlbT4oKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+
Ci10eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGNvcHlJ
bnRvKGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uV2l0
aE9mZnNldCkKLXsKLSAgICBhdXRvKiBuZXdJdGVtID0gbmV3IChkZXN0aW5hdGlvbldpdGhPZmZz
ZXQpIEl0ZW0oaXRlbUhhbmRsZS5nZXQ8SXRlbT4oKSk7Ci0gICAgcmV0dXJuIG5ld0l0ZW0tPmlz
VmFsaWQoKTsKLX0KLQotYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29weShJdGVtSGFuZGxlIGRlc3Rp
bmF0aW9uKSBjb25zdAotewotICAgIGF1dG8gaXRlbVR5cGUgPSB0eXBlKCk7Ci0gICAgZGVzdGlu
YXRpb24uZGF0YVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICBhdXRv
IGl0ZW1PZmZzZXQgPSBkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKHVpbnQ2NF90KTsKLSAgICBz
d2l0Y2ggKGl0ZW1UeXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBPdXRUb1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENs
aXBQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3Vz
UmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3Rm9jdXNSaW5nUGF0aD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1c1JpbmdSZWN0cz4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3R2x5cGhzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ltYWdlQnVm
ZmVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lc0ZvclRleHQ+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAg
IHJldHVybiBjb3B5SW50bzxEcmF3TmF0aXZlSW1hZ2U+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERy
YXdQYXR0ZXJuPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bh
dGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPEZpbGxDb21wb3NpdGVkUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFBhdGg+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xv
cjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aENvbG9yPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAg
ICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAg
ICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxGaWxsUm91bmRlZFJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxQdXRJbWFn
ZURhdGE+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFz
aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVEYXNoPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxTZXRTdGF0ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZVBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VQYXRoPigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5RmlsbFBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxBcHBseVN0cm9rZVBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNl
bmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAg
ICAgICByZXR1cm4gY29weUludG88QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgot
ICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPENsZWFyUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsZWFyU2hhZG93OgotICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJTaGFkb3c+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICByZXR1
cm4gY29weUludG88Q2xpcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0PigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxDbGlwVG9JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gY29weUludG88
Q29uY2F0ZW5hdGVDVE0+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0VsbGlwc2U+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UmVjdD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgotICAgICAgICByZXR1cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPEZpbGxFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jaWYgRU5B
QkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsSW5saW5lUGF0aD4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxGaWxsUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZsdXNoQ29udGV4dD4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFBhaW50RnJhbWVGb3JNZWRpYT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSZXN0b3Jl
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAg
ICByZXR1cm4gY29weUludG88Um90YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNhdmU+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPFNjYWxlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RN
OgotICAgICAgICByZXR1cm4gY29weUludG88U2V0Q1RNPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gY29w
eUludG88U2V0SW5saW5lRmlsbENvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICByZXR1cm4gY29weUludG88
U2V0SW5saW5lRmlsbEdyYWRpZW50PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJ
bmxpbmVTdHJva2VDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVDYXA6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRMaW5lQ2FwPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxTZXRMaW5lSm9pbj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRNaXRl
ckxpbWl0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tl
VGhpY2tuZXNzOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0U3Ryb2tlVGhpY2tuZXNzPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZUVsbGlwc2U+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJ
bmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlSW5saW5lUGF0aD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gY29weUludG88
U3Ryb2tlTGluZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5z
bGF0ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFRyYW5zbGF0ZT4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIEl0ZW1CdWZmZXI6Okl0ZW1CdWZm
ZXIoSXRlbUJ1ZmZlckhhbmRsZXMmJiBoYW5kbGVzKQogICAgIDogbV9yZWFkT25seUJ1ZmZlcnMo
V1RGTW92ZShoYW5kbGVzKSkKIHsKQEAgLTcxNyw3ICs0Nyw2IEBAIEl0ZW1CdWZmZXI6On5JdGVt
QnVmZmVyKCkKIEl0ZW1CdWZmZXI6Okl0ZW1CdWZmZXIoSXRlbUJ1ZmZlciYmIG90aGVyKQogICAg
IDogbV9yZWFkaW5nQ2xpZW50KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZWFkaW5nQ2xpZW50LCBu
dWxscHRyKSkKICAgICAsIG1fd3JpdGluZ0NsaWVudChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fd3Jp
dGluZ0NsaWVudCwgbnVsbHB0cikpCi0gICAgLCBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRC
dWZmZXJzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVm
ZmVycywgeyB9KSkKICAgICAsIG1fYWxsb2NhdGVkQnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fYWxsb2NhdGVkQnVmZmVycywgeyB9KSkKICAgICAsIG1fcmVhZE9ubHlCdWZmZXJzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9yZWFkT25seUJ1ZmZlcnMsIHsgfSkpCiAgICAgLCBtX3dyaXRhYmxl
QnVmZmVyKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV93cml0YWJsZUJ1ZmZlciwgeyB9KSkKQEAgLTcy
OSw3ICs1OCw2IEBAIEl0ZW1CdWZmZXImIEl0ZW1CdWZmZXI6Om9wZXJhdG9yPShJdGVtQnVmZmVy
JiYgb3RoZXIpCiB7CiAgICAgbV9yZWFkaW5nQ2xpZW50ID0gc3RkOjpleGNoYW5nZShvdGhlci5t
X3JlYWRpbmdDbGllbnQsIG51bGxwdHIpOwogICAgIG1fd3JpdGluZ0NsaWVudCA9IHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV93cml0aW5nQ2xpZW50LCBudWxscHRyKTsKLSAgICBtX2l0ZW1zVG9EZXN0
cm95SW5BbGxvY2F0ZWRCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zVG9EZXN0
cm95SW5BbGxvY2F0ZWRCdWZmZXJzLCB7IH0pOwogICAgIG1fYWxsb2NhdGVkQnVmZmVycyA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pOwogICAgIG1fcmVhZE9u
bHlCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3JlYWRPbmx5QnVmZmVycywgeyB9KTsK
ICAgICBtX3dyaXRhYmxlQnVmZmVyID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRhYmxlQnVm
ZmVyLCB7IH0pOwpAQCAtNzYzLDkgKzkxLDYgQEAgdm9pZCBJdGVtQnVmZmVyOjpmb3JFYWNoSXRl
bUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4mJiBtYXAKIAog
dm9pZCBJdGVtQnVmZmVyOjpjbGVhcigpCiB7Ci0gICAgZm9yIChhdXRvIGl0ZW0gOiBzdGQ6OmV4
Y2hhbmdlKG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCi0gICAgICAg
IGl0ZW0uZGVzdHJveSgpOwotCiAgICAgZm9yIChhdXRvKiBidWZmZXIgOiBzdGQ6OmV4Y2hhbmdl
KG1fYWxsb2NhdGVkQnVmZmVycywgeyB9KSkKICAgICAgICAgZmFzdEZyZWUoYnVmZmVyKTsKIApA
QCAtNzc2LDcgKzEwMSw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xlYXIoKQogCiBEaWRDaGFuZ2VJ
dGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBu
dW1iZXJPZkJ5dGVzKQogewotICAgIGF1dG8gc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0gPSBwYWRk
ZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcik7CisgICAgYXV0byBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA9IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlczxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7CiAgICAg
aWYgKG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyBudW1iZXJPZkJ5dGVzICsgc2l6ZUZvckJ1ZmZl
clN3aXRjaEl0ZW0gPD0gbV93cml0YWJsZUJ1ZmZlci5jYXBhY2l0eSkKICAgICAgICAgcmV0dXJu
IERpZENoYW5nZUl0ZW1CdWZmZXI6Ok5vOwogCkBAIC03OTIsNyArMTE3LDcgQEAgRGlkQ2hhbmdl
SXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3Qg
bnVtYmVyT2ZCeXRlcykKICAgICByZXR1cm4gaGFkUHJldmlvdXNCdWZmZXIgPyBEaWRDaGFuZ2VJ
dGVtQnVmZmVyOjpZZXMgOiBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpObzsKIH0KIAotdm9pZCBJdGVt
QnVmZmVyOjphcHBlbmQoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQordm9pZCBJdGVtQnVmZmVy
OjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1
dG8gZGF0YSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbSh0ZW1wb3JhcnlJdGVtKTsKICAg
ICBpZiAoIWRhdGEpCkBAIC04MDMsNyArMTI4LDcgQEAgdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQo
SXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogCiAgICAgYXV0byBidWZmZXJDaGFuZ2VkID0gc3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0p
OwogCi0gICAgbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4odGVtcG9yYXJ5SXRlbS50eXBlKCkpOworICAgIG1fd3JpdGFi
bGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGl0ZW1UeXBlKHRlbXBvcmFyeUl0ZW0pKTsKICAgICByZWludGVycHJldF9jYXN0PHVpbnQ2
NF90Kj4obV93cml0YWJsZUJ1ZmZlci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcylbMV0g
PSBkYXRhTGVuZ3RoOwogICAgIG1lbWNweShtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzICsgMiAqIHNpemVvZih1aW50NjRfdCksIGRhdGEtPmRhdGFBc1VJbnQ4
UHRyKCksIGRhdGFMZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgKaW5kZXggZDg3NTkzMmMxNzZmMDc5MDM2ZWYwYzRmYmY1ZDJkYTcxMzMxNWFkNS4uZTk0
MzNjNDUxODI5MTg0YTExYzY5YjNlNTc3NjliZDFiMDc5YTY4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlbVR5cGUuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgpAQCAtMzgsOSArNDAsNiBAQCBuYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgewogCiBjbGFzcyBEaXNwbGF5TGlzdDsKIAotZW51bSBJdGVtQnVmZmVy
SWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgSXRlbUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlwZT47Ci0KIC8vIEFuIEl0ZW1CdWZmZXJI
YW5kbGUgd3JhcHMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIHRoYXQgY29udGFpbnMgZGlzcGxheSBs
aXN0IGl0ZW0gZGF0YS4KIHN0cnVjdCBJdGVtQnVmZmVySGFuZGxlIHsKICAgICBJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyOwpAQCAtNTMsMzYgKzUyLDYgQEAgc3RydWN0IEl0ZW1CdWZm
ZXJIYW5kbGUgewogCiB1c2luZyBJdGVtQnVmZmVySGFuZGxlcyA9IFZlY3RvcjxJdGVtQnVmZmVy
SGFuZGxlLCAyPjsKIAotLy8gQW4gSXRlbUhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYW4gSXRl
bVR5cGUgZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkgYW4gaXRlbSBvZiB0aGF0IHR5cGUuCi0vLyBF
YWNoIGl0ZW0gaGFuZGxlIGRhdGEgcG9pbnRlciBpcyBhbGlnbmVkIHRvIDggYnl0ZXMsIGFuZCB0
aGUgaXRlbSBpdHNlbGYgaXMgYWxzbyBhbGlnbmVkCi0vLyB0byA4IGJ5dGVzLiBUbyBlbnN1cmUg
dGhpcywgdGhlIGl0ZW0gdHlwZSBjb25zaXN0cyBvZiA4IGJ5dGVzICgxIGJ5dGUgZm9yIHRoZSB0
eXBlIGFuZCA3Ci0vLyBieXRlcyBvZiBwYWRkaW5nKS4KLXN0cnVjdCBJdGVtSGFuZGxlIHsKLSAg
ICB1aW50OF90KiBkYXRhIHsgbnVsbHB0ciB9OwotCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKLSAgICBib29sIGlz
RHJhd2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3
aW5nSXRlbSh0eXBlKCkpOyB9Ci0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISEoKnRoaXMpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZGF0YTsg
fQotCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi0gICAgQ1N0cmluZyBk
ZXNjcmlwdGlvbigpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBJdGVtVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KGRhdGFbMF0pOyB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIGlzKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFQ6Oml0ZW1U
eXBlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCYgZ2V0KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChpczxUPigpKTsKLSAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PFQqPigmZGF0YVtzaXplb2YodWludDY0X3QpXSk7Ci0gICAgfQotCi0gICAgYm9vbCBzYWZlQ29w
eShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdDsKLX07Ci0KIGVudW0gY2xhc3MgRGlkQ2hh
bmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywgWWVzIH07CiAKIGNsYXNzIEl0ZW1CdWZmZXJXcml0
aW5nQ2xpZW50IHsKQEAgLTkwLDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkl0ZW1C
dWZmZXJXcml0aW5nQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIEl0ZW1CdWZmZXJIYW5kbGUg
Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGVuY29kZUl0ZW0oSXRlbUhhbmRsZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhh
bmRsZSYsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBEaWRDaGFuZ2VJdGVtQnVmZmVyKSA9IDA7CiB9
OwogCkBAIC05OCw3ICs2Nyw3IEBAIGNsYXNzIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JdGVtQnVmZmVyUmVhZGluZ0NsaWVudCgpIHsgfQogCi0gICAg
dmlydHVhbCBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRl
bShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUsIHVpbnQ4
X3QqIGhhbmRsZUxvY2F0aW9uKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxEaXNwbGF5TGlz
dEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSkgPSAwOwogfTsKIAogLy8gQW4gSXRlbUJ1ZmZl
ciBjb250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLCBhbmQgY29uc2lzdHMgb2YgYSByZWFk
d3JpdGUgSXRlbUJ1ZmZlckhhbmRsZSAodG8gd2hpY2ggZGlzcGxheQpAQCAtMTQ5LDI2ICsxMTgs
MTUgQEAgcHVibGljOgogICAgIC8vIGRhdGEgYmFjayBpbnRvIGFuIGl0ZW0gb2YgdHlwZSBULgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgYXBwZW5kKEFyZ3Mm
Ji4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8VD46OnZhbHVlIHx8ICFUOjppc0lubGluZUl0ZW0pOwotCi0gICAgICAg
IGlmICghVDo6aXNJbmxpbmVJdGVtICYmIG1fd3JpdGluZ0NsaWVudCkgewotI2lmIENPTVBJTEVS
KE1TVkMpCi0gICAgICAgICAgICBfX2RlY2xzcGVjKGFsaWduKDgpKSB0eXBlZGVmIHVpbnQ4X3Qg
RW5jb2RpbmdCdWZmZXJbc2l6ZW9mKHVpbnQ2NF90KSArIHNpemVvZihUKV07Ci0jZWxzZQotICAg
ICAgICAgICAgdXNpbmcgRW5jb2RpbmdCdWZmZXIgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCAoOCkp
KSA9IHVpbnQ4X3Rbc2l6ZW9mKHVpbnQ2NF90KSArIHNpemVvZihUKV07Ci0jZW5kaWYKLSAgICAg
ICAgICAgIHN0YXRpYyBFbmNvZGluZ0J1ZmZlciB0ZW1wb3JhcnlJdGVtQnVmZmVyOwotICAgICAg
ICAgICAgdGVtcG9yYXJ5SXRlbUJ1ZmZlclswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFQ6Oml0
ZW1UeXBlKTsKLSAgICAgICAgICAgIG5ldyAodGVtcG9yYXJ5SXRlbUJ1ZmZlciArIHNpemVvZih1
aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIGFw
cGVuZCh7IHRlbXBvcmFyeUl0ZW1CdWZmZXIgfSk7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsg
dGVtcG9yYXJ5SXRlbUJ1ZmZlciB9LmRlc3Ryb3koKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlID09IFQ6OmlzSW5saW5lSXRl
bSk7CisKKyAgICAgICAgaWYgKCFUOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fd3JpdGluZ0NsaWVudCk7CisgICAgICAgICAgICBhcHBlbmQoRGlzcGxheUxp
c3RJdGVtKFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXJDaGFuZ2VkID0gc3dhcFdyaXRh
YmxlQnVmZmVySWZOZWVkZWQocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1U
eXBlKSk7Ci0KLSAgICAgICAgaWYgKCFzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46
OnZhbHVlKQotICAgICAgICAgICAgbV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycy5h
cHBlbmQoeyAmbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdIH0p
OworICAgICAgICBhdXRvIGJ1ZmZlckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRl
ZChwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8VD4oKSk7CiAKICAgICAgICAgdW5jaGVj
a2VkQXBwZW5kPFQ+KGJ1ZmZlckNoYW5nZWQsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
CiAgICAgfQpAQCAtMTgzLDE4ICsxNDEsMTcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEFwcGVuZERhdGEoc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5nZUl0ZW1C
dWZmZXIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBzd2FwV3Jp
dGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcyk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoSXRlbUhhbmRsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
Y2xhc3MuLi4gQXJncz4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoRGlkQ2hhbmdlSXRlbUJ1ZmZlciBk
aWRDaGFuZ2VJdGVtQnVmZmVyLCBBcmdzJiYuLi4gYXJncykKICAgICB7CiAgICAgICAgIGF1dG8q
IHN0YXJ0T2ZJdGVtID0gJm1fd3JpdGFibGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5
dGVzXTsKICAgICAgICAgc3RhcnRPZkl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjpp
dGVtVHlwZSk7CiAgICAgICAgIG5ldyAoc3RhcnRPZkl0ZW0gKyBzaXplb2YodWludDY0X3QpKSBU
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIGRpZEFwcGVuZERhdGEocGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKSwgZGlkQ2hhbmdlSXRlbUJ1
ZmZlcik7CisgICAgICAgIGRpZEFwcGVuZERhdGEocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzPFQ+KCksIGRpZENoYW5nZUl0ZW1CdWZmZXIpOwogICAgIH0KIAogICAgIEl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50KiBtX3JlYWRpbmdDbGllbnQgeyBudWxscHRyIH07CiAgICAgSXRlbUJ1ZmZl
cldyaXRpbmdDbGllbnQqIG1fd3JpdGluZ0NsaWVudCB7IG51bGxwdHIgfTsKLSAgICBWZWN0b3I8
SXRlbUhhbmRsZT4gbV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVyczsKICAgICBWZWN0
b3I8dWludDhfdCo+IG1fYWxsb2NhdGVkQnVmZmVyczsKICAgICBJdGVtQnVmZmVySGFuZGxlcyBt
X3JlYWRPbmx5QnVmZmVyczsKICAgICBJdGVtQnVmZmVySGFuZGxlIG1fd3JpdGFibGVCdWZmZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42Nzc0OTdmMzk1MDU4YTY3Njg2NDQ4YTI1NTcxNzQwY2Y0MDM3YWEx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitlbnVtIEl0ZW1CdWZmZXJJZGVu
dGlmaWVyVHlwZSB7IH07Cit1c2luZyBJdGVtQnVmZmVySWRlbnRpZmllciA9IE9iamVjdElkZW50
aWZpZXI8SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
NjkyNTAwNjUxYWEyYmFkNGU4OTFkODk3NDAyYjFhZDMwYjYwYjMxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDMzMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0SXRlbVR5cGUuaCIKLQotI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRl
bXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKLQot
c3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQotewotICAgIHN3
aXRjaCAodHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoU2F2ZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0dXJu
IHNpemVvZihSZXN0b3JlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAg
IHJldHVybiBzaXplb2YoVHJhbnNsYXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoUm90YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToK
LSAgICAgICAgcmV0dXJuIHNpemVvZihTY2FsZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0
ZW5hdGVDVE06Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ29uY2F0ZW5hdGVDVE0pOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRDVE0pOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihTZXRJbmxpbmVGaWxsR3JhZGllbnQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGlu
ZUZpbGxDb2xvcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRJbmxpbmVGaWxsQ29sb3IpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFNldElubGluZVN0cm9rZUNvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJv
a2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0U3Ryb2tlVGhpY2tuZXNzKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRT
dGF0ZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihTZXRMaW5lQ2FwKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihTZXRMaW5lRGFzaCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGlu
ZUpvaW46Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0TGluZUpvaW4pOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0TWl0ZXJMaW1p
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoQ2xlYXJTaGFkb3cpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoQ2xpcCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihDbGlwT3V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwVG9JbWFnZUJ1ZmZlcik7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwT3V0VG9Q
YXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVv
ZihDbGlwUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0dseXBocyk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdJ
bWFnZUJ1ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd1BhdHRlcm4pOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdSZWN0KTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3TGlu
ZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihEcmF3TGluZXNGb3JUZXh0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0Zv
ckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdEb3RzRm9yRG9jdW1l
bnRNYXJrZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKERyYXdFbGxpcHNlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihEcmF3UGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zv
Y3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0ZvY3VzUmluZ1BhdGgpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihEcmF3Rm9jdXNSaW5nUmVjdHMpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0Ogot
ICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSZWN0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhDb2xvcik7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRmlsbFJlY3RXaXRoR3JhZGllbnQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxD
b21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsQ29tcG9zaXRlZFJlY3Qp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihGaWxsUm91bmRlZFJlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
SW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsSW5saW5lUGF0aCk7Ci0jZW5k
aWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihG
aWxsUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRmlsbEVsbGlwc2UpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihGbHVzaENvbnRleHQpOwotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpOwotICAgIGNh
c2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIHNpemVvZihQdXRJbWFnZURhdGEpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0dXJuIHNpemVv
ZihQYWludEZyYW1lRm9yTWVkaWEpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlTGluZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VMaW5lKTsKLSNpZiBFTkFCTEUo
SU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZUlubGluZVBhdGgpOwotI2VuZGlmCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VQYXRo
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKFN0cm9rZUVsbGlwc2UpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihDbGVhclJlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQmVnaW5UcmFuc3BhcmVuY3lM
YXllcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAg
IHJldHVybiBzaXplb2YoRW5kVHJhbnNwYXJlbmN5TGF5ZXIpOwotI2lmIFVTRShDRykKLSAgICBj
YXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
QXBwbHlTdHJva2VQYXR0ZXJuKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJu
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RmlsbFBhdHRlcm4pOwotI2VuZGlmCi0gICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihBcHBseURldmljZVNjYWxlRmFjdG9yKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0
eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2
aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5Rmls
bFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlm
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0ltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgIGNhc2UgSXRlbVR5cGU6
OkZsdXNoQ29udGV4dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Um90YXRlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2NhbGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dElubGluZUZpbGxDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGll
bnQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRl
ckxpbWl0OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxh
eWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNl
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3TGluZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVs
bGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
dHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlTGluZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc2l6ZV90IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQotewotICAgIHJldHVybiBzaXplb2Yo
dWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZU9m
SXRlbUluQnl0ZXModHlwZSkpOwotfQotCi1ib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBl
KQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1Bh
dGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmVzRm9yVGV4dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91
bmRlZEhvbGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgIGNhc2Ug
SXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQ
YXRoOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxs
UGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYK
LSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRl
bVR5cGU6OkNsZWFyUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0
dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgIGNhc2Ug
SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3Jl
OgotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgot
ICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9r
ZUNvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
UmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5oCmluZGV4IGNkNmMxYTQ5OWM5ODIxNmUxMjY1ODBjM2UzY2M0YTNkOGMyNjk0OTAu
LjhhNzAwYTRmNDA3YjQzYmZmZTRjMTg2M2U3NmM1MTA4YWIxOWQ2MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OCw5ICs5OCw1IEBAIGVudW0gY2xhc3MgSXRlbVR5
cGUgOiB1aW50OF90IHsKICAgICBBcHBseURldmljZVNjYWxlRmFjdG9yLAogfTsKIAotV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZSk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSk7Ci1XRUJDT1JFX0VY
UE9SVCBib29sIGlzRHJhd2luZ0l0ZW0oSXRlbVR5cGUpOwotCiB9IC8vIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCmluZGV4IDE2ODczNjVkNDdiNDRhOGU4ZThjYzJkODhmMTk3NGJkYjVlNDYyZDMu
LmQ4OTIzNmRhYjI4NTZjZWM2MGQ1Yjg1YmI4OTlkM2JjY2EzM2RkNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAKKyNpbmNsdWRlICJEaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5j
bHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAtMjIwLDEy
ICsyMjEsMTIgQEAgU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlJiBzdGF0ZUNoYW5nZSwgY29uc3QgUGF0dGVybkQKIHsKIH0KIAotdm9pZCBTZXRTdGF0
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0
dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkKK3ZvaWQgU2V0U3RhdGU6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRl
cm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpIGNvbnN0CiB7CiAgICAgaWYg
KG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAgICBt
X3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtl
UmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7Cisg
ICAgICAgIGNvbnN0X2Nhc3Q8U2V0U3RhdGUqPih0aGlzKS0+bV9zdGF0ZUNoYW5nZS5tX3N0YXRl
LnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqc3Ryb2tlUGF0dGVybklt
YWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOwogICAgIGlmIChtX3N0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJu
Q2hhbmdlKSAmJiBmaWxsUGF0dGVybkltYWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3Rh
dGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFn
ZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgICAgIGNvbnN0X2Nhc3Q8U2V0U3Rh
dGUqPih0aGlzKS0+bV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6
Y3JlYXRlKG1ha2VSZWYoKmZpbGxQYXR0ZXJuSW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRl
cnMpOwogICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7CiB9CiAKQEAgLTEwODMsMTky
ICsxMDg0LDEyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBJdGVtVHlwZSB0eXBlKQogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKQotewotICAgIHRzIDw8IGl0ZW0u
dHlwZSgpOwotCi0gICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8VHJhbnNsYXRlPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PFJvdGF0ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNjYWxlPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldENUTT4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PENvbmNhdGVuYXRlQ1RNPigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxT
ZXRJbmxpbmVGaWxsQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVT
dHJva2VDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ry
b2tlVGhpY2tuZXNzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZUNhcD4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVEYXNoPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGlu
ZUpvaW4+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGlt
aXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENs
aXA+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlw
VG9JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dFRvUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PENsaXBQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3R2x5cGhzPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PERyYXdSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmU+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxE
cmF3RWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bh
dGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdQYXRoPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0Zv
Y3VzUmluZ1JlY3RzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZp
bGxSZWN0V2l0aEdyYWRpZW50PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxDb21wb3Np
dGVkUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5k
ZWRSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUm91bmRlZFJlY3Q+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxJbmxpbmVQYXRo
PigpOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRo
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZp
bGxFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENv
bnRleHQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbklt
YWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFB1dEltYWdlRGF0
YT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1l
ZGlhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5
cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCk7Ci0g
ICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUlu
bGluZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGVhclJlY3Q+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCk7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgLy8gSXRlbXMgd2l0aCBubyBhZGRpdGlvbmFsIGRhdGEuCi0gICAg
Y2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNh
c2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotI2lmIFVTRShDRykKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlG
aWxsUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAg
ICAgICBicmVhazsKLSAgICB9CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCit7CisgICAgV1RGOjp2aXNpdChbJl0oY29u
c3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgIHRzIDw8IGRpc3BsYXlMaXN0SXRl
bS5pdGVtVHlwZTsKKyAgICAgICAgdHMgPDwgZGlzcGxheUxpc3RJdGVtOworICAgIH0sIGl0ZW0p
OwogICAgIHJldHVybiB0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5k
ZXggN2YxOTExMjc0ZjZhZjQ1MGZmOTRjZmJkMDRjMDQ0NjdlYWM1MDQ2NC4uZTQxMTk1MDk5ZTg5
NzVkMGYzNTA3NjQ1NTk5M2E5MmMxYTgwMjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCkBAIC0yNiwxMSArMjYsMTQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVk
ZSAiRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0
ZW1CdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgog
I2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVk
ZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmgiCkBAIC0zOCw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGV4dFN0cmVhbTsKQEAgLTI2OCw3ICsy
NzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxTZXRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2Uq
IGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0
aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1h
Z2UpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBQYXR0ZXJuRGF0YSB7CkBAIC05MDIs
NyArOTA2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0
ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRy
dWU7CiAKLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSB7
IHJldHVybiBtX2ZvbnRJZGVudGlmaWVyOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGZvbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQog
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
bEFuY2hvcjsgfQogICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBt
X2xvY2FsQW5jaG9yOyB9CiAgICAgY29uc3QgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4m
IGdseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzOyB9CkBAIC0yMjQ3LDcgKzIyNTEsOTYg
QEAgcHJpdmF0ZToKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogfTsKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7
Cit1c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBWYXJpYW50PAorICAgIFNhdmUsCisgICAgUmVzdG9y
ZSwKKyAgICBUcmFuc2xhdGUsCisgICAgUm90YXRlLAorICAgIFNjYWxlLAorICAgIFNldENUTSwK
KyAgICBDb25jYXRlbmF0ZUNUTSwKKyAgICBTZXRJbmxpbmVGaWxsR3JhZGllbnQsCisgICAgU2V0
SW5saW5lRmlsbENvbG9yLAorICAgIFNldElubGluZVN0cm9rZUNvbG9yLAorICAgIFNldFN0cm9r
ZVRoaWNrbmVzcywKKyAgICBTZXRTdGF0ZSwKKyAgICBTZXRMaW5lQ2FwLAorICAgIFNldExpbmVE
YXNoLAorICAgIFNldExpbmVKb2luLAorICAgIFNldE1pdGVyTGltaXQsCisgICAgQ2xlYXJTaGFk
b3csCisgICAgQ2xpcCwKKyAgICBDbGlwT3V0LAorICAgIENsaXBUb0ltYWdlQnVmZmVyLAorICAg
IENsaXBPdXRUb1BhdGgsCisgICAgQ2xpcFBhdGgsCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHMsCisgICAgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAorICAgIERyYXdHbHlwaHMsCisg
ICAgRHJhd0ltYWdlQnVmZmVyLAorICAgIERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGF0dGVy
biwKKyAgICBCZWdpblRyYW5zcGFyZW5jeUxheWVyLAorICAgIEVuZFRyYW5zcGFyZW5jeUxheWVy
LAorICAgIERyYXdSZWN0LAorICAgIERyYXdMaW5lLAorICAgIERyYXdMaW5lc0ZvclRleHQsCisg
ICAgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlciwKKyAgICBEcmF3RWxsaXBzZSwKKyAgICBEcmF3
UGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5nUGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5nUmVjdHMsCisg
ICAgRmlsbFJlY3QsCisgICAgRmlsbFJlY3RXaXRoQ29sb3IsCisgICAgRmlsbFJlY3RXaXRoR3Jh
ZGllbnQsCisgICAgRmlsbENvbXBvc2l0ZWRSZWN0LAorICAgIEZpbGxSb3VuZGVkUmVjdCwKKyAg
ICBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSwKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
KyAgICBGaWxsSW5saW5lUGF0aCwKKyNlbmRpZgorICAgIEZpbGxQYXRoLAorICAgIEZpbGxFbGxp
cHNlLAorICAgIFB1dEltYWdlRGF0YSwKKyAgICBQYWludEZyYW1lRm9yTWVkaWEsCisgICAgU3Ry
b2tlUmVjdCwKKyAgICBTdHJva2VMaW5lLAorI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQor
ICAgIFN0cm9rZUlubGluZVBhdGgsCisjZW5kaWYKKyAgICBTdHJva2VQYXRoLAorICAgIFN0cm9r
ZUVsbGlwc2UsCisgICAgQ2xlYXJSZWN0LAorI2lmIFVTRShDRykKKyAgICBBcHBseVN0cm9rZVBh
dHRlcm4sCisgICAgQXBwbHlGaWxsUGF0dGVybiwKKyNlbmRpZgorICAgIEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IsCisgICAgRmx1c2hDb250ZXh0LAorICAgIE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlciwKKyAgICBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+OworCitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
KTsKKworaW5saW5lIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0oY29uc3QgRGlzcGxheUxp
c3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pCit7CisgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oY29u
c3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdEl0
ZW0uaXNEcmF3aW5nSXRlbTsKKyAgICB9LCBkaXNwbGF5TGlzdEl0ZW0pOworfQorCitpbmxpbmUg
Y29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxh
eUxpc3RJdGVtKQoreworICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3Bs
YXlMaXN0SXRlbSkgeworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLml0ZW1UeXBlOwor
ICAgIH0sIGRpc3BsYXlMaXN0SXRlbSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29u
c3RleHByIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJl
dHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgc2l6ZW9mKFQpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xODc3ZTdiOWM0NDUzNDJkODBlNmYyMzRmMGZiOWU0ZjFmMGFmNmI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpJdGVy
YXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5k
IGltbWVkaWF0ZWx5TW92ZVRvRW5kKQorICAgIDogbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkK
K3sKKyAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6
OlllcykgeworICAgICAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKSkgeworICAgICAg
ICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNp
emUoKTsKKyAgICAgICAgICAgIG1fY3Vyc29yID0gZW5kT2ZDdXJyZW50QnVmZmVyKCk7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIoKTsKK30KKworI2lmIEFTU0VSVF9FTkFCTEVECitib29sIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6YXRFbmQoKSBjb25zdAoreworICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBhdXRvKiBpdGVtcyA9IGl0ZW1CdWZmZXIo
KTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gZW5k
Q3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5O
dW1iZXJPZkJ5dGVzOworICAgIHJldHVybiBtX2N1cnNvciA9PSBlbmRDdXJzb3I7Cit9CisjZW5k
aWYKKworYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9w
dGlvbmFsPFZhbHVlPgoreworICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgQVNTRVJUKCFtX2N1
cnJlbnRJdGVtSW5mbyk7CisKKyAgICBhdXRvIGN1cnJlbnRJdGVtSW5mbyA9IGN1cnJlbnRJdGVt
KCk7CisgICAgaWYgKCFjdXJyZW50SXRlbUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBtX2N1cnJlbnRJdGVtSW5mbyA9IHt7IGN1cnJlbnRJdGVtSW5mby0+c2l6ZUlu
QnVmZmVyLCBjdXJyZW50SXRlbUluZm8tPmlzRHJhd2luZ0l0ZW0gfX07CisKKyAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGN1cnJlbnRFeHRlbnQ7CisgICAgaWYgKGN1cnJlbnRJdGVtSW5mby0+aXNE
cmF3aW5nSXRlbSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50cy5pc0VtcHR5
KCkpCisgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1F
eHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZShjdXJy
ZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSksIFdURk1vdmUoY3VycmVudEV4dGVudCksIGN1
cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyIH19OworfQorCit2b2lkIERpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6b3BlcmF0b3IrKygpCit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBBU1NF
UlQobV9jdXJyZW50SXRlbUluZm8pOworCisgICAgaWYgKG1fY3VycmVudEl0ZW1JbmZvLT5pc0Ry
YXdpbmdJdGVtKQorICAgICAgICArK21fZHJhd2luZ0l0ZW1JbmRleDsKKworICAgIG1fY3Vyc29y
ICs9IG1fY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXI7CisKKyAgICBpZiAobV9jdXJzb3Ig
PT0gZW5kT2ZDdXJyZW50QnVmZmVyKCkgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1
ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKKyAgICAgICAgbV9yZWFkT25seUJ1
ZmZlckluZGV4Kys7CisgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7
CisgICAgfQorCisgICAgbV9jdXJyZW50SXRlbUluZm8gPSB7IH07Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFz
SXNWYWxpZCA9IGZhbHNlOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25z
dGV4cHIgYm9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZh
bDxUPigpLmlzVmFsaWQoKSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Citz
dGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4s
IGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVtJiBpdGVtKQor
eworICAgIHJldHVybiBpdGVtLmlzVmFsaWQoKTsKK30KKwordGVtcGxhdGUgPHN0ZDo6c2l6ZV90
IEk+CitpbmxpbmUgYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkgY29u
c3QgLT4gT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1bHQ+Cit7CisgICAgLy8gV2UgY2FuJ3QgdXNl
IGVhcmx5LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1c2Ugb2YgdGVtcGxhdGUgZXhwYW5zaW9uIGlu
IHRoZSBjb21waWxlci4KKyAgICAvLyBEb2luZyBzbyB3b3VsZCBlaXRoZXIgQSkgYnJlYWsgdGhl
IFdlYktpdCBzdHlsZSBydWxlIGFib3V0IGRvaW5nICJpZiAoKSB7IHJldHVybjsgfSByZXR1cm47
IiBpbnN0ZWFkIG9mICJpZiAoKSB7IHJldHVybjsgfSBlbHNlIHsgcmV0dXJuOyB9IgorICAgIC8v
IG9yIEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5l
cmF0aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIGlm
IGNvbnN0ZXhwciAoSSA8IFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0SXRlbT46OnZhbHVl
KSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0
ZXJuYXRpdmVfdDxJLCBEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIGNvbnN0IGF1dG8qIGVu
ZE9mQ3VycmVudEJ1ZmZlciA9IHRoaXMtPmVuZE9mQ3VycmVudEJ1ZmZlcigpOworCisgICAgICAg
IGlmIChtX2N1cnNvciArIDEgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJ
dGVtVHlwZT4obV9jdXJzb3JbMF0pOworICAgICAgICBpZiAoaXRlbVR5cGUgIT0gRGlzcGxheUxp
c3RJdGVtVHlwZTo6aXRlbVR5cGUpCisgICAgICAgICAgICByZXR1cm4gY3VycmVudEl0ZW08SSAr
IDE+KCk7CisKKyAgICAgICAgaWYgKERpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5saW5lSXRlbSkg
eworICAgICAgICAgICAgaWYgKG1fY3Vyc29yICsgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzPERpc3BsYXlMaXN0SXRlbVR5cGU+KCkgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGl0
ZW0gPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBEaXNwbGF5TGlzdEl0ZW1UeXBlKj4obV9jdXJz
b3IgKyBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZChpdGVtKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgc3RkOjpz
aXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBzaXplb2YodWludDY0X3QpICsgcm91bmRV
cFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5
cGUpKTsKKyAgICAgICAgICAgIHJldHVybiB7eyBpdGVtLCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZl
ciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9fTsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1CdWZmZXIoKS0+bV9yZWFkaW5nQ2xpZW50OworICAg
ICAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgaWYgKG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCkgPiBlbmRPZkN1cnJlbnRC
dWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1dG8g
ZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07Cisg
ICAgICAgIGNvbnN0IGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVp
bnQ2NF90KTsKKyAgICAgICAgaWYgKHN0YXJ0T2ZEYXRhICsgZGF0YUxlbmd0aCA+IGVuZE9mQ3Vy
cmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
YXV0byBpdGVtID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBp
dGVtVHlwZSk7CisgICAgICAgIGlmICghaXRlbSB8fCAhaXNWYWxpZChpdGVtLnZhbHVlKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgc3RkOjpzaXplX3QgY3Vy
cmVudEl0ZW1TaXplSW5CdWZmZXIgPSAgMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9N
dWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
IHt7IFdURk1vdmUoaXRlbS52YWx1ZSgpKSwgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsIERpc3Bs
YXlMaXN0SXRlbVR5cGU6OmlzRHJhd2luZ0l0ZW0gfX07CisgICAgfQorCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKwordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVDdXJzb3JU
b1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCkKK3sKKyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigp
OworICAgIGlmICghaXRlbXMpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbnVtYmVyT2ZS
ZWFkT25seUJ1ZmZlcnMgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOworICAgIGlm
IChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAg
ICAgICBhdXRvJiBjdXJyZW50QnVmZmVySGFuZGxlID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJz
W21fcmVhZE9ubHlCdWZmZXJJbmRleF07CisgICAgICAgIG1fY3Vyc29yID0gY3VycmVudEJ1ZmZl
ckhhbmRsZS5kYXRhOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3JlYWRPbmx5QnVm
ZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOworICAgICAgICBtX2N1cnNvciA9
IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGE7CisgICAgfQorfQorCit1aW50OF90KiBEaXNw
bGF5TGlzdDo6SXRlcmF0b3I6OmVuZE9mQ3VycmVudEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgYXV0
byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBBU1NFUlQoaXRlbXMpOworCisgICAgYXV0byBu
dW1iZXJPZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7
CisgICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJz
KSB7CisgICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25s
eUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRC
dWZmZXJIYW5kbGUuZGF0YSArIGN1cnJlbnRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7CisgICAgfQor
CisgICAgQVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVm
ZmVycyk7CisgICAgcmV0dXJuIGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+
bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhhMjZhYTJlMjU2MTlmYWZiMzkxMDk0NWFjYTMy
NTRmMDFjYTg2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKQEAgLTAsMCArMSw4MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0
ZW1zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisK
K2NsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBJ
bW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKKyAgICBJdGVyYXRvcihjb25zdCBEaXNw
bGF5TGlzdCYsIEltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5v
KTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJu
ICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90
aGVyLm1fY3Vyc29yOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhl
cikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG9wZXJhdG9yKysoKTsKKworICAgIHN0cnVjdCBWYWx1ZSB7CisgICAgICAgIERpc3BsYXlMaXN0
SXRlbSBpdGVtOworICAgICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGV4dGVudDsKKyAgICAgICAg
c2l6ZV90IGl0ZW1TaXplSW5CdWZmZXIgeyAwIH07CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgQ3VycmVudEl0ZW1SZXN1bHQgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gZGlzcGxh
eUxpc3RJdGVtOworICAgICAgICBzdGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJv
b2wgaXNEcmF3aW5nSXRlbTsKKyAgICB9OworICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBJID0g
MD4KKyAgICBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4gY3VycmVudEl0ZW0oKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIoKTsKKyAgICB1aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKKworI2lmIEFT
U0VSVF9FTkFCTEVECisgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCisKKyAgICBJdGVt
QnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVm
ZmVySWZFeGlzdHMoKTsgfQorCisgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7
CisgICAgc3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CisgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJ
bkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAgbXV0YWJs
ZSBPcHRpb25hbDxDdXJyZW50SXRlbUluZm8+IG1fY3VycmVudEl0ZW1JbmZvOworICAgIHVpbnQ4
X3QqIG1fY3Vyc29yIHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3JlYWRPbmx5QnVmZmVySW5k
ZXggeyAwIH07CisgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAgfTsKK307CisKK30K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAxMGQ5NWQ2
M2IwOGM3N2Y3Zjg1YzNkM2E3OTYwZWY1NmY5YzM5NDRmLi5lNTI4YTM1ZmZlMTg0NmJiN2ZlODY0
NmE2NWI1ZDJiMDM4MmMzMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC0xMTYsMjYgKzExNiwxNyBAQCB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNo
YW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsCiAgICAg
ICAgIGFwcGVuZDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCpjaGFuZ2VzLm1fc3RhdGUuZmlsbEdy
YWRpZW50LCBjaGFuZ2VzLm1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogfQog
Ci12b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSB0eXBlKQotewot
ICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT53aWxsQXBwZW5kSXRlbU9m
VHlwZSh0eXBlKTsKLQotICAgIGlmIChpc0RyYXdpbmdJdGVtKHR5cGUpCi0jaWYgVVNFKENHKQot
ICAgICAgICB8fCB0eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4gfHwgdHlwZSA9
PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlcyA9IGN1cnJlbnRTdGF0ZSgp
LnN0YXRlQ2hhbmdlOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncyBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5jaGFuZ2VzRnJvbVN0YXRl
KGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwotICAgICAgICBpZiAoY2hhbmdlc0Zy
b21MYXN0U3RhdGUpIHsKLSAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMs
IHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkp
OwotICAgICAgICAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0YXRlQ2hhbmdlcywgY2hhbmdl
c0Zyb21MYXN0U3RhdGUpOwotICAgICAgICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3Mg
PSB7IH07Ci0gICAgICAgICAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3Rh
dGVDaGFuZ2VzLm1fc3RhdGU7Ci0gICAgICAgIH0KLSAgICAgICAgY3VycmVudFN0YXRlKCkud2Fz
VXNlZEZvckRyYXdpbmcgPSB0cnVlOwordm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZERyYXdpbmdJ
dGVtKCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2VzID0g
Y3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2U7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlc0Zyb21MYXN0U3RhdGUgPSBzdGF0ZUNoYW5nZXMuY2hhbmdl
c0Zyb21TdGF0ZShjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKKyAgICBpZiAoY2hh
bmdlc0Zyb21MYXN0U3RhdGUpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0
cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRl
KSk7CisgICAgICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZUNoYW5nZXMsIGNoYW5nZXNG
cm9tTGFzdFN0YXRlKTsKKyAgICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07
CisgICAgICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMu
bV9zdGF0ZTsKICAgICB9CisgICAgY3VycmVudFN0YXRlKCkud2FzVXNlZEZvckRyYXdpbmcgPSB0
cnVlOwogfQogCiB2b2lkIFJlY29yZGVyOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZs
YWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTdiNGEwN2Zj
Y2M4N2RlYTZkZWEyNTRhNWI3NmNkYmRlOGM0MTZjNi4uOWQ1MDIxMDIzNDIwNDJkZGNiODY3Nzc4
NzgyMGI1ZTg2OGJiYmJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBj
bGFzcy4uLiBBcmdzPgogICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAg
ICAgICAgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoVDo6aXRlbVR5cGUpOworICAgICAgICB3aWxsQXBw
ZW5kSXRlbU9mVHlwZTxUPigpOwogICAgICAgICBtX2Rpc3BsYXlMaXN0LmFwcGVuZDxUPihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoVDo6aXNE
cmF3aW5nSXRlbSkgewpAQCAtMTcxLDcgKzE3MSwyMSBAQCBwcml2YXRlOgogICAgICAgICB9CiAg
ICAgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVt
VHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCB3aWxsQXBwZW5kSXRl
bU9mVHlwZSgpCisgICAgeworICAgICAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgICAgIG1f
ZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKTsKKworICAgICAgICBp
ZiAoVDo6aXNEcmF3aW5nSXRlbQorI2lmIFVTRShDRykKKyAgICAgICAgICAgIHx8IFQ6Oml0ZW1U
eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4gfHwgVDo6aXRlbVR5cGUgPT0gSXRl
bVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybgorI2VuZGlmCisgICAgICAgICkKKyAgICAgICAgICAg
IHdpbGxBcHBlbmREcmF3aW5nSXRlbSgpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2lsbEFwcGVuZERyYXdpbmdJdGVtKCk7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CmluZGV4IGQxNzM3YTI3OWMzOTdlMDkwOTNkMTM4NDMzZGIzODQ3ZDZmNDc0OTIuLmUzMmUwNjE5
NzdlYzZiODA5NWYzZTY1OTZhNjgyMzE2ZWJkZGFhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVwbGF5ZXIuaCIKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJE
aXNwbGF5TGlzdEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTUy
LDkgKzUzLDggQEAgR3JhcGhpY3NDb250ZXh0JiBSZXBsYXllcjo6Y29udGV4dCgpIGNvbnN0CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRs
ZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IFQmIGltYWdlQnVmZmVySXRl
bSkKIHsKLSAgICBhdXRvJiBpbWFnZUJ1ZmZlckl0ZW0gPSBpdGVtLmdldDxUPigpOwogICAgIGF1
dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gaW1hZ2VCdWZmZXJJdGVtLmltYWdlQnVmZmVySWRlbnRp
ZmllcigpOwogICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGltYWdlQnVmZmVycy5nZXQocmVz
b3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBpbWFnZUJ1ZmZlckl0ZW0uYXBwbHkoY29udGV4
dCwgKmltYWdlQnVmZmVyKTsKQEAgLTY0LDkgKzY0LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBo
aWMKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVt
SGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgY29uc3QgVCYgbmF0aXZlSW1h
Z2VJdGVtKQogewotICAgIGF1dG8mIG5hdGl2ZUltYWdlSXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAg
ICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBuYXRpdmVJbWFnZUl0ZW0uaW1hZ2VJZGVudGlm
aWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlk
ZW50aWZpZXIpKSB7CiAgICAgICAgIG5hdGl2ZUltYWdlSXRlbS5hcHBseShjb250ZXh0LCAqaW1h
Z2UpOwpAQCAtNzUsMTAgKzc0LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWMKICAgICByZXR1
cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhh
bmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIGNvbnN0IFNldFN0YXRlJiBzZXRTdGF0
ZUl0ZW0pCiB7Ci0gICAgYXV0byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7
Ci0KICAgICBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlID0gbnVsbHB0cjsKICAgICBO
YXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CiAKQEAgLTk5LDkgKzk2LDgg
QEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGlu
ZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJ
dGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNl
TWFwJiBmb250cywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBjb25zdCBUJiBm
b250SXRlbSkKIHsKLSAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0
byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwogICAgIGlm
IChhdXRvKiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAg
Zm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwpAQCAtMTEwLDY4ICsxMDYsNjggQEAgaW5s
aW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9u
dEl0ZW0oR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQog
Ci1zdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVt
KQorZXh0ZXJuIEdyYXBoaWNzQ29udGV4dCYgc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4
dDsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0YXRpYyBpbmxpbmUgY29u
c3RleHByIGJvb2wgSGFzQXBwbHkgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzQXBwbHk8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUo
c3RkOjpkZWNsdmFsPFQ+KCkuYXBwbHkoc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dCkp
Pj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHkoY29uc3Qg
SXRlbSYsIEdyYXBoaWNzQ29udGV4dCYpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+
CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQXBwbHk8SXRlbT4s
IHZvaWQ+IGFwcGx5KGNvbnN0IEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0KQoreworICAgIHJldHVybiBpdGVtLmFwcGx5KGdyYXBoaWNzQ29udGV4dCk7Cit9CisK
K2F1dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIC0+
IEFwcGx5SXRlbVJlc3VsdAogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFw
cGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0IH07CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKKyAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBEcmF3SW1hZ2VCdWZm
ZXImIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VC
dWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8Q2xpcFRv
SW1hZ2VCdWZmZXI+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0
ZW0pIC0+IHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VC
dWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd05h
dGl2ZUltYWdlPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkg
LT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4oY29u
dGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9w
UmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7
Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBs
eUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCisgICAgfSwg
WyZdKGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAg
ICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJ
bWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQog
ICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAg
IHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYg
KGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihj
b250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd0ds
eXBocyYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29u
dGV4dCgpLCBtX2ZvbnRzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlS
ZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7CisgICAgfSwg
WyZdKGNvbnN0IFNldFN0YXRlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBp
ZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0
ZW0oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4g
eyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmICht
X21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246
OkludmFsaWRJdGVtLCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBp
dGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAgbV9tYXNrSW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlwSXRlbS5k
ZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRleHQpOwog
ICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIFdURjo6bnVsbG9wdCB9OwogICAgICAgICByZXR1
cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVt
LmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAg
ICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBj
bGlwSXRlbSA9IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAg
bV9jb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0u
ZGVzdGluYXRpb24oKSk7CiAgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAg
ICBpdGVtLmFwcGx5KGNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQgfTsKKyAgICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgLT4gQXBwbHlJdGVtUmVz
dWx0IHsKKyAgICAgICAgYXBwbHkoaXRlbSwgY29udGV4dCgpKTsKKyAgICAgICAgcmV0dXJuIHsg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2
aXNpdCh2aXNpdG9yLCBpdGVtKTsKIH0KIAogUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXko
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QpCkBAIC0x
ODcsMjggKzE4MywzMCBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgIHNpemVfdCBpID0g
MDsKICNlbmRpZgogICAgIFJlcGxheVJlc3VsdCByZXN1bHQ7Ci0gICAgZm9yIChhdXRvIFtpdGVt
LCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogbV9kaXNwbGF5TGlzdCkgeworICAgIGZvciAo
Y29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogbV9kaXNwbGF5TGlzdCkgeworICAgICAgICBp
ZiAoIWRpc3BsYXlMaXN0SXRlbSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3Bw
aW5nID0gU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW07CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXpl
SW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisKICAgICAgICAgaWYgKCFpbml0
aWFsQ2xpcC5pc1plcm8oKSAmJiBleHRlbnQgJiYgIWV4dGVudC0+aW50ZXJzZWN0cyhpbml0aWFs
Q2xpcCkpIHsKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVh
bSA8PCAic2tpcHBpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwogICAgICAgICAgICAgcmVz
dWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghaXRlbSkgewotICAgICAgICAgICAg
cmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW07
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIExPR19XSVRIX1NUUkVB
TShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0
ZW0pOwogCi0gICAgICAgIGlmIChpdGVtLT5pczxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXI+KCkpIHsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKSkgewogICAgICAgICAg
ICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAg
ICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyOwotICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlv
bkltYWdlQnVmZmVyID0gaXRlbS0+Z2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcj4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgICAgICByZXN1bHQubmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXIgPSBXVEY6OmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1h
Z2VCdWZmZXI+KGl0ZW0pLmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGF1dG8gW3JlYXNvbkZvclN0b3BwaW5nLCBtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyXSA9IGFwcGx5SXRlbSgqaXRlbSk7IHJlYXNvbkZvclN0b3BwaW5n
KSB7CisgICAgICAgIGlmIChhdXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllcl0gPSBhcHBseUl0ZW0oaXRlbSk7IHJlYXNvbkZvclN0b3BwaW5nKSB7
CiAgICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqcmVhc29uRm9yU3RvcHBp
bmc7CiAgICAgICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTIxNyw5ICsyMTUsOSBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShj
b25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAg
ICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKIAogICAgICAg
ICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewotICAgICAgICAgICAgcmVwbGF5TGlz
dC0+YXBwZW5kKCppdGVtKTsKLSAgICAgICAgICAgIGlmIChpdGVtLT5pc0RyYXdpbmdJdGVtKCkp
Ci0gICAgICAgICAgICAgICAgcmVwbGF5TGlzdC0+YWRkRHJhd2luZ0l0ZW1FeHRlbnQoV1RGTW92
ZShleHRlbnQpKTsKKyAgICAgICAgICAgIHJlcGxheUxpc3QtPmFwcGVuZChpdGVtKTsKKyAgICAg
ICAgICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQorICAgICAgICAgICAgICAgIHJlcGxheUxp
c3QtPmFkZERyYXdpbmdJdGVtRXh0ZW50KE9wdGlvbmFsPEZsb2F0UmVjdD4oZXh0ZW50KSk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmlu
ZGV4IDE4MWExMmIwZTUxOGU4ZGMyMWQzYjc0OWYyNzEwMWQyYTNlOTZmMzkuLjllMDM5MjVjNmRm
NWZkZDI0NTRjZWFhNzMxODE4ZjNjOWRiYzI2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02NiwxMiArNjYsMTMgQEAgcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBhcHBseShJdGVtSGFuZGxlLCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVy
biBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogICAgIAog
cHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKLSAgICBzdGQ6
OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAgICB1c2luZyBBcHBseUl0
ZW1SZXN1bHQgPSBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBs
eUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1f
Y29udGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVm
ZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXIuaAppbmRleCAwNmQ5NDNkOTdhOWI2NGY3MGExZTc3OTZkOTE1MGViOTdmODI5
NjM5Li5jZDUwNmEyOTA3MjU0YjIxYjFlMTdhMmI5YjAyNWJmZTY0MDYzNDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03NCwyOCArNzQsMjQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBh
cHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoaXRlbS5pczxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRv
JiBwdXRJbWFnZURhdGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dElt
YWdlRGF0YT4oKTsKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0o
Y29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YSYgcHV0SW1hZ2VEYXRhSXRl
bSkgewogICAgICAgICAgICAgcHV0SW1hZ2VEYXRhKHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3Jt
YXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURhdGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNS
ZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBvaW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVz
dEZvcm1hdCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKSkgewor
ICAgICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dCYg
Zmx1c2hDb250ZXh0KSB7CiAgICAgICAgICAgICBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1
c2hDb250ZXh0KCk7Ci0gICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IGZsdXNoQ29udGV4dC5pZGVudGlmaWVyKCk7CiAgICAgICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuZGlkRmx1c2goaWRlbnRpZmllciwgbV9yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKSB7Ci0gICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJ
ZGVudGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hh
bmdlSXRlbUJ1ZmZlcj4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyJiBtZXRhQ29tbWFu
ZENoYW5nZUl0ZW1CdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZp
ZXIgPSBtZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIuaWRlbnRpZmllcigpOwogICAgICAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKG5leHRC
dWZmZXJJZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgICAgIH0s
IFsmXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiAgICAgfQogCiAgICAg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCmluZGV4IGU0ZGRjM2QxNWFiMjU0YWZlYjgxNWRmMmU3YjQ1NzkwY2Q2
NjAyNWYuLjIxMzQ0MWRkYzVkZTc1MjQ5ZDcxZTdmMDU5NmM0YzFjNTRhOWUwZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTE0LDIwICsxMTQsMTggQEAgdWludDY0X3QgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVy
biBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5k
bGUgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorYm9vbCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjphcHBseU1lZGlhSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVt
JiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBpZiAoIWl0ZW0uaXM8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVG
b3JNZWRpYT4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYgbWVkaWFJdGVt
ID0gaXRlbS5nZXQ8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKTsKLSAgICBhdXRv
IHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKLSAgICBp
ZiAoIXBsYXllcikKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25z
dCBEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJiBtZWRpYUl0ZW0pIHsKKyAgICAgICAg
aWYgKGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5pZGVudGlmaWVyKCkp
KQorICAgICAgICAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJ
dGVtLmRlc3RpbmF0aW9uKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnRleHQu
cGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBpdGVt
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE4Miw3ICsxODAs
NyBAQCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1
Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAogICAgIGVsc2UKICAgICAgICAgcmVwbGF5ZXJE
ZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KCZk
ZXN0aW5hdGlvbik7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
IHsKKyAgICByZXR1cm4gRGlzcGxheUxpc3Q6OlJlcGxheWVyIHsKICAgICAgICAgZGVzdGluYXRp
b24uY29udGV4dCgpLAogICAgICAgICBkaXNwbGF5TGlzdCwKICAgICAgICAgJnJlbW90ZVJlc291
cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKSwKQEAgLTMxMSwxMiArMzA5LDEyIEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQ
cm9jZXNzV2FrZXVwTWVzCiAgICAgfQogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25JZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRl
bUJ1ZmZlclRvUmVhZChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllcikKIHsK
ICAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpoZWFkZXJTaXplKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vz
c1dha2V1cFJlYXNvbjo6VW5zcGVjaWZpZWQgfSwgV1RGOjpudWxsb3B0IH19OwogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEZvcm1hdCwgSW50UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8SW1hZ2VEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzI2LDcgKzMyNCw3IEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBJCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShpbWFnZURhdGEpKTsK
IH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJD
b3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0
aW9uIHByZXNlcnZlUmVzb2x1dGlvbiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKQEAgLTMzNiw3ICszMzQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERh
dGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcAogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUodXJsU3RyaW5nKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0zNDYsNyArMzQ0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW8KICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZvckltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZvckltYWdl
QnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0z
NTYsNyArMzU0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZv
ckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmMKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAg
LTM2NSwxOCArMzYzLDE4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVh
YmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nCiAgICAgICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoaWRl
bnRpZmllcik7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUltYWdlKFdlYkNv
cmU6OkJhY2tpbmdTdG9yZUNvcHk6OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgYXV0
byBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weTo6
RG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0gaW1hZ2VCdWZmZXItPmJhY2tlbmRT
aXplKCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0U2l6ZSA9IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246OlllcyA/IGJhY2tlbmRTaXplIDogaW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCk7CisgICAgICAgIGF1dG8gcmVzdWx0U2l6ZSA9IHByZXNlcnZlUmVz
b2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcyA/IGJhY2tlbmRTaXplIDogaW1hZ2VC
dWZmZXItPmxvZ2ljYWxTaXplKCk7CiAgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0U2l6ZSwgeyB9KTsKICAgICAgICAgaWYgKCFiaXRt
YXApCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgICAgIGlmICghY29udGV4dCkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgY29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgcmVz
dWx0U2l6ZSwgRmxvYXRSZWN0IHsgeyB9LCByZXN1bHRTaXplIH0sIEZsb2F0UmVjdCB7IHsgfSwg
YmFja2VuZFNpemUgfSwgeyBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvcjo6Q29weSB9KTsKKyAg
ICAgICAgY29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgcmVzdWx0U2l6ZSwgRmxvYXRS
ZWN0IHsgeyB9LCByZXN1bHRTaXplIH0sIEZsb2F0UmVjdCB7IHsgfSwgYmFja2VuZFNpemUgfSwg
eyBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSB9KTsKICAgICAgICAgYml0bWFwLT5jcmVhdGVIYW5k
bGUoaGFuZGxlKTsKICAgICB9KCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5k
bGUpKTsKQEAgLTQzNCwxMDEgKzQzMiwzMyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQgogICAg
ICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2Fr
ZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIAotT3B0aW9uYWw8RGlzcGxh
eUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKK3RlbXBsYXRl
IDxzdGQ6OnNpemVfdCBJID0gMD4KK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0SXRlbT4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkKIHsKLSAgICBzd2l0Y2ggKHR5cGUp
IHsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpDbGlwUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oZGF0YSwgbGVuZ3Ro
LCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdG
b2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6RHJhd0ZvY3VzUmluZ1JlY3RzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJu
IGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oZGF0YSwgbGVuZ3RoLCBo
YW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5l
c0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRy
YXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFu
ZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRp
b24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6
Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxDb21wb3Np
dGVkUmVjdD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpGaWxsUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3Jl
YXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oZGF0YSwgbGVuZ3RoLCBoYW5k
bGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0Pihk
YXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3Bs
YXlMaXN0OjpQdXRJbWFnZURhdGE+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJu
IGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0
ZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0U3RhdGU+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3Bs
YXlMaXN0OjpTdHJva2VQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBV
U0UoQ0cpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNl
bmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxh
eWVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlw
T3V0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVf
UEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0
aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1l
ZGlhOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0TGluZUNhcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGlu
ZUpvaW46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlSW5s
aW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VS
ZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6IHsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICAvLyBXZSBjYW4ndCB1c2Ug
ZWFybHktcmV0dXJuIHN0eWxlIGhlcmUgYmVjYXVzZSBvZiB0ZW1wbGF0ZSBleHBhbnNpb24gaW4g
dGhlIGNvbXBpbGVyLgorICAgIC8vIERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUg
V2ViS2l0IHN0eWxlIHJ1bGUgYWJvdXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsi
IGluc3RlYWQgb2YgImlmICgpIHsgcmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgLy8g
b3IgQikgY2F1c2UgdGhlIGNvbXBpbGVyIHRvIGluZmluaXRlbHkgcmVjdXJzZSB3aGVuIGdlbmVy
YXRpbmcgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgaWYg
Y29uc3RleHByIChJIDwgV1RGOjp2YXJpYW50X3NpemU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
SXRlbT46OnZhbHVlKSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6
OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJLCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjsK
KworICAgICAgICBpZiAodHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAg
ICAgICAgICAgIHJldHVybiBkZWNvZGVJdGVtPEkgKyAxPihkYXRhLCBsZW5ndGgsIHR5cGUpOwor
CisgICAgICAgIEFTU0VSVCghRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKTsKKyAg
ICAgICAgaWYgY29uc3RleHByICghRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKSB7
CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmds
ZU9iamVjdDxEaXNwbGF5TGlzdEl0ZW1UeXBlPihkYXRhLCBsZW5ndGgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0LnZhbHVlKCkpIH07CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAorT3B0aW9uYWw8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIFdlYktpdDo6ZGVjb2RlSXRlbShkYXRh
LCBsZW5ndGgsIHR5cGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDM5NDNkNTIxZDM2
OTNmYmQyY2VmMzZiNDdkMzQ5NmIxYzJkZjM2NTkuLmM5Y2M3YzA4NGZhZGNkYmYzYmI0YWMyOWNh
OTU5ZDhmMWE5ZTM3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1
cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKICAgICAvLyBSZW5kZXJpbmcgb3BlcmF0aW9u
cy4KLSAgICBib29sIGFwcGx5TWVkaWFJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKyAgICBib29sIGFwcGx5TWVkaWFJdGVt
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCiAgICAgdm9p
ZCBkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtODYsMTkgKzg2LDcgQEAg
cHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAg
ICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlOwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhh
bmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKLSAgICB7Ci0gICAg
ICAgIGlmIChhdXRvIGl0ZW0gPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxUPihk
YXRhLCBsZW5ndGgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2ViS2l0MiBzaG91bGQgbm90
IG5lZWQgdG8ga25vdyB0aGF0IHRoZSBmaXJzdCA4IGJ5dGVzIGF0IHRoZSBoYW5kbGUgYXJlIHJl
c2VydmVkIGZvciB0aGUgdHlwZS4KLSAgICAgICAgICAgIC8vIE5lZWQgdG8gZmlndXJlIG91dCBh
IHdheSB0byBrZWVwIHRoaXMga25vd2xlZGdlIHdpdGhpbiBkaXNwbGF5IGxpc3QgY29kZSBpbiBX
ZWJDb3JlLgotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRf
dCkpIFQoV1RGTW92ZSgqaXRlbSkpOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0
aW9uIH19OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQor
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJpZGU7CiAKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24p
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0
aWFsRGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZSYsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aAppbmRleCA4OTRkOWRkMTk4Y2FjNTIwZGQzYTQyNTdiNTA0Y2ExYzc4NGQ4ZmVmLi5mYzkzZGFj
YTYzZWY4ZWY1ZWQxZDc5Njk5YWZkMzZkMzViZDEwODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaApAQCAtMjk3LDk5ICsyOTcsMjAgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZUl0
ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSkgY29uc3Qgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgICAgICBy
ZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkNsaXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwT3V0
VG9QYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsaXBQYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xl
T2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQ
Qzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
Rm9jdXNSaW5nUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1Jp
bmdQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVu
Y29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3Rz
PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPigpKTsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHM6
Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3R2x5cGhzPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNv
ZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0Zv
clRleHQ+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0Pigp
KTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRo
OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29k
ZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0
ZWRSZWN0PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0
PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQ
YXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZpbGxQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5j
b2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdp
dGhDb2xvcj4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9y
PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxS
ZWN0V2l0aEdyYWRpZW50OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2Rl
U2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4o
aXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2lu
Z2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4o
aXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigp
KTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3Vu
ZGVkUmVjdDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9i
amVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihpdGVtLmdldDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PigpKTsKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgICAgIHJl
dHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VE
YXRhPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNl
dExpbmVEYXNoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xl
T2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oaXRlbS5nZXQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNldExpbmVEYXNoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6
RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0
ZT4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlPigpKTsKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAg
ICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlN0cm9rZVBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJv
a2VQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENHKQotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNl
bmRpZgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5U
cmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsaXBPdXQ6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0Zv
ckRvY3VtZW50TWFya2VyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNldENUTToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNr
bmVzczoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9r
ZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0Ogot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGluZToK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
fQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtSGVscGVyKGNvbnN0IFQmIGl0ZW0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKCFUOjppc0lubGluZUl0ZW0pCisgICAgICAgICAgICByZXR1cm4g
SVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8VD4oaXRlbSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0oY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSkgY29uc3Qgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlM
aXN0SXRlbSkgLT4gUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4geworICAgICAgICAgICAg
cmV0dXJuIGVuY29kZUl0ZW1IZWxwZXIoZGlzcGxheUxpc3RJdGVtKTsKKyAgICAgICAgfSwgaXRl
bSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFn
ZUJ1ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUxNzQ5YmIwMmM5NzVmZjVhZWQ2
OTllZDhmODU3NjIyMmI2MmEwNmQuLjFmM2RhMjRhYjVhYjEzMjY5OTBkYjk0N2JkZGY0YjJjZmJl
MzcwOWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMy0yMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWlncmF0ZSBEaXNwbGF5TGlz
dDo6SXRlcmF0b3IgdG8gdXNlIGEgVmFyaWFudCBpbnN0ZWFkIG9mIEl0ZW1IYW5kbGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzU2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6IE5vdyB0aGF0IGEgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgYW5kIEl0ZW1C
dWZmZXJXcml0aW5nQ2xpZW50IGFyZQorICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBmb3IgdXNp
bmcgbm9uLWlubGluZSBkaXNwbGF5IGxpc3QgaXRlbXMsIHNwZWNpZnkgdGhlbSBoZXJlIGluIHRo
ZSB0ZXN0LgorICAgICAgICAgICAgICAgIEFsc28sIG1pZ3JhdGUgZnJvbSBJdGVtSGFuZGxlIHRv
IERpc3BsYXlMaXN0SXRlbSBsaW5lLWJ5LWxpbmUuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6IE1pZ3JhdGUgZnJvbSBJdGVt
SGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbSBsaW5lLWJ5LWxpbmUuCisKIDIwMjEtMDMtMTkgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEN1c3RvbSBzY2hlbWUg
aGFuZGxlZCBvcmlnaW5zIHNob3VsZCBiZSBjb25zaWRlcmVkIHNlY3VyZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmlu
ZGV4IDFjZTE0NjI4Y2VkNWUwMDY0MjVkMmVjMjlmMWRlMGViNzFmZTEzNzQuLmQ4YjI2ZmJkOTdl
M2VkMmY4MjQyMjU3NWM2NGUwNjNiZmM1ZDMyMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3RJdGVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVyYXRv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnQuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewpAQCAtNTgsNyArNTksODggQEAgc3RhdGljIFBhdGggY3JlYXRlQ29tcGxleFBhdGgo
KQogCiBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQogeworICAgIFZlY3RvcjxG
aWxsUGF0aD4gZmlsbFBhdGhTdG9yYWdlOworICAgIFZlY3RvcjxGaWxsUmVjdFdpdGhHcmFkaWVu
dD4gZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlOworICAgIFZlY3RvcjxGaWxsUmVjdFdpdGhD
b2xvcj4gZmlsbFJlY3RXaXRoQ29sb3JTdG9yYWdlOworCisgICAgY2xhc3MgUmVhZGluZ0NsaWVu
dCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAg
ICBSZWFkaW5nQ2xpZW50KGNvbnN0IFZlY3RvcjxGaWxsUGF0aD4mIGZpbGxQYXRoU3RvcmFnZSwg
Y29uc3QgVmVjdG9yPEZpbGxSZWN0V2l0aEdyYWRpZW50PiYgZmlsbFJlY3RXaXRoR3JhZGllbnRT
dG9yYWdlLCBjb25zdCBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBmaWxsUmVjdFdpdGhDb2xv
clN0b3JhZ2UpCisgICAgICAgICAgICA6IG1fZmlsbFBhdGhTdG9yYWdlKGZpbGxQYXRoU3RvcmFn
ZSkKKyAgICAgICAgICAgICwgbV9maWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UoZmlsbFJlY3RX
aXRoR3JhZGllbnRTdG9yYWdlKQorICAgICAgICAgICAgLCBtX2ZpbGxSZWN0V2l0aENvbG9yU3Rv
cmFnZShmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNF
RF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHR5cGUg
PT0gSXRlbVR5cGU6OkZpbGxQYXRoKQorICAgICAgICAgICAgICAgIHJldHVybiB7IERpc3BsYXlM
aXN0SXRlbShtX2ZpbGxQYXRoU3RvcmFnZVsqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3Qq
PihkYXRhKV0pIH07CisgICAgICAgICAgICBpZiAodHlwZSA9PSBJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoR3JhZGllbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgRGlzcGxheUxpc3RJdGVtKG1f
ZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlWypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVf
dCo+KGRhdGEpXSkgfTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhDb2xvcikKKyAgICAgICAgICAgICAgICByZXR1cm4geyBEaXNwbGF5TGlzdEl0ZW0obV9m
aWxsUmVjdFdpdGhDb2xvclN0b3JhZ2VbKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4o
ZGF0YSldKSB9OworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgVmVjdG9y
PEZpbGxQYXRoPiYgbV9maWxsUGF0aFN0b3JhZ2U7CisgICAgICAgIGNvbnN0IFZlY3RvcjxGaWxs
UmVjdFdpdGhHcmFkaWVudD4mIG1fZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlOworICAgICAg
ICBjb25zdCBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBtX2ZpbGxSZWN0V2l0aENvbG9yU3Rv
cmFnZTsKKyAgICB9OworCisgICAgY2xhc3MgV3JpdGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVm
ZmVyV3JpdGluZ0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBXcml0aW5nQ2xpZW50KFZl
Y3RvcjxGaWxsUGF0aD4mIGZpbGxQYXRoU3RvcmFnZSwgVmVjdG9yPEZpbGxSZWN0V2l0aEdyYWRp
ZW50PiYgZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlLCBWZWN0b3I8RmlsbFJlY3RXaXRoQ29s
b3I+JiBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAgICAgICAgICA6IG1fZmlsbFBhdGhT
dG9yYWdlKGZpbGxQYXRoU3RvcmFnZSkKKyAgICAgICAgICAgICwgbV9maWxsUmVjdFdpdGhHcmFk
aWVudFN0b3JhZ2UoZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlKQorICAgICAgICAgICAgLCBt
X2ZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZShmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSXRlbUJ1ZmZlckhhbmRs
ZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgZmluYWwKKyAgICAgICAgeworICAg
ICAgICAgICAgRVhQRUNUX0xFKGNhcGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOwor
ICAgICAgICAgICAgcmV0dXJuIHsgSXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIGds
b2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OworICAgICAgICB9CisK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mIGl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEZpbGxQYXRoPihpdGVtKSkgeworICAgICAgICAgICAgICAgIHNp
emVfdCBpbmRleCA9IG1fZmlsbFBhdGhTdG9yYWdlLnNpemUoKTsKKyAgICAgICAgICAgICAgICBt
X2ZpbGxQYXRoU3RvcmFnZS5hcHBlbmQoV1RGOjpnZXQ8RmlsbFBhdGg+KGl0ZW0pKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oJmluZGV4KSwgc2l6ZW9mKGluZGV4KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxsUmVjdFdpdGhHcmFkaWVudD4oaXRlbSkp
IHsKKyAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXggPSBtX2ZpbGxSZWN0V2l0aEdyYWRpZW50
U3RvcmFnZS5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9maWxsUmVjdFdpdGhHcmFkaWVudFN0
b3JhZ2UuYXBwZW5kKFdURjo6Z2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PihpdGVtKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KCZpbmRleCksIHNpemVvZihpbmRleCkpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsbFJlY3RXaXRoQ29sb3I+KGl0ZW0pKSB7
CisgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbV9maWxsUmVjdFdpdGhDb2xvclN0b3Jh
Z2Uuc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fZmlsbFJlY3RXaXRoQ29sb3JTdG9yYWdlLmFw
cGVuZChXVEY6OmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oaXRlbSkpOworICAgICAgICAgICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPigmaW5k
ZXgpLCBzaXplb2YoaW5kZXgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVf
dCwgRGlkQ2hhbmdlSXRlbUJ1ZmZlcikgZmluYWwKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgVmVjdG9yPEZpbGxQYXRoPiYgbV9maWxsUGF0aFN0b3JhZ2U7CisgICAgICAgIFZlY3Rv
cjxGaWxsUmVjdFdpdGhHcmFkaWVudD4mIG1fZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlOwor
ICAgICAgICBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBtX2ZpbGxSZWN0V2l0aENvbG9yU3Rv
cmFnZTsKKyAgICB9OworCiAgICAgRGlzcGxheUxpc3QgbGlzdDsKKyAgICBXcml0aW5nQ2xpZW50
IHdyaXRpbmdDbGllbnQoZmlsbFBhdGhTdG9yYWdlLCBmaWxsUmVjdFdpdGhHcmFkaWVudFN0b3Jh
Z2UsIGZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZSk7CisgICAgUmVhZGluZ0NsaWVudCByZWFkaW5n
Q2xpZW50KGZpbGxQYXRoU3RvcmFnZSwgZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlLCBmaWxs
UmVjdFdpdGhDb2xvclN0b3JhZ2UpOworICAgIGxpc3Quc2V0SXRlbUJ1ZmZlckNsaWVudCgmd3Jp
dGluZ0NsaWVudCk7CisgICAgbGlzdC5zZXRJdGVtQnVmZmVyQ2xpZW50KCZyZWFkaW5nQ2xpZW50
KTsKIAogICAgIEVYUEVDVF9UUlVFKGxpc3QuaXNFbXB0eSgpKTsKIApAQCAtNzgsNTYgKzE2MCwz
NSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQogICAgIEVYUEVDVF9GQUxT
RShsaXN0LmlzRW1wdHkoKSk7CiAKICAgICBib29sIG9ic2VydmVkVW5leHBlY3RlZEl0ZW0gPSBm
YWxzZTsKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IGxpc3QpIHsKLSAg
ICAgICAgc3dpdGNoIChoYW5kbGUtPnR5cGUoKSkgewotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUtPmlz
RHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPFNldFN0
cm9rZVRoaWNrbmVzcz4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8
U2V0U3Ryb2tlVGhpY2tuZXNzPigpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJ
dGVtIDogbGlzdCkgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50LCBzaXplXSA9
IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworICAgICAgICAKKyAgICAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBpdGVtKSB7
CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAg
ICAgIEVYUEVDVF9FUShpdGVtLnRoaWNrbmVzcygpLCAxLjUpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHsKLSAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVY
UEVDVF9UUlVFKGhhbmRsZS0+aXM8RmlsbFBhdGg+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRl
bSA9IGhhbmRsZS0+Z2V0PEZpbGxQYXRoPigpOworICAgICAgICB9LCBbJl0oY29uc3QgRmlsbFBh
dGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7
CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5wYXRoKCkucGxhdGZvcm1QYXRoKCksIHBhdGgu
cGxhdGZvcm1QYXRoKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsKLSAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGhhbmRsZS0+aXM8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAgICAgICAgICAgYXV0byYg
aXRlbSA9IGhhbmRsZS0+Z2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpOworICAgICAgICB9LCBb
Jl0oY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5y
ZWN0KCksIEZsb2F0UmVjdCgxLiwgMS4sIDEwLiwgMTAuKSk7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEoJml0ZW0uZ3JhZGllbnQoKSwgZ3JhZGllbnQucHRyKCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOiB7
Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLT5pc0RyYXdpbmdJdGVtKCkpOwotICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwot
ICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PFNldElubGluZUZpbGxDb2xvcj4o
KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgaXRlbSkgeworICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBF
WFBFQ1RfRVEoaXRlbS5jb2xvcigpLCBDb2xvcjo6cmVkKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRs
ZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8
U3Ryb2tlSW5saW5lUGF0aD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5n
ZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFN0cm9rZUlubGlu
ZVBhdGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRl
bSk7CiAgICAgICAgICAgICBjb25zdCBhdXRvIHBhdGggPSBpdGVtLnBhdGgoKTsKICAgICAgICAg
ICAgIGF1dG8mIGxpbmUgPSBwYXRoLmlubGluZURhdGE8TGluZURhdGE+KCk7CiAgICAgICAgICAg
ICBFWFBFQ1RfRVEobGluZS5zdGFydCwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICBF
WFBFQ1RfRVEobGluZS5lbmQsIEZsb2F0UG9pbnQoMTAuLCAxNS4pKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1h
bmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6
IHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciYpIHsK
KyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mKSB7CiAgICAgICAgICAgICBvYnNlcnZlZFVuZXhw
ZWN0ZWRJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiAgICAg
fQogCiAgICAgRVhQRUNUX0ZBTFNFKG9ic2VydmVkVW5leHBlY3RlZEl0ZW0pOwpAQCAtMTQ3LDEx
ICsyMDgsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKIAogICAgIGxp
c3QuYXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihGbG9hdFJlY3QgeyAwLCAwLCAxMDAsIDEwMCB9
LCBDb2xvcjo6YmxhY2spOwogCi0gICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudCwgc2l6ZV0g
OiBsaXN0KSB7Ci0gICAgICAgIEVYUEVDVF9FUShoYW5kbGUtPnR5cGUoKSwgSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxGaWxsUmVj
dFdpdGhDb2xvcj4oKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBs
aXN0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsbFJl
Y3RXaXRoQ29sb3I+KGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkpOworICAgICAgICBjb25zdCBhdXRv
JiBpdGVtID0gV1RGOjpnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KGRpc3BsYXlMaXN0SXRlbS0+aXRl
bSk7CisgICAgICAgIEVYUEVDVF9FUShpdGVtLml0ZW1UeXBlLCBJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoQ29sb3IpOwogCi0gICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxGaWxsUmVjdFdp
dGhDb2xvcj4oKTsKICAgICAgICAgRVhQRUNUX0VRKCppdGVtLmNvbG9yKCkudHJ5R2V0QXNTUkdC
QUJ5dGVzKCksIENvbG9yOjpibGFjayk7CiAgICAgICAgIEVYUEVDVF9FUShpdGVtLnJlY3QoKSwg
RmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAgfQpAQCAtMTczLDEyICsyMzQsMTEgQEAg
VEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRl
bVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIGZpbmFsCisgICAgICAgIE9wdGlv
bmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUpIGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6U3Ryb2tlUGF0
aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aCwgc2l6ZW9mKHNpemVfdCkpOwot
ICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFN0cm9r
ZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pOwot
ICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19OworICAgICAgICAgICAgcmV0
dXJuIHsgRGlzcGxheUxpc3RJdGVtKFN0cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBzaXplX3QqPihkYXRhKV0pKSB9OwogICAgICAgICB9CiAKICAgICAgICAgY29uc3Qg
VmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1zOwpAQCAtMTk0LDE0ICsyNTQsMTQgQEAgVEVTVChE
aXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgIHByaXZhdGU6CiAgICAgICAg
IEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIGZpbmFs
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9MVChjYXBhY2l0eSwgZ2xvYmFsSXRlbUJ1
ZmZlckNhcGFjaXR5KTsKKyAgICAgICAgICAgIEVYUEVDVF9MRShjYXBhY2l0eSwgZ2xvYmFsSXRl
bUJ1ZmZlckNhcGFjaXR5KTsKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50
aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJdGVtSGFu
ZGxlIGhhbmRsZSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5j
b2RlSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAg
IHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKLSAgICAgICAgICAg
IG1faXRlbXMuYXBwZW5kKGhhbmRsZS5nZXQ8U3Ryb2tlUGF0aD4oKSk7CisgICAgICAgICAgICBt
X2l0ZW1zLmFwcGVuZChXVEY6OmdldDxTdHJva2VQYXRoPihpdGVtKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmlu
ZGV4KSwgc2l6ZW9mKHNpemVfdCkpOwogICAgICAgICB9CiAKQEAgLTIyNSw4ICsyODUsOCBAQCBU
RVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgc2hhbGxvd0NvcHku
c2V0SXRlbUJ1ZmZlckNsaWVudCgmcmVhZGVyKTsKIAogICAgIFZlY3RvcjxJdGVtVHlwZT4gaXRl
bVR5cGVzOwotICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnQsIHNpemVdIDogc2hhbGxvd0Nv
cHkpCi0gICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoaGFuZGxlLT50eXBlKCkpOworICAgIGZvciAo
Y29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogc2hhbGxvd0NvcHkpCisgICAgICAgIGl0ZW1U
eXBlcy5hcHBlbmQoaXRlbVR5cGUoZGlzcGxheUxpc3RJdGVtLT5pdGVtKSk7CiAKICAgICBFWFBF
Q1RfRkFMU0Uoc2hhbGxvd0NvcHkuaXNFbXB0eSgpKTsKICAgICBFWFBFQ1RfRVEoaXRlbVR5cGVz
LnNpemUoKSwgNFUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCBiNTY5ZjM0MDdlMDc1MTVm
NjJlMTkwMWVlMDIyZDQxOTQ3ZmYzODlhLi4xYjI1ZWYyMjUyYzk0YzJiNmE2YjI0YjM5NjY2ODcw
Yzg0MDAzOGVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBJ
dGVtQnVmZmVySWRlbnRpZmllciBnbG9iYWxCdWZmZXJJZGVudGlmaWVyID0gSXRlbUJ1ZmZlcklk
ZW50aWZpZXI6OmdlbmVyCiAKIGNsYXNzIFJlYWRpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZl
clJlYWRpbmdDbGllbnQgewogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJO
X1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlw
ZSB0eXBlLCB1aW50OF90KikgZmluYWwKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1U
eXBlIHR5cGUpIGZpbmFsCiAgICAgewogICAgICAgICBFWFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6
OkZpbGxQYXRoKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTEwMCw3ICsxMDAs
NyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBn
bG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5kbGUpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KICAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29u
c3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCwgRGlkQ2hhbmdlSXRlbUJ1ZmZlcikgZmluYWwg
eyB9CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423974</attachid>
            <date>2021-03-22 18:28:42 -0700</date>
            <delta_ts>2021-03-22 19:46:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-223560-20210322182841.patch</filename>
            <type>text/plain</type>
            <size>166813</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI5MjA0ZjY5OGZiODFm
YmU2NjY0ODg2ZmM1ZTRjMmU0ODJjODVlOC4uOGM4YjczODI1ZWJjNTcyZTBjYmYxN2NmZjg5ZmI0
MWEyZjg2Yzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAyMS0wMy0yMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gUmVwbGFjZSBJdGVtSGFuZGxlIHdpdGggYSBjb25zdCBWYXJpYW50JgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gs
IHdlIHdlcmUgcmVwcmVzZW50aW5nIHRoZSBjb25jZXB0IG9mICJhbiB1bmtub3duIERpc3BsYXlM
aXN0SXRlbSIgd2l0aCBJdGVtSGFuZGxlLAorICAgICAgICB3aGljaCB3YXMgYSBwb2ludGVyIHRv
IGEgYnl0ZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIERpc3BsYXlMaXN0OjpJdGVyYXRvci4gVGhl
IGZpcnN0IGJ5dGUgd2FzIGFuCisgICAgICAgIGVudW0gdmFsdWUgd2hpY2ggdG9sZCB5b3UgaG93
IHRvIGludGVycHJldCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkYXRhLiBUaGUgcmVtYWluZGVyIG9m
IHRoZSBieXRlcworICAgICAgICB3ZXJlIGp1c3QgYW5kIG9iamVjdCwgcGxhY2VkIHRoZXJlIGJ5
IHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgVGhpcyBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUg
YXMgYSBWYXJpYW50LiBVc2luZyBhIHJlYWwgdmFyaWFudCBoYXMgYSBmZXcgYmVuZWZpdHMgb3Zl
ciB0aGlzIGN1c3RvbQorICAgICAgICBzb2x1dGlvbiwgdGhvdWdoOgorICAgICAgICAxLiBCZXR0
ZXIgdHlwZSBzYWZldHkuIFdlIGRvbid0IGhhdmUgdG8gcmVhZCBpbmRpdmlkdWFsIGJ5dGVzIGFu
ZCBpbnRlcnByZXQgb3RoZXIgYnl0ZXMgb3Vyc2VsdmVzLgorICAgICAgICAgICAgICAgSW5zdGVh
ZCwgd2UgY2FuIHJlbHkgb24gdGhlIFZhcmlhbnQgaW5mcmFzdHJ1Y3R1cmUgdG8gZG8gdGhpcywg
d2hpY2ggaXMgdmVyeSB3ZWxsLXRlc3RlZC4KKyAgICAgICAgMi4gSXQncyBsZXNzIGVycm9yLXBy
b25lLCBiZWNhdXNlIHdlIGNhbiB1c2UgdGVtcGxhdGUgbWV0YXByb2dyYW1taW5nIHRvIGNhdXNl
IHRoZSBjb21waWxlciB0bworICAgICAgICAgICAgICAgZ2VuZXJhdGUgZnVuY3Rpb25zIGZvciB1
cy4gRm9yIGV4YW1wbGUsIHdlIGNhbiBkbyBzb21ldGhpbmcgbGlrZQorCisgICAgICAgIHJldHVy
biBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkgLT4gYm9vbCB7Cisg
ICAgICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlzRHJhd2luZ0l0ZW07CisgICAgICAg
IH0sIGRpc3BsYXlMaXN0SXRlbSk7CisKKyAgICAgICAgaW5zdGVhZCBvZgorCisgICAgICAgIHN3
aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKKyAgICAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoK
KyAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgSXRl
bVR5cGU6OkNsZWFyUmVjdDoKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Cisg
ICAgICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgorICAgICAgICAuLi4KKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIFRoaXMgcGF0Y2ggYWN0dWFsbHkgZGVs
ZXRlcyBhbGwgb2YgdGhlIHBsYWNlcyB3aGVyZSB3ZSBoYXZlIGJpZyBzd2ljaCBzdGF0ZW1lbnRz
IG9mIGRyYXdpbmcgY29tbWFuZHMsCisgICAgICAgIGFuZCByZXBsYWNlcyB0aGVtIGFsbCB3aXRo
IHNpbWlsYXIgdGVtcGxhdGUgbWV0YXByb2dyYW1taW5nLiBBcyBzdWNoLCB0aGlzIHBhdGNoIGRl
bGV0ZXMgbW9yZSB0aGFuCisgICAgICAgIDEyMDAgbGluZXMgdGhhbiBpdCBhZGRzLgorCisgICAg
ICAgIE1vc3Qgb2YgdGhpcyBwYXRjaCBpcyBqdXN0IGEgZGlyZWN0IHRyYW5zbGF0aW9uIGZyb20g
SXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0gKHdoaWNoIGlzIGEgdHlwZWRlZgorICAgICAg
ICB0byBhIFZhcmlhbnQpLCBsaW5lLWJ5LWxpbmUuIEhvd2V2ZXIsIHRoZXJlIGFyZSB0d28gbm9u
LXRyaXZpYWwgY2hhbmdlczoKKworICAgICAgICAxLiBUaGUgY29tcGxleGl0eSBpbnNpZGUgRGlz
cGxheUxpc3Q6Okl0ZXJhdG9yIGlzIHNpZ25pZmljYW50bHkgcmVkdWNlZCBiZWNhdXNlIGl0IG5v
IGxvbmdlciBoYXMgdG8KKyAgICAgICAgICAgICAgIGFsbG9jYXRlIHRoZSBiYWNraW5nIHN0b3Jh
Z2UgZm9yIHRoZSBJdGVtSGFuZGxlLiBJJ3ZlIGFsc28gc2ltcGxpZmllZCB0aGUgcmV0dXJuIHR5
cGUgb2YKKyAgICAgICAgICAgICAgIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkg
dG8gbWFrZSBpdCBhIGxpdHRsZSBtb3JlIGNsZWFyIHdoYXQgdGhlIGZpZWxkcyBtZWFuLgorICAg
ICAgICAyLiBJJ3ZlIG1hZGUgdXNpbmcgYSBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCBhbmQgSXRl
bUJ1ZmZlcldyaXRpbmdDbGllbnQgcmVxdWlyZWQgZm9yIHVzaW5nIG5vbi1pbmxpbmUKKyAgICAg
ICAgICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtcy4gVGhlc2UgY2xpZW50cyB3ZXJlIGFsd2F5cyBz
cGVjaWZpZWQgaW4gV2ViS2l0IC0gdGhleSB3ZXJlIG9ubHkgb3B0aW9uYWwgZm9yCisgICAgICAg
ICAgICAgICB0ZXN0aW5nLiBIb3dldmVyLCB0aGUgY29kZSBjb3VsZCBiZSBzaWduaWZpY2FudGx5
IHNpbXBsaWZpZWQgaWYgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhlCisgICAgICAgICAgICAg
ICBjYXNlIG9mIG5vbi1pbmxpbmUgaXRlbXMgd2l0aG91dCB0aGVzZSBjbGllbnRzLiBBbmQsIHBo
aWxvc29waGljYWxseSwgdGhlc2UgY2xpZW50cyAqc2hvdWxkKiBiZQorICAgICAgICAgICAgICAg
cmVxdWlyZWQgdG8gZG8gZW5jb2RpbmcvZGVjb2RpbmcsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3Ig
bm9uLWlubGluZSBpdGVtcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBp
cyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOiBM
aW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJvbSBJdGVtSGFuZGxlIHRvCisgICAgICAgICAgICAg
IERpc3BsYXlMaXN0SXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdDo6YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6IFdlIGNhbiBtYWtlIHRoZSBjb21waWxlciBnZW5l
cmF0ZSB0aGlzIGZ1bmN0aW9uIQorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjphdEVuZCBjb25zdCk6IERlbGV0ZWQuIE1vdmVkIHRvIERpc3Bs
YXlMaXN0SXRlcmF0b3IuY3BwCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQuIERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6YWR2YW5j
ZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6Y2xlYXJDdXJyZW50SXRlbSk6IERlbGV0ZWQuIERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZVRv
RW5kKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6IERl
bGV0ZWQuIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjppdGVyYXRvcjo6aXRlcmF0b3IpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6On5pdGVyYXRvcik6IERlbGV0ZWQu
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVy
YXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuIERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRv
cjo6b3BlcmF0b3IrKyk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4g
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJh
dG9yOjppdGVtQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmJlZ2luIGNvbnN0KTogRGVsZXRlZC4gTW92ZWQg
dG8gdGhlIC5jcHAgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6ZW5kIGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcik6IEJlY2F1c2UgdGhp
cyBwYXRjaCBzdGFydHMgcmVxdWlyaW5nIGEKKyAgICAgICAgICAgIEl0ZW1CdWZmZXJSZWFkaW5n
Q2xpZW50IGZvciBhbnkgbm9uLWlubGluZSBpdGVtcywgd2hpY2ggaXMgbm8gcHJvYmxlbSBiZWNh
c3VlIHdlIHdlcmUgYWx3YXlzCisgICAgICAgICAgICBzcGVjaWZ5aW5nIG9uZSBpbiBXZWJLaXQg
YW55d2F5LCB3ZSBubyBsb25nZXIgbmVlZCBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRCdWZm
ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6Om9wZXJhdG9y
PSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmNs
ZWFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6
c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZTo6ZGVzY3JpcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5KTogRGVsZXRlZC4gV2UgY2FuIG1ha2Ug
dGhlIGNvbXBpbGVyIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6IERlbGV0ZWQuIFRoZXJlIHdlcmUgdHdv
IHBsYWNlcyB3aGVyZSB0aGlzIHdhcyB1c2VkOgorICAgICAgICAgICAgMS4gV2Ugcm91bmQtdHJp
cHBlZCB0aHJvdWdoIEl0ZW1IYW5kbGUgd2hlbmV2ZXIgYXBwZW5kaW5nIGFuIGl0ZW0sIGp1c3Qg
c28gd2UgY291bGQgcGFzcyBkYXRhIHRvCisgICAgICAgICAgICAgICAgICAgSXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQuIFRoaXMgaXMgdW5uZWNlc3Nhcnkgbm93IHRoYXQgd2UgY2FuIGp1c3QgcGFz
cyBEaXNwbGF5TGlzdEl0ZW0KKyAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgorICAgICAgICAg
ICAgMi4gRGVzdHJveWluZyBub24taW5saW5lIGl0ZW1zIHdoaWNoIHdlcmUgYXBwZW5kZWQgd2l0
aG91dCBhIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50LiBBYm92ZSBJCisgICAgICAgICAgICAgICAg
ICAgZGVzY3JpYmUgdGhhdCB0aGlzIHBhdGNoIHN0YXJ0cyByZXF1aXJpbmcgYSBJdGVtQnVmZmVy
UmVhZGluZ0NsaWVudCBmb3IgYW55IG5vbi1pbmxpbmUgaXRlbXMsCisgICAgICAgICAgICAgICAg
ICAgd2hpY2ggaXMgbm8gcHJvYmxlbSBiZWNhc3VlIHdlIHdlcmUgYWx3YXlzIHNwZWNpZnlpbmcg
b25lIGluIFdlYktpdCBhbnl3YXkuCisgICAgICAgICAgICBTbywgbmVpdGhlciBvZiB0aGVzZSBz
aXR1YXRpb25zIHN1cnZpdmVkIHRoaXMgcGF0Y2gsIHNvIHRoaXMgZW50aXJlIGZ1bmN0aW9uIGlz
IGRlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29weUludG8pOiBEZWxl
dGVkLiBUaGVyZSdzIG5vIG5lZWQgZm9yIHRoaXMgbm93IHRoYXQgdGhlIGl0ZXJhdG9yIGRvZXNu
J3QKKyAgICAgICAgICAgIGFsbG9jYXRlIHN0b3JhZ2UgZm9yIHRoZSBJdGVtSGFuZGxlLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KTog
RGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6bV9hbGxvY2F0
ZWRCdWZmZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKTogTWlncmF0ZSBmcm9tIEl0ZW1IYW5kbGUgdG8gRGlz
cGxheUxpc3RJdGVtLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6
OnVuY2hlY2tlZEFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhh
bmRsZTo6aXNEcmF3aW5nSXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6b3BlcmF0b3IhIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjp0
eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlOjppcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUhhbmRsZTo6Z2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOiBB
ZGRlZC4gTW92ZWQgZnJvbQorICAgICAgICAgICAgICBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcDogUmVtb3ZlZC4gVGhlIGNvbXBpbGVyIGNhbiBnZW5lcmF0ZSBhbGwgb2YKKyAgICAg
ICAgICAgICAgdGhlc2UgZnVuY3Rpb25zISEhCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDogTW92ZWQgdG8gRGlzcGxheUxpc3RJ
dGVtcy5oCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjph
cHBseSBjb25zdCk6IGFwcGx5KCkgbmVlZHMgdG8gYmUgY29uc3QgZm9yIHRoZSB0ZW1wbGF0ZQor
ICAgICAgICAgICAgICBtZXRhcHJvZ3JhbW1pbmcgdG8gd29yay4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KTogVGhlIGNvbXBpbGVyIGNhbiBnZW5lcmF0ZSB0aGlz
IGZ1bmN0aW9uIQorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBs
eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzOjpmb250SWRlbnRpZmllciBjb25zdCk6IE5lZWRzIHRvIGJlIGNvbnN0IGZvciB0aGUgdGVt
cGxhdGUKKyAgICAgICAgICAgICAgbWV0YXByb2dyYW1taW5nIHRvIHdvcmsuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6IE1vdmVkIGZyb20gRGlzcGxheUxp
c3RJdGVtQnVmZmVySWRlbnRpZmllci5oCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
aXRlbVR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3R2x5cGhzOjpmb250SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOiBB
ZGRlZC4gVGhlIHNpbXBsaWZpZWQgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICAgICAgdGhl
IGl0ZXJhdG9yLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29u
c3QpOiBUaGlzIGlzIHRoZSBtYWdpYy4gV2UgY2FuIGFjdHVhbGx5CisgICAgICAgICAgICAgIHJl
Y3Vyc2Ugb3ZlciB0aGUgc2V0IG9mIHR5cGVzIGluIHRoZSB2YXJpYW50LiBXZSBkbyB0aGlzIHdp
dGggYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdGhhdCBpcyBvZiB0eXBlCisgICAgICAgICAgICAgIHNp
emVfdC4gV2UgdXNlICJpZiBjb25zdGV4cHIiIHRvIGhhbmRsZSB0aGUgYmFzZSBjYXNlLCBhbmQg
d2UgcHVsbCBvdXQgdGhlIHR5cGUgYnkgdXNpbmcKKyAgICAgICAgICAgICAgV1RGOjp2YXJpYW50
X2FsdGVybmF0aXZlX3Qgd2l0aCB0aGUgSSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuIE9uY2Ugd2UgaGF2
ZSB0aGUgcGFydGljdWxhciB0eXBlIGluIHRoZQorICAgICAgICAgICAgICBWYXJpYW50LCB3ZSBw
dWxsIG91dCBpdHMgaXRlbVR5cGUgYW5kIGNvbXBhcmUgYWdhaW5zdCB0aGUgaXRlbVR5cGUgaW4g
dGhlIGJ1ZmZlci4gSWYgaXQgZG9lc24ndAorICAgICAgICAgICAgICBtYXRjaCwgd2UgcmVjdXJz
ZSB3aXRoIEkgKyAxLCBhbmQgaXQgZG9lcyBtYXRjaCwgd2UgcnVuIHRoZSBzYW1lIHBhcnNpbmcg
cm91dGluZXMgdGhhdCB3ZXJlIGluIHRoZQorICAgICAgICAgICAgICBvbGQgaW1wbGVtZW50YXRp
b24gb2YgdGhlIGl0ZXJhdG9yIGJlZm9yZSB0aGlzIHBhdGNoLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1
cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oOiBBZGRlZC4gVGhp
cyBpcyBzaWduaWZpY2FudGx5IHNpbXBsaWZpZWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgd2F5
IGl0IHdvcmtlZCBiZWZvcmUgdGhpcyBwYXRjaC4gV2Ugbm8gbG9uZ2VyIGhhdmUgdG8gYWxsb2Nh
dGUgc3RvcmFnZSBmb3IgdGhlIEl0ZW1IYW5kbGVzLiBXZSBoYXZlCisgICAgICAgICAgICAgIHNp
Z25pZmljYW50bHkgZmV3ZXIgbWVtYmVyIHZhcmlhYmxlcywgdG9vLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6Oml0ZW1CdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZERyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW1PZlR5cGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJ
dGVtT2ZUeXBlKTogTW92ZWQgZnJvbSB0aGUgLmNwcCBmaWxlLiBCZWNhdXNlIGl0J3MgYSB0ZW1w
bGF0ZSwKKyAgICAgICAgICAgICAgaXQgaGFzIHRvIGJlIGhlcmUuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKTogTGluZS1ieS1s
aW5lIHRyYW5zbGF0aW9uIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlOYXRpdmVJbWFnZUl0ZW0pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseVNldFN0YXRlSXRlbSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseSk6IEhlbHBlci4gT25seSBjYWxs
IHRoZSBhcHBseSBmdW5jdGlvbiBpbiB0aGUgRGlzcGxheUxpc3QgaXRlbSBpZiBpdCBleGlzdHMu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6IExp
bmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0ZW1IYW5kbGUgdG8gRGlzcGxheUxpc3RJdGVt
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOiBVcGRh
dGUgZm9yIHRoZSBuZXcgcmV0dXJuIHR5cGUgb2YKKyAgICAgICAgICAgICAgRGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpvcGVyYXRvciooKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOiBMaW5lLWJ5LWxpbmUgdHJhbnNsYXRp
b24gZnJvbSBJdGVtSGFuZGxlIHRvCisgICAgICAgICAgICAgIERpc3BsYXlMaXN0SXRlbS4KKwog
MjAyMS0wMy0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YklETF0gUmVtb3ZlIHRoZSBuZWVkIHRvIHNwZWNpZnkgW01heVRocm93RXhjZXB0aW9uXQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBmZWRlMzA1NjMyM2FjMzAzY2RhNWUzYTUyNDkzYTE0NTgxM2U5OTU1Li5mMDcyZWU0
ODU4NGQ2ZWRiNDU3YzhkYjYyYWM2MGU2YTQwNWI1NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDIxLTAzLTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBSZXBsYWNlIEl0ZW1IYW5kbGUgd2l0aCBhIGNvbnN0
IFZhcmlhbnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjM1NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDogTGluZS1ieS1saW5l
IHRyYW5zbGF0aW9uIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0pOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KTogVGhp
cyBmaWxlIGhhcyAidXNpbmcgbmFtZXNwYWNlIFdlYkNvcmUiIHNvIHdlIGRvbid0IG5lZWQgdG8K
KyAgICAgICAgICAgICAgcXVhbGlmeSBuYW1lcy4gRHJvcCB0aGUgV2ViQ29yZTo6LgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVh
ZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJ
bWFnZURhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcik6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZvckltYWdl
QnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OmRlY29kZUl0ZW0pOiBUaGUgY29tcGlsZXIgY2FuIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24g
Zm9yIHVzLCBpbiBtdWNoIHRoZSBzYW1lIHdheSB0aGF0IGl0IGRpZAorICAgICAgICAgICAgICBm
b3IgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpLgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlQW5kQ3JlYXRlKTogRGVsZXRlZC4gTm8gbG9u
Z2VyIG5lY2Vzc2FyeSBub3cgdGhhdCB0aGUgY29tcGlsZXIKKyAgICAgICAgICAgICAgaXMgZ2Vu
ZXJhdGluZyBvdXIgZnVuY3Rpb25zIGZvciB1cy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyUHJveHk6OmVuY29kZUl0ZW1IZWxwZXIpOiBUaGUgY29tcGlsZXIgY2FuIGdl
bmVyYXRlIHRoaXMgZnVuY3Rpb24gZm9yIHVzLgorCiAyMDIxLTAzLTIyICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBtYW5hZ2VtZW50IG9mIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lciBmcm9tIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYSBpbnRvIE5vd1Bs
YXlpbmdNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkOGIyZTliMzcwZWM5NTgwMjFhYzg0
YjY2ODQ5Njk4YTExZmI0OGE1Li44YzAzMzJhMjMxMjAyZjcyMGFiYjQzY2E2ZWQzZWM4YjAxY2My
M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEzMTQsOCArMTMxNCwxMCBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5o
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMzAwYWE4MDdkMWYwYTIwODY3YjU2MTdiZGI5ZGNiODgxNDg2
ZGU0Ny4uZmRiMzg3OTU2OTE2ZjUxMWIzMWY4NzM2OGZjNGMwNDUyMmM2ZWU0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTIwMTksNyArMjAxOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVyYXRvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNv
dXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAwYjg1OWYzYTQyYjA5MDQ5MzBiMDZmZTIxZjhjZDNhMTcxOWEzNjExLi40
Y2E0MmI3YmE5ODJmZmQ3NTUwNDc4ZWYwM2IzZDI5MmRlYmRmNWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjUsNiArNjI1
LDggQEAKIAkJMUM3M0E3MTUyMTg1NzU4NzAwNENDRUE1IC8qIFRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2
QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QTBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIElu
c3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1
ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM5M0NCQ0YyNjA1QkQ0MzAwOEZERUY5
IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDOTNDQkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMUM5M0NCRDMyNjA2RjhFNzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
OTNDQkQyMjYwNkYzRTMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNB
RjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmpl
Y3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FG
MzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FG
MzQ4MzBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAw
QUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjg3Miw2ICs2ODc0LDkgQEAKIAkJMUM4RDI2
Q0UyMkMwOTUxMzAwRDEyNUYzIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RDI2RDAyMkMwOUNERTAwRDEyNUYzIC8qIGxp
YmNvbXByZXNzaW9uLnRiZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9ICJzb3VyY2Vjb2RlLnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUg
PSBsaWJjb21wcmVzc2lvbi50YmQ7IHBhdGggPSB1c3IvbGliL2xpYmNvbXByZXNzaW9uLnRiZDsg
c291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBW
ZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24u
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkNDMjYwNUJENDMw
MDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERp
c3BsYXlMaXN0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkz
Q0JDRDI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDOTNDQkQyMjYwNkYzRTMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8q
IFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2ha
b21iaWVGaW5kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlBRTVDQjIx
RUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMSGlnaFpvbWJpZUZpbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0EwQzJERTIxRUVCNUY0MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTY2NjksNyArMTY2NzQsNiBAQAogCQlGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQg
LyogU3RhdGljUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dGF0aWNQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTA0
MURCQkRCQzIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0YXRpY1Bhc3RlYm9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDM3N0Q1NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUY0Mzc3RDU2MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDQwRTc2RTIzM0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBO
YXZpZ2F0b3JDbGlwYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2
aWdhdG9yQ2xpcGJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzcw
MjMzRDk0RDQwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENsaXBib2FyZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE4MDI5LDEwICsxODAzMywxMiBAQAogCQkJCTcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAv
KiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi8sCiAJCQkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3
N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgKi8sCiAJCQkJRjQyMkI4QjUyNTNGNzA2
NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovLAorCQkJCTFDOTNDQkQyMjYw
NkYzRTMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8sCiAJ
CQkJMEZFNUZCQ0MxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuY3BwICovLAog
CQkJCTBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi8sCi0J
CQkJRjQzNzdENTYyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwICov
LAogCQkJCUY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmgg
Ki8sCisJCQkJMUM5M0NCQ0MyNjA1QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3Iu
Y3BwICovLAorCQkJCTFDOTNDQkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJh
dG9yLmggKi8sCiAJCQkJMEZFNUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwICovLAogCQkJCTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dFJlY29yZGVyLmggKi8sCiAJCQkJMEZFNUZCRDAxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwICovLApAQCAtMzIwNTMsOCArMzIwNTksMTAgQEAKIAkJCQk3MjQyQUM5
NzI1NzU4RkUxMDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyog
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JEMzI2MDZG
OEU3MDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5
TGlzdEl0ZW1UeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JDRjI2MDVCRDQzMDA4RkRF
RjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJl
c2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYmIzMmJmMzU5NzQyNGI3ZTlhYTBk
YmNjMTA5NzRkYzkxMTEwZTI3NS4uZTE3MTA2MDI4NWRiNjZmNGY4ODhlZmZiZTAxOWJhYWJmNDA4
YmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKQEAgLTE1NCwxMCArMTU0LDEwIEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+R3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0
ZSYmKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgb3BlcmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0
ZSYmKTsKIAogICAgIGVudW0gQ2hhbmdlIDogdWludDMyX3QgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAKaW5kZXggYzA4MzIwZTU2NTY3NWJlMTJhNjRjNjk2OTRiZTE1ZjgyN2I3OTg1ZS4uNzk4
MWU2NjNlNDkwZGNjMTFlMmEyODA1NjNhMTFiYmEzYmRlMjIxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlz
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODQsMTIgKzg1LDEwIEBA
IHZvaWQgRGlzcGxheUxpc3Q6OmNsZWFyKCkKICAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOwog
fQogCi1ib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxh
Z3MsIEl0ZW1IYW5kbGUgaXRlbSkKK2Jvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFn
cyhBc1RleHRGbGFncyBmbGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQogewotICAg
IHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdGF0ZSYgc3Rh
dGVJdGVtKSAtPiBib29sIHsKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNs
dWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRl
SXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBu
b3csIG9ubHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJl
IHBsYXRmb3JtLXNwZWNpZmljLgogICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5n
ZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05
NywzMCArOTYsMzAgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4
dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVt
LnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAj
aWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAgICAgICBpZiAoIShmbGFncyAmIEFz
VGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgYnJlYWs7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5RmlsbFBhdHRl
cm4mKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVk
ZXNQbGF0Zm9ybU9wZXJhdGlvbnM7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5U3Ryb2tlUGF0dGVy
biYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRl
c1BsYXRmb3JtT3BlcmF0aW9uczsKICNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJikgLT4gYm9v
bCB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0
KHZpc2l0b3IsIGl0ZW0pOwogfQogCiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChBc1RleHRG
bGFncyBmbGFncykgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpM
aW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJl
Y3QpOwotICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0
aGlzKSB7Ci0gICAgICAgIGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCAqaXRlbSkpCisg
ICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgeworICAgICAgICBj
b25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0
SXRlbS52YWx1ZSgpOworICAgICAgICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRl
bSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNj
b3BlIGdyb3VwKHN0cmVhbSk7CiAgICAgICAgIHN0cmVhbSA8PCBpdGVtOwotICAgICAgICBpZiAo
aXRlbS0+aXNEcmF3aW5nSXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkK
ICAgICAgICAgICAgIHN0cmVhbSA8PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAg
cmV0dXJuIHN0cmVhbS5yZWxlYXNlKCk7CkBAIC0xMzEsMTAgKzEzMCwxMSBAQCB2b2lkIERpc3Bs
YXlMaXN0OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3Vw
U2NvcGUgZ3JvdXAodHMpOwogICAgIHRzIDw8ICJkaXNwbGF5IGxpc3QiOwogCi0gICAgZm9yIChh
dXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogKnRoaXMpIHsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7CisgICAgICAgIGNvbnN0IGF1
dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZh
bHVlKCk7CiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAg
ICB0cyA8PCBpdGVtOwotICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgpKQorICAgICAg
ICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKICAgICAgICAgICAgIHRzIDw8ICIgZXh0ZW50ICIg
PDwgZXh0ZW50OwogICAgIH0KICAgICB0cy5zdGFydEdyb3VwKCk7CkBAIC0xODYsMjQ3ICsxODYs
MjMgQEAgdm9pZCBEaXNwbGF5TGlzdDo6c2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wg
dmFsdWUpCiAgICAgbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHMgPSB2YWx1ZTsKIH0KIAotdm9p
ZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICBzd2l0Y2ggKGl0
ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxTYXZlPihpdGVtLmdldDxTYXZlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3Jl
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFJlc3RvcmU+KGl0ZW0uZ2V0PFJlc3RvcmU+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxUcmFu
c2xhdGU+KGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRl
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFJvdGF0ZT4oaXRlbS5nZXQ8Um90YXRlPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTY2FsZT4oaXRl
bS5nZXQ8U2NhbGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPENvbmNhdGVuYXRlQ1RNPihpdGVtLmdldDxDb25jYXRlbmF0ZUNU
TT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gYXBwZW5k
PFNldENUTT4oaXRlbS5nZXQ8U2V0Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRp
ZW50PihpdGVtLmdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVG
aWxsQ29sb3I+KGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5s
aW5lU3Ryb2tlQ29sb3I+KGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
U2V0U3Ryb2tlVGhpY2tuZXNzPihpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0YXRl
PihpdGVtLmdldDxTZXRTdGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lQ2FwPihpdGVtLmdldDxTZXRMaW5lQ2FwPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTZXRMaW5lRGFzaD4oaXRlbS5nZXQ8U2V0TGluZURhc2g+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVKb2luOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVKb2luPihpdGVt
LmdldDxTZXRMaW5lSm9pbj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRNaXRlckxpbWl0PihpdGVtLmdldDxTZXRNaXRlckxp
bWl0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxDbGVhclNoYWRvdz4oaXRlbS5nZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcD4oaXRlbS5nZXQ8Q2xp
cD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxDbGlwT3V0PihpdGVtLmdldDxDbGlwT3V0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
VG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4o
aXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBP
dXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8
Q2xpcE91dFRvUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8Q2xpcFBhdGg+KGl0ZW0uZ2V0PENsaXBQYXRoPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0
ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3R2x5cGhzPihpdGVtLmdldDxE
cmF3R2x5cGhzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZm
ZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RHJhd1BhdHRlcm4+KGl0ZW0uZ2V0PERyYXdQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UmVjdD4oaXRlbS5nZXQ8RHJh
d1JlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4g
YXBwZW5kPERyYXdMaW5lPihpdGVtLmdldDxEcmF3TGluZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGluZXNGb3JU
ZXh0PihpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdEb3Rz
Rm9yRG9jdW1lbnRNYXJrZXI+KGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5k
PERyYXdFbGxpcHNlPihpdGVtLmdldDxEcmF3RWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdGg+KGl0ZW0uZ2V0PERy
YXdQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUGF0aD4oaXRlbS5nZXQ8RHJhd0ZvY3VzUmlu
Z1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PERyYXdGb2N1c1Jp
bmdSZWN0cz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RmlsbFJlY3Q+KGl0ZW0uZ2V0PEZpbGxSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdp
dGhDb2xvcj4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0
V2l0aEdyYWRpZW50PihpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZp
bGxDb21wb3NpdGVkUmVjdD4oaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Rmls
bFJvdW5kZWRSZWN0PihpdGVtLmdldDxGaWxsUm91bmRlZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlPihpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4o
KSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bElubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbElubGluZVBhdGg+KGl0ZW0u
Z2V0PEZpbGxJbmxpbmVQYXRoPigpKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQ
YXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxQYXRoPihpdGVtLmdldDxGaWxsUGF0aD4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8RmlsbEVsbGlwc2U+KGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Rmx1c2hDb250ZXh0Pihp
dGVtLmdldDxGbHVzaENvbnRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRh
Q29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5k
Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21t
YW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8UHV0SW1hZ2VEYXRhPihpdGVtLmdldDxQdXRJbWFnZURhdGE+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQYWlu
dEZyYW1lRm9yTWVkaWE+KGl0ZW0uZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VSZWN0
PihpdGVtLmdldDxTdHJva2VSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5l
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZUxpbmU+KGl0ZW0uZ2V0PFN0cm9rZUxpbmU+
KCkpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlSW5saW5lUGF0aD4o
aXRlbS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZVBhdGg+KGl0ZW0uZ2V0
PFN0cm9rZVBhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlRWxsaXBzZT4oaXRlbS5nZXQ8U3Ryb2tlRWxsaXBzZT4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5k
PENsZWFyUmVjdD4oaXRlbS5nZXQ8Q2xlYXJSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpC
ZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXI+KGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gYXBwZW5k
PEVuZFRyYW5zcGFyZW5jeUxheWVyPihpdGVtLmdldDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKSk7
Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxBcHBseVN0cm9rZVBhdHRlcm4+KGl0ZW0uZ2V0PEFwcGx5U3Ry
b2tlUGF0dGVybj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxBcHBseUZpbGxQYXR0ZXJuPihpdGVtLmdldDxBcHBseUZpbGxQ
YXR0ZXJuPigpKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVG
YWN0b3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oaXRl
bS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKSk7Ci0gICAgfQotfQotCi1ib29sIERpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6YXRFbmQoKSBjb25zdAotewotICAgIGlmIChtX2Rpc3BsYXlMaXN0
LmlzRW1wdHkoKSB8fCAhbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGF1
dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIoKTsKLSAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLm1f
d3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAg
cmV0dXJuIG1fY3Vyc29yID09IGVuZEN1cnNvcjsKLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRl
cmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKLXsKLSAgICBjbGVhckN1cnJlbnRJdGVtKCk7Ci0K
LSAgICBpZiAoYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgaXRlbXMgPSAq
aXRlbUJ1ZmZlcigpOwotICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4o
bV9jdXJzb3JbMF0pOwotICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW1UeXBlKSAmJiAhbV9kaXNw
bGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9jdXJy
ZW50RXh0ZW50ID0gbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50c1ttX2RyYXdpbmdJ
dGVtSW5kZXhdOwotICAgICAgICBtX2RyYXdpbmdJdGVtSW5kZXgrKzsKLSAgICB9IGVsc2UKLSAg
ICAgICAgbV9jdXJyZW50RXh0ZW50ID0gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byogY2xpZW50
ID0gaXRlbXMubV9yZWFkaW5nQ2xpZW50OwotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0
ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoaXRlbVR5cGUpOwotICAgIGlmIChj
bGllbnQpIHsKLSAgICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5
cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVm
ZmVyRm9yQ3VycmVudEl0ZW0gOiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9j
KHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7Ci0gICAgICAgIGlmIChpc0lubGluZUl0ZW0oaXRl
bVR5cGUpKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIUl0ZW1IYW5kbGUgeyBtX2N1cnNv
ciB9LnNhZmVDb3B5KHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KSkpCi0gICAgICAgICAgICAg
ICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5C
dWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1
cnNvcilbMV07Ci0gICAgICAgICAgICBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAq
IHNpemVvZih1aW50NjRfdCk7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZWRJdGVtSGFuZGxlID0g
Y2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSwgbV9j
dXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZWRJ
dGVtSGFuZGxlKSkKLSAgICAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLQotICAgICAg
ICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0
ZW1UeXBlKTsKLSAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6
ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRh
dGFMZW5ndGgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSA9IG1fY3Vyc29yOwotICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVy
ID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW07Ci0gICAgfQotfQotCi12b2lkIERpc3BsYXlMaXN0
OjppdGVyYXRvcjo6YWR2YW5jZSgpCi17Ci0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fY3Vyc29yICs9IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXI7Ci0KLSAgICBp
ZiAobV9jdXJzb3IgPT0gbV9jdXJyZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlcklu
ZGV4IDwgaXRlbUJ1ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKLSAgICAgICAg
bV9yZWFkT25seUJ1ZmZlckluZGV4Kys7Ci0gICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJy
ZW50QnVmZmVyKCk7Ci0gICAgfQotCi0gICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLX0KLQotdm9p
ZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0oKQordm9pZCBEaXNwbGF5
TGlzdDo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBhdXRvIGl0
ZW1zID0gaXRlbUJ1ZmZlcigpOwotICAgIGlmIChpdGVtcyAmJiBpdGVtcy0+bV9yZWFkaW5nQ2xp
ZW50ICYmIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2lz
VmFsaWQpKQotICAgICAgICAgICAgSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0g
fS5kZXN0cm95KCk7Ci0KLSAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0gIT0gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtKSkKLSAgICAgICAgICAgIGZhc3RGcmVl
KG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwotICAgIH0KLQotICAgIG1fY3VycmVudEl0ZW1TaXpl
SW5CdWZmZXIgPSAwOwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBudWxscHRyOworICAg
IFdURjo6dmlzaXQoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgYXBwZW5kKGl0ZW0p
OworICAgIH0sIGl0ZW0pOwogfQogCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZVRv
RW5kKCkKK2F1dG8gRGlzcGxheUxpc3Q6OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAg
ICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKSkgewotICAgICAgICBtX2N1cnNvciA9IGl0
ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRl
czsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvcjsKLSAgICAgICAgbV9y
ZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAg
ICB9CisgICAgcmV0dXJuIHsgKnRoaXMgfTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCkKK2F1dG8gRGlzcGxheUxpc3Q6
OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIo
KTsKLSAgICBpZiAoIWl0ZW1zKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG51bWJlck9m
UmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICBp
ZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKLSAg
ICAgICAgYXV0byYgbmV4dEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1tt
X3JlYWRPbmx5QnVmZmVySW5kZXhdOwotICAgICAgICBtX2N1cnNvciA9IG5leHRCdWZmZXJIYW5k
bGUuZGF0YTsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvciArIG5leHRC
dWZmZXJIYW5kbGUuY2FwYWNpdHk7Ci0gICAgfSBlbHNlIGlmIChtX3JlYWRPbmx5QnVmZmVySW5k
ZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKLSAgICAgICAgbV9jdXJzb3IgPSBpdGVt
cy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9
IG1fY3Vyc29yICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgfQorICAgIHJl
dHVybiB7ICp0aGlzLCBJdGVyYXRvcjo6SW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcyB9OwogfQog
Ci0KIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGYxODlkZWRmNjc0OWJjYzIwMTQ3MmFlZDJh
ODcxNmJhNjU3NDY1MmUuLjg4YjFiYjZkMDM2MTAyODQ5ZmI3Njk3ZTkwMmZjYjQyYzc3OTQzMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgVGV4dFN0cmVhbTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiBl
bnVtIEFzVGV4dEZsYWcgewpAQCAtODksNzYgKzg4LDE1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1
ZmZlckhhbmRsZSYpPiYmKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNz
Li4uIEFyZ3M+IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKTsKLSAgICB2b2lkIGFwcGVuZChJ
dGVtSGFuZGxlKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAog
ICAgIGJvb2wgdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFj
a3NEcmF3aW5nSXRlbUV4dGVudHM7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNr
c0RyYXdpbmdJdGVtRXh0ZW50cyhib29sKTsKIAotICAgIGNsYXNzIGl0ZXJhdG9yIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIGVudW0gY2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgeyBObywgWWVz
IH07Ci0gICAgICAgIGl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1t
ZWRpYXRlbHlNb3ZlVG9FbmQgaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPSBJbW1lZGlhdGVseU1vdmVU
b0VuZDo6Tm8pCi0gICAgICAgICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJbW1lZGlhdGVs
eU1vdmVUb0VuZDo6WWVzKQotICAgICAgICAgICAgICAgIG1vdmVUb0VuZCgpOwotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIoKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgfml0ZXJhdG9yKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90
aGVyLm1fZGlzcGxheUxpc3QgJiYgbV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KLSAgICAgICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0K
LQotICAgICAgICBzdHJ1Y3QgVmFsdWUgewotICAgICAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRs
ZT4gaXRlbTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwotICAgICAg
ICAgICAgc2l6ZV90IGl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgVmFsdWUgb3BlcmF0b3IqKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHsKLSAgICAgICAgICAgICAgICBtX2lzVmFsaWQgPyBtYWtlT3B0aW9uYWwoSXRlbUhhbmRsZSB7
IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSkgOiBXVEY6Om51bGxvcHQsCi0gICAgICAgICAgICAg
ICAgbV9jdXJyZW50RXh0ZW50LAotICAgICAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5C
dWZmZXIsCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVt
ID0gMjU2OwotCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRP
ZkN1cnJlbnRCdWZmZXIoKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG9FbmQo
KTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZHZhbmNlKCk7Ci0gICAgICAgIGJvb2wgYXRFbmQoKSBjb25zdDsK
LQotICAgICAgICBJdGVtQnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMoKTsgfQotCi0gICAgICAgIGNvbnN0IERpc3BsYXlM
aXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgICAgICB1aW50OF90KiBtX2N1cnNvciB7IG51bGxwdHIg
fTsKLSAgICAgICAgc2l6ZV90IG1fcmVhZE9ubHlCdWZmZXJJbmRleCB7IDAgfTsKLSAgICAgICAg
c2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAgfTsKLSAgICAgICAgdWludDhfdCogbV9jdXJy
ZW50RW5kT2ZCdWZmZXIgeyBudWxscHRyIH07Ci0KLSAgICAgICAgdWludDhfdCBtX2ZpeGVkQnVm
ZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07
Ci0gICAgICAgIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0g
ICAgICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV9jdXJyZW50RXh0ZW50OwotICAgICAgICBzaXpl
X3QgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKLSAgICAgICAgYm9vbCBtX2lzVmFs
aWQgeyB0cnVlIH07Ci0gICAgfTsKLQotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4geyAqdGhpcyB9OyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyAqdGhp
cywgaXRlcmF0b3I6OkltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMgfTsgfQorICAgIGNsYXNzIEl0
ZXJhdG9yOworCisgICAgV0VCQ09SRV9FWFBPUlQgSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBJdGVyYXRvciBlbmQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBJ
dGVtQnVmZmVyKiBpdGVtQnVmZmVySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zLmdl
dCgpOyB9CkBAIC0xOTEsNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFu
ZGxlKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VC
dWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggMDhlOTJjNjViYjczODIx
ZjAwMzk5YTVlNTljZDc5YTZkNWQwMTg2My4uYmE2ZThiYTVhN2EwOGY3NTg2OWU0ODYyNTg4NTVl
NzM0OTFlNjQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzIsNTU3ICszMiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi1DU3RyaW5n
IEl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9uKCkgY29uc3QKLXsKLSAgICBUZXh0U3RyZWFtIHRzOwot
ICAgIHRzIDw8ICp0aGlzOwotICAgIHJldHVybiB0cy5yZWxlYXNlKCkudXRmOCgpOwotfQotI2Vu
ZGlmCi0KLXZvaWQgSXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQot
ewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAg
ICAgZ2V0PFNhdmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICBnZXQ8UmVzdG9yZT4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAg
ICAgZ2V0PFRyYW5zbGF0ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgZ2V0PFJvdGF0ZT4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAg
ICBnZXQ8U2NhbGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgZ2V0PENvbmNhdGVuYXRlQ1RNPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
Q1RNOgotICAgICAgICBnZXQ8U2V0Q1RNPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICBn
ZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICBnZXQ8
U2V0SW5saW5lRmlsbENvbG9yPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIGdldDxTZXRJ
bmxpbmVTdHJva2VDb2xvcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgZ2V0PFNldFN0cm9r
ZVRoaWNrbmVzcz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIGdldDxT
ZXRMaW5lQ2FwPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIGdldDxTZXRMaW5lRGFzaD4oKS5hcHBseShj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2lu
OgotICAgICAgICBnZXQ8U2V0TGluZUpvaW4+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICBnZXQ8U2V0
TWl0ZXJMaW1pdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICBnZXQ8Q2xlYXJTaGFkb3c+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAg
ICAgICBnZXQ8Q2xpcD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIGdldDxDbGlwT3V0PigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZm
ZXI6Ci0gICAgICAgIGdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAg
IGdldDxDbGlwT3V0VG9QYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIGdldDxDbGlwUGF0aD4oKS5hcHBs
eShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAg
ICAgZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgZ2V0PERyYXdO
YXRpdmVJbWFnZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoK
LSAgICAgICAgZ2V0PERyYXdSZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIGdldDxEcmF3TGluZT4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lc0ZvclRleHQ6Ci0gICAgICAgIGdldDxEcmF3TGluZXNGb3JUZXh0PigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1
bWVudE1hcmtlcjoKLSAgICAgICAgZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxs
aXBzZToKLSAgICAgICAgZ2V0PERyYXdFbGxpcHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIGdldDxEcmF3
UGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIGdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoK
LSAgICAgICAgZ2V0PEZpbGxSZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIGdldDxGaWxs
UmVjdFdpdGhDb2xvcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICBnZXQ8RmlsbFJlY3RX
aXRoR3JhZGllbnQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIGdldDxGaWxsQ29tcG9zaXRl
ZFJlY3Q+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKElOTElORV9QQVRI
X0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAgIGdldDxG
aWxsSW5saW5lUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlm
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIGdldDxGaWxsUGF0aD4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxF
bGxpcHNlOgotICAgICAgICBnZXQ8RmlsbEVsbGlwc2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIGdl
dDxGbHVzaENvbnRleHQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICBnZXQ8UHV0
SW1hZ2VEYXRhPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICBnZXQ8UGFpbnRGcmFtZUZvck1l
ZGlhPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgZ2V0PFN0cm9rZVJlY3Q+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAg
ICBnZXQ8U3Ryb2tlTGluZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotI2lm
IEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGlu
ZVBhdGg6Ci0gICAgICAgIGdldDxTdHJva2VJbmxpbmVQYXRoPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgot
ICAgICAgICBnZXQ8U3Ryb2tlUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIGdldDxTdHJva2VF
bGxpcHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICBnZXQ8Q2xlYXJSZWN0PigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lM
YXllcjoKLSAgICAgICAgZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lM
YXllcjoKLSAgICAgICAgZ2V0PEVuZFRyYW5zcGFyZW5jeUxheWVyPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5
U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgZ2V0PEFwcGx5U3Ryb2tlUGF0dGVybj4oKS5hcHBseShj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBh
dHRlcm46Ci0gICAgICAgIGdldDxBcHBseUZpbGxQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNj
YWxlRmFjdG9yOgotICAgICAgICBnZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKS5hcHBseShj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBJdGVtSGFuZGxlOjpk
ZXN0cm95KCkKLXsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBPdXRUb1BhdGg6Ci0gICAgICAgIGdldDxDbGlwT3V0VG9QYXRoPigpLn5DbGlwT3V0VG9QYXRo
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAg
ICAgZ2V0PENsaXBQYXRoPigpLn5DbGlwUGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIGdldDxEcmF3Rm9jdXNSaW5n
UGF0aD4oKS5+RHJhd0ZvY3VzUmluZ1BhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdS
ZWN0cz4oKS5+RHJhd0ZvY3VzUmluZ1JlY3RzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBnZXQ8RHJhd0dseXBocz4oKS5+RHJhd0ds
eXBocygpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICAgICAgZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkufkRyYXdMaW5lc0ZvclRleHQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAg
ICBnZXQ8RHJhd1BhdGg+KCkufkRyYXdQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIGdldDxGaWxsQ29tcG9zaXRl
ZFJlY3Q+KCkufkZpbGxDb21wb3NpdGVkUmVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIGdldDxGaWxsUGF0aD4oKS5+RmlsbFBhdGgo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9y
OgotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkufkZpbGxSZWN0V2l0aENvbG9yKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVu
dDoKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpLn5GaWxsUmVjdFdpdGhHcmFk
aWVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKS5+Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKS5+Rmls
bFJvdW5kZWRSZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJ
bWFnZURhdGE6Ci0gICAgICAgIGdldDxQdXRJbWFnZURhdGE+KCkuflB1dEltYWdlRGF0YSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAg
IGdldDxTZXRMaW5lRGFzaD4oKS5+U2V0TGluZURhc2goKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICBnZXQ8U2V0U3RhdGU+KCkuflNldFN0
YXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgot
ICAgICAgICBnZXQ8U3Ryb2tlUGF0aD4oKS5+U3Ryb2tlUGF0aCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlEZXZpY2VTY2Fs
ZUZhY3Rvcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2lmIFVTRShDRykKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBseUZpbGxQYXR0ZXJuPjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBseVN0
cm9rZVBhdHRlcm4+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGNhc2Ug
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENsZWFyUmVjdD46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGVhclNoYWRv
dz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENsaXA+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0Ogot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGlw
T3V0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRv
SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPENsaXBUb0ltYWdlQnVmZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENvbmNhdGVuYXRlQ1RNPjo6dmFsdWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3RWxsaXBzZT46OnZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0ltYWdlQnVm
ZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05h
dGl2ZUltYWdlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd1BhdHRlcm4+Ojp2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0xpbmU+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd1JlY3Q+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxFbmRUcmFuc3BhcmVuY3lMYXll
cj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxp
cHNlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxGaWxsRWxsaXBzZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2lmIEVOQUJMRShJTkxJ
TkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxGaWxsSW5saW5l
UGF0aD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEZpbGxSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxGbHVzaENvbnRleHQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj46OnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxQYWludEZyYW1lRm9yTWVkaWE+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxSZXN0
b3JlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRl
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxS
b3RhdGU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZl
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxT
YXZlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNj
YWxlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RN
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxT
ZXRDVE0+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJ
bmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPFNldElubGluZUZpbGxDb2xvcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0SW5saW5lRmlsbEdy
YWRpZW50Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFNldElubGluZVN0cm9rZUNvbG9yPjo6dmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0TGluZUNhcD46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRMaW5lSm9p
bj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVy
TGltaXQ6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPFNldE1pdGVyTGltaXQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldFN0cm9rZVRoaWNrbmVzcz46OnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFN0cm9rZUVsbGlw
c2U+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VJbmxpbmVQYXRoPjo6
dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VSZWN0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxTdHJva2VSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8U3Ryb2tlTGluZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VHJhbnNsYXRlPjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBpbmxp
bmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNlOwotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5
cGUoc3RkOjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0gdHJ1ZTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgSXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4s
IGJvb2w+IGNvcHlJbnRvKGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uV2l0aE9mZnNldCkKLXsKLSAgICBuZXcgKGRlc3RpbmF0aW9uV2l0aE9mZnNldCkg
SXRlbShpdGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgSXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxp
ZDxJdGVtPiwgYm9vbD4gY29weUludG8oY29uc3QgSXRlbUhhbmRsZSYgaXRlbUhhbmRsZSwgdWlu
dDhfdCogZGVzdGluYXRpb25XaXRoT2Zmc2V0KQotewotICAgIGF1dG8qIG5ld0l0ZW0gPSBuZXcg
KGRlc3RpbmF0aW9uV2l0aE9mZnNldCkgSXRlbShpdGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAg
ICByZXR1cm4gbmV3SXRlbS0+aXNWYWxpZCgpOwotfQotCi1ib29sIEl0ZW1IYW5kbGU6OnNhZmVD
b3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0Ci17Ci0gICAgYXV0byBpdGVtVHlwZSA9
IHR5cGUoKTsKLSAgICBkZXN0aW5hdGlvbi5kYXRhWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
aXRlbVR5cGUpOwotICAgIGF1dG8gaXRlbU9mZnNldCA9IGRlc3RpbmF0aW9uLmRhdGEgKyBzaXpl
b2YodWludDY0X3QpOwotICAgIHN3aXRjaCAoaXRlbVR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88Q2xpcE91dFRvUGF0aD4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAg
ICByZXR1cm4gY29weUludG88Q2xpcFBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERy
YXdGb2N1c1JpbmdQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3VzUmlu
Z1JlY3RzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdHbHlwaHM+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xp
bmVzRm9yVGV4dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdOYXRpdmVJbWFnZT4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAg
ICByZXR1cm4gY29weUludG88RHJhd1BhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXRo
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRS
ZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbENvbXBvc2l0ZWRSZWN0PigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxGaWxsUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RX
aXRoQ29sb3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aEdyYWRp
ZW50PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVk
UmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSb3VuZGVkUmVjdD4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFB1dEltYWdlRGF0YT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZURh
c2g+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldFN0YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9r
ZVBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmlj
ZVNjYWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlEZXZpY2VTY2FsZUZh
Y3Rvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBl
OjpBcHBseUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlGaWxsUGF0
dGVybj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tl
UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVybj4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRyYW5zcGFy
ZW5jeUxheWVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJS
ZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJSZWN0PigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxDbGVhclNoYWRvdz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXA6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwPigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENs
aXBPdXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFn
ZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBUb0ltYWdlQnVmZmVyPigqdGhp
cywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
ICAgIHJldHVybiBjb3B5SW50bzxDb25jYXRlbmF0ZUNUTT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxEcmF3RWxsaXBzZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xpbmU+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPERyYXdSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gY29weUludG88RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRUcmFu
c3BhcmVuY3lMYXllcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbEVsbGlwc2U+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxJbmxpbmVQ
YXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0PigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gY29w
eUludG88Rmx1c2hDb250ZXh0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICByZXR1
cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigqdGhp
cywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVt
QnVmZmVyOgotICAgICAgICByZXR1cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZv
ck1lZGlhOgotICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRGcmFtZUZvck1lZGlhPigqdGhp
cywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFJlc3RvcmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpSb3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSb3RhdGU+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4gY29weUlu
dG88U2F2ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgot
ICAgICAgICByZXR1cm4gY29weUludG88U2NhbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRDVE0+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsQ29sb3I+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAg
ICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPFNldElubGluZVN0cm9rZUNvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PFNldExpbmVDYXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRM
aW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVKb2luPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFNldE1pdGVyTGltaXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxT
ZXRTdHJva2VUaGlja25lc3M+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlRWxsaXBzZT4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxT
dHJva2VJbmxpbmVQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlUmVjdD4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAg
ICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gY29weUludG88VHJhbnNs
YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQog
SXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVySGFuZGxlcyYmIGhhbmRsZXMpCiAgICAg
OiBtX3JlYWRPbmx5QnVmZmVycyhXVEZNb3ZlKGhhbmRsZXMpKQogewpAQCAtNTk4LDcgKzQ3LDYg
QEAgSXRlbUJ1ZmZlcjo6fkl0ZW1CdWZmZXIoKQogSXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVt
QnVmZmVyJiYgb3RoZXIpCiAgICAgOiBtX3JlYWRpbmdDbGllbnQoc3RkOjpleGNoYW5nZShvdGhl
ci5tX3JlYWRpbmdDbGllbnQsIG51bGxwdHIpKQogICAgICwgbV93cml0aW5nQ2xpZW50KHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV93cml0aW5nQ2xpZW50LCBudWxscHRyKSkKLSAgICAsIG1faXRlbXNU
b0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zVG9E
ZXN0cm95SW5BbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9hbGxvY2F0ZWRCdWZmZXJz
KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9y
ZWFkT25seUJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlYWRPbmx5QnVmZmVycywgeyB9
KSkKICAgICAsIG1fd3JpdGFibGVCdWZmZXIoc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRhYmxl
QnVmZmVyLCB7IH0pKQpAQCAtNjEwLDcgKzU4LDYgQEAgSXRlbUJ1ZmZlciYgSXRlbUJ1ZmZlcjo6
b3BlcmF0b3I9KEl0ZW1CdWZmZXImJiBvdGhlcikKIHsKICAgICBtX3JlYWRpbmdDbGllbnQgPSBz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVhZGluZ0NsaWVudCwgbnVsbHB0cik7CiAgICAgbV93cml0
aW5nQ2xpZW50ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRpbmdDbGllbnQsIG51bGxwdHIp
OwotICAgIG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSk7CiAgICAgbV9h
bGxvY2F0ZWRCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2FsbG9jYXRlZEJ1ZmZlcnMs
IHsgfSk7CiAgICAgbV9yZWFkT25seUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVh
ZE9ubHlCdWZmZXJzLCB7IH0pOwogICAgIG1fd3JpdGFibGVCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1fd3JpdGFibGVCdWZmZXIsIHsgfSk7CkBAIC02NDQsOSArOTEsNiBAQCB2b2lkIEl0
ZW1CdWZmZXI6OmZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZl
ckhhbmRsZSYpPiYmIG1hcAogCiB2b2lkIEl0ZW1CdWZmZXI6OmNsZWFyKCkKIHsKLSAgICBmb3Ig
KGF1dG8gaXRlbSA6IHN0ZDo6ZXhjaGFuZ2UobV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVm
ZmVycywgeyB9KSkKLSAgICAgICAgaXRlbS5kZXN0cm95KCk7Ci0KICAgICBmb3IgKGF1dG8qIGJ1
ZmZlciA6IHN0ZDo6ZXhjaGFuZ2UobV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICAgICBm
YXN0RnJlZShidWZmZXIpOwogCkBAIC02NTcsNyArMTAxLDcgQEAgdm9pZCBJdGVtQnVmZmVyOjpj
bGVhcigpCiAKIERpZENoYW5nZUl0ZW1CdWZmZXIgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVm
ZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpCiB7Ci0gICAgYXV0byBzaXplRm9yQnVm
ZmVyU3dpdGNoSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICBhdXRvIHNpemVGb3JCdWZmZXJTd2l0
Y2hJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPE1ldGFDb21tYW5kQ2hhbmdl
SXRlbUJ1ZmZlcj4oKTsKICAgICBpZiAobV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIG51bWJlck9m
Qnl0ZXMgKyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA8PSBtX3dyaXRhYmxlQnVmZmVyLmNhcGFj
aXR5KQogICAgICAgICByZXR1cm4gRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6Tm87CiAKQEAgLTY3Myw3
ICsxMTcsNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1
ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogICAgIHJldHVybiBoYWRQcmV2aW91
c0J1ZmZlciA/IERpZENoYW5nZUl0ZW1CdWZmZXI6OlllcyA6IERpZENoYW5nZUl0ZW1CdWZmZXI6
Ok5vOwogfQogCi12b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0
ZW0pCit2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBv
cmFyeUl0ZW0pCiB7CiAgICAgYXV0byBkYXRhID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVt
KHRlbXBvcmFyeUl0ZW0pOwogICAgIGlmICghZGF0YSkKQEAgLTY4NCw3ICsxMjgsNyBAQCB2b2lk
IEl0ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiAKICAgICBhdXRv
IGJ1ZmZlckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2Fw
YWNpdHlGb3JFbmNvZGVkSXRlbSk7CiAKLSAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0
dGVuTnVtYmVyT2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZW1wb3JhcnlJdGVtLnR5
cGUoKSk7CisgICAgbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUodGVtcG9yYXJ5SXRlbSkpOwogICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVC
dWZmZXIuZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90
KSwgZGF0YS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBkODc1OTMyYzE3NmYwNzkwMzZlZjBjNGZi
ZjVkMmRhNzEzMzE1YWQ1Li5lOTQzM2M0NTE4MjkxODRhMTFjNjliM2U1Nzc2OWJkMWIwNzlhNjhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDkg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgorI2luY2x1ZGUgIkRp
c3BsYXlMaXN0SXRlbXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0z
OCw5ICs0MCw2IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0
OwogCi1lbnVtIEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJdGVtQnVmZmVy
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsK
LQogLy8gQW4gSXRlbUJ1ZmZlckhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgdGhh
dCBjb250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLgogc3RydWN0IEl0ZW1CdWZmZXJIYW5k
bGUgewogICAgIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CkBAIC01MywzNiArNTIs
NiBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZSB7CiAKIHVzaW5nIEl0ZW1CdWZmZXJIYW5kbGVz
ID0gVmVjdG9yPEl0ZW1CdWZmZXJIYW5kbGUsIDI+OwogCi0vLyBBbiBJdGVtSGFuZGxlIHdyYXBz
IGEgcG9pbnRlciB0byBhbiBJdGVtVHlwZSBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSBhbiBpdGVt
IG9mIHRoYXQgdHlwZS4KLS8vIEVhY2ggaXRlbSBoYW5kbGUgZGF0YSBwb2ludGVyIGlzIGFsaWdu
ZWQgdG8gOCBieXRlcywgYW5kIHRoZSBpdGVtIGl0c2VsZiBpcyBhbHNvIGFsaWduZWQKLS8vIHRv
IDggYnl0ZXMuIFRvIGVuc3VyZSB0aGlzLCB0aGUgaXRlbSB0eXBlIGNvbnNpc3RzIG9mIDggYnl0
ZXMgKDEgYnl0ZSBmb3IgdGhlIHR5cGUgYW5kIDcKLS8vIGJ5dGVzIG9mIHBhZGRpbmcpLgotc3Ry
dWN0IEl0ZW1IYW5kbGUgewotICAgIHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07Ci0KLSAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVz
dHJveSgpOwotICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6
OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKHR5cGUoKSk7IH0KLQotICAgIG9wZXJhdG9yIGJv
b2woKSBjb25zdCB7IHJldHVybiAhISgqdGhpcyk7IH0KLSAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFkYXRhOyB9Ci0KLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElT
QUJMRUQKLSAgICBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIEl0
ZW1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtVHlwZT4oZGF0YVsw
XSk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXMoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gVDo6aXRlbVR5cGU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUJiBn
ZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzPFQ+KCkpOwotICAgICAgICByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZkYXRhW3NpemVvZih1aW50NjRfdCldKTsKLSAgICB9
Ci0KLSAgICBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0OwotfTsK
LQogZW51bSBjbGFzcyBEaWRDaGFuZ2VJdGVtQnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKIAog
Y2xhc3MgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgewpAQCAtOTAsNyArNTksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQoKSB7IH0KIAogICAgIHZpcnR1
YWwgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCkgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0
YShjb25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5n
ZUl0ZW1CdWZmZXIpID0gMDsKIH07CiAKQEAgLTk4LDcgKzY3LDcgQEAgY2xhc3MgSXRlbUJ1ZmZl
clJlYWRpbmdDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkl0ZW1CdWZmZXJSZWFkaW5n
Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5V
U0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoLCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFs
IE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7CiB9
OwogCiAvLyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEsIGFu
ZCBjb25zaXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFuZGxlICh0byB3aGljaCBkaXNw
bGF5CkBAIC0xNDksMjYgKzExOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YSBiYWNrIGludG8g
YW4gaXRlbSBvZiB0eXBlIFQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJn
cz4gdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUgfHwgIVQ6OmlzSW5s
aW5lSXRlbSk7Ci0KLSAgICAgICAgaWYgKCFUOjppc0lubGluZUl0ZW0gJiYgbV93cml0aW5nQ2xp
ZW50KSB7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgICAgIF9fZGVjbHNwZWMoYWxpZ24o
OCkpIHR5cGVkZWYgdWludDhfdCBFbmNvZGluZ0J1ZmZlcltzaXplb2YodWludDY0X3QpICsgc2l6
ZW9mKFQpXTsKLSNlbHNlCi0gICAgICAgICAgICB1c2luZyBFbmNvZGluZ0J1ZmZlciBfX2F0dHJp
YnV0ZV9fKChhbGlnbmVkICg4KSkpID0gdWludDhfdFtzaXplb2YodWludDY0X3QpICsgc2l6ZW9m
KFQpXTsKLSNlbmRpZgotICAgICAgICAgICAgc3RhdGljIEVuY29kaW5nQnVmZmVyIHRlbXBvcmFy
eUl0ZW1CdWZmZXI7Ci0gICAgICAgICAgICB0ZW1wb3JhcnlJdGVtQnVmZmVyWzBdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwotICAgICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJ
dGVtQnVmZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOwotICAgICAgICAgICAgYXBwZW5kKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKLSAgICAg
ICAgICAgIEl0ZW1IYW5kbGUgeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0uZGVzdHJveSgpOworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFs
dWUgPT0gVDo6aXNJbmxpbmVJdGVtKTsKKworICAgICAgICBpZiAoIVQ6OmlzSW5saW5lSXRlbSkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93cml0aW5nQ2xpZW50KTsKKyAgICAgICAg
ICAgIGFwcGVuZChEaXNwbGF5TGlzdEl0ZW0oVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZl
ckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChwYWRkZWRTaXplT2ZUeXBlQW5k
SXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpKTsKLQotICAgICAgICBpZiAoIXN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpCi0gICAgICAgICAgICBtX2l0ZW1zVG9EZXN0cm95
SW5BbGxvY2F0ZWRCdWZmZXJzLmFwcGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0
dGVuTnVtYmVyT2ZCeXRlc10gfSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBX
cml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxUPigp
KTsKIAogICAgICAgICB1bmNoZWNrZWRBcHBlbmQ8VD4oYnVmZmVyQ2hhbmdlZCwgc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICB9CkBAIC0xODMsMTggKzE0MSwxNyBAQCBwcml2YXRl
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZC
eXRlcywgRGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBEaWRDaGFu
Z2VJdGVtQnVmZmVyIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5
dGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChE
aWRDaGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIsIEFyZ3MmJi4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0gPSAmbV93cml0YWJsZUJ1ZmZlci5kYXRh
W21fd3JpdHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAgICBzdGFydE9mSXRlbVswXSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgbmV3IChzdGFydE9mSXRlbSAr
IHNpemVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAg
ICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5
cGUpLCBkaWRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8VD4oKSwgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAg
fQogCiAgICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqIG1fcmVhZGluZ0NsaWVudCB7IG51bGxw
dHIgfTsKICAgICBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCogbV93cml0aW5nQ2xpZW50IHsgbnVs
bHB0ciB9OwotICAgIFZlY3RvcjxJdGVtSGFuZGxlPiBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0
ZWRCdWZmZXJzOwogICAgIFZlY3Rvcjx1aW50OF90Kj4gbV9hbGxvY2F0ZWRCdWZmZXJzOwogICAg
IEl0ZW1CdWZmZXJIYW5kbGVzIG1fcmVhZE9ubHlCdWZmZXJzOwogICAgIEl0ZW1CdWZmZXJIYW5k
bGUgbV93cml0YWJsZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzQ5N2YzOTUwNThhNjc2ODY0
NDhhMjU1NzE3NDBjZjQwMzdhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRp
Zmllci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisK
K2VudW0gSXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEl0ZW1CdWZmZXJJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmllclR5cGU+OworCit9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDU2OTI1MDA2NTFhYTJiYWQ0ZTg5MWQ4OTc0MDJiMWFkMzBiNjBi
MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgotCi0jaW5j
bHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgewotCi1zdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1U
eXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2
ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTYXZlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0
b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFJlc3RvcmUpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihUcmFuc2xhdGUpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihSb3RhdGUpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNjYWxlKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIHNpemVvZihDb25j
YXRlbmF0ZUNUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFNldENUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElubGluZUZpbGxHcmFkaWVudCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNl
dElubGluZUZpbGxDb2xvcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29s
b3I6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lU3Ryb2tlQ29sb3IpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihT
ZXRTdHJva2VUaGlja25lc3MpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKFNldFN0YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2Fw
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVDYXApOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVEYXNoKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRMaW5l
Sm9pbik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihTZXRNaXRlckxpbWl0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihDbGVhclNoYWRvdyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBUb0ltYWdl
QnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKENsaXBPdXRUb1BhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihE
cmF3R2x5cGhzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAg
IHJldHVybiBzaXplb2YoRHJhd0ltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd05hdGl2ZUltYWdlKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3
UGF0dGVybik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoRHJhd1JlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKERyYXdMaW5lKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JU
ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdMaW5lc0ZvclRleHQpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Vs
bGlwc2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0VsbGlwc2UpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXRoKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihE
cmF3Rm9jdXNSaW5nUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3Rz
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdGb2N1c1JpbmdSZWN0cyk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3QpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9m
KEZpbGxSZWN0V2l0aENvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFk
aWVudDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhHcmFkaWVudCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9m
KEZpbGxDb21wb3NpdGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSb3VuZGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZp
bGxJbmxpbmVQYXRoKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKEZpbGxQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxs
aXBzZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNoQ29udGV4dCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gc2l6ZW9m
KFB1dEltYWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFBhaW50RnJhbWVGb3JNZWRpYSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VSZWN0KTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9r
ZUxpbmUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlSW5saW5lUGF0
aCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKFN0cm9rZVBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsZWFyUmVjdCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVv
ZihCZWdpblRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3Bh
cmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmRUcmFuc3BhcmVuY3lMYXllcik7
Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihBcHBseVN0cm9rZVBhdHRlcm4pOwotICAgIGNhc2UgSXRlbVR5
cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2YoQXBwbHlGaWxsUGF0
dGVybik7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9y
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBpc0Ry
YXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0
cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dFRvUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6Ok1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9y
ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJv
a2VDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgIGNh
c2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgSXRlbVR5
cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgSXRlbVR5cGU6
OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0Ogot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1Bh
dGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5l
c0ZvclRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFy
ZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aEdyYWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgot
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRI
X0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVj
dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1zaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCi17
Ci0gICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdu
b2YodWludDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7Ci19Ci0KLWJvb2wgaXNJbmxp
bmVJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91
bmRlZFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgIGNhc2UgSXRl
bVR5cGU6OlNldExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ry
b2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6
OkNsZWFyU2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0
ZW5hdGVDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5z
cGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJM
RShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgot
I2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0
ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgIGNh
c2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgIGNh
c2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNh
cDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRNaXRlckxpbWl0OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19
IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggY2Q2YzFhNDk5Yzk4MjE2ZTEyNjU4
MGMzZTNjYzRhM2Q4YzI2OTQ5MC4uOGE3MDBhNGY0MDdiNDNiZmZlNGMxODYzZTc2YzUxMDhhYjE5
ZDYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDkgKzk4LDUg
QEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IsCiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0
ZW1JbkJ5dGVzKEl0ZW1UeXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbmxpbmVJdGVtKEl0
ZW1UeXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSk7Ci0K
IH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMTY4NzM2NWQ0N2I0NGE4ZThlOGNj
MmQ4OGYxOTc0YmRiNWU0NjJkMy4uZDg5MjM2ZGFiMjg1NmNlYzYwZDViODViYjg5OWQzYmNjYTMz
ZGQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIK
IAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlM
aXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCkBAIC0yMjAsMTIgKzIyMSwxMiBAQCBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRAog
ewogfQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5h
dGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybklt
YWdlKQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRp
dmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFn
ZSkgY29uc3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0
ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0g
UGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0
dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5t
X3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtl
UmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAg
ICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAg
IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtl
UmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAg
ICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmls
bFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1f
ZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0
KTsKIH0KIApAQCAtMTA4MywxOTIgKzEwODQsMTIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0p
Ci17Ci0gICAgdHMgPDwgaXRlbS50eXBlKCk7Ci0KLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxU
cmFuc2xhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Um90YXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2NhbGU+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8U2V0Q1RNPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
b25jYXRlbmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVu
dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0U3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTZXRMaW5lQ2FwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRMaW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZURhc2g+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TWl0ZXJM
aW1pdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcE91dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxD
bGlwT3V0VG9QYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PERyYXdHbHlwaHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVy
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PERyYXdQYXR0ZXJuPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1JlY3Q+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3TGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmVzRm9yVGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRo
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVj
dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29s
b3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxS
b3VuZGVkUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RmlsbElubGluZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmx1c2hD
b250ZXh0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFu
ZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFBhaW50RnJh
bWVGb3JNZWRpYT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8U3Ryb2tlTGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRI
X0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxT
dHJva2VQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VF
bGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PENsZWFyUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5UcmFu
c3BhcmVuY3lMYXllcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBw
bHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VT
Y2FsZUZhY3Rvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvLyBJdGVtcyB3aXRoIG5vIGFk
ZGl0aW9uYWwgZGF0YS4KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5
cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0j
aWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKK3sKKyAg
ICBXVEY6OnZpc2l0KFsmXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAg
dHMgPDwgZGlzcGxheUxpc3RJdGVtLml0ZW1UeXBlOworICAgICAgICB0cyA8PCBkaXNwbGF5TGlz
dEl0ZW07CisgICAgfSwgaXRlbSk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCA3ZjE5MTEyNzRmNmFmNDUwZmY5NGNmYmQwNGMwNDQ2N2Vh
YzUwNDY0Li5lNDExOTUwOTllODk3NWQwZjM1MDc2NDU1OTkzYTkyYzFhODAyNmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI2LDExICsyNiwxNCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiRGlz
cGxheUxpc3QuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJEaXNw
bGF5TGlzdEl0ZW1UeXBlLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1
ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYWRpZW50
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNp
bmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllcklkZW50aWZpZXIuaCIK
QEAgLTM4LDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+
CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0
U3RyZWFtOwpAQCAtMjY4LDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0g
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVy
bkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJ
bWFnZSogZmlsbFBhdHRlcm5JbWFnZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBh
dHRlcm5EYXRhIHsKQEAgLTkwMiw3ICs5MDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBmb250SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KKyAgICBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2ZvbnRJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IoKSBj
b25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAgRmxvYXRQb2ludCBhbmNob3JQb2lu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBjb25zdCBWZWN0b3I8R2x5
cGhCdWZmZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaHM7IH0K
QEAgLTIyNDcsNyArMjI1MSw5NiBAQCBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBJdGVtSGFuZGxlKTsKK3VzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQ8Cisg
ICAgU2F2ZSwKKyAgICBSZXN0b3JlLAorICAgIFRyYW5zbGF0ZSwKKyAgICBSb3RhdGUsCisgICAg
U2NhbGUsCisgICAgU2V0Q1RNLAorICAgIENvbmNhdGVuYXRlQ1RNLAorICAgIFNldElubGluZUZp
bGxHcmFkaWVudCwKKyAgICBTZXRJbmxpbmVGaWxsQ29sb3IsCisgICAgU2V0SW5saW5lU3Ryb2tl
Q29sb3IsCisgICAgU2V0U3Ryb2tlVGhpY2tuZXNzLAorICAgIFNldFN0YXRlLAorICAgIFNldExp
bmVDYXAsCisgICAgU2V0TGluZURhc2gsCisgICAgU2V0TGluZUpvaW4sCisgICAgU2V0TWl0ZXJM
aW1pdCwKKyAgICBDbGVhclNoYWRvdywKKyAgICBDbGlwLAorICAgIENsaXBPdXQsCisgICAgQ2xp
cFRvSW1hZ2VCdWZmZXIsCisgICAgQ2xpcE91dFRvUGF0aCwKKyAgICBDbGlwUGF0aCwKKyAgICBC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcywKKyAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMs
CisgICAgRHJhd0dseXBocywKKyAgICBEcmF3SW1hZ2VCdWZmZXIsCisgICAgRHJhd05hdGl2ZUlt
YWdlLAorICAgIERyYXdQYXR0ZXJuLAorICAgIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIsCisgICAg
RW5kVHJhbnNwYXJlbmN5TGF5ZXIsCisgICAgRHJhd1JlY3QsCisgICAgRHJhd0xpbmUsCisgICAg
RHJhd0xpbmVzRm9yVGV4dCwKKyAgICBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyLAorICAgIERy
YXdFbGxpcHNlLAorICAgIERyYXdQYXRoLAorICAgIERyYXdGb2N1c1JpbmdQYXRoLAorICAgIERy
YXdGb2N1c1JpbmdSZWN0cywKKyAgICBGaWxsUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhDb2xvciwK
KyAgICBGaWxsUmVjdFdpdGhHcmFkaWVudCwKKyAgICBGaWxsQ29tcG9zaXRlZFJlY3QsCisgICAg
RmlsbFJvdW5kZWRSZWN0LAorICAgIEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlLAorI2lmIEVOQUJM
RShJTkxJTkVfUEFUSF9EQVRBKQorICAgIEZpbGxJbmxpbmVQYXRoLAorI2VuZGlmCisgICAgRmls
bFBhdGgsCisgICAgRmlsbEVsbGlwc2UsCisgICAgUHV0SW1hZ2VEYXRhLAorICAgIFBhaW50RnJh
bWVGb3JNZWRpYSwKKyAgICBTdHJva2VSZWN0LAorICAgIFN0cm9rZUxpbmUsCisjaWYgRU5BQkxF
KElOTElORV9QQVRIX0RBVEEpCisgICAgU3Ryb2tlSW5saW5lUGF0aCwKKyNlbmRpZgorICAgIFN0
cm9rZVBhdGgsCisgICAgU3Ryb2tlRWxsaXBzZSwKKyAgICBDbGVhclJlY3QsCisjaWYgVVNFKENH
KQorICAgIEFwcGx5U3Ryb2tlUGF0dGVybiwKKyAgICBBcHBseUZpbGxQYXR0ZXJuLAorI2VuZGlm
CisgICAgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciwKKyAgICBGbHVzaENvbnRleHQsCisgICAgTWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLAorICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcj47CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYpOworCitpbmxpbmUgY29uc3RleHByIGJvb2wgaXNEcmF3aW5n
SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkKK3sKKyAgICByZXR1
cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAg
cmV0dXJuIGRpc3BsYXlMaXN0SXRlbS5pc0RyYXdpbmdJdGVtOworICAgIH0sIGRpc3BsYXlMaXN0
SXRlbSk7Cit9CisKK2lubGluZSBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUoY29uc3QgRGlz
cGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pCit7CisgICAgcmV0dXJuIFdURjo6dmlzaXQo
W10oY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgIHJldHVybiBkaXNwbGF5
TGlzdEl0ZW0uaXRlbVR5cGU7CisgICAgfSwgZGlzcGxheUxpc3RJdGVtKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVt
SW5CeXRlcygpCit7CisgICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0
aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBzaXplb2YoVCkpOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NzdlN2I5YzQ0NTM0MmQ4MGU2ZjIz
NGYwZmI5ZTRmMWYwYWY2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTAs
MCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVyYXRvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwg
SW1tZWRpYXRlbHlNb3ZlVG9FbmQgaW1tZWRpYXRlbHlNb3ZlVG9FbmQpCisgICAgOiBtX2Rpc3Bs
YXlMaXN0KGRpc3BsYXlMaXN0KQoreworICAgIGlmIChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJ
bW1lZGlhdGVseU1vdmVUb0VuZDo6WWVzKSB7CisgICAgICAgIGlmIChhdXRvIGl0ZW1zID0gaXRl
bUJ1ZmZlcigpKSB7CisgICAgICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXggPSBpdGVtcy0+
bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOworICAgICAgICAgICAgbV9jdXJzb3IgPSBlbmRPZkN1
cnJlbnRCdWZmZXIoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBtb3ZlQ3Vyc29y
VG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOworfQorCisjaWYgQVNTRVJUX0VOQUJMRUQKK2Jvb2wg
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZGlzcGxh
eUxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0IGF1dG8q
IGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIGlmICghaXRlbXMpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRh
ICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CisgICAgcmV0dXJuIG1fY3Vyc29yID09
IGVuZEN1cnNvcjsKK30KKyNlbmRpZgorCithdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3Bl
cmF0b3IqKCkgY29uc3QgLT4gT3B0aW9uYWw8VmFsdWU+Cit7CisgICAgQVNTRVJUKCFhdEVuZCgp
KTsKKyAgICBBU1NFUlQoIW1fY3VycmVudEl0ZW1JbmZvKTsKKworICAgIGF1dG8gY3VycmVudEl0
ZW1JbmZvID0gY3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtSW5mbykKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIG1fY3VycmVudEl0ZW1JbmZvID0ge3sgY3Vy
cmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIsIGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRl
bSB9fTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gY3VycmVudEV4dGVudDsKKyAgICBpZiAo
Y3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2lu
Z0l0ZW1FeHRlbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgY3VycmVudEV4dGVudCA9IG1fZGlzcGxh
eUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKKworICAgIHJl
dHVybiB7eyBXVEZNb3ZlKGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtKSwgV1RGTW92
ZShjdXJyZW50RXh0ZW50KSwgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIgfX07Cit9CisK
K3ZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKK3sKKyAgICBBU1NFUlQo
IWF0RW5kKCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRJdGVtSW5mbyk7CisKKyAgICBpZiAobV9j
dXJyZW50SXRlbUluZm8tPmlzRHJhd2luZ0l0ZW0pCisgICAgICAgICsrbV9kcmF3aW5nSXRlbUlu
ZGV4OworCisgICAgbV9jdXJzb3IgKz0gbV9jdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlcjsK
KworICAgIGlmIChtX2N1cnNvciA9PSBlbmRPZkN1cnJlbnRCdWZmZXIoKSAmJiBtX3JlYWRPbmx5
QnVmZmVySW5kZXggPCBpdGVtQnVmZmVyKCktPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKSkgewor
ICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXgrKzsKKyAgICAgICAgbW92ZUN1cnNvclRvU3Rh
cnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRJdGVtSW5mbyA9IHsg
fTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gc3RhdGljIGlubGlu
ZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8VCwgc3RkOjp2b2lkX3Q8
ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0gdHJ1ZTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZf
dDwhSGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVtJikKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlk
KGNvbnN0IEl0ZW0mIGl0ZW0pCit7CisgICAgcmV0dXJuIGl0ZW0uaXNWYWxpZCgpOworfQorCit0
ZW1wbGF0ZSA8c3RkOjpzaXplX3QgST4KK2lubGluZSBhdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6Y3VycmVudEl0ZW0oKSBjb25zdCAtPiBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4KK3sK
KyAgICAvLyBXZSBjYW4ndCB1c2UgZWFybHktcmV0dXJuIHN0eWxlIGhlcmUgYmVjYXVzZSBvZiB0
ZW1wbGF0ZSBleHBhbnNpb24gaW4gdGhlIGNvbXBpbGVyLgorICAgIC8vIERvaW5nIHNvIHdvdWxk
IGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0IHN0eWxlIHJ1bGUgYWJvdXQgZG9pbmcgImlmICgp
IHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3RlYWQgb2YgImlmICgpIHsgcmV0dXJuOyB9IGVsc2Ug
eyByZXR1cm47IH0iCisgICAgLy8gb3IgQikgY2F1c2UgdGhlIGNvbXBpbGVyIHRvIGluZmluaXRl
bHkgcmVjdXJzZSB3aGVuIGdlbmVyYXRpbmcgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIG9mIHRo
aXMgZnVuY3Rpb24uCisgICAgaWYgY29uc3RleHByIChJIDwgV1RGOjp2YXJpYW50X3NpemU8RGlz
cGxheUxpc3RJdGVtPjo6dmFsdWUpIHsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlw
ZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEksIERpc3BsYXlMaXN0SXRlbT47CisKKyAg
ICAgICAgY29uc3QgYXV0byogZW5kT2ZDdXJyZW50QnVmZmVyID0gdGhpcy0+ZW5kT2ZDdXJyZW50
QnVmZmVyKCk7CisKKyAgICAgICAgaWYgKG1fY3Vyc29yICsgMSA+IGVuZE9mQ3VycmVudEJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBpdGVt
VHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAgICAgIGlmIChp
dGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJl
dHVybiBjdXJyZW50SXRlbTxJICsgMT4oKTsKKworICAgICAgICBpZiAoRGlzcGxheUxpc3RJdGVt
VHlwZTo6aXNJbmxpbmVJdGVtKSB7CisgICAgICAgICAgICBpZiAobV9jdXJzb3IgKyBwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8RGlzcGxheUxpc3RJdGVtVHlwZT4oKSA+IGVuZE9mQ3Vy
cmVudEJ1ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgY29uc3QgYXV0byYgaXRlbSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IERpc3BsYXlM
aXN0SXRlbVR5cGUqPihtX2N1cnNvciArIHNpemVvZih1aW50NjRfdCkpOworICAgICAgICAgICAg
aWYgKCFpc1ZhbGlkKGl0ZW0pKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICBzdGQ6OnNpemVfdCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHNpemVv
Zih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBzaXpl
b2YoRGlzcGxheUxpc3RJdGVtVHlwZSkpOworICAgICAgICAgICAgcmV0dXJuIHt7IGl0ZW0sIGN1
cnJlbnRJdGVtU2l6ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVt
IH19OworICAgICAgICB9CisKKyAgICAgICAgYXV0byogY2xpZW50ID0gaXRlbUJ1ZmZlcigpLT5t
X3JlYWRpbmdDbGllbnQ7CisgICAgICAgIGlmICghY2xpZW50KQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBpZiAobV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2
NF90KSA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRf
dCo+KG1fY3Vyc29yKVsxXTsKKyAgICAgICAgY29uc3QgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1
cnNvciArIDIgKiBzaXplb2YodWludDY0X3QpOworICAgICAgICBpZiAoc3RhcnRPZkRhdGEgKyBk
YXRhTGVuZ3RoID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBhdXRvIGl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRP
ZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBlKTsKKyAgICAgICAgaWYgKCFpdGVtIHx8ICFpc1Zh
bGlkKGl0ZW0udmFsdWUoKSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICBzdGQ6OnNpemVfdCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9ICAyICogc2l6ZW9mKHVp
bnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5n
dGgpOworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZShpdGVtLnZhbHVlKCkpLCBjdXJyZW50SXRl
bVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9fTsKKyAg
ICB9CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIERpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKQoreworICAgIGF1dG8g
aXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgaWYgKCFpdGVtcykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVm
ZmVycy5zaXplKCk7CisgICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9mUmVh
ZE9ubHlCdWZmZXJzKSB7CisgICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUgPSBpdGVt
cy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAgICAgbV9j
dXJzb3IgPSBjdXJyZW50QnVmZmVySGFuZGxlLmRhdGE7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyk7
CisgICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YTsKKyAgICB9
Cit9CisKK3VpbnQ4X3QqIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVy
KCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIEFTU0VSVChp
dGVtcyk7CisKKyAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1fcmVh
ZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVt
YmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZlckhhbmRs
ZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOworICAg
ICAgICByZXR1cm4gY3VycmVudEJ1ZmZlckhhbmRsZS5kYXRhICsgY3VycmVudEJ1ZmZlckhhbmRs
ZS5jYXBhY2l0eTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09
IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsKKyAgICByZXR1cm4gaXRlbXMtPm1fd3JpdGFibGVC
dWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworfQorCit9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGEyNmFhMmUy
NTYxOWZhZmIzOTEwOTQ1YWNhMzI1NGYwMWNhODZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0
b3IuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEaXNwbGF5TGlzdC5oIgorI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKKworY2xhc3MgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHsKK3B1Ymxp
YzoKKyAgICBlbnVtIGNsYXNzIEltbWVkaWF0ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9OworICAg
IEl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiwgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgPSBJbW1l
ZGlhdGVseU1vdmVUb0VuZDo6Tm8pOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJh
dG9yJiBvdGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVyLm1fZGlzcGxheUxp
c3QgJiYgbV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlcmF0b3IrKygpOworCisgICAgc3RydWN0IFZhbHVlIHsK
KyAgICAgICAgRGlzcGxheUxpc3RJdGVtIGl0ZW07CisgICAgICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gZXh0ZW50OworICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKKyAgICB9
OworCisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmFsdWU+IG9wZXJhdG9yKigpIGNvbnN0
OworCitwcml2YXRlOgorICAgIHN0cnVjdCBDdXJyZW50SXRlbVJlc3VsdCB7CisgICAgICAgIERp
c3BsYXlMaXN0SXRlbSBkaXNwbGF5TGlzdEl0ZW07CisgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJ
bkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAgdGVtcGxh
dGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgorICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PiBj
dXJyZW50SXRlbSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlQ3Vyc29y
VG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOworICAgIHVpbnQ4X3QqIGVuZE9mQ3VycmVudEJ1ZmZl
cigpIGNvbnN0OworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29sIGF0RW5kKCkgY29uc3Q7
CisjZW5kaWYKKworICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJZkV4aXN0cygpOyB9CisKKyAgICBjb25zdCBEaXNwbGF5
TGlzdCYgbV9kaXNwbGF5TGlzdDsKKyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1JbmZvIHsKKyAgICAg
ICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVmZmVyOworICAgICAgICBib29sIGlzRHJhd2luZ0l0ZW07
CisgICAgfTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPEN1cnJlbnRJdGVtSW5mbz4gbV9jdXJyZW50
SXRlbUluZm87CisgICAgdWludDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07CisgICAgc2l6ZV90
IG1fcmVhZE9ubHlCdWZmZXJJbmRleCB7IDAgfTsKKyAgICBzaXplX3QgbV9kcmF3aW5nSXRlbUlu
ZGV4IHsgMCB9OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCmluZGV4IDEwZDk1ZDYzYjA4Yzc3ZjdmODVjM2QzYTc5NjBlZjU2ZjljMzk0NGYuLmU1
MjhhMzVmZmUxODQ2YmI3ZmU4NjQ2YTY1YjVkMmIwMzgyYzMwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTExNiwyNiArMTE2LDE3IEBAIHZvaWQgUmVj
b3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSYgY2hhbmdlcywKICAgICAgICAgYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVudD4oKmNo
YW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnQsIGNoYW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnRT
cGFjZVRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBl
KEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdh
dGUtPndpbGxBcHBlbmRJdGVtT2ZUeXBlKHR5cGUpOwotCi0gICAgaWYgKGlzRHJhd2luZ0l0ZW0o
dHlwZSkKLSNpZiBVU0UoQ0cpCi0gICAgICAgIHx8IHR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ry
b2tlUGF0dGVybiB8fCB0eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4KLSNlbmRp
ZgotICAgICkgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFu
Z2VzID0gY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2U7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFu
Z2VzLmNoYW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7Ci0g
ICAgICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgewotICAgICAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRl
ICIgPDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNo
YW5nZXNGcm9tTGFzdFN0YXRlKSk7Ci0gICAgICAgICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0o
c3RhdGVDaGFuZ2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgICAgICAgICBzdGF0ZUNo
YW5nZXMubV9jaGFuZ2VGbGFncyA9IHsgfTsKLSAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSgpLmxh
c3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsKLSAgICAgICAgfQotICAgICAg
ICBjdXJyZW50U3RhdGUoKS53YXNVc2VkRm9yRHJhd2luZyA9IHRydWU7Cit2b2lkIFJlY29yZGVy
Ojp3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlJiBzdGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9
IHN0YXRlQ2hhbmdlcy5jaGFuZ2VzRnJvbVN0YXRlKGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5n
U3RhdGUpOworICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgeworICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3Rh
dGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0ZSwg
Y2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKKyAgICAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0
YXRlQ2hhbmdlcywgY2hhbmdlc0Zyb21MYXN0U3RhdGUpOworICAgICAgICBzdGF0ZUNoYW5nZXMu
bV9jaGFuZ2VGbGFncyA9IHsgfTsKKyAgICAgICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdT
dGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOwogICAgIH0KKyAgICBjdXJyZW50U3RhdGUoKS53
YXNVc2VkRm9yRHJhd2luZyA9IHRydWU7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnVwZGF0ZVN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAppbmRleCBlN2I0YTA3ZmNjYzg3ZGVhNmRlYTI1NGE1Yjc2Y2RiZGU4YzQxNmM2Li45ZDUw
MjEwMjM0MjA0MmRkY2I4Njc3Nzg3ODIwYjVlODY4YmJiYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQoQXJncyYm
Li4uIGFyZ3MpCiAgICAgewotICAgICAgICB3aWxsQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlw
ZSk7CisgICAgICAgIHdpbGxBcHBlbmRJdGVtT2ZUeXBlPFQ+KCk7CiAgICAgICAgIG1fZGlzcGxh
eUxpc3QuYXBwZW5kPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAKICAgICAgICAg
aWYgY29uc3RleHByIChUOjppc0RyYXdpbmdJdGVtKSB7CkBAIC0xNzEsNyArMTcxLDIxIEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxB
cHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2RlbGVn
YXRlKQorICAgICAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW1PZlR5cGUoVDo6aXRl
bVR5cGUpOworCisgICAgICAgIGlmIChUOjppc0RyYXdpbmdJdGVtCisjaWYgVVNFKENHKQorICAg
ICAgICAgICAgfHwgVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybiB8
fCBUOjppdGVtVHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuCisjZW5kaWYKKyAg
ICAgICAgKQorICAgICAgICAgICAgd2lsbEFwcGVuZERyYXdpbmdJdGVtKCk7CisgICAgfQorCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKTsKIAogICAgIHZv
aWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggZDE3MzdhMjc5YzM5N2UwOTA5M2QxMzg0MzNkYjM4
NDdkNmY0NzQ5Mi4uZTMyZTA2MTk3N2VjNmI4MDk1ZjNlNjU5NmE2ODIzMTZlYmRkYWE0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJ
dGVtcy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgpAQCAtNTIsOSArNTMsOCBAQCBHcmFwaGljc0NvbnRleHQmIFJlcGxheWVy
Ojpjb250ZXh0KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1h
Z2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgY29u
c3QgVCYgaW1hZ2VCdWZmZXJJdGVtKQogewotICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0
ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1ZmZlckl0
ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0g
aW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGltYWdlQnVm
ZmVySXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwpAQCAtNjQsOSArNjQsOCBAQCBp
bmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJ
bWFnZUJ1ZmZlckl0ZW0oR3JhcGhpYwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0
YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1h
Z2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFw
JiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2Vz
LCBjb25zdCBUJiBuYXRpdmVJbWFnZUl0ZW0pCiB7Ci0gICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVt
ID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5hdGl2ZUlt
YWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJ
bWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgbmF0aXZlSW1hZ2VJdGVt
LmFwcGx5KGNvbnRleHQsICppbWFnZSk7CkBAIC03NSwxMCArNzQsOCBAQCBpbmxpbmUgc3RhdGlj
IE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0
ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKLWlubGluZSBz
dGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRl
SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYg
bmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgY29u
c3QgU2V0U3RhdGUmIHNldFN0YXRlSXRlbSkKIHsKLSAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBp
dGVtLmdldDxTZXRTdGF0ZT4oKTsKLQogICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1h
Z2UgPSBudWxscHRyOwogICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0gbnVsbHB0
cjsKIApAQCAtOTksOSArOTYsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDbwogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUg
c3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1h
cCYgZm9udHMsIGNvbnN0IFQmIGZvbnRJdGVtKQogewotICAgIGF1dG8mIGZvbnRJdGVtID0gaXRl
bS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGZvbnRJdGVtLmZvbnRJ
ZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSBmb250cy5nZXQocmVzb3VyY2VJZGVu
dGlmaWVyKSkgewogICAgICAgICBmb250SXRlbS5hcHBseShjb250ZXh0LCAqZm9udCk7CkBAIC0x
MTAsNjggKzEwNiw2OCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleAogICAgIHJldHVybiByZXNv
dXJjZUlkZW50aWZpZXI7CiB9CiAKLXN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29u
PiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwbGF5ZXI6OmFwcGx5
SXRlbShJdGVtSGFuZGxlIGl0ZW0pCitleHRlcm4gR3JhcGhpY3NDb250ZXh0JiBzeW50aGVzaXpl
TFZhbHVlR3JhcGhpY3NDb250ZXh0OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9p
ZD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseSA9IGZhbHNlOwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseTxULCBz
dGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5hcHBseShzeW50aGVzaXplTFZh
bHVlR3JhcGhpY3NDb250ZXh0KSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+
CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0FwcGx5PEl0ZW0+
LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiwgR3JhcGhpY3NDb250ZXh0JikKK3sKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWZfdDxIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHkoY29uc3QgSXRlbSYgaXRlbSwgR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCit7CisgICAgcmV0dXJuIGl0ZW0uYXBwbHkoZ3Jh
cGhpY3NDb250ZXh0KTsKK30KKworYXV0byBSZXBsYXllcjo6YXBwbHlJdGVtKGNvbnN0IERpc3Bs
YXlMaXN0SXRlbSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0CiB7CiAgICAgaWYgKG1fZGVsZWdh
dGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKIAotICAgIGlmIChpdGVtLmlzPERyYXdJ
bWFnZUJ1ZmZlcj4oKSkgeworICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZd
KGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAg
ICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VC
dWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRl
bSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVk
UmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAg
ICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAg
ICBpZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkgeworICAgIH0sIFsmXShjb25zdCBD
bGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSkgLT4gc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlS
ZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiB7CiAgICAgICAg
IGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVm
ZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRl
bSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVk
UmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAg
ICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAg
ICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgRHJh
d05hdGl2ZUltYWdlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAoYXV0
byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08
RHJhd05hdGl2ZUltYWdlPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwg
V1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1
cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVt
LmlzPERyYXdHbHlwaHM+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgpLCBtX2Zv
bnRzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0pIC0+IEFwcGx5
SXRlbVJlc3VsdCB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4oY29udGV4dCgpLCBtX25h
dGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQg
fTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3UGF0dGVybj4oKSkgewotICAgICAgICBp
ZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFn
ZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQorICAg
IH0sIFsmXShjb25zdCBEcmF3R2x5cGhzJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlGb250
SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQogICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3Zl
KG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8U2V0
U3RhdGU+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgU2V0U3RhdGUmIGl0ZW0pIC0+IEFwcGx5SXRl
bVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkK
ICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNv
dXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlm
IChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgfSwgWyZdKGNv
bnN0IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBjbGlwSXRlbSkgLT4gQXBwbHlJdGVtUmVz
dWx0IHsKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OwotICAgICAg
ICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigp
OwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNw
YWNlKCksIG1fY29udGV4dCk7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgV1RGOjpudWxs
b3B0IH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0g
ICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7Cisg
ICAgfSwgWyZdKGNvbnN0IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFw
cGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAg
ICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbSwgV1RGOjpudWxsb3B0
IH07Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzPigpOwogICAgICAgICBtX2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1fbWFza0lt
YWdlQnVmZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgbV9tYXNrSW1hZ2VC
dWZmZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCB9OwotICAgIH0KLQotICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAgICByZXR1cm4g
eyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0sIFsmXShjb25zdCBhdXRvJiBp
dGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBhcHBseShpdGVtLCBjb250ZXh0KCkp
OworICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0p
OworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiBSZXBsYXlSZXN1
bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRy
YWNrUmVwbGF5TGlzdCkKQEAgLTE4NywyOCArMTgzLDMwIEBAIFJlcGxheVJlc3VsdCBSZXBsYXll
cjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlM
aXN0CiAgICAgc2l6ZV90IGkgPSAwOwogI2VuZGlmCiAgICAgUmVwbGF5UmVzdWx0IHJlc3VsdDsK
LSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiBtX2Rpc3Bs
YXlMaXN0KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBtX2Rpc3Bs
YXlMaXN0KSB7CisgICAgICAgIGlmICghZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgICAgICBy
ZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgYXV0byYgW2l0
ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsK
KwogICAgICAgICBpZiAoIWluaXRpYWxDbGlwLmlzWmVybygpICYmIGV4dGVudCAmJiAhZXh0ZW50
LT5pbnRlcnNlY3RzKGluaXRpYWxDbGlwKSkgewogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJza2lwcGluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRl
bSk7CiAgICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1
ZmZlcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFp
dGVtKSB7Ci0gICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5
UmVhc29uOjpJbnZhbGlkSXRlbTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAg
ICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJhcHBseWluZyAi
IDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CiAKLSAgICAgICAgaWYgKGl0ZW0tPmlzPE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSkgeworICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+
KGl0ZW0pKSB7CiAgICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNp
emVJbkJ1ZmZlcjsKICAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BS
ZXBsYXlSZWFzb246OkNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI7Ci0gICAgICAgICAgICBy
ZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBpdGVtLT5nZXQ8TWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAg
IHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IFdURjo6Z2V0PE1ldGFDb21tYW5k
Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbSkuaWRlbnRpZmllcigpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byBbcmVhc29uRm9yU3Rv
cHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJdID0gYXBwbHlJdGVtKCppdGVt
KTsgcmVhc29uRm9yU3RvcHBpbmcpIHsKKyAgICAgICAgaWYgKGF1dG8gW3JlYXNvbkZvclN0b3Bw
aW5nLCBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyXSA9IGFwcGx5SXRlbShpdGVtKTsg
cmVhc29uRm9yU3RvcHBpbmcpIHsKICAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGlu
ZyA9ICpyZWFzb25Gb3JTdG9wcGluZzsKICAgICAgICAgICAgIHJlc3VsdC5taXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyID0gV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE3LDkgKzIxNSw5IEBAIFJlcGxheVJlc3Vs
dCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJh
Y2tSZXBsYXlMaXN0CiAgICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6
ZUluQnVmZmVyOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKSB7Ci0g
ICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoKml0ZW0pOwotICAgICAgICAgICAgaWYgKGl0
ZW0tPmlzRHJhd2luZ0l0ZW0oKSkKLSAgICAgICAgICAgICAgICByZXBsYXlMaXN0LT5hZGREcmF3
aW5nSXRlbUV4dGVudChXVEZNb3ZlKGV4dGVudCkpOworICAgICAgICAgICAgcmVwbGF5TGlzdC0+
YXBwZW5kKGl0ZW0pOworICAgICAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCisgICAg
ICAgICAgICAgICAgcmVwbGF5TGlzdC0+YWRkRHJhd2luZ0l0ZW1FeHRlbnQoT3B0aW9uYWw8Rmxv
YXRSZWN0PihleHRlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmgKaW5kZXggMTgxYTEyYjBlNTE4ZThkYzIxZDNiNzQ5ZjI3MTAxZDJh
M2U5NmYzOS4uOWUwMzkyNWM2ZGY1ZmRkMjQ1NGNlYWE3MzE4MThmM2M5ZGJjMjZlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDEyICs2NiwxMyBAQCBwdWJsaWM6
CiAgICAgY2xhc3MgRGVsZWdhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVs
ZWdhdGUoKSB7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KEl0ZW1IYW5kbGUsIEdyYXBo
aWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBhcHBs
eShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mLCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIH07CiAgICAgCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0OwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUp
OworICAgIHVzaW5nIEFwcGx5SXRlbVJlc3VsdCA9IHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVw
bGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj47CisgICAg
QXBwbHlJdGVtUmVzdWx0IGFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogICAg
IEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDA2ZDk0M2Q5N2E5YjY0Zjcw
YTFlNzc5NmQ5MTUwZWI5N2Y4Mjk2MzkuLmNkNTA2YTI5MDcyNTRiMjFiMWUxN2EyYjliMDI1YmZl
NjQwNjM0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDI4ICs3NCwyNCBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
IGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKKyAgICBi
b29sIGFwcGx5KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0
ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KCkp
IHsKLSAgICAgICAgICAgIGF1dG8mIHB1dEltYWdlRGF0YUl0ZW0gPSBpdGVtLmdldDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigpOworICAgICAgICBhdXRvIHZpc2l0b3IgPSBX
VEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VE
YXRhJiBwdXRJbWFnZURhdGFJdGVtKSB7CiAgICAgICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1h
Z2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBw
dXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwg
cHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Rmx1c2hDb250ZXh0PigpKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6Rmx1c2hDb250ZXh0JiBmbHVzaENvbnRleHQpIHsKICAgICAgICAgICAgIEJhc2VDb25j
cmV0ZUltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKTsKLSAgICAgICAgICAgIGF1dG8gaWRlbnRp
ZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkuaWRl
bnRpZmllcigpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gZmx1c2hDb250ZXh0Lmlk
ZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRGbHVz
aChpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpLmlkZW50aWZpZXIoKTsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0
ZW1CdWZmZXImIG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcikgeworICAgICAgICAgICAgYXV0
byBuZXh0QnVmZmVySWRlbnRpZmllciA9IG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlci5pZGVu
dGlmaWVyKCk7CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuc2V0TmV4dEl0
ZW1CdWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBj
b250ZXh0KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgICAg
IHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29u
dGV4dCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBp
dGVtKTsKICAgICB9CiAKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZTRkZGMzZDE1YWIyNTRh
ZmViODE1ZGYyZTdiNDU3OTBjZDY2MDI1Zi4uMjEzNDQxZGRjNWRlNzUyNDlkNzFlN2YwNTk2YzRj
MWM1NGE5ZTBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQsMjAgKzExNCwxOCBAQCB1
aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiti
b29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghaXRlbS5pczxEaXNw
bGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZv
ck1lZGlhPigpOwotICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5p
ZGVudGlmaWVyKCkpOwotICAgIGlmICghcGxheWVyKQorICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoWyZdKGNvbnN0IERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmIG1l
ZGlhSXRlbSkgeworICAgICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobWVk
aWFJdGVtLmlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JN
ZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJdGVt
LmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworICAgIHJldHVybiBXVEY6
OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFu
ZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQpAQCAtMTgyLDcgKzE4MCw3IEBAIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwCiAgICAgZWxz
ZQogICAgICAgICByZXBsYXllckRlbGVnYXRlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyKj4oJmRlc3RpbmF0aW9uKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXIgeworICAgIHJldHVybiBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIg
ewogICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCiAgICAgICAgIGRpc3BsYXlMaXN0LAog
ICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpLApAQCAtMzExLDEy
ICszMDksMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURp
c3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKICAgICB9CiB9CiAKLXZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoRGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25JZGVudGlmaWVyKQogewogICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaWRlbnRp
ZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9LCBXVEY6Om51
bGxvcHQgfX07CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0IHNyY1JlY3QsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSW50UmVjdCBzcmNSZWN0LCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxJbWFnZURhdGE+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zMjYsNyAr
MzI0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGltYWdlRGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Omdl
dERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzM2LDcgKzMzNCw3IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh1cmxTdHJpbmcpKTsKIH0K
IAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVy
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM0Niw3ICszNDQsNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
ZGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9y
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhf
dD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTM1Niw3ICszNTQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
YwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJlc2VydmVSZXNvbHV0aW9u
IHByZXNlcnZlUmVzb2x1dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMzY1LDE4ICszNjMsMTggQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5k
ZXJpbmcKICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5j
YWNoZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBpbWFnZSA9IGltYWdlQnVmZmVyLT5j
b3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6RG9udENvcHlCYWNraW5n
U3RvcmUpOworICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5OjpEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGlmICgh
aW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSBp
bWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsKLSAgICAgICAgYXV0byByZXN1bHRTaXplID0gcHJl
c2VydmVSZXNvbHV0aW9uID09IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6WWVzID8gYmFj
a2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKKyAgICAgICAgYXV0byByZXN1
bHRTaXplID0gcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzID8g
YmFja2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKICAgICAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRTaXplLCB7IH0p
OwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0
byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICAgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoKmltYWdlLCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7IH0sIHJlc3VsdFNpemUg
fSwgRmxvYXRSZWN0IHsgeyB9LCBiYWNrZW5kU2l6ZSB9LCB7IFdlYkNvcmU6OkNvbXBvc2l0ZU9w
ZXJhdG9yOjpDb3B5IH0pOworICAgICAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdl
LCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7IH0sIHJlc3VsdFNpemUgfSwgRmxvYXRSZWN0IHsg
eyB9LCBiYWNrZW5kU2l6ZSB9LCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogICAgICAg
ICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogICAgIH0oKTsKICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGhhbmRsZSkpOwpAQCAtNDM0LDEwMSArNDMyLDMzIEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlz
cGxheUxpc3Q6Okl0ZW1CCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpl
eGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwog
fQogCi1PcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJO
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRs
ZUxvY2F0aW9uKQordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgorc3RhdGljIGlubGluZSBP
cHRpb25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBkZWNvZGVJdGVtKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKQog
ewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
bGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpDbGlwT3V0VG9QYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0
aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6
Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1Jp
bmdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUmVjdHM+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5
cGhzOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVM
b2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgotICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9u
KTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxQYXRoPihkYXRhLCBsZW5ndGgs
IGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkZpbGxSZWN0V2l0aENvbG9yPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAg
IHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRpZW50
PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihkYXRhLCBsZW5n
dGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmls
bFJvdW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBk
ZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oZGF0YSwgbGVuZ3RoLCBo
YW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVE
YXNoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTZXRMaW5l
RGFzaD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERp
c3BsYXlMaXN0OjpTZXRTdGF0ZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBk
ZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlN0cm9rZVBhdGg+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseURldmlj
ZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBw
bHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsZWFyUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0VsbGlwc2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZl
cjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3Bh
cmVuY3lMYXllcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2U6
Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENv
bnRleHQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlJlc3RvcmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJvdGF0ZToKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldENUTToK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3Ry
b2tlVGhpY2tuZXNzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VFbGxp
cHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlN0cm9rZUxpbmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZTog
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQor
ICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBiZWNhdXNlIG9mIHRl
bXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgLy8gRG9pbmcgc28gd291bGQg
ZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBkb2luZyAiaWYgKCkg
eyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1cm47IH0gZWxzZSB7
IHJldHVybjsgfSIKKyAgICAvLyBvciBCKSBjYXVzZSB0aGUgY29tcGlsZXIgdG8gaW5maW5pdGVs
eSByZWN1cnNlIHdoZW4gZ2VuZXJhdGluZyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgb2YgdGhp
cyBmdW5jdGlvbi4KKyAgICBpZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjo6dmFsdWUpIHsKKyAgICAgICAgdXNpbmcgRGlzcGxh
eUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEksIERpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIGlmICh0eXBlICE9IERpc3BsYXlMaXN0SXRl
bVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZUl0ZW08SSArIDE+KGRh
dGEsIGxlbmd0aCwgdHlwZSk7CisKKyAgICAgICAgQVNTRVJUKCFEaXNwbGF5TGlzdEl0ZW1UeXBl
Ojppc0lubGluZUl0ZW0pOworICAgICAgICBpZiBjb25zdGV4cHIgKCFEaXNwbGF5TGlzdEl0ZW1U
eXBlOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IElQQzo6
RGVjb2Rlcjo6ZGVjb2RlU2luZ2xlT2JqZWN0PERpc3BsYXlMaXN0SXRlbVR5cGU+KGRhdGEsIGxl
bmd0aCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQudmFsdWUoKSkg
fTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCitPcHRp
b25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gV2Vi
S2l0OjpkZWNvZGVJdGVtKGRhdGEsIGxlbmd0aCwgdHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgKaW5kZXggMzk0M2Q1MjFkMzY5M2ZiZDJjZWYzNmI0N2QzNDk2YjFjMmRmMzY1OS4uYzljYzdj
MDg0ZmFkY2RiZjNiYjRhYzI5Y2E5NTlkOGYxYTllMzczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUmIHJlbW90ZVJl
c291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGU7IH0KIAogICAgIC8v
IFJlbmRlcmluZyBvcGVyYXRpb25zLgotICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworICAg
IGJvb2wgYXBwbHlNZWRpYUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMg
dG8gYmUgc2VudC4KICAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CkBAIC04NiwxOSArODYsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJ
UEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURf
UkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3Zl
cnJpZGU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlQW5kQ3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhhbmRsZUxv
Y2F0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IElQQzo6RGVjb2Rlcjo6ZGVj
b2RlU2luZ2xlT2JqZWN0PFQ+KGRhdGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBXZWJLaXQyIHNob3VsZCBub3QgbmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDggYnl0ZXMg
YXQgdGhlIGhhbmRsZSBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSB0eXBlLgotICAgICAgICAgICAgLy8g
TmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0aGluIGRp
c3BsYXkgbGlzdCBjb2RlIGluIFdlYkNvcmUuCi0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0
aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBv
dmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdl
QnVmZmVyJiBkZXN0aW5hdGlvbik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBu
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQs
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDg5NGQ5ZGQxOThjYWM1MjBkZDNhNDI1N2I1MDRj
YTFjNzg0ZDhmZWYuLmZjOTNkYWNhNjNlZjhlZjVlZDFkNzk2OTlhZmQzNmQzNWJkMTA4MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yOTcsOTkgKzI5NywyMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBp
dGVtKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkg
ewotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRv
UGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVj
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpF
bmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBQYXRo
PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFBhdGg+KCkpOwotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0g
ICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICAgICAgcmV0
dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
Rm9jdXNSaW5nUmVjdHM+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVu
Y29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oaXRlbS5n
ZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KCkpOwotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAg
ICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjpl
bmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihpdGVtLmdl
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICAg
ICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVy
OjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQYXRoPihpdGVt
LmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBhdGg+KCkpOwotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAg
ICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgICAgICByZXR1cm4g
SVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZp
bGxSZWN0V2l0aEdyYWRpZW50PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJl
Y3RXaXRoR3JhZGllbnQ+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgICAgICByZXR1cm4gSVBD
OjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5j
b2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUm91bmRl
ZFJlY3Q+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KCkp
OwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpF
bmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldExpbmVE
YXNoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KCkpOwotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAg
ICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlNldFN0YXRlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0
U3RhdGU+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
U3Ryb2tlUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmds
ZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ryb2tlUGF0aD4oaXRlbS5nZXQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlN0cm9rZVBhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cp
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQ
YXR0ZXJuOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBw
bHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgotICAgICAgICBjYXNlIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVs
bGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICBjYXNlIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50Ogot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lU3Ry
b2tlQ29sb3I6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
ZXRMaW5lQ2FwOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
U2V0TGluZUpvaW46Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpTZXRNaXRlckxpbWl0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUlu
bGluZVBhdGg6Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgc3Rh
dGljIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1IZWxwZXIoY29uc3Qg
VCYgaXRlbSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIVQ6OmlzSW5saW5lSXRlbSkK
KyAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxUPihp
dGVtKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
ZW5jb2RlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBp
dGVtKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoW10o
Y29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSAtPiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiB7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlSXRlbUhlbHBlcihkaXNwbGF5TGlzdEl0
ZW0pOworICAgICAgICB9LCBpdGVtKTsKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigpIG92ZXJy
aWRlCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YjNhNDZhZmVmMzFlNTI0NjA5ZTA0NmI4ZjAxNTk2OTNiODkyMjBmYy4uMzBjODBjNGY4NDBhNzBm
MzBmOTdhYTllNDM0ZTc0NTcyZTkwZDM0MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAzLTIyICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNz
XSBNaWdyYXRlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3RlYWQg
b2YgSXRlbUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogTm93IHRoYXQgYSBJdGVtQnVmZmVyUmVh
ZGluZ0NsaWVudCBhbmQgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgYXJlCisgICAgICAgICAgICAg
ICAgbmVjZXNzYXJ5IGZvciB1c2luZyBub24taW5saW5lIGRpc3BsYXkgbGlzdCBpdGVtcywgc3Bl
Y2lmeSB0aGVtIGhlcmUgaW4gdGhlIHRlc3QuCisgICAgICAgICAgICAgICAgQWxzbywgbWlncmF0
ZSBmcm9tIEl0ZW1IYW5kbGUgdG8gRGlzcGxheUxpc3RJdGVtIGxpbmUtYnktbGluZS4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNw
cDogTWlncmF0ZSBmcm9tIEl0ZW1IYW5kbGUgdG8gRGlzcGxheUxpc3RJdGVtIGxpbmUtYnktbGlu
ZS4KKwogMjAyMS0wMy0yMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW3dlYmtpdHNjbXB5XSBCYXNlIEdpdEh1YiBtb2NrIGxpbmtzIG9uIHByb3ZpZGVk
IHJlbW90ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rp
c3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rp
c3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IDFjZTE0NjI4Y2VkNWUwMDY0MjVkMmVjMjlmMWRlMGVi
NzFmZTEzNzQuLmQ4YjI2ZmJkOTdlM2VkMmY4MjQyMjU3NWM2NGUwNjNiZmM1ZDMyMDIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RU
ZXN0cy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRGlzcGxheUxpc3RJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnQuaD4K
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNTgsNyArNTksODggQEAgc3RhdGljIFBh
dGggY3JlYXRlQ29tcGxleFBhdGgoKQogCiBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0
ZW1zKQogeworICAgIFZlY3RvcjxGaWxsUGF0aD4gZmlsbFBhdGhTdG9yYWdlOworICAgIFZlY3Rv
cjxGaWxsUmVjdFdpdGhHcmFkaWVudD4gZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlOworICAg
IFZlY3RvcjxGaWxsUmVjdFdpdGhDb2xvcj4gZmlsbFJlY3RXaXRoQ29sb3JTdG9yYWdlOworCisg
ICAgY2xhc3MgUmVhZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICBSZWFkaW5nQ2xpZW50KGNvbnN0IFZlY3RvcjxGaWxsUGF0
aD4mIGZpbGxQYXRoU3RvcmFnZSwgY29uc3QgVmVjdG9yPEZpbGxSZWN0V2l0aEdyYWRpZW50PiYg
ZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlLCBjb25zdCBWZWN0b3I8RmlsbFJlY3RXaXRoQ29s
b3I+JiBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAgICAgICAgICA6IG1fZmlsbFBhdGhT
dG9yYWdlKGZpbGxQYXRoU3RvcmFnZSkKKyAgICAgICAgICAgICwgbV9maWxsUmVjdFdpdGhHcmFk
aWVudFN0b3JhZ2UoZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlKQorICAgICAgICAgICAgLCBt
X2ZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZShmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxh
eUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gSXRlbVR5cGU6OkZpbGxQYXRoKQorICAgICAgICAgICAg
ICAgIHJldHVybiB7IERpc3BsYXlMaXN0SXRlbShtX2ZpbGxQYXRoU3RvcmFnZVsqcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pIH07CisgICAgICAgICAgICBpZiAodHlwZSA9
PSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgRGlzcGxheUxpc3RJdGVtKG1fZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlWypyZWludGVy
cHJldF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSkgfTsKKyAgICAgICAgICAgIGlmICh0eXBl
ID09IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcikKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyBEaXNwbGF5TGlzdEl0ZW0obV9maWxsUmVjdFdpdGhDb2xvclN0b3JhZ2VbKnJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKSB9OworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisK
KyAgICAgICAgY29uc3QgVmVjdG9yPEZpbGxQYXRoPiYgbV9maWxsUGF0aFN0b3JhZ2U7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxGaWxsUmVjdFdpdGhHcmFkaWVudD4mIG1fZmlsbFJlY3RXaXRoR3Jh
ZGllbnRTdG9yYWdlOworICAgICAgICBjb25zdCBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBt
X2ZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZTsKKyAgICB9OworCisgICAgY2xhc3MgV3JpdGluZ0Ns
aWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CisgICAgcHVibGljOgorICAg
ICAgICBXcml0aW5nQ2xpZW50KFZlY3RvcjxGaWxsUGF0aD4mIGZpbGxQYXRoU3RvcmFnZSwgVmVj
dG9yPEZpbGxSZWN0V2l0aEdyYWRpZW50PiYgZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlLCBW
ZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpCisgICAg
ICAgICAgICA6IG1fZmlsbFBhdGhTdG9yYWdlKGZpbGxQYXRoU3RvcmFnZSkKKyAgICAgICAgICAg
ICwgbV9maWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UoZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9y
YWdlKQorICAgICAgICAgICAgLCBtX2ZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZShmaWxsUmVjdFdp
dGhDb2xvclN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX0xFKGNhcGFjaXR5LCBnbG9iYWxJ
dGVtQnVmZmVyQ2FwYWNpdHkpOworICAgICAgICAgICAgcmV0dXJuIHsgSXRlbUJ1ZmZlcklkZW50
aWZpZXI6OmdlbmVyYXRlKCksIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBh
Y2l0eSB9OworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2Rl
SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGxQYXRoPihpdGVtKSkg
eworICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IG1fZmlsbFBhdGhTdG9yYWdlLnNpemUo
KTsKKyAgICAgICAgICAgICAgICBtX2ZpbGxQYXRoU3RvcmFnZS5hcHBlbmQoV1RGOjpnZXQ8Rmls
bFBhdGg+KGl0ZW0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmluZGV4KSwgc2l6ZW9mKGluZGV4KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxsUmVj
dFdpdGhHcmFkaWVudD4oaXRlbSkpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXggPSBt
X2ZpbGxSZWN0V2l0aEdyYWRpZW50U3RvcmFnZS5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9m
aWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UuYXBwZW5kKFdURjo6Z2V0PEZpbGxSZWN0V2l0aEdy
YWRpZW50PihpdGVtKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZpbmRleCksIHNpemVvZihpbmRleCkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsbFJl
Y3RXaXRoQ29sb3I+KGl0ZW0pKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbV9m
aWxsUmVjdFdpdGhDb2xvclN0b3JhZ2Uuc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fZmlsbFJl
Y3RXaXRoQ29sb3JTdG9yYWdlLmFwcGVuZChXVEY6OmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oaXRl
bSkpOworICAgICAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNoYXIqPigmaW5kZXgpLCBzaXplb2YoaW5kZXgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgSXRl
bUJ1ZmZlckhhbmRsZSYsIHNpemVfdCwgRGlkQ2hhbmdlSXRlbUJ1ZmZlcikgZmluYWwKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgVmVjdG9yPEZpbGxQYXRoPiYgbV9maWxsUGF0aFN0
b3JhZ2U7CisgICAgICAgIFZlY3RvcjxGaWxsUmVjdFdpdGhHcmFkaWVudD4mIG1fZmlsbFJlY3RX
aXRoR3JhZGllbnRTdG9yYWdlOworICAgICAgICBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+JiBt
X2ZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZTsKKyAgICB9OworCiAgICAgRGlzcGxheUxpc3QgbGlz
dDsKKyAgICBXcml0aW5nQ2xpZW50IHdyaXRpbmdDbGllbnQoZmlsbFBhdGhTdG9yYWdlLCBmaWxs
UmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UsIGZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZSk7CisgICAg
UmVhZGluZ0NsaWVudCByZWFkaW5nQ2xpZW50KGZpbGxQYXRoU3RvcmFnZSwgZmlsbFJlY3RXaXRo
R3JhZGllbnRTdG9yYWdlLCBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2UpOworICAgIGxpc3Quc2V0
SXRlbUJ1ZmZlckNsaWVudCgmd3JpdGluZ0NsaWVudCk7CisgICAgbGlzdC5zZXRJdGVtQnVmZmVy
Q2xpZW50KCZyZWFkaW5nQ2xpZW50KTsKIAogICAgIEVYUEVDVF9UUlVFKGxpc3QuaXNFbXB0eSgp
KTsKIApAQCAtNzgsNTYgKzE2MCwzNSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0
ZW1zKQogICAgIEVYUEVDVF9GQUxTRShsaXN0LmlzRW1wdHkoKSk7CiAKICAgICBib29sIG9ic2Vy
dmVkVW5leHBlY3RlZEl0ZW0gPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50
LCBzaXplXSA6IGxpc3QpIHsKLSAgICAgICAgc3dpdGNoIChoYW5kbGUtPnR5cGUoKSkgewotICAg
ICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgICAgIEVY
UEVDVF9GQUxTRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1Rf
VFJVRShoYW5kbGUtPmlzPFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7Ci0gICAgICAgICAgICBhdXRv
JiBpdGVtID0gaGFuZGxlLT5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOworICAgIGZvciAoY29u
c3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogbGlzdCkgeworICAgICAgICBjb25zdCBhdXRvJiBb
aXRlbSwgZXh0ZW50LCBzaXplXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworICAgICAgICAK
KyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3Ry
b2tlVGhpY2tuZXNzJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0Ry
YXdpbmdJdGVtKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnRoaWNrbmVzcygpLCAxLjUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFBhdGg6IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRl
bSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8RmlsbFBhdGg+KCkpOwot
ICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PEZpbGxQYXRoPigpOworICAgICAg
ICB9LCBbJl0oY29uc3QgRmlsbFBhdGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5wYXRoKCku
cGxhdGZvcm1QYXRoKCksIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6
IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkp
OwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PEZpbGxSZWN0V2l0aEdyYWRp
ZW50PigpOworICAgICAgICB9LCBbJl0oY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0p
IHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAg
ICAgICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgxLiwgMS4sIDEwLiwgMTAuKSk7
CiAgICAgICAgICAgICBFWFBFQ1RfRVEoJml0ZW0uZ3JhZGllbnQoKSwgZ3JhZGllbnQucHRyKCkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6
U2V0SW5saW5lRmlsbENvbG9yOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLT5p
c0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxTZXRJ
bmxpbmVGaWxsQ29sb3I+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0
PFNldElubGluZUZpbGxDb2xvcj4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFNldElubGluZUZp
bGxDb2xvciYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5n
SXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5jb2xvcigpLCBDb2xvcjo6cmVkKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKLSAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVY
UEVDVF9UUlVFKGhhbmRsZS0+aXM8U3Ryb2tlSW5saW5lUGF0aD4oKSk7Ci0gICAgICAgICAgICBh
dXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IFN0cm9rZUlubGluZVBhdGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9U
UlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBjb25zdCBhdXRvIHBhdGggPSBp
dGVtLnBhdGgoKTsKICAgICAgICAgICAgIGF1dG8mIGxpbmUgPSBwYXRoLmlubGluZURhdGE8TGlu
ZURhdGE+KCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEobGluZS5zdGFydCwgRmxvYXRQb2ludCgw
LCAwKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEobGluZS5lbmQsIEZsb2F0UG9pbnQoMTAuLCAx
NS4pKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY2Fz
ZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IE1ldGFDb21tYW5k
Q2hhbmdlSXRlbUJ1ZmZlciYpIHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mKSB7CiAgICAg
ICAgICAgICBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIFdURjo6dmlzaXQo
dmlzaXRvciwgaXRlbSk7CiAgICAgfQogCiAgICAgRVhQRUNUX0ZBTFNFKG9ic2VydmVkVW5leHBl
Y3RlZEl0ZW0pOwpAQCAtMTQ3LDExICsyMDgsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBB
cHBlbmRJdGVtcykKIAogICAgIGxpc3QuYXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihGbG9hdFJl
Y3QgeyAwLCAwLCAxMDAsIDEwMCB9LCBDb2xvcjo6YmxhY2spOwogCi0gICAgZm9yIChhdXRvIFto
YW5kbGUsIGV4dGVudCwgc2l6ZV0gOiBsaXN0KSB7Ci0gICAgICAgIEVYUEVDVF9FUShoYW5kbGUt
PnR5cGUoKSwgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUoaGFuZGxlLT5pczxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBkaXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8RmlsbFJlY3RXaXRoQ29sb3I+KGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkp
OworICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gV1RGOjpnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+
KGRpc3BsYXlMaXN0SXRlbS0+aXRlbSk7CisgICAgICAgIEVYUEVDVF9FUShpdGVtLml0ZW1UeXBl
LCBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3IpOwogCi0gICAgICAgIGF1dG8mIGl0ZW0gPSBo
YW5kbGUtPmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKICAgICAgICAgRVhQRUNUX0VRKCppdGVt
LmNvbG9yKCkudHJ5R2V0QXNTUkdCQUJ5dGVzKCksIENvbG9yOjpibGFjayk7CiAgICAgICAgIEVY
UEVDVF9FUShpdGVtLnJlY3QoKSwgRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAgfQpA
QCAtMTczLDEyICsyMzQsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xp
ZW50KQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFu
ZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24p
IGZpbmFsCisgICAgICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVU
VVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0
ZW1UeXBlIHR5cGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIEVYUEVDVF9FUSh0eXBl
LCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0
aCwgc2l6ZW9mKHNpemVfdCkpOwotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNp
emVvZih1aW50NjRfdCkpIFN0cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBzaXplX3QqPihkYXRhKV0pOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9u
IH19OworICAgICAgICAgICAgcmV0dXJuIHsgRGlzcGxheUxpc3RJdGVtKFN0cm9rZVBhdGgobV9p
dGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pKSB9OwogICAgICAg
ICB9CiAKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1zOwpAQCAtMTk0
LDE0ICsyNTQsMTQgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQog
ICAgIHByaXZhdGU6CiAgICAgICAgIEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihz
aXplX3QgY2FwYWNpdHkpIGZpbmFsCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9MVChj
YXBhY2l0eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5KTsKKyAgICAgICAgICAgIEVYUEVDVF9M
RShjYXBhY2l0eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5KTsKICAgICAgICAgICAgIHJldHVy
biB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1C
dWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZW5jb2RlSXRlbShJdGVtSGFuZGxlIGhhbmRsZSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0p
IGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1z
LnNpemUoKTsKLSAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKGhhbmRsZS5nZXQ8U3Ryb2tlUGF0
aD4oKSk7CisgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChXVEY6OmdldDxTdHJva2VQYXRoPihp
dGVtKSk7CiAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oJmluZGV4KSwgc2l6ZW9mKHNpemVfdCkpOwogICAgICAgICB9CiAK
QEAgLTIyNSw4ICsyODUsOCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGll
bnQpCiAgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlckNsaWVudCgmcmVhZGVyKTsKIAogICAg
IFZlY3RvcjxJdGVtVHlwZT4gaXRlbVR5cGVzOwotICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRl
bnQsIHNpemVdIDogc2hhbGxvd0NvcHkpCi0gICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoaGFuZGxl
LT50eXBlKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogc2hhbGxv
d0NvcHkpCisgICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoaXRlbVR5cGUoZGlzcGxheUxpc3RJdGVt
LT5pdGVtKSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uoc2hhbGxvd0NvcHkuaXNFbXB0eSgpKTsKICAg
ICBFWFBFQ1RfRVEoaXRlbVR5cGVzLnNpemUoKSwgNFUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApp
bmRleCBiNTY5ZjM0MDdlMDc1MTVmNjJlMTkwMWVlMDIyZDQxOTQ3ZmYzODlhLi4xYjI1ZWYyMjUy
Yzk0YzJiNmE2YjI0YjM5NjY2ODcwYzg0MDAzOGVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
NSw3ICs4NSw3IEBAIHN0YXRpYyBJdGVtQnVmZmVySWRlbnRpZmllciBnbG9iYWxCdWZmZXJJZGVu
dGlmaWVyID0gSXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyCiAKIGNsYXNzIFJlYWRpbmdDbGll
bnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHJpdmF0ZToKLSAgICBPcHRp
b25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50
OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KikgZmluYWwKKyAgICBPcHRpb25h
bDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUpIGZpbmFsCiAgICAgewogICAgICAgICBFWFBF
Q1RfRVEodHlwZSwgSXRlbVR5cGU6OkZpbGxQYXRoKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9i
YWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2Fw
YWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0
ZW1IYW5kbGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0K
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KICAgICB2
b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCwgRGlkQ2hh
bmdlSXRlbUJ1ZmZlcikgZmluYWwgeyB9CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423981</attachid>
            <date>2021-03-22 19:46:38 -0700</date>
            <delta_ts>2021-03-22 23:45:08 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-223560-20210322194637.patch</filename>
            <type>text/plain</type>
            <size>169488</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNkZjVhNWQxMjg0ZDAw
MGZhYjlmZTlmZjRhMWNiZTA2ODZmZGNlZC4uZWNmMmJiNzM3MmQzZTRkYWQ0YTM0MzljMDliNmZj
ZDZjYzE5NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAyMS0wMy0yMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gUmVwbGFjZSBJdGVtSGFuZGxlIHdpdGggYSBjb25zdCBWYXJpYW50JgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gs
IHdlIHdlcmUgcmVwcmVzZW50aW5nIHRoZSBjb25jZXB0IG9mICJhbiB1bmtub3duIERpc3BsYXlM
aXN0SXRlbSIgd2l0aCBJdGVtSGFuZGxlLAorICAgICAgICB3aGljaCB3YXMgYSBwb2ludGVyIHRv
IGEgYnl0ZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIERpc3BsYXlMaXN0OjpJdGVyYXRvci4gVGhl
IGZpcnN0IGJ5dGUgd2FzIGFuCisgICAgICAgIGVudW0gdmFsdWUgd2hpY2ggdG9sZCB5b3UgaG93
IHRvIGludGVycHJldCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkYXRhLiBUaGUgcmVtYWluZGVyIG9m
IHRoZSBieXRlcworICAgICAgICB3ZXJlIGp1c3QgYW5kIG9iamVjdCwgcGxhY2VkIHRoZXJlIGJ5
IHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgVGhpcyBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUg
YXMgYSBWYXJpYW50LiBVc2luZyBhIHJlYWwgdmFyaWFudCBoYXMgYSBmZXcgYmVuZWZpdHMgb3Zl
ciB0aGlzIGN1c3RvbQorICAgICAgICBzb2x1dGlvbiwgdGhvdWdoOgorICAgICAgICAxLiBCZXR0
ZXIgdHlwZSBzYWZldHkuIFdlIGRvbid0IGhhdmUgdG8gcmVhZCBpbmRpdmlkdWFsIGJ5dGVzIGFu
ZCBpbnRlcnByZXQgb3RoZXIgYnl0ZXMgb3Vyc2VsdmVzLgorICAgICAgICAgICAgICAgSW5zdGVh
ZCwgd2UgY2FuIHJlbHkgb24gdGhlIFZhcmlhbnQgaW5mcmFzdHJ1Y3R1cmUgdG8gZG8gdGhpcywg
d2hpY2ggaXMgdmVyeSB3ZWxsLXRlc3RlZC4KKyAgICAgICAgMi4gSXQncyBsZXNzIGVycm9yLXBy
b25lLCBiZWNhdXNlIHdlIGNhbiB1c2UgdGVtcGxhdGUgbWV0YXByb2dyYW1taW5nIHRvIGNhdXNl
IHRoZSBjb21waWxlciB0bworICAgICAgICAgICAgICAgZ2VuZXJhdGUgZnVuY3Rpb25zIGZvciB1
cy4gRm9yIGV4YW1wbGUsIHdlIGNhbiBkbyBzb21ldGhpbmcgbGlrZQorCisgICAgICAgIHJldHVy
biBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkgLT4gYm9vbCB7Cisg
ICAgICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlzRHJhd2luZ0l0ZW07CisgICAgICAg
IH0sIGRpc3BsYXlMaXN0SXRlbSk7CisKKyAgICAgICAgaW5zdGVhZCBvZgorCisgICAgICAgIHN3
aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKKyAgICAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoK
KyAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgSXRl
bVR5cGU6OkNsZWFyUmVjdDoKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Cisg
ICAgICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgorICAgICAgICAuLi4KKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIFRoaXMgcGF0Y2ggYWN0dWFsbHkgZGVs
ZXRlcyBhbGwgb2YgdGhlIHBsYWNlcyB3aGVyZSB3ZSBoYXZlIGJpZyBzd2ljaCBzdGF0ZW1lbnRz
IG9mIGRyYXdpbmcgY29tbWFuZHMsCisgICAgICAgIGFuZCByZXBsYWNlcyB0aGVtIGFsbCB3aXRo
IHNpbWlsYXIgdGVtcGxhdGUgbWV0YXByb2dyYW1taW5nLiBBcyBzdWNoLCB0aGlzIHBhdGNoIGRl
bGV0ZXMgbW9yZSB0aGFuCisgICAgICAgIDEyMDAgbGluZXMgdGhhbiBpdCBhZGRzLgorCisgICAg
ICAgIE1vc3Qgb2YgdGhpcyBwYXRjaCBpcyBqdXN0IGEgZGlyZWN0IHRyYW5zbGF0aW9uIGZyb20g
SXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0gKHdoaWNoIGlzIGEgdHlwZWRlZgorICAgICAg
ICB0byBhIFZhcmlhbnQpLCBsaW5lLWJ5LWxpbmUuIEhvd2V2ZXIsIHRoZXJlIGFyZSB0d28gbm9u
LXRyaXZpYWwgY2hhbmdlczoKKworICAgICAgICAxLiBUaGUgY29tcGxleGl0eSBpbnNpZGUgRGlz
cGxheUxpc3Q6Okl0ZXJhdG9yIGlzIHNpZ25pZmljYW50bHkgcmVkdWNlZCBiZWNhdXNlIGl0IG5v
IGxvbmdlciBoYXMgdG8KKyAgICAgICAgICAgICAgIGFsbG9jYXRlIHRoZSBiYWNraW5nIHN0b3Jh
Z2UgZm9yIHRoZSBJdGVtSGFuZGxlLiBJJ3ZlIGFsc28gc2ltcGxpZmllZCB0aGUgcmV0dXJuIHR5
cGUgb2YKKyAgICAgICAgICAgICAgIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkg
dG8gbWFrZSBpdCBhIGxpdHRsZSBtb3JlIGNsZWFyIHdoYXQgdGhlIGZpZWxkcyBtZWFuLgorICAg
ICAgICAyLiBJJ3ZlIG1hZGUgdXNpbmcgYSBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCBhbmQgSXRl
bUJ1ZmZlcldyaXRpbmdDbGllbnQgcmVxdWlyZWQgZm9yIHVzaW5nIG5vbi1pbmxpbmUKKyAgICAg
ICAgICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtcy4gVGhlc2UgY2xpZW50cyB3ZXJlIGFsd2F5cyBz
cGVjaWZpZWQgaW4gV2ViS2l0IC0gdGhleSB3ZXJlIG9ubHkgb3B0aW9uYWwgZm9yCisgICAgICAg
ICAgICAgICB0ZXN0aW5nLiBIb3dldmVyLCB0aGUgY29kZSBjb3VsZCBiZSBzaWduaWZpY2FudGx5
IHNpbXBsaWZpZWQgaWYgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhlCisgICAgICAgICAgICAg
ICBjYXNlIG9mIG5vbi1pbmxpbmUgaXRlbXMgd2l0aG91dCB0aGVzZSBjbGllbnRzLiBBbmQsIHBo
aWxvc29waGljYWxseSwgdGhlc2UgY2xpZW50cyAqc2hvdWxkKiBiZQorICAgICAgICAgICAgICAg
cmVxdWlyZWQgdG8gZG8gZW5jb2RpbmcvZGVjb2RpbmcsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3Ig
bm9uLWlubGluZSBpdGVtcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBp
cyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOiBM
aW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJvbSBJdGVtSGFuZGxlIHRvCisgICAgICAgICAgICAg
IERpc3BsYXlMaXN0SXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdDo6YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6IFdlIGNhbiBtYWtlIHRoZSBjb21waWxlciBnZW5l
cmF0ZSB0aGlzIGZ1bmN0aW9uIQorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjphdEVuZCBjb25zdCk6IERlbGV0ZWQuIE1vdmVkIHRvIERpc3Bs
YXlMaXN0SXRlcmF0b3IuY3BwCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQuIERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6YWR2YW5j
ZSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6Y2xlYXJDdXJyZW50SXRlbSk6IERlbGV0ZWQuIERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZVRv
RW5kKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6IERl
bGV0ZWQuIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjppdGVyYXRvcjo6aXRlcmF0b3IpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6On5pdGVyYXRvcik6IERlbGV0ZWQu
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVy
YXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuIERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRv
cjo6b3BlcmF0b3IrKyk6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4g
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJh
dG9yOjppdGVtQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmJlZ2luIGNvbnN0KTogRGVsZXRlZC4gTW92ZWQg
dG8gdGhlIC5jcHAgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6ZW5kIGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcik6IEJlY2F1c2UgdGhp
cyBwYXRjaCBzdGFydHMgcmVxdWlyaW5nIGEKKyAgICAgICAgICAgIEl0ZW1CdWZmZXJSZWFkaW5n
Q2xpZW50IGZvciBhbnkgbm9uLWlubGluZSBpdGVtcywgd2hpY2ggaXMgbm8gcHJvYmxlbSBiZWNh
c3VlIHdlIHdlcmUgYWx3YXlzCisgICAgICAgICAgICBzcGVjaWZ5aW5nIG9uZSBpbiBXZWJLaXQg
YW55d2F5LCB3ZSBubyBsb25nZXIgbmVlZCBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRCdWZm
ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6Om9wZXJhdG9y
PSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmNs
ZWFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6
c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZTo6ZGVzY3JpcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5KTogRGVsZXRlZC4gV2UgY2FuIG1ha2Ug
dGhlIGNvbXBpbGVyIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6IERlbGV0ZWQuIFRoZXJlIHdlcmUgdHdv
IHBsYWNlcyB3aGVyZSB0aGlzIHdhcyB1c2VkOgorICAgICAgICAgICAgMS4gV2Ugcm91bmQtdHJp
cHBlZCB0aHJvdWdoIEl0ZW1IYW5kbGUgd2hlbmV2ZXIgYXBwZW5kaW5nIGFuIGl0ZW0sIGp1c3Qg
c28gd2UgY291bGQgcGFzcyBkYXRhIHRvCisgICAgICAgICAgICAgICAgICAgSXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQuIFRoaXMgaXMgdW5uZWNlc3Nhcnkgbm93IHRoYXQgd2UgY2FuIGp1c3QgcGFz
cyBEaXNwbGF5TGlzdEl0ZW0KKyAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgorICAgICAgICAg
ICAgMi4gRGVzdHJveWluZyBub24taW5saW5lIGl0ZW1zIHdoaWNoIHdlcmUgYXBwZW5kZWQgd2l0
aG91dCBhIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50LiBBYm92ZSBJCisgICAgICAgICAgICAgICAg
ICAgZGVzY3JpYmUgdGhhdCB0aGlzIHBhdGNoIHN0YXJ0cyByZXF1aXJpbmcgYSBJdGVtQnVmZmVy
UmVhZGluZ0NsaWVudCBmb3IgYW55IG5vbi1pbmxpbmUgaXRlbXMsCisgICAgICAgICAgICAgICAg
ICAgd2hpY2ggaXMgbm8gcHJvYmxlbSBiZWNhc3VlIHdlIHdlcmUgYWx3YXlzIHNwZWNpZnlpbmcg
b25lIGluIFdlYktpdCBhbnl3YXkuCisgICAgICAgICAgICBTbywgbmVpdGhlciBvZiB0aGVzZSBz
aXR1YXRpb25zIHN1cnZpdmVkIHRoaXMgcGF0Y2gsIHNvIHRoaXMgZW50aXJlIGZ1bmN0aW9uIGlz
IGRlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29weUludG8pOiBEZWxl
dGVkLiBUaGVyZSdzIG5vIG5lZWQgZm9yIHRoaXMgbm93IHRoYXQgdGhlIGl0ZXJhdG9yIGRvZXNu
J3QKKyAgICAgICAgICAgIGFsbG9jYXRlIHN0b3JhZ2UgZm9yIHRoZSBJdGVtSGFuZGxlLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KTog
RGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6bV9hbGxvY2F0
ZWRCdWZmZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKTogTWlncmF0ZSBmcm9tIEl0ZW1IYW5kbGUgdG8gRGlz
cGxheUxpc3RJdGVtLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6
OnVuY2hlY2tlZEFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhh
bmRsZTo6aXNEcmF3aW5nSXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6b3BlcmF0b3IhIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjp0
eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlOjppcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUhhbmRsZTo6Z2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOiBB
ZGRlZC4gTW92ZWQgZnJvbQorICAgICAgICAgICAgICBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcDogUmVtb3ZlZC4gVGhlIGNvbXBpbGVyIGNhbiBnZW5lcmF0ZSBhbGwgb2YKKyAgICAg
ICAgICAgICAgdGhlc2UgZnVuY3Rpb25zISEhCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDogTW92ZWQgdG8gRGlzcGxheUxpc3RJ
dGVtcy5oCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjph
cHBseSBjb25zdCk6IGFwcGx5KCkgbmVlZHMgdG8gYmUgY29uc3QgZm9yIHRoZSB0ZW1wbGF0ZQor
ICAgICAgICAgICAgICBtZXRhcHJvZ3JhbW1pbmcgdG8gd29yay4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KTogVGhlIGNvbXBpbGVyIGNhbiBnZW5lcmF0ZSB0aGlz
IGZ1bmN0aW9uIQorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBs
eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzOjpmb250SWRlbnRpZmllciBjb25zdCk6IE5lZWRzIHRvIGJlIGNvbnN0IGZvciB0aGUgdGVt
cGxhdGUKKyAgICAgICAgICAgICAgbWV0YXByb2dyYW1taW5nIHRvIHdvcmsuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6IE1vdmVkIGZyb20gRGlzcGxheUxp
c3RJdGVtQnVmZmVySWRlbnRpZmllci5oCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
aXRlbVR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3R2x5cGhzOjpmb250SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOiBB
ZGRlZC4gVGhlIHNpbXBsaWZpZWQgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICAgICAgdGhl
IGl0ZXJhdG9yLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29u
c3QpOiBUaGlzIGlzIHRoZSBtYWdpYy4gV2UgY2FuIGFjdHVhbGx5CisgICAgICAgICAgICAgIHJl
Y3Vyc2Ugb3ZlciB0aGUgc2V0IG9mIHR5cGVzIGluIHRoZSB2YXJpYW50LiBXZSBkbyB0aGlzIHdp
dGggYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdGhhdCBpcyBvZiB0eXBlCisgICAgICAgICAgICAgIHNp
emVfdC4gV2UgdXNlICJpZiBjb25zdGV4cHIiIHRvIGhhbmRsZSB0aGUgYmFzZSBjYXNlLCBhbmQg
d2UgcHVsbCBvdXQgdGhlIHR5cGUgYnkgdXNpbmcKKyAgICAgICAgICAgICAgV1RGOjp2YXJpYW50
X2FsdGVybmF0aXZlX3Qgd2l0aCB0aGUgSSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuIE9uY2Ugd2UgaGF2
ZSB0aGUgcGFydGljdWxhciB0eXBlIGluIHRoZQorICAgICAgICAgICAgICBWYXJpYW50LCB3ZSBw
dWxsIG91dCBpdHMgaXRlbVR5cGUgYW5kIGNvbXBhcmUgYWdhaW5zdCB0aGUgaXRlbVR5cGUgaW4g
dGhlIGJ1ZmZlci4gSWYgaXQgZG9lc24ndAorICAgICAgICAgICAgICBtYXRjaCwgd2UgcmVjdXJz
ZSB3aXRoIEkgKyAxLCBhbmQgaXQgZG9lcyBtYXRjaCwgd2UgcnVuIHRoZSBzYW1lIHBhcnNpbmcg
cm91dGluZXMgdGhhdCB3ZXJlIGluIHRoZQorICAgICAgICAgICAgICBvbGQgaW1wbGVtZW50YXRp
b24gb2YgdGhlIGl0ZXJhdG9yIGJlZm9yZSB0aGlzIHBhdGNoLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1
cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oOiBBZGRlZC4gVGhp
cyBpcyBzaWduaWZpY2FudGx5IHNpbXBsaWZpZWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgd2F5
IGl0IHdvcmtlZCBiZWZvcmUgdGhpcyBwYXRjaC4gV2Ugbm8gbG9uZ2VyIGhhdmUgdG8gYWxsb2Nh
dGUgc3RvcmFnZSBmb3IgdGhlIEl0ZW1IYW5kbGVzLiBXZSBoYXZlCisgICAgICAgICAgICAgIHNp
Z25pZmljYW50bHkgZmV3ZXIgbWVtYmVyIHZhcmlhYmxlcywgdG9vLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6Oml0ZW1CdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZERyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW1PZlR5cGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJ
dGVtT2ZUeXBlKTogTW92ZWQgZnJvbSB0aGUgLmNwcCBmaWxlLiBCZWNhdXNlIGl0J3MgYSB0ZW1w
bGF0ZSwKKyAgICAgICAgICAgICAgaXQgaGFzIHRvIGJlIGhlcmUuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKTogTGluZS1ieS1s
aW5lIHRyYW5zbGF0aW9uIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlOYXRpdmVJbWFnZUl0ZW0pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseVNldFN0YXRlSXRlbSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseSk6IEhlbHBlci4gT25seSBjYWxs
IHRoZSBhcHBseSBmdW5jdGlvbiBpbiB0aGUgRGlzcGxheUxpc3QgaXRlbSBpZiBpdCBleGlzdHMu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6IExp
bmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0ZW1IYW5kbGUgdG8gRGlzcGxheUxpc3RJdGVt
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOiBVcGRh
dGUgZm9yIHRoZSBuZXcgcmV0dXJuIHR5cGUgb2YKKyAgICAgICAgICAgICAgRGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpvcGVyYXRvciooKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOiBMaW5lLWJ5LWxpbmUgdHJhbnNsYXRp
b24gZnJvbSBJdGVtSGFuZGxlIHRvCisgICAgICAgICAgICAgIERpc3BsYXlMaXN0SXRlbS4KKwog
MjAyMS0wMy0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtHUFUgUHJvY2Vzc106IEltcHJvdmUgZ2V0SW1hZ2VEYXRhKCkgcGVyZiBwYXJ0IDE6
IEFkZCBhIEdldEltYWdlRGF0YSBkaXNwbGF5IGxpc3QgaXRlbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NjNkNTJk
OTMxZmEwOTg3MTBlOTBhOTZhOGYxYWVlYTY1MjU5NzI2Li5iZTVhYWQxM2QxOTRlODhmNzgzZDU4
MjQ1NWNlYjI2NDBlMDUwYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTAzLTIy
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBSZXBsYWNlIEl0ZW1IYW5kbGUgd2l0aCBhIGNvbnN0IFZhcmlhbnQmCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDogTGluZS1ieS1saW5lIHRyYW5zbGF0aW9uIGZy
b20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KTogVGhpcyBmaWxlIGhhcyAidXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmUiIHNvIHdlIGRvbid0IG5lZWQgdG8KKyAgICAgICAgICAgICAg
cXVhbGlmeSBuYW1lcy4gRHJvcCB0aGUgV2ViQ29yZTo6LgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZCk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZv
ckltYWdlQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZvckltYWdlQnVmZmVyKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJp
dG1hcEZvckltYWdlQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmRlY29kZUl0ZW0p
OiBUaGUgY29tcGlsZXIgY2FuIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24gZm9yIHVzLCBpbiBtdWNo
IHRoZSBzYW1lIHdheSB0aGF0IGl0IGRpZAorICAgICAgICAgICAgICBmb3IgRGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpkZWNvZGVJdGVtKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVjb2RlQW5kQ3JlYXRlKTogRGVsZXRlZC4gTm8gbG9uZ2VyIG5lY2Vzc2FyeSBu
b3cgdGhhdCB0aGUgY29tcGlsZXIKKyAgICAgICAgICAgICAgaXMgZ2VuZXJhdGluZyBvdXIgZnVu
Y3Rpb25zIGZvciB1cy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJv
eHk6OmVuY29kZUl0ZW1IZWxwZXIpOiBUaGUgY29tcGlsZXIgY2FuIGdlbmVyYXRlIHRoaXMgZnVu
Y3Rpb24gZm9yIHVzLgorCiAyMDIxLTAzLTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXTogSW1wcm92ZSBnZXRJbWFnZURh
dGEoKSBwZXJmIHBhcnQgMTogQWRkIGEgR2V0SW1hZ2VEYXRhIGRpc3BsYXkgbGlzdCBpdGVtCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBkOGIyZTliMzcwZWM5NTgwMjFhYzg0YjY2ODQ5Njk4YTExZmI0
OGE1Li44YzAzMzJhMjMxMjAyZjcyMGFiYjQzY2E2ZWQzZWM4YjAxY2MyM2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTEzMTQsOCArMTMxNCwxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggMzAwYWE4MDdkMWYwYTIwODY3YjU2MTdiZGI5ZGNiODgxNDg2ZGU0Ny4uZmRiMzg3OTU2
OTE2ZjUxMWIzMWY4NzM2OGZjNGMwNDUyMmM2ZWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwMTks
NyArMjAxOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwCitwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAw
Yjg1OWYzYTQyYjA5MDQ5MzBiMDZmZTIxZjhjZDNhMTcxOWEzNjExLi40Y2E0MmI3YmE5ODJmZmQ3
NTUwNDc4ZWYwM2IzZDI5MmRlYmRmNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjUsNiArNjI1LDggQEAKIAkJMUM3M0E3
MTUyMTg1NzU4NzAwNENDRUE1IC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2QjRGODIxN0I4MzkzMDA5
M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyog
SW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xs
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
QzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1ODBFOTczMzA4MDAyNjZF
MDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMUM5M0NCQ0YyNjA1QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDOTNDQkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM5M0NCRDMyNjA2
RjhFNzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkQyMjYwNkYzRTMw
MDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjM0ODEwQTZDNDA1MjAw
QUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUyMDBB
QkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUyMDBB
QkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNjg3Miw2ICs2ODc0LDkgQEAKIAkJMUM4RDI2Q0UyMkMwOTUxMzAwRDEy
NUYzIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4RDI2RDAyMkMwOUNERTAwRDEyNUYzIC8qIGxpYmNvbXByZXNzaW9uLnRi
ZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3Vy
Y2Vjb2RlLnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJjb21wcmVzc2lv
bi50YmQ7IHBhdGggPSB1c3IvbGliL2xpYmNvbXByZXNzaW9uLnRiZDsgc291cmNlVHJlZSA9IFNE
S1JPT1Q7IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBWZXJzaW9uLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkNDMjYwNUJENDMwMDhGREVGOSAvKiBEaXNw
bGF5TGlzdEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JDRDI2MDVCRDQzMDA4
RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlz
dEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkQyMjYwNkYz
RTMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJp
ZUZpbmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIg
LyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJp
ZUZpbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJERTIxRUVCNUY0
MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
UmVjdXJzaW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2Njks
NyArMTY2NzQsNiBAQAogCQlGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVi
b2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNQYXN0ZWJvYXJk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTA0MURCQkRCQzIwMEVGMEQx
NCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1Bhc3Rl
Ym9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM3N0Q1NTI1NTFDOUM2
MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5
TGlzdEl0ZW1UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0Mzc3RDU2MjU1
MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDQwRTc2RTIzM0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9h
cmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQ2xpcGJvYXJk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzcwMjMzRDk0RDQwMDYzRjlB
QiAvKiBDbGlwYm9hcmRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENs
aXBib2FyZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDI5LDEwICsx
ODAzMywxMiBAQAogCQkJCTcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmggKi8sCiAJCQkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAgKi8sCiAJCQkJRjQyMkI4QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovLAorCQkJCTFDOTNDQkQyMjYwNkYzRTMwMDhGREVGOSAv
KiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJMEZFNUZCQ0MxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuY3BwICovLAogCQkJCTBGRTVGQkNEMUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi8sCi0JCQkJRjQzNzdENTYyNTUx
QzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwICovLAogCQkJCUY0Mzc3RDU1
MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8sCisJCQkJMUM5M0NC
Q0MyNjA1QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovLAorCQkJCTFD
OTNDQkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8sCiAJCQkJ
MEZFNUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAog
CQkJCTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8s
CiAJCQkJMEZFNUZCRDAxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
ICovLApAQCAtMzIwNTMsOCArMzIwNTksMTAgQEAKIAkJCQk3MjQyQUM5NzI1NzU4RkUxMDA1QTlD
RjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1
QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JEMzI2MDZGOEU3MDA4RkRFRjkgLyog
RGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
NUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxp
c3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRkYzkxMTEw
ZTI3NS4uZTE3MTA2MDI4NWRiNjZmNGY4ODhlZmZiZTAxOWJhYWJmNDA4YmJmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTE1NCwxMCArMTU0LDEwIEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+
R3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250
ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAogICAgIGVu
dW0gQ2hhbmdlIDogdWludDMyX3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggNWI1
NWJlYzhjMGFlMjFhOTI5ODQ1YTQxNWQxMzU3OWMzNjliZDU0Ny4uNzk4MWU2NjNlNDkwZGNjMTFl
MmEyODA1NjNhMTFiYmEzYmRlMjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODQsMTIgKzg1LDEwIEBAIHZvaWQgRGlzcGxheUxp
c3Q6OmNsZWFyKCkKICAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOwogfQogCi1ib29sIERpc3Bs
YXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUg
aXRlbSkKK2Jvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBm
bGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQogewotICAgIHN3aXRjaCAoaXRlbS50
eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICBhdXRvIHZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdGF0ZSYgc3RhdGVJdGVtKSAtPiBib29s
IHsKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3Bl
cmF0aW9ucykpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0
PFNldFN0YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0
aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNp
ZmljLgogICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxh
Z3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0No
YW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NywzMCArOTYsMzAgQEAg
Ym9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJ
dGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCku
bV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgVVNFKENHKQotICAg
IGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBw
bHlTdHJva2VQYXR0ZXJuOgotICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1
ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgYnJlYWs7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5RmlsbFBhdHRlcm4mKSAtPiBib29sIHsK
KyAgICAgICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJh
dGlvbnM7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5U3Ryb2tlUGF0dGVybiYpIC0+IGJvb2wgewor
ICAgICAgICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0
aW9uczsKICNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJikgLT4gYm9vbCB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0p
OwogfQogCiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChBc1RleHRGbGFncyBmbGFncykgY29u
c3QKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlw
bGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAgIGZvciAo
YXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7Ci0gICAgICAg
IGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCAqaXRlbSkpCisgICAgZm9yIChjb25zdCBh
dXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRl
bSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwor
ICAgICAgICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVh
bSk7CiAgICAgICAgIHN0cmVhbSA8PCBpdGVtOwotICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5n
SXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKICAgICAgICAgICAgIHN0
cmVhbSA8PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgcmV0dXJuIHN0cmVhbS5y
ZWxlYXNlKCk7CkBAIC0xMzEsMTAgKzEzMCwxMSBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMp
OwogICAgIHRzIDw8ICJkaXNwbGF5IGxpc3QiOwogCi0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRl
bnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogKnRoaXMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRp
c3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRl
bnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAg
IFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAgICB0cyA8PCBpdGVtOwot
ICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5n
SXRlbShpdGVtKSkKICAgICAgICAgICAgIHRzIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAg
IH0KICAgICB0cy5zdGFydEdyb3VwKCk7CkBAIC0xODYsMjQ5ICsxODYsMjMgQEAgdm9pZCBEaXNw
bGF5TGlzdDo6c2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wgdmFsdWUpCiAgICAgbV90
cmFja3NEcmF3aW5nSXRlbUV4dGVudHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6
YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTYXZlPihpdGVt
LmdldDxTYXZlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFJlc3RvcmU+KGl0ZW0uZ2V0PFJlc3RvcmU+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxUcmFuc2xhdGU+KGl0ZW0uZ2V0
PFRyYW5zbGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFJvdGF0ZT4oaXRlbS5nZXQ8Um90YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTY2FsZT4oaXRlbS5nZXQ8U2NhbGU+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPENvbmNhdGVuYXRlQ1RNPihpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldENUTT4oaXRlbS5n
ZXQ8U2V0Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PihpdGVtLmdldDxT
ZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZp
bGxDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KGl0ZW0u
Z2V0PFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5l
U3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+
KGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0U3Ryb2tlVGhpY2tu
ZXNzPihpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0YXRlPihpdGVtLmdldDxTZXRT
dGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxTZXRMaW5lQ2FwPihpdGVtLmdldDxTZXRMaW5lQ2FwPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lRGFzaD4o
aXRlbS5nZXQ8U2V0TGluZURhc2g+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2lu
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVKb2luPihpdGVtLmdldDxTZXRMaW5lSm9p
bj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxTZXRNaXRlckxpbWl0PihpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclNo
YWRvdz4oaXRlbS5nZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcD4oaXRlbS5nZXQ8Q2xpcD4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0PihpdGVt
LmdldDxDbGlwT3V0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8Q2xpcFRv
SW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
Q2xpcFBhdGg+KGl0ZW0uZ2V0PENsaXBQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3R2x5cGhzPihpdGVtLmdldDxEcmF3R2x5cGhzPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8RHJhd0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdHRlcm4+KGl0
ZW0uZ2V0PERyYXdQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UmVjdD4oaXRlbS5nZXQ8RHJhd1JlY3Q+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdMaW5l
PihpdGVtLmdldDxEcmF3TGluZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxE
cmF3TGluZXNGb3JUZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI+KGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdFbGxpcHNlPihp
dGVtLmdldDxEcmF3RWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdGg+KGl0ZW0uZ2V0PERyYXdQYXRoPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxEcmF3Rm9jdXNSaW5nUGF0aD4oaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxEcmF3Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJl
Y3Q+KGl0ZW0uZ2V0PEZpbGxSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oaXRlbS5n
ZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aEdyYWRpZW50Pihp
dGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVj
dD4oaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJvdW5kZWRSZWN0Pihp
dGVtLmdldDxGaWxsUm91bmRlZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlPihpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7Ci0jaWYgRU5BQkxF
KElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbElubGluZVBhdGg+KGl0ZW0uZ2V0PEZpbGxJbmxpbmVQ
YXRoPigpKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPEZpbGxQYXRoPihpdGVtLmdldDxGaWxsUGF0aD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbEVsbGlwc2U+
KGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRl
eHQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpdGVtLmdldDxGbHVzaENv
bnRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8R2V0SW1hZ2VE
YXRhPihpdGVtLmdldDxHZXRJbWFnZURhdGE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dElt
YWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQdXRJbWFnZURhdGE+KGl0ZW0uZ2V0PFB1
dEltYWdlRGF0YT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPFBhaW50RnJhbWVGb3JNZWRpYT4oaXRlbS5nZXQ8UGFpbnRG
cmFtZUZvck1lZGlhPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFN0cm9rZVJlY3Q+KGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tl
TGluZT4oaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxTdHJva2VJbmxpbmVQYXRoPihpdGVtLmdldDxTdHJva2VJbmxpbmVQYXRoPigpKTsK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8U3Ryb2tlUGF0aD4oaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VFbGxpcHNl
PihpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xlYXJSZWN0PihpdGVtLmdldDxDbGVhclJlY3Q+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5nZXQ8QmVnaW5UcmFu
c3BhcmVuY3lMYXllcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW0uZ2V0
PEVuZFRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5U3Ryb2tl
UGF0dGVybj4oaXRlbS5nZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5RmlsbFBh
dHRlcm4+KGl0ZW0uZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJ
dGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxB
cHBseURldmljZVNjYWxlRmFjdG9yPihpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigp
KTsKLSAgICB9Ci19Ci0KLWJvb2wgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjphdEVuZCgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpIHx8ICFtX2lzVmFsaWQpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigpOwotICAg
IGF1dG8gZW5kQ3Vyc29yID0gaXRlbXMubV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMubV93
cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOwot
fQotCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQotewot
ICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLQotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvJiBpdGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBpdGVtVHlw
ZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7Ci0gICAgaWYgKGlzRHJhd2lu
Z0l0ZW0oaXRlbVR5cGUpICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzLmlz
RW1wdHkoKSkgewotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJh
d2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07Ci0gICAgICAgIG1fZHJhd2luZ0l0
ZW1JbmRleCsrOwotICAgIH0gZWxzZQotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBhdXRvKiBjbGllbnQgPSBpdGVtcy5tX3JlYWRpbmdDbGllbnQ7Ci0gICAg
YXV0byBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5C
eXRlcyhpdGVtVHlwZSk7Ci0gICAgaWYgKGNsaWVudCkgewotICAgICAgICBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZmZXJG
b3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKLSAg
ICAgICAgaWYgKGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghSXRlbUhhbmRsZSB7IG1fY3Vyc29yIH0uc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJG
b3JJdGVtIH0pKSkKLSAgICAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLQotICAgICAg
ICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVt
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdCo+KG1fY3Vyc29yKVsxXTsKLSAgICAgICAgICAgIGF1dG8qIHN0
YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKLSAgICAgICAgICAg
IGF1dG8gZGVjb2RlZEl0ZW1IYW5kbGUgPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEs
IGRhdGFMZW5ndGgsIGl0ZW1UeXBlLCBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKLSAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSghZGVjb2RlZEl0ZW1IYW5kbGUpKQotICAgICAgICAgICAgICAgIG1f
aXNWYWxpZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtWzBd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwotICAgICAgICAgICAgbV9jdXJyZW50
SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlw
bGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gbV9jdXJzb3I7Ci0gICAgICAg
IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbTsKLSAg
ICB9Ci19Ci0KLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjphZHZhbmNlKCkKLXsKLSAgICBp
ZiAoYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jdXJzb3IgKz0gbV9jdXJyZW50
SXRlbVNpemVJbkJ1ZmZlcjsKLQotICAgIGlmIChtX2N1cnNvciA9PSBtX2N1cnJlbnRFbmRPZkJ1
ZmZlciAmJiBtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBpdGVtQnVmZmVyKCktPm1fcmVhZE9ubHlC
dWZmZXJzLnNpemUoKSkgewotICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXgrKzsKLSAgICAg
ICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICB9Ci0KLSAgICB1cGRh
dGVDdXJyZW50SXRlbSgpOwotfQotCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6Y2xlYXJD
dXJyZW50SXRlbSgpCit2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiBpdGVtKQogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKGl0
ZW1zICYmIGl0ZW1zLT5tX3JlYWRpbmdDbGllbnQgJiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSkg
ewotICAgICAgICBpZiAoTElLRUxZKG1faXNWYWxpZCkpCi0gICAgICAgICAgICBJdGVtSGFuZGxl
IHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LmRlc3Ryb3koKTsKLQotICAgICAgICBpZiAoVU5M
SUtFTFkobV9jdXJyZW50QnVmZmVyRm9ySXRlbSAhPSBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0
ZW0pKQotICAgICAgICAgICAgZmFzdEZyZWUobV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAg
fQotCi0gICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDA7Ci0gICAgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSA9IG51bGxwdHI7CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYgaXRl
bSkgeworICAgICAgICBhcHBlbmQoaXRlbSk7CisgICAgfSwgaXRlbSk7CiB9CiAKLXZvaWQgRGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlVG9FbmQoKQorYXV0byBEaXNwbGF5TGlzdDo6YmVnaW4o
KSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIGlmIChhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigp
KSB7Ci0gICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0
ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZl
ciA9IG1fY3Vyc29yOwotICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXggPSBpdGVtcy0+bV9y
ZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOwotICAgIH0KKyAgICByZXR1cm4geyAqdGhpcyB9OwogfQog
Ci12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRC
dWZmZXIoKQorYXV0byBEaXNwbGF5TGlzdDo6ZW5kKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAg
ICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOwotICAgIGlmICghaXRlbXMpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMgPSBpdGVtcy0+bV9yZWFk
T25seUJ1ZmZlcnMuc2l6ZSgpOwotICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1i
ZXJPZlJlYWRPbmx5QnVmZmVycykgewotICAgICAgICBhdXRvJiBuZXh0QnVmZmVySGFuZGxlID0g
aXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07Ci0gICAgICAg
IG1fY3Vyc29yID0gbmV4dEJ1ZmZlckhhbmRsZS5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRP
ZkJ1ZmZlciA9IG1fY3Vyc29yICsgbmV4dEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKLSAgICB9IGVs
c2UgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykg
ewotICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGE7Ci0gICAg
ICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBpdGVtcy0+bV93cml0dGVuTnVt
YmVyT2ZCeXRlczsKLSAgICB9CisgICAgcmV0dXJuIHsgKnRoaXMsIEl0ZXJhdG9yOjpJbW1lZGlh
dGVseU1vdmVUb0VuZDo6WWVzIH07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QK
IAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXgg
ZjE4OWRlZGY2NzQ5YmNjMjAxNDcyYWVkMmE4NzE2YmE2NTc0NjUyZS4uODhiMWJiNmQwMzYxMDI4
NDlmYjc2OTdlOTAyZmNiNDJjNzc5NDMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyAr
NDIsNiBAQCBjbGFzcyBUZXh0U3RyZWFtOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGVudW0gQXNUZXh0RmxhZyB7CkBAIC04OSw3NiArODgs
MTUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaEl0ZW1CdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+JiYpIGNvbnN0OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCBhcHBlbmQoQXJncyYmLi4u
IGFyZ3MpOwotICAgIHZvaWQgYXBwZW5kKEl0ZW1IYW5kbGUpOworICAgIHZvaWQgYXBwZW5kKGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgYm9vbCB0cmFja3NEcmF3aW5nSXRlbUV4dGVu
dHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50czsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wpOwogCi0g
ICAgY2xhc3MgaXRlcmF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBjbGFzcyBJbW1l
ZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKLSAgICAgICAgaXRlcmF0b3IoY29uc3QgRGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0VuZCBpbW1lZGlhdGVseU1v
dmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObykKLSAgICAgICAgICAgIDogbV9kaXNw
bGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGltbWVkaWF0
ZWx5TW92ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpCi0gICAgICAgICAgICAg
ICAgbW92ZVRvRW5kKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtb3Zl
Q3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwotICAgICAgICAgICAgICAgIHVwZGF0ZUN1
cnJlbnRJdGVtKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB+aXRlcmF0
b3IoKQotICAgICAgICB7Ci0gICAgICAgICAgICBjbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSB7IHJl
dHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9
PSBvdGhlci5tX2N1cnNvcjsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0
b3ImIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgICAgICB2b2lkIG9w
ZXJhdG9yKysoKSB7IGFkdmFuY2UoKTsgfQotCi0gICAgICAgIHN0cnVjdCBWYWx1ZSB7Ci0gICAg
ICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBpdGVtOwotICAgICAgICAgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBleHRlbnQ7Ci0gICAgICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7
IDAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICBWYWx1ZSBvcGVyYXRvciooKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIG1faXNWYWxpZCA/
IG1ha2VPcHRpb25hbChJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KSA6IFdU
Rjo6bnVsbG9wdCwKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRFeHRlbnQsCi0gICAgICAgICAg
ICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgICAgIH07Ci0gICAgICAg
IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNpemVP
ZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPSAyNTY7Ci0KLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1vdmVUb0VuZCgpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVD
dXJyZW50SXRlbSgpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsKLSAg
ICAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwotCi0gICAgICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJZkV4aXN0cygpOyB9
Ci0KLSAgICAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgICAgIHVp
bnQ4X3QqIG1fY3Vyc29yIHsgbnVsbHB0ciB9OwotICAgICAgICBzaXplX3QgbV9yZWFkT25seUJ1
ZmZlckluZGV4IHsgMCB9OwotICAgICAgICBzaXplX3QgbV9kcmF3aW5nSXRlbUluZGV4IHsgMCB9
OwotICAgICAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQot
ICAgICAgICB1aW50OF90IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbVtzaXplT2ZGaXhlZEJ1
ZmZlckZvckN1cnJlbnRJdGVtXSB7IDAgfTsKLSAgICAgICAgdWludDhfdCogbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSB7IG51bGxwdHIgfTsKLSAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1
cnJlbnRFeHRlbnQ7Ci0gICAgICAgIHNpemVfdCBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyIHsg
MCB9OwotICAgICAgICBib29sIG1faXNWYWxpZCB7IHRydWUgfTsKLSAgICB9OwotCi0gICAgaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiB7ICp0aGlzIH07IH0KLSAgICBpdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiB7ICp0aGlzLCBpdGVyYXRvcjo6SW1tZWRpYXRlbHlNb3ZlVG9F
bmQ6OlllcyB9OyB9CisgICAgY2xhc3MgSXRlcmF0b3I7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
dGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEl0ZXJhdG9yIGVuZCgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZmZXJJZkV4aXN0cygp
IGNvbnN0IHsgcmV0dXJuIG1faXRlbXMuZ2V0KCk7IH0KQEAgLTE5MSw3ICsxMjksNyBAQCBwcml2
YXRlOgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9y
RmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOworICAgIHN0YXRpYyBib29sIHNob3VsZER1
bXBGb3JGbGFncyhBc1RleHRGbGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBJ
bWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFw
IG1fbmF0aXZlSW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAppbmRleCBiNWMzNzQxOWQ2ZmZhYTE2OGQ0YmI5OWU0MTg4NGZkYWQ0ZDE3Njk3Li5iYTZl
OGJhNWE3YTA4Zjc1ODY5ZTQ4NjI1ODg1NWU3MzQ5MWU2NDJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw1NjQgKzMyLDYgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcp
IHx8ICFMT0dfRElTQUJMRUQKLUNTdHJpbmcgSXRlbUhhbmRsZTo6ZGVzY3JpcHRpb24oKSBjb25z
dAotewotICAgIFRleHRTdHJlYW0gdHM7Ci0gICAgdHMgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIHRz
LnJlbGVhc2UoKS51dGY4KCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBJdGVtSGFuZGxlOjphcHBseShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICBnZXQ8U2F2ZT4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIGdl
dDxSZXN0b3JlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICBnZXQ8VHJhbnNsYXRlPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAg
ICBnZXQ8Um90YXRlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIGdldDxTY2FsZT4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAg
ICAgICBnZXQ8Q29uY2F0ZW5hdGVDVE0+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIGdldDxTZXRDVE0+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIGdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsQ29sb3I6Ci0gICAgICAgIGdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkuYXBwbHkoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJv
a2VDb2xvcjoKLSAgICAgICAgZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tu
ZXNzOgotICAgICAgICBnZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0TGluZUNhcDoKLSAgICAgICAgZ2V0PFNldExpbmVDYXA+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAg
Z2V0PFNldExpbmVEYXNoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIGdldDxTZXRMaW5lSm9pbj4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1p
dGVyTGltaXQ6Ci0gICAgICAgIGdldDxTZXRNaXRlckxpbWl0PigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAg
IGdldDxDbGVhclNoYWRvdz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIGdldDxDbGlwPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAg
Z2V0PENsaXBPdXQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgZ2V0PENsaXBUb0ltYWdlQnVm
ZmVyPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgZ2V0PENsaXBPdXRUb1BhdGg+KCkuYXBwbHkoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAg
ICAgICAgZ2V0PENsaXBQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICBnZXQ8RHJhd0ltYWdlQnVmZmVyPigpLmFwcGx5
KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgotICAgICAgICBnZXQ8RHJhd05hdGl2ZUltYWdlPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAg
IGdldDxEcmF3UGF0dGVybj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICBnZXQ8RHJhd1JlY3Q+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToK
LSAgICAgICAgZ2V0PERyYXdMaW5lPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgZ2V0PERyYXdM
aW5lc0ZvclRleHQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICBnZXQ8RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICBnZXQ8RHJhd0VsbGlwc2U+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0aDoKLSAgICAgICAgZ2V0PERyYXdQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAg
IGdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgZ2V0PERy
YXdGb2N1c1JpbmdSZWN0cz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICBnZXQ8RmlsbFJlY3Q+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhDb2xvcjoKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGll
bnQ6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoK
LSAgICAgICAgZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAg
Z2V0PEZpbGxSb3VuZGVkUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICBnZXQ8
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
SW5saW5lUGF0aDoKLSAgICAgICAgZ2V0PEZpbGxJbmxpbmVQYXRoPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoK
LSAgICAgICAgZ2V0PEZpbGxQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIGdldDxGaWxsRWxsaXBz
ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6
OkZsdXNoQ29udGV4dDoKLSAgICAgICAgZ2V0PEZsdXNoQ29udGV4dD4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJ
bWFnZURhdGE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICAvLyBT
aG91bGQgYWxyZWFkeSBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIGdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0
OgotICAgICAgICBnZXQ8U3Ryb2tlUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIGdldDxTdHJva2VM
aW5lPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAg
ICAgZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIGdldDxT
dHJva2VQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgZ2V0PFN0cm9rZUVsbGlwc2U+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgICAgIGdldDxDbGVhclJlY3Q+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAg
ICBnZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgICAg
ICBnZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJu
OgotICAgICAgICBnZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAg
ICAgZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0g
ICAgICAgIGdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQotewot
ICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoK
LSAgICAgICAgZ2V0PENsaXBPdXRUb1BhdGg+KCkufkNsaXBPdXRUb1BhdGgoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICBnZXQ8Q2xpcFBh
dGg+KCkufkNsaXBQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLn5EcmF3
Rm9jdXNSaW5nUGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLn5EcmF3
Rm9jdXNSaW5nUmVjdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdHbHlwaHM6Ci0gICAgICAgIGdldDxEcmF3R2x5cGhzPigpLn5EcmF3R2x5cGhzKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAg
ICBnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5+RHJhd0xpbmVzRm9yVGV4dCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIGdldDxEcmF3UGF0
aD4oKS5+RHJhd1BhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKS5+Rmls
bENvbXBvc2l0ZWRSZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUGF0aDoKLSAgICAgICAgZ2V0PEZpbGxQYXRoPigpLn5GaWxsUGF0aCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIGdl
dDxGaWxsUmVjdFdpdGhDb2xvcj4oKS5+RmlsbFJlY3RXaXRoQ29sb3IoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICBn
ZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkufkZpbGxSZWN0V2l0aEdyYWRpZW50KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToK
LSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLn5GaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5k
ZWRSZWN0OgotICAgICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0PigpLn5GaWxsUm91bmRlZFJlY3Qo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8R2V0SW1h
Z2VEYXRhPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0
SW1hZ2VEYXRhOgotICAgICAgICBnZXQ8UHV0SW1hZ2VEYXRhPigpLn5QdXRJbWFnZURhdGEoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAg
ICBnZXQ8U2V0TGluZURhc2g+KCkuflNldExpbmVEYXNoKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgZ2V0PFNldFN0YXRlPigpLn5TZXRT
dGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoK
LSAgICAgICAgZ2V0PFN0cm9rZVBhdGg+KCkuflN0cm9rZVBhdGgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3I+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNpZiBVU0UoQ0cpCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlGaWxsUGF0dGVybj46OnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlT
dHJva2VQYXR0ZXJuPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNl
IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
blRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGVhclJlY3Q+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xlYXJTaGFk
b3c+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGlw
Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xp
cE91dD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0ltYWdlQnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxDbGlwVG9JbWFnZUJ1ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDb25jYXRlbmF0ZUNUTT46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0VsbGlwc2U+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdJbWFnZUJ1
ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0
cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdQYXR0ZXJuPjo6dmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdMaW5lPjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdSZWN0Pjo6dmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RW5kVHJhbnNwYXJlbmN5TGF5
ZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxs
aXBzZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RmlsbEVsbGlwc2U+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RmlsbElubGlu
ZVBhdGg+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxGaWxsUmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8Rmx1c2hDb250ZXh0Pjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdl
QnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1C
dWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8UGFpbnRGcmFtZUZvck1lZGlh
Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8UmVz
dG9yZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0
ZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
Um90YXRlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2
ZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
U2F2ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxl
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxT
Y2FsZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENU
TToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
U2V0Q1RNPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
SW5saW5lRmlsbENvbG9yOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxTZXRJbmxpbmVGaWxsQ29sb3I+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldElubGluZUZpbGxH
cmFkaWVudD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxTZXRJbmxpbmVTdHJva2VDb2xvcj46OnZhbHVlKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldExpbmVDYXA+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0TGluZUpv
aW4+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRl
ckxpbWl0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxTZXRNaXRlckxpbWl0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRTdHJva2VUaGlja25lc3M+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VFbGxp
cHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U3Ryb2tlSW5saW5lUGF0aD46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlUmVjdDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8U3Ryb2tlUmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFN0cm9rZUxpbmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFRyYW5zbGF0ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5s
aW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQgPSBmYWxzZTsKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0
eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmlzVmFsaWQoKSk+PiA9IHRydWU7Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIEl0ZW0+Ci10eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+
LCBib29sPiBjb3B5SW50byhjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90KiBk
ZXN0aW5hdGlvbldpdGhPZmZzZXQpCi17Ci0gICAgbmV3IChkZXN0aW5hdGlvbldpdGhPZmZzZXQp
IEl0ZW0oaXRlbUhhbmRsZS5nZXQ8SXRlbT4oKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci10eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFs
aWQ8SXRlbT4sIGJvb2w+IGNvcHlJbnRvKGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uV2l0aE9mZnNldCkKLXsKLSAgICBhdXRvKiBuZXdJdGVtID0gbmV3
IChkZXN0aW5hdGlvbldpdGhPZmZzZXQpIEl0ZW0oaXRlbUhhbmRsZS5nZXQ8SXRlbT4oKSk7Ci0g
ICAgcmV0dXJuIG5ld0l0ZW0tPmlzVmFsaWQoKTsKLX0KLQotYm9vbCBJdGVtSGFuZGxlOjpzYWZl
Q29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAotewotICAgIGF1dG8gaXRlbVR5cGUg
PSB0eXBlKCk7Ci0gICAgZGVzdGluYXRpb24uZGF0YVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGl0ZW1UeXBlKTsKLSAgICBhdXRvIGl0ZW1PZmZzZXQgPSBkZXN0aW5hdGlvbi5kYXRhICsgc2l6
ZW9mKHVpbnQ2NF90KTsKLSAgICBzd2l0Y2ggKGl0ZW1UeXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBPdXRUb1BhdGg+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPENsaXBQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxE
cmF3Rm9jdXNSaW5nUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1c1Jp
bmdSZWN0cz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlw
aHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3R2x5cGhzPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4g
Y29weUludG88RHJhd0ltYWdlQnVmZmVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdM
aW5lc0ZvclRleHQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TmF0aXZlSW1hZ2U+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXR0ZXJuPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UGF0
aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVk
UmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxDb21wb3NpdGVkUmVjdD4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1
cm4gY29weUludG88RmlsbFBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0
V2l0aENvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdpdGhHcmFk
aWVudD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRl
ZFJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUm91bmRlZFJlY3Q+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxHZXRJbWFnZURhdGE+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxQdXRJbWFn
ZURhdGE+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFz
aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVEYXNoPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxTZXRTdGF0ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZVBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VQYXRoPigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5RmlsbFBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxBcHBseVN0cm9rZVBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNl
bmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAg
ICAgICByZXR1cm4gY29weUludG88QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgot
ICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPENsZWFyUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsZWFyU2hhZG93OgotICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJTaGFkb3c+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICByZXR1
cm4gY29weUludG88Q2xpcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0PigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxDbGlwVG9JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gY29weUludG88
Q29uY2F0ZW5hdGVDVE0+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0VsbGlwc2U+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UmVjdD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgotICAgICAgICByZXR1cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPEZpbGxFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jaWYgRU5B
QkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsSW5saW5lUGF0aD4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxGaWxsUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZsdXNoQ29udGV4dD4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFBhaW50RnJhbWVGb3JNZWRpYT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSZXN0b3Jl
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAg
ICByZXR1cm4gY29weUludG88Um90YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNhdmU+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPFNjYWxlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RN
OgotICAgICAgICByZXR1cm4gY29weUludG88U2V0Q1RNPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gY29w
eUludG88U2V0SW5saW5lRmlsbENvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICByZXR1cm4gY29weUludG88
U2V0SW5saW5lRmlsbEdyYWRpZW50PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJ
bmxpbmVTdHJva2VDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVDYXA6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRMaW5lQ2FwPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxTZXRMaW5lSm9pbj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRNaXRl
ckxpbWl0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tl
VGhpY2tuZXNzOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0U3Ryb2tlVGhpY2tuZXNzPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZUVsbGlwc2U+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJ
bmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlSW5saW5lUGF0aD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gY29weUludG88
U3Ryb2tlTGluZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5z
bGF0ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFRyYW5zbGF0ZT4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIEl0ZW1CdWZmZXI6Okl0ZW1CdWZm
ZXIoSXRlbUJ1ZmZlckhhbmRsZXMmJiBoYW5kbGVzKQogICAgIDogbV9yZWFkT25seUJ1ZmZlcnMo
V1RGTW92ZShoYW5kbGVzKSkKIHsKQEAgLTYwNSw3ICs0Nyw2IEBAIEl0ZW1CdWZmZXI6On5JdGVt
QnVmZmVyKCkKIEl0ZW1CdWZmZXI6Okl0ZW1CdWZmZXIoSXRlbUJ1ZmZlciYmIG90aGVyKQogICAg
IDogbV9yZWFkaW5nQ2xpZW50KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZWFkaW5nQ2xpZW50LCBu
dWxscHRyKSkKICAgICAsIG1fd3JpdGluZ0NsaWVudChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fd3Jp
dGluZ0NsaWVudCwgbnVsbHB0cikpCi0gICAgLCBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRC
dWZmZXJzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVm
ZmVycywgeyB9KSkKICAgICAsIG1fYWxsb2NhdGVkQnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fYWxsb2NhdGVkQnVmZmVycywgeyB9KSkKICAgICAsIG1fcmVhZE9ubHlCdWZmZXJzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9yZWFkT25seUJ1ZmZlcnMsIHsgfSkpCiAgICAgLCBtX3dyaXRhYmxl
QnVmZmVyKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV93cml0YWJsZUJ1ZmZlciwgeyB9KSkKQEAgLTYx
Nyw3ICs1OCw2IEBAIEl0ZW1CdWZmZXImIEl0ZW1CdWZmZXI6Om9wZXJhdG9yPShJdGVtQnVmZmVy
JiYgb3RoZXIpCiB7CiAgICAgbV9yZWFkaW5nQ2xpZW50ID0gc3RkOjpleGNoYW5nZShvdGhlci5t
X3JlYWRpbmdDbGllbnQsIG51bGxwdHIpOwogICAgIG1fd3JpdGluZ0NsaWVudCA9IHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV93cml0aW5nQ2xpZW50LCBudWxscHRyKTsKLSAgICBtX2l0ZW1zVG9EZXN0
cm95SW5BbGxvY2F0ZWRCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zVG9EZXN0
cm95SW5BbGxvY2F0ZWRCdWZmZXJzLCB7IH0pOwogICAgIG1fYWxsb2NhdGVkQnVmZmVycyA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pOwogICAgIG1fcmVhZE9u
bHlCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3JlYWRPbmx5QnVmZmVycywgeyB9KTsK
ICAgICBtX3dyaXRhYmxlQnVmZmVyID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRhYmxlQnVm
ZmVyLCB7IH0pOwpAQCAtNjUxLDkgKzkxLDYgQEAgdm9pZCBJdGVtQnVmZmVyOjpmb3JFYWNoSXRl
bUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4mJiBtYXAKIAog
dm9pZCBJdGVtQnVmZmVyOjpjbGVhcigpCiB7Ci0gICAgZm9yIChhdXRvIGl0ZW0gOiBzdGQ6OmV4
Y2hhbmdlKG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCi0gICAgICAg
IGl0ZW0uZGVzdHJveSgpOwotCiAgICAgZm9yIChhdXRvKiBidWZmZXIgOiBzdGQ6OmV4Y2hhbmdl
KG1fYWxsb2NhdGVkQnVmZmVycywgeyB9KSkKICAgICAgICAgZmFzdEZyZWUoYnVmZmVyKTsKIApA
QCAtNjY0LDcgKzEwMSw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xlYXIoKQogCiBEaWRDaGFuZ2VJ
dGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBu
dW1iZXJPZkJ5dGVzKQogewotICAgIGF1dG8gc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0gPSBwYWRk
ZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcik7CisgICAgYXV0byBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA9IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlczxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7CiAgICAg
aWYgKG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyBudW1iZXJPZkJ5dGVzICsgc2l6ZUZvckJ1ZmZl
clN3aXRjaEl0ZW0gPD0gbV93cml0YWJsZUJ1ZmZlci5jYXBhY2l0eSkKICAgICAgICAgcmV0dXJu
IERpZENoYW5nZUl0ZW1CdWZmZXI6Ok5vOwogCkBAIC02ODAsNyArMTE3LDcgQEAgRGlkQ2hhbmdl
SXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3Qg
bnVtYmVyT2ZCeXRlcykKICAgICByZXR1cm4gaGFkUHJldmlvdXNCdWZmZXIgPyBEaWRDaGFuZ2VJ
dGVtQnVmZmVyOjpZZXMgOiBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpObzsKIH0KIAotdm9pZCBJdGVt
QnVmZmVyOjphcHBlbmQoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQordm9pZCBJdGVtQnVmZmVy
OjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1
dG8gZGF0YSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbSh0ZW1wb3JhcnlJdGVtKTsKICAg
ICBpZiAoIWRhdGEpCkBAIC02OTEsNyArMTI4LDcgQEAgdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQo
SXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogCiAgICAgYXV0byBidWZmZXJDaGFuZ2VkID0gc3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0p
OwogCi0gICAgbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4odGVtcG9yYXJ5SXRlbS50eXBlKCkpOworICAgIG1fd3JpdGFi
bGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGl0ZW1UeXBlKHRlbXBvcmFyeUl0ZW0pKTsKICAgICByZWludGVycHJldF9jYXN0PHVpbnQ2
NF90Kj4obV93cml0YWJsZUJ1ZmZlci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcylbMV0g
PSBkYXRhTGVuZ3RoOwogICAgIG1lbWNweShtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzICsgMiAqIHNpemVvZih1aW50NjRfdCksIGRhdGEtPmRhdGFBc1VJbnQ4
UHRyKCksIGRhdGFMZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgKaW5kZXggMTM4ZDljYTBiZDczNDNkYmJmNWY1MTkxNjA3YzNiMTkyYTM3N2JlYi4uMWY2
MTk3MGRkYzExYzZhNDBjMjVhMGJmZGE0M2M1MDI5YzYwNTdlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlbVR5cGUuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgpAQCAtMzgsOSArNDAsNiBAQCBuYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgewogCiBjbGFzcyBEaXNwbGF5TGlzdDsKIAotZW51bSBJdGVtQnVmZmVy
SWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgSXRlbUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlwZT47Ci0KIC8vIEFuIEl0ZW1CdWZmZXJI
YW5kbGUgd3JhcHMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIHRoYXQgY29udGFpbnMgZGlzcGxheSBs
aXN0IGl0ZW0gZGF0YS4KIHN0cnVjdCBJdGVtQnVmZmVySGFuZGxlIHsKICAgICBJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyOwpAQCAtNTMsMzYgKzUyLDYgQEAgc3RydWN0IEl0ZW1CdWZm
ZXJIYW5kbGUgewogCiB1c2luZyBJdGVtQnVmZmVySGFuZGxlcyA9IFZlY3RvcjxJdGVtQnVmZmVy
SGFuZGxlLCAyPjsKIAotLy8gQW4gSXRlbUhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYW4gSXRl
bVR5cGUgZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkgYW4gaXRlbSBvZiB0aGF0IHR5cGUuCi0vLyBF
YWNoIGl0ZW0gaGFuZGxlIGRhdGEgcG9pbnRlciBpcyBhbGlnbmVkIHRvIDggYnl0ZXMsIGFuZCB0
aGUgaXRlbSBpdHNlbGYgaXMgYWxzbyBhbGlnbmVkCi0vLyB0byA4IGJ5dGVzLiBUbyBlbnN1cmUg
dGhpcywgdGhlIGl0ZW0gdHlwZSBjb25zaXN0cyBvZiA4IGJ5dGVzICgxIGJ5dGUgZm9yIHRoZSB0
eXBlIGFuZCA3Ci0vLyBieXRlcyBvZiBwYWRkaW5nKS4KLXN0cnVjdCBJdGVtSGFuZGxlIHsKLSAg
ICB1aW50OF90KiBkYXRhIHsgbnVsbHB0ciB9OwotCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKLSAgICBib29sIGlz
RHJhd2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3
aW5nSXRlbSh0eXBlKCkpOyB9Ci0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISEoKnRoaXMpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZGF0YTsg
fQotCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi0gICAgQ1N0cmluZyBk
ZXNjcmlwdGlvbigpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBJdGVtVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KGRhdGFbMF0pOyB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIGlzKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFQ6Oml0ZW1U
eXBlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCYgZ2V0KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChpczxUPigpKTsKLSAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PFQqPigmZGF0YVtzaXplb2YodWludDY0X3QpXSk7Ci0gICAgfQotCi0gICAgYm9vbCBzYWZlQ29w
eShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdDsKLX07Ci0KIGVudW0gY2xhc3MgRGlkQ2hh
bmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywgWWVzIH07CiAKIGNsYXNzIEl0ZW1CdWZmZXJXcml0
aW5nQ2xpZW50IHsKQEAgLTkwLDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkl0ZW1C
dWZmZXJXcml0aW5nQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIEl0ZW1CdWZmZXJIYW5kbGUg
Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGVuY29kZUl0ZW0oSXRlbUhhbmRsZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhh
bmRsZSYsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBEaWRDaGFuZ2VJdGVtQnVmZmVyKSA9IDA7CiB9
OwogCkBAIC05OCw3ICs2Nyw3IEBAIGNsYXNzIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JdGVtQnVmZmVyUmVhZGluZ0NsaWVudCgpIHsgfQogCi0gICAg
dmlydHVhbCBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRl
bShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUsIHVpbnQ4
X3QqIGhhbmRsZUxvY2F0aW9uKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxEaXNwbGF5TGlz
dEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSkgPSAwOwogfTsKIAogLy8gQW4gSXRlbUJ1ZmZl
ciBjb250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLCBhbmQgY29uc2lzdHMgb2YgYSByZWFk
d3JpdGUgSXRlbUJ1ZmZlckhhbmRsZSAodG8gd2hpY2ggZGlzcGxheQpAQCAtMTQ5LDI2ICsxMTgs
MTUgQEAgcHVibGljOgogICAgIC8vIGRhdGEgYmFjayBpbnRvIGFuIGl0ZW0gb2YgdHlwZSBULgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgYXBwZW5kKEFyZ3Mm
Ji4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8VD46OnZhbHVlIHx8ICFUOjppc0lubGluZUl0ZW0pOwotCi0gICAgICAg
IGlmICghVDo6aXNJbmxpbmVJdGVtICYmIG1fd3JpdGluZ0NsaWVudCkgewotI2lmIENPTVBJTEVS
KE1TVkMpCi0gICAgICAgICAgICBfX2RlY2xzcGVjKGFsaWduKDgpKSB0eXBlZGVmIHVpbnQ4X3Qg
RW5jb2RpbmdCdWZmZXJbc2l6ZW9mKHVpbnQ2NF90KSArIHNpemVvZihUKV07Ci0jZWxzZQotICAg
ICAgICAgICAgdXNpbmcgRW5jb2RpbmdCdWZmZXIgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCAoOCkp
KSA9IHVpbnQ4X3Rbc2l6ZW9mKHVpbnQ2NF90KSArIHNpemVvZihUKV07Ci0jZW5kaWYKLSAgICAg
ICAgICAgIHN0YXRpYyBFbmNvZGluZ0J1ZmZlciB0ZW1wb3JhcnlJdGVtQnVmZmVyOwotICAgICAg
ICAgICAgdGVtcG9yYXJ5SXRlbUJ1ZmZlclswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFQ6Oml0
ZW1UeXBlKTsKLSAgICAgICAgICAgIG5ldyAodGVtcG9yYXJ5SXRlbUJ1ZmZlciArIHNpemVvZih1
aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIGFw
cGVuZCh7IHRlbXBvcmFyeUl0ZW1CdWZmZXIgfSk7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsg
dGVtcG9yYXJ5SXRlbUJ1ZmZlciB9LmRlc3Ryb3koKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlID09IFQ6OmlzSW5saW5lSXRl
bSk7CisKKyAgICAgICAgaWYgKCFUOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fd3JpdGluZ0NsaWVudCk7CisgICAgICAgICAgICBhcHBlbmQoRGlzcGxheUxp
c3RJdGVtKFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXJDaGFuZ2VkID0gc3dhcFdyaXRh
YmxlQnVmZmVySWZOZWVkZWQocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1U
eXBlKSk7Ci0KLSAgICAgICAgaWYgKCFzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46
OnZhbHVlKQotICAgICAgICAgICAgbV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycy5h
cHBlbmQoeyAmbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdIH0p
OworICAgICAgICBhdXRvIGJ1ZmZlckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRl
ZChwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8VD4oKSk7CiAKICAgICAgICAgdW5jaGVj
a2VkQXBwZW5kPFQ+KGJ1ZmZlckNoYW5nZWQsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
CiAgICAgfQpAQCAtMTgzLDE4ICsxNDEsMTcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEFwcGVuZERhdGEoc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5nZUl0ZW1C
dWZmZXIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBzd2FwV3Jp
dGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcyk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoSXRlbUhhbmRsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
Y2xhc3MuLi4gQXJncz4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoRGlkQ2hhbmdlSXRlbUJ1ZmZlciBk
aWRDaGFuZ2VJdGVtQnVmZmVyLCBBcmdzJiYuLi4gYXJncykKICAgICB7CiAgICAgICAgIGF1dG8q
IHN0YXJ0T2ZJdGVtID0gJm1fd3JpdGFibGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5
dGVzXTsKICAgICAgICAgc3RhcnRPZkl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjpp
dGVtVHlwZSk7CiAgICAgICAgIG5ldyAoc3RhcnRPZkl0ZW0gKyBzaXplb2YodWludDY0X3QpKSBU
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIGRpZEFwcGVuZERhdGEocGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKSwgZGlkQ2hhbmdlSXRlbUJ1
ZmZlcik7CisgICAgICAgIGRpZEFwcGVuZERhdGEocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzPFQ+KCksIGRpZENoYW5nZUl0ZW1CdWZmZXIpOwogICAgIH0KIAogICAgIEl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50KiBtX3JlYWRpbmdDbGllbnQgeyBudWxscHRyIH07CiAgICAgSXRlbUJ1ZmZl
cldyaXRpbmdDbGllbnQqIG1fd3JpdGluZ0NsaWVudCB7IG51bGxwdHIgfTsKLSAgICBWZWN0b3I8
SXRlbUhhbmRsZT4gbV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVyczsKICAgICBWZWN0
b3I8dWludDhfdCo+IG1fYWxsb2NhdGVkQnVmZmVyczsKICAgICBJdGVtQnVmZmVySGFuZGxlcyBt
X3JlYWRPbmx5QnVmZmVyczsKICAgICBJdGVtQnVmZmVySGFuZGxlIG1fd3JpdGFibGVCdWZmZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42Nzc0OTdmMzk1MDU4YTY3Njg2NDQ4YTI1NTcxNzQwY2Y0MDM3YWEx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitlbnVtIEl0ZW1CdWZmZXJJZGVu
dGlmaWVyVHlwZSB7IH07Cit1c2luZyBJdGVtQnVmZmVySWRlbnRpZmllciA9IE9iamVjdElkZW50
aWZpZXI8SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
YjFkYjk0N2FiODU1N2YwMGNhZjlkMDE3NmU3MWIyNWQ5NjE1OGM3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDM0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0SXRlbVR5cGUuaCIKLQotI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRl
bXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKLQot
c3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQotewotICAgIHN3
aXRjaCAodHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoU2F2ZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0dXJu
IHNpemVvZihSZXN0b3JlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAg
IHJldHVybiBzaXplb2YoVHJhbnNsYXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoUm90YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToK
LSAgICAgICAgcmV0dXJuIHNpemVvZihTY2FsZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0
ZW5hdGVDVE06Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ29uY2F0ZW5hdGVDVE0pOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRDVE0pOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihTZXRJbmxpbmVGaWxsR3JhZGllbnQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGlu
ZUZpbGxDb2xvcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRJbmxpbmVGaWxsQ29sb3IpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFNldElubGluZVN0cm9rZUNvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJv
a2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0U3Ryb2tlVGhpY2tuZXNzKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRT
dGF0ZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihTZXRMaW5lQ2FwKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihTZXRMaW5lRGFzaCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGlu
ZUpvaW46Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0TGluZUpvaW4pOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0TWl0ZXJMaW1p
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoQ2xlYXJTaGFkb3cpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoQ2xpcCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihDbGlwT3V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwVG9JbWFnZUJ1ZmZlcik7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwT3V0VG9Q
YXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVv
ZihDbGlwUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0dseXBocyk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdJ
bWFnZUJ1ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd1BhdHRlcm4pOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdSZWN0KTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3TGlu
ZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihEcmF3TGluZXNGb3JUZXh0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0Zv
ckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdEb3RzRm9yRG9jdW1l
bnRNYXJrZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKERyYXdFbGxpcHNlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihEcmF3UGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zv
Y3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0ZvY3VzUmluZ1BhdGgpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihEcmF3Rm9jdXNSaW5nUmVjdHMpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0Ogot
ICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSZWN0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhDb2xvcik7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRmlsbFJlY3RXaXRoR3JhZGllbnQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxD
b21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsQ29tcG9zaXRlZFJlY3Qp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihGaWxsUm91bmRlZFJlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
SW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsSW5saW5lUGF0aCk7Ci0jZW5k
aWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihG
aWxsUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRmlsbEVsbGlwc2UpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihGbHVzaENvbnRleHQpOwotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpOwotICAgIGNh
c2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkdldEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIHNpemVvZihHZXRJbWFnZURhdGEpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIHNpemVvZihQdXRJ
bWFnZURhdGEpOwotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihQYWludEZyYW1lRm9yTWVkaWEpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlUmVjdCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VMaW5l
KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZUlubGluZVBhdGgpOwot
I2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihTdHJva2VQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZUVsbGlwc2UpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
ZWFyUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGVhclJlY3QpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQmVn
aW5UcmFuc3BhcmVuY3lMYXllcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5
TGF5ZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRW5kVHJhbnNwYXJlbmN5TGF5ZXIpOwotI2lm
IFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAg
IHJldHVybiBzaXplb2YoQXBwbHlTdHJva2VQYXR0ZXJuKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpB
cHBseUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RmlsbFBhdHRlcm4p
OwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihBcHBseURldmljZVNjYWxlRmFjdG9yKTsKLSAgICB9Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgaXNEcmF3aW5n
SXRlbShJdGVtVHlwZSB0eXBlKQotewotICAgIC8qIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9w
IG9mIERpc3BsYXlMaXN0SXRlbXMuaCBmb3Igd2hhdCB0aGlzIG1lYW5zLgotICAgICAqIFRoaXMg
bmVlZHMgdG8gbWF0Y2ggYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0
ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLiAqLwotCi0gICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNp
ZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGVhclNoYWRvdzoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBPdXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0
aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAg
IGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2Fw
OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVKb2luOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNz
OgotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJ
bWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
blRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdFbGxpcHNlOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JU
ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3UGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lM
YXllcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhH
cmFkaWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFp
bnRGcmFtZUZvck1lZGlhOgotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRB
KQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc2l6
ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQotewotICAg
IHJldHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVp
bnQ2NF90KSwgc2l6ZU9mSXRlbUluQnl0ZXModHlwZSkpOwotfQotCi1ib29sIGlzSW5saW5lSXRl
bShJdGVtVHlwZSB0eXBlKQotewotICAgIC8qIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9wIG9m
IERpc3BsYXlMaXN0SXRlbXMuaCBmb3Igd2hhdCB0aGlzIG1lYW5zLgotICAgICAqIFRoaXMgbmVl
ZHMgdG8gbWF0Y2ggKDEpIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmVuY29kZUl0ZW0oKSwgKDIp
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oKSwKLSAgICAgKiBhbmQgKDMpIGFs
bCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGlu
ZGl2aWR1YWwgaXRlbSBjbGFzc2VzLiAqLwotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xv
cjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
Um91bmRlZFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBj
YXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5
U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgSXRlbVR5
cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29u
Y2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
cjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5l
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRy
YW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRo
OgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVz
dGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAg
IGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAg
IGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xv
cjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGlu
ZUNhcDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRNaXRlckxpbWl0OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFU
SF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxp
bmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgIGNhc2UgSXRlbVR5cGU6Okdl
dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5oCmluZGV4IDBlZmQwYjcyYjAyOWFmYjAxMjg5MTAzMDljZmUxYmJjZGQ2ZDM5MWUu
LjRlMWZlYmM3YWVmZTE3ZTY4OTAwYTBiMGE0MTVkZTVjODMzMDhjMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSw5ICs5OSw1IEBAIGVudW0gY2xhc3MgSXRlbVR5
cGUgOiB1aW50OF90IHsKICAgICBBcHBseURldmljZVNjYWxlRmFjdG9yLAogfTsKIAotV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZSk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSk7Ci1XRUJDT1JFX0VY
UE9SVCBib29sIGlzRHJhd2luZ0l0ZW0oSXRlbVR5cGUpOwotCiB9IC8vIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCmluZGV4IDBlNDBhMjZhZTAwOTdkYzgwZTQ4YjI0MmViMTlkZmY5NmM0MWIzZmUu
LjNmZDM1ODJiNDY0NTJiYzJmNmUwMWE3ZGZjZDhiYmYwOGVlMjg1NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAKKyNpbmNsdWRlICJEaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5j
bHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAtMjIwLDEy
ICsyMjEsMTIgQEAgU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlJiBzdGF0ZUNoYW5nZSwgY29uc3QgUGF0dGVybkQKIHsKIH0KIAotdm9pZCBTZXRTdGF0
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0
dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkKK3ZvaWQgU2V0U3RhdGU6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRl
cm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpIGNvbnN0CiB7CiAgICAgaWYg
KG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAgICBt
X3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtl
UmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7Cisg
ICAgICAgIGNvbnN0X2Nhc3Q8U2V0U3RhdGUqPih0aGlzKS0+bV9zdGF0ZUNoYW5nZS5tX3N0YXRl
LnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqc3Ryb2tlUGF0dGVybklt
YWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOwogICAgIGlmIChtX3N0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJu
Q2hhbmdlKSAmJiBmaWxsUGF0dGVybkltYWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3Rh
dGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFn
ZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgICAgIGNvbnN0X2Nhc3Q8U2V0U3Rh
dGUqPih0aGlzKS0+bV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6
Y3JlYXRlKG1ha2VSZWYoKmZpbGxQYXR0ZXJuSW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRl
cnMpOwogICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7CiB9CiAKQEAgLTEwODUsMTk1
ICsxMDg2LDEyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBJdGVtVHlwZSB0eXBlKQogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKQotewotICAgIHRzIDw8IGl0ZW0u
dHlwZSgpOwotCi0gICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8VHJhbnNsYXRlPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PFJvdGF0ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNjYWxlPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldENUTT4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PENvbmNhdGVuYXRlQ1RNPigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxT
ZXRJbmxpbmVGaWxsQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVT
dHJva2VDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ry
b2tlVGhpY2tuZXNzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZUNhcD4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVEYXNoPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGlu
ZUpvaW4+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGlt
aXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENs
aXA+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlw
VG9JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dFRvUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PENsaXBQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3R2x5cGhzPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PERyYXdSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmU+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxE
cmF3RWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bh
dGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdQYXRoPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0Zv
Y3VzUmluZ1JlY3RzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZp
bGxSZWN0V2l0aEdyYWRpZW50PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxDb21wb3Np
dGVkUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5k
ZWRSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUm91bmRlZFJlY3Q+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxJbmxpbmVQYXRo
PigpOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRo
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZp
bGxFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENv
bnRleHQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbklt
YWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEdldEltYWdlRGF0
YT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxQdXRJbWFnZURhdGE+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VSZWN0Pigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTdHJva2VMaW5lPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRo
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VJbmxpbmVQYXRoPigpOwotICAgICAgICBi
cmVhazsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PFN0cm9rZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUVsbGlw
c2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xlYXJSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpOwotICAgICAgICBicmVhazsKLQotICAgIC8vIEl0
ZW1zIHdpdGggbm8gYWRkaXRpb25hbCBkYXRhLgotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3Bh
cmVuY3lMYXllcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQ
YXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0jZW5kaWYKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRGlzcGxheUxpc3RJdGVt
JiBpdGVtKQoreworICAgIFdURjo6dmlzaXQoWyZdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRl
bSkgeworICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0ZW0uaXRlbVR5cGU7CisgICAgICAgIHRz
IDw8IGRpc3BsYXlMaXN0SXRlbTsKKyAgICB9LCBpdGVtKTsKICAgICByZXR1cm4gdHM7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGU5M2IwNDY0NDNiYTRhYzc2MmFl
MzIzMTUzY2I0ZmEwYzNhNjVhNWYuLjU0OTk2ZmEzZDc0YWVlMjJmZGI1YzU5YjMzOWUyNDM2YWFh
MGQzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjYsMTEgKzI2LDE0
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIK
LSNpbmNsdWRlICJEaXNwbGF5TGlzdC5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbVR5cGUuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRS
ZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5j
bHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVy
SWRlbnRpZmllci5oIgpAQCAtMzgsNiArNDEsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9UeXBlQ2FzdHMuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIGNsYXNzIFRleHRTdHJlYW07CkBAIC0yNzcsNyArMjgxLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShE
ZWNvZGVyJik7CiAKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdl
KiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKKyAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJu
SW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgUGF0dGVybkRhdGEgewpAQCAtOTExLDcgKzkxNSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9mb250SWRlbnRpZmll
cjsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFBvaW50JiBs
b2NhbEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBGbG9hdFBv
aW50IGFuY2hvclBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIGNv
bnN0IFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiBnbHlwaHMoKSBjb25zdCB7IHJldHVy
biBtX2dseXBoczsgfQpAQCAtMjI3NCw3ICsyMjc4LDk3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEl0ZW1IYW5kbGUpOwordXNpbmcgRGlzcGxheUxpc3RJdGVt
ID0gVmFyaWFudDwKKyAgICBTYXZlLAorICAgIFJlc3RvcmUsCisgICAgVHJhbnNsYXRlLAorICAg
IFJvdGF0ZSwKKyAgICBTY2FsZSwKKyAgICBTZXRDVE0sCisgICAgQ29uY2F0ZW5hdGVDVE0sCisg
ICAgU2V0SW5saW5lRmlsbEdyYWRpZW50LAorICAgIFNldElubGluZUZpbGxDb2xvciwKKyAgICBT
ZXRJbmxpbmVTdHJva2VDb2xvciwKKyAgICBTZXRTdHJva2VUaGlja25lc3MsCisgICAgU2V0U3Rh
dGUsCisgICAgU2V0TGluZUNhcCwKKyAgICBTZXRMaW5lRGFzaCwKKyAgICBTZXRMaW5lSm9pbiwK
KyAgICBTZXRNaXRlckxpbWl0LAorICAgIENsZWFyU2hhZG93LAorICAgIENsaXAsCisgICAgQ2xp
cE91dCwKKyAgICBDbGlwVG9JbWFnZUJ1ZmZlciwKKyAgICBDbGlwT3V0VG9QYXRoLAorICAgIENs
aXBQYXRoLAorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAorICAgIEVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kcywKKyAgICBEcmF3R2x5cGhzLAorICAgIERyYXdJbWFnZUJ1ZmZlciwKKyAg
ICBEcmF3TmF0aXZlSW1hZ2UsCisgICAgRHJhd1BhdHRlcm4sCisgICAgQmVnaW5UcmFuc3BhcmVu
Y3lMYXllciwKKyAgICBFbmRUcmFuc3BhcmVuY3lMYXllciwKKyAgICBEcmF3UmVjdCwKKyAgICBE
cmF3TGluZSwKKyAgICBEcmF3TGluZXNGb3JUZXh0LAorICAgIERyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXIsCisgICAgRHJhd0VsbGlwc2UsCisgICAgRHJhd1BhdGgsCisgICAgRHJhd0ZvY3VzUmlu
Z1BhdGgsCisgICAgRHJhd0ZvY3VzUmluZ1JlY3RzLAorICAgIEZpbGxSZWN0LAorICAgIEZpbGxS
ZWN0V2l0aENvbG9yLAorICAgIEZpbGxSZWN0V2l0aEdyYWRpZW50LAorICAgIEZpbGxDb21wb3Np
dGVkUmVjdCwKKyAgICBGaWxsUm91bmRlZFJlY3QsCisgICAgRmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUsCisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisgICAgRmlsbElubGluZVBhdGgsCisj
ZW5kaWYKKyAgICBGaWxsUGF0aCwKKyAgICBGaWxsRWxsaXBzZSwKKyAgICBHZXRJbWFnZURhdGEs
CisgICAgUHV0SW1hZ2VEYXRhLAorICAgIFBhaW50RnJhbWVGb3JNZWRpYSwKKyAgICBTdHJva2VS
ZWN0LAorICAgIFN0cm9rZUxpbmUsCisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisgICAg
U3Ryb2tlSW5saW5lUGF0aCwKKyNlbmRpZgorICAgIFN0cm9rZVBhdGgsCisgICAgU3Ryb2tlRWxs
aXBzZSwKKyAgICBDbGVhclJlY3QsCisjaWYgVVNFKENHKQorICAgIEFwcGx5U3Ryb2tlUGF0dGVy
biwKKyAgICBBcHBseUZpbGxQYXR0ZXJuLAorI2VuZGlmCisgICAgQXBwbHlEZXZpY2VTY2FsZUZh
Y3RvciwKKyAgICBGbHVzaENvbnRleHQsCisgICAgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
LAorICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj47CisKK1RleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwor
CitpbmxpbmUgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mIGRpc3BsYXlMaXN0SXRlbSkKK3sKKyAgICByZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBh
dXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlMaXN0SXRlbS5p
c0RyYXdpbmdJdGVtOworICAgIH0sIGRpc3BsYXlMaXN0SXRlbSk7Cit9CisKK2lubGluZSBjb25z
dGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlz
dEl0ZW0pCit7CisgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgZGlzcGxheUxp
c3RJdGVtKSB7CisgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdEl0ZW0uaXRlbVR5cGU7CisgICAg
fSwgZGlzcGxheUxpc3RJdGVtKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdGV4
cHIgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcygpCit7CisgICAgcmV0dXJu
IHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3Qp
LCBzaXplb2YoVCkpOworfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpAQCAtMjMzNCw2ICsyNDI4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dCwKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlciwK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlciwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkdldEltYWdlRGF0
YSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YSwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYSwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3QsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg3N2U3YjljNDQ1MzQy
ZDgwZTZmMjM0ZjBmYjllNGYxZjBhZjZiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNw
cApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJh
dG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisK
K0Rpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0VuZCBpbW1lZGlhdGVseU1vdmVUb0VuZCkKKyAgICA6
IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCit7CisgICAgaWYgKGltbWVkaWF0ZWx5TW92ZVRv
RW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1dG8gaXRl
bXMgPSBpdGVtQnVmZmVyKCkpIHsKKyAgICAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9
IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgICAgICAgICBtX2N1cnNvciA9
IGVuZE9mQ3VycmVudEJ1ZmZlcigpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIG1v
dmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Cit9CisKKyNpZiBBU1NFUlRfRU5BQkxF
RAorYm9vbCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK3sKKyAgICBpZiAo
bV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY29u
c3QgYXV0byogaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgaWYgKCFpdGVtcykKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVm
ZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKKyAgICByZXR1cm4gbV9j
dXJzb3IgPT0gZW5kQ3Vyc29yOworfQorI2VuZGlmCisKK2F1dG8gRGlzcGxheUxpc3Q6Okl0ZXJh
dG9yOjpvcGVyYXRvciooKSBjb25zdCAtPiBPcHRpb25hbDxWYWx1ZT4KK3sKKyAgICBBU1NFUlQo
IWF0RW5kKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SXRlbUluZm8pOworCisgICAgYXV0byBj
dXJyZW50SXRlbUluZm8gPSBjdXJyZW50SXRlbSgpOworICAgIGlmICghY3VycmVudEl0ZW1JbmZv
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgbV9jdXJyZW50SXRlbUluZm8g
PSB7eyBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciwgY3VycmVudEl0ZW1JbmZvLT5pc0Ry
YXdpbmdJdGVtIH19OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBjdXJyZW50RXh0ZW50Owor
ICAgIGlmIChjdXJyZW50SXRlbUluZm8tPmlzRHJhd2luZ0l0ZW0gJiYgIW1fZGlzcGxheUxpc3Qu
bV9kcmF3aW5nSXRlbUV4dGVudHMuaXNFbXB0eSgpKQorICAgICAgICBjdXJyZW50RXh0ZW50ID0g
bV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwor
CisgICAgcmV0dXJuIHt7IFdURk1vdmUoY3VycmVudEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0ZW0p
LCBXVEZNb3ZlKGN1cnJlbnRFeHRlbnQpLCBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciB9
fTsKK30KKwordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKQoreworICAg
IEFTU0VSVCghYXRFbmQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEl0ZW1JbmZvKTsKKworICAg
IGlmIChtX2N1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSkKKyAgICAgICAgKyttX2RyYXdp
bmdJdGVtSW5kZXg7CisKKyAgICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVtSW5mby0+c2l6ZUlu
QnVmZmVyOworCisgICAgaWYgKG1fY3Vyc29yID09IGVuZE9mQ3VycmVudEJ1ZmZlcigpICYmIG1f
cmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6
ZSgpKSB7CisgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCsrOworICAgICAgICBtb3ZlQ3Vy
c29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOworICAgIH0KKworICAgIG1fY3VycmVudEl0ZW1J
bmZvID0geyB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBzdGF0
aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQgPSBmYWxzZTsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6
OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQor
eworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGlj
IGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+
IGlzVmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7
Cit9CisKK3RlbXBsYXRlIDxzdGQ6OnNpemVfdCBJPgoraW5saW5lIGF1dG8gRGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpIGNvbnN0IC0+IE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVz
dWx0PgoreworICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBiZWNh
dXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgLy8gRG9pbmcg
c28gd291bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBkb2lu
ZyAiaWYgKCkgeyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1cm47
IH0gZWxzZSB7IHJldHVybjsgfSIKKyAgICAvLyBvciBCKSBjYXVzZSB0aGUgY29tcGlsZXIgdG8g
aW5maW5pdGVseSByZWN1cnNlIHdoZW4gZ2VuZXJhdGluZyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlv
bnMgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRf
c2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICB1c2luZyBEaXNwbGF5TGlz
dEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8SSwgRGlzcGxheUxpc3RJdGVt
PjsKKworICAgICAgICBjb25zdCBhdXRvKiBlbmRPZkN1cnJlbnRCdWZmZXIgPSB0aGlzLT5lbmRP
ZkN1cnJlbnRCdWZmZXIoKTsKKworICAgICAgICBpZiAobV9jdXJzb3IgKyAxID4gZW5kT2ZDdXJy
ZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBh
dXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAg
ICAgaWYgKGl0ZW1UeXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnRJdGVtPEkgKyAxPigpOworCisgICAgICAgIGlmIChEaXNwbGF5
TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChtX2N1cnNvciAr
IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxEaXNwbGF5TGlzdEl0ZW1UeXBlPigpID4g
ZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RGlzcGxheUxpc3RJdGVtVHlwZSo+KG1fY3Vyc29yICsgc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAg
ICAgICAgICBpZiAoIWlzVmFsaWQoaXRlbSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVy
ID0gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRf
dCksIHNpemVvZihEaXNwbGF5TGlzdEl0ZW1UeXBlKSk7CisgICAgICAgICAgICByZXR1cm4ge3sg
aXRlbSwgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsIERpc3BsYXlMaXN0SXRlbVR5cGU6OmlzRHJh
d2luZ0l0ZW0gfX07CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiBjbGllbnQgPSBpdGVtQnVm
ZmVyKCktPm1fcmVhZGluZ0NsaWVudDsKKyAgICAgICAgaWYgKCFjbGllbnQpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGlmIChtX2N1cnNvciArIDIgKiBzaXpl
b2YodWludDY0X3QpID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0
PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOworICAgICAgICBjb25zdCBhdXRvKiBzdGFydE9mRGF0
YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7CisgICAgICAgIGlmIChzdGFydE9m
RGF0YSArIGRhdGFMZW5ndGggPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1dG8gaXRlbSA9IGNsaWVudC0+ZGVjb2RlSXRl
bShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUpOworICAgICAgICBpZiAoIWl0ZW0g
fHwgIWlzVmFsaWQoaXRlbS52YWx1ZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHN0ZDo6c2l6ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gIDIgKiBz
aXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwg
ZGF0YUxlbmd0aCk7CisgICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKGl0ZW0udmFsdWUoKSksIGN1
cnJlbnRJdGVtU2l6ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVt
IH19OworICAgIH0KKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3ZvaWQgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCit7Cisg
ICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1fcmVh
ZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVt
YmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZlckhhbmRs
ZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOworICAg
ICAgICBtX2N1cnNvciA9IGN1cnJlbnRCdWZmZXJIYW5kbGUuZGF0YTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlC
dWZmZXJzKTsKKyAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRh
OworICAgIH0KK30KKwordWludDhfdCogRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjplbmRPZkN1cnJl
bnRCdWZmZXIoKSBjb25zdAoreworICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAg
QVNTRVJUKGl0ZW1zKTsKKworICAgIGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMgPSBpdGVt
cy0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOworICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5k
ZXggPCBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAgICAgICBhdXRvJiBjdXJyZW50QnVm
ZmVySGFuZGxlID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRl
eF07CisgICAgICAgIHJldHVybiBjdXJyZW50QnVmZmVySGFuZGxlLmRhdGEgKyBjdXJyZW50QnVm
ZmVySGFuZGxlLmNhcGFjaXR5OworICAgIH0KKworICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVy
SW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOworICAgIHJldHVybiBpdGVtcy0+bV93
cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Cit9CisK
K30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4
YTI2YWEyZTI1NjE5ZmFmYjM5MTA5NDVhY2EzMjU0ZjAxY2E4NmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRpc3BsYXlMaXN0
LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitjbGFzcyBEaXNwbGF5TGlzdDo6SXRlcmF0b3Ig
eworcHVibGljOgorICAgIGVudW0gY2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgeyBObywgWWVz
IH07CisgICAgSXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmLCBJbW1lZGlhdGVseU1vdmVUb0Vu
ZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObyk7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9k
aXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsgfQorICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVyYXRvcisrKCk7CisKKyAgICBzdHJ1Y3Qg
VmFsdWUgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gaXRlbTsKKyAgICAgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBleHRlbnQ7CisgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9
OworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3Iq
KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IEN1cnJlbnRJdGVtUmVzdWx0IHsKKyAg
ICAgICAgRGlzcGxheUxpc3RJdGVtIGRpc3BsYXlMaXN0SXRlbTsKKyAgICAgICAgc3RkOjpzaXpl
X3Qgc2l6ZUluQnVmZmVyOworICAgICAgICBib29sIGlzRHJhd2luZ0l0ZW07CisgICAgfTsKKyAg
ICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSA9IDA+CisgICAgT3B0aW9uYWw8Q3VycmVudEl0ZW1S
ZXN1bHQ+IGN1cnJlbnRJdGVtKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1v
dmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7CisgICAgdWludDhfdCogZW5kT2ZDdXJy
ZW50QnVmZmVyKCkgY29uc3Q7CisKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgYXRFbmQo
KSBjb25zdDsKKyNlbmRpZgorCisgICAgSXRlbUJ1ZmZlciogaXRlbUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUJ1ZmZlcklmRXhpc3RzKCk7IH0KKworICAgIGNvbnN0
IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OworICAgIHN0cnVjdCBDdXJyZW50SXRlbUluZm8g
eworICAgICAgICBzdGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3
aW5nSXRlbTsKKyAgICB9OworICAgIG11dGFibGUgT3B0aW9uYWw8Q3VycmVudEl0ZW1JbmZvPiBt
X2N1cnJlbnRJdGVtSW5mbzsKKyAgICB1aW50OF90KiBtX2N1cnNvciB7IG51bGxwdHIgfTsKKyAg
ICBzaXplX3QgbV9yZWFkT25seUJ1ZmZlckluZGV4IHsgMCB9OworICAgIHNpemVfdCBtX2RyYXdp
bmdJdGVtSW5kZXggeyAwIH07Cit9OworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggODM3ZjBlOTBlMjdmNTk4YzBjYjdlOTEzNjQzZTA1YjhhMDMw
MDY5My4uODdmNjY2N2U4YmI4NjgxOTdhNDI5ZGQ3OThlZjE3ZjkwN2MyMWU5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTIxLDI2ICsxMjEsMTcgQEAg
dm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLAogICAgICAgICBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRp
ZW50PigqY2hhbmdlcy5tX3N0YXRlLmZpbGxHcmFkaWVudCwgY2hhbmdlcy5tX3N0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZEl0
ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkKLXsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAg
bV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW1PZlR5cGUodHlwZSk7Ci0KLSAgICBpZiAoaXNEcmF3
aW5nSXRlbSh0eXBlKQotI2lmIFVTRShDRykKLSAgICAgICAgfHwgdHlwZSA9PSBJdGVtVHlwZTo6
QXBwbHlTdHJva2VQYXR0ZXJuIHx8IHR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVy
bgotI2VuZGlmCi0gICAgKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBz
dGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlc0Zyb21MYXN0U3RhdGUgPSBz
dGF0ZUNoYW5nZXMuY2hhbmdlc0Zyb21TdGF0ZShjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0
YXRlKTsKLSAgICAgICAgaWYgKGNoYW5nZXNGcm9tTGFzdFN0YXRlKSB7Ci0gICAgICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZp
bmcgc3RhdGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9z
dGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKLSAgICAgICAgICAgIGFwcGVuZFN0YXRlQ2hh
bmdlSXRlbShzdGF0ZUNoYW5nZXMsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKTsKLSAgICAgICAgICAg
IHN0YXRlQ2hhbmdlcy5tX2NoYW5nZUZsYWdzID0geyB9OwotICAgICAgICAgICAgY3VycmVudFN0
YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOwotICAgICAgICB9
Ci0gICAgICAgIGN1cnJlbnRTdGF0ZSgpLndhc1VzZWRGb3JEcmF3aW5nID0gdHJ1ZTsKK3ZvaWQg
UmVjb3JkZXI6OndpbGxBcHBlbmREcmF3aW5nSXRlbSgpCit7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlcyA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlOwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tTGFz
dFN0YXRlID0gc3RhdGVDaGFuZ2VzLmNoYW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFz
dERyYXdpbmdTdGF0ZSk7CisgICAgaWYgKGNoYW5nZXNGcm9tTGFzdFN0YXRlKSB7CisgICAgICAg
IExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNh
dmluZyBzdGF0ZSAiIDw8IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlcy5t
X3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkpOworICAgICAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oc3RhdGVDaGFuZ2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7CisgICAgICAgIHN0YXRl
Q2hhbmdlcy5tX2NoYW5nZUZsYWdzID0geyB9OworICAgICAgICBjdXJyZW50U3RhdGUoKS5sYXN0
RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFuZ2VzLm1fc3RhdGU7CiAgICAgfQorICAgIGN1cnJlbnRT
dGF0ZSgpLndhc1VzZWRGb3JEcmF3aW5nID0gdHJ1ZTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6dXBk
YXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oCmluZGV4IDBjZWM0OGQ3MTYzYTYxYzkxODgwZTI2ZjUxNmRhYTJhMDcwOTNj
YWEuLmYyMGU2MzY5YTBkMmQxOTQ0MGNiMzhiY2MwMDdlMWRjYjI3OGUyYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KICAgICB2b2lkIGFwcGVu
ZChBcmdzJiYuLi4gYXJncykKICAgICB7Ci0gICAgICAgIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFQ6
Oml0ZW1UeXBlKTsKKyAgICAgICAgd2lsbEFwcGVuZEl0ZW1PZlR5cGU8VD4oKTsKICAgICAgICAg
bV9kaXNwbGF5TGlzdC5hcHBlbmQ8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKIAog
ICAgICAgICBpZiBjb25zdGV4cHIgKFQ6OmlzRHJhd2luZ0l0ZW0pIHsKQEAgLTE3Miw3ICsxNzIs
MjEgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoKQorICAgIHsKKyAgICAgICAgaWYg
KG1fZGVsZWdhdGUpCisgICAgICAgICAgICBtX2RlbGVnYXRlLT53aWxsQXBwZW5kSXRlbU9mVHlw
ZShUOjppdGVtVHlwZSk7CisKKyAgICAgICAgaWYgKFQ6OmlzRHJhd2luZ0l0ZW0KKyNpZiBVU0Uo
Q0cpCisgICAgICAgICAgICB8fCBUOjppdGVtVHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQ
YXR0ZXJuIHx8IFQ6Oml0ZW1UeXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4KKyNl
bmRpZgorICAgICAgICApCisgICAgICAgICAgICB3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKTsKKyAg
ICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxBcHBlbmREcmF3aW5nSXRlbSgpOwog
CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBkMTczN2EyNzljMzk3ZTA5MDkzZDEz
ODQzM2RiMzg0N2Q2ZjQ3NDkyLi5lMzJlMDYxOTc3ZWM2YjgwOTVmM2U2NTk2YTY4MjMxNmViZGRh
YTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAKICNpbmNsdWRlICJEaXNw
bGF5TGlzdEl0ZW1zLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC01Miw5ICs1Myw4IEBAIEdyYXBoaWNzQ29udGV4dCYg
UmVwbGF5ZXI6OmNvbnRleHQoKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5l
IHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VC
dWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNo
TWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZm
ZXJzLCBjb25zdCBUJiBpbWFnZUJ1ZmZlckl0ZW0pCiB7Ci0gICAgYXV0byYgaW1hZ2VCdWZmZXJJ
dGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGltYWdl
QnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2VC
dWZmZXIgPSBpbWFnZUJ1ZmZlcnMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAg
aW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1ZmZlcik7CkBAIC02NCw5ICs2
NCw4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1p
bmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlO
YXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFn
ZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVt
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRp
dmVJbWFnZXMsIGNvbnN0IFQmIG5hdGl2ZUltYWdlSXRlbSkKIHsKLSAgICBhdXRvJiBuYXRpdmVJ
bWFnZUl0ZW0gPSBpdGVtLmdldDxUPigpOwogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0g
bmF0aXZlSW1hZ2VJdGVtLmltYWdlSWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBpbWFnZSA9
IG5hdGl2ZUltYWdlcy5nZXQocmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBuYXRpdmVJ
bWFnZUl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlKTsKQEAgLTc1LDEwICs3NCw4IEBAIGlubGlu
ZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2
ZUltYWdlSXRlbShHcmFwaGljCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAot
aW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5
U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VI
YXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1h
Z2VzLCBjb25zdCBTZXRTdGF0ZSYgc2V0U3RhdGVJdGVtKQogewotICAgIGF1dG8mIHNldFN0YXRl
SXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwotCiAgICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBh
dHRlcm5JbWFnZSA9IG51bGxwdHI7CiAgICAgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2Ug
PSBudWxscHRyOwogCkBAIC05OSw5ICs5Niw4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvCiB9
CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkK
K2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBs
eUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jl
c291cmNlTWFwJiBmb250cywgY29uc3QgVCYgZm9udEl0ZW0pCiB7Ci0gICAgYXV0byYgZm9udEl0
ZW0gPSBpdGVtLmdldDxUPigpOwogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gZm9udEl0
ZW0uZm9udElkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogZm9udCA9IGZvbnRzLmdldChyZXNv
dXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGZvbnRJdGVtLmFwcGx5KGNvbnRleHQsICpmb250
KTsKQEAgLTExMCw2OCArMTA2LDY4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAgICAgcmV0
dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAotc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBs
YXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXBsYXll
cjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKK2V4dGVybiBHcmFwaGljc0NvbnRleHQmIHN5
bnRoZXNpemVMVmFsdWVHcmFwaGljc0NvbnRleHQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5h
bWUgPSB2b2lkPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0FwcGx5ID0gZmFsc2U7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0Fw
cGx5PFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmFwcGx5KHN5bnRo
ZXNpemVMVmFsdWVHcmFwaGljc0NvbnRleHQpKT4+ID0gdHJ1ZTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhSGFzQXBw
bHk8SXRlbT4sIHZvaWQ+IGFwcGx5KGNvbnN0IEl0ZW0mLCBHcmFwaGljc0NvbnRleHQmKQorewor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZl90PEhhc0FwcGx5PEl0ZW0+LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiBpdGVt
LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICByZXR1cm4gaXRlbS5h
cHBseShncmFwaGljc0NvbnRleHQpOworfQorCithdXRvIFJlcGxheWVyOjphcHBseUl0ZW0oY29u
c3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQKIHsKICAgICBpZiAo
bV9kZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBjb250ZXh0KCkpKQogICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogCi0gICAgaWYgKGl0ZW0u
aXM8RHJhd0ltYWdlQnVmZmVyPigpKSB7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlz
aXRvcihbJl0oY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQg
ewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBw
bHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZm
ZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAg
IH0KLQotICAgIGlmIChpdGVtLmlzPENsaXBUb0ltYWdlQnVmZmVyPigpKSB7CisgICAgfSwgWyZd
KGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtKSAtPiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3Rv
cFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IHsK
ICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZm
ZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAg
IH0KLQotICAgIGlmIChpdGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgeworICAgIH0sIFsmXShj
b25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAg
IGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUlt
YWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0p
KQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJl
c291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAg
ICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAg
aWYgKGl0ZW0uaXM8RHJhd0dseXBocz4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0
KCksIG1fZm9udHMsIGl0ZW0pKQorICAgIH0sIFsmXShjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkg
LT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0
KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBs
YXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPERyYXdQYXR0ZXJuPigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5h
dGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRl
bSkpCisgICAgfSwgWyZdKGNvbnN0IERyYXdHbHlwaHMmIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3Vs
dCB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBh
cHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCiAgICAg
ICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2Us
IFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0
dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRl
bS5pczxTZXRTdGF0ZT4oKSkgeworICAgIH0sIFsmXShjb25zdCBTZXRTdGF0ZSYgaXRlbSkgLT4g
QXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMs
IGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0Nh
Y2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07
CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQot
Ci0gICAgaWYgKGl0ZW0uaXM8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKKyAgICB9
LCBbJl0oY29uc3QgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBs
eUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAobV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbSwgV1RGOjpudWxsb3B0IH07
Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KCk7CiAgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVt
LmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0KTsKICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBX
VEY6Om51bGxvcHQgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+
KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBjbGlwSXRl
bSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtLCBXVEY6
Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM+KCk7CiAgICAgICAgIG1fY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigq
bV9tYXNrSW1hZ2VCdWZmZXIsIGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgICAgICBtX21h
c2tJbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaXRlbS5hcHBseShjb250ZXh0KCkpOwotICAg
IHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfSwgWyZdKGNvbnN0
IGF1dG8mIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGFwcGx5KGl0ZW0sIGNv
bnRleHQoKSk7CisgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07
CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFJl
cGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAtMTg3LDI4ICsxODMsMzAgQEAgUmVwbGF5UmVzdWx0
IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFj
a1JlcGxheUxpc3QKICAgICBzaXplX3QgaSA9IDA7CiAjZW5kaWYKICAgICBSZXBsYXlSZXN1bHQg
cmVzdWx0OwotICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6
IG1fZGlzcGxheUxpc3QpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6
IG1fZGlzcGxheUxpc3QpIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAg
ICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkludmFs
aWRJdGVtOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBh
dXRvJiBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52
YWx1ZSgpOworCiAgICAgICAgIGlmICghaW5pdGlhbENsaXAuaXNaZXJvKCkgJiYgZXh0ZW50ICYm
ICFleHRlbnQtPmludGVyc2VjdHMoaW5pdGlhbENsaXApKSB7CiAgICAgICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInNraXBwaW5nICIgPDwgaSsrIDw8ICIg
IiA8PCBpdGVtKTsKICAgICAgICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVt
U2l6ZUluQnVmZmVyOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0
b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgImFw
cGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKIAotICAgICAgICBpZiAoaXRlbS0+aXM8
TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKSB7CisgICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcj4oaXRlbSkpIHsKICAgICAgICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCAr
PSBpdGVtU2l6ZUluQnVmZmVyOwogICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5n
ID0gU3RvcFJlcGxheVJlYXNvbjo6Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjsKLSAgICAg
ICAgICAgIHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IGl0ZW0tPmdldDxNZXRh
Q29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAg
ICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gV1RGOjpnZXQ8TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKS5pZGVudGlmaWVyKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIFtyZWFz
b25Gb3JTdG9wcGluZywgbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcl0gPSBhcHBseUl0
ZW0oKml0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgeworICAgICAgICBpZiAoYXV0byBbcmVhc29u
Rm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJdID0gYXBwbHlJdGVt
KGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgewogICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZv
clN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5nOwogICAgICAgICAgICAgcmVzdWx0Lm1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTcsOSArMjE1LDkgQEAgUmVw
bGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Ym9vbCB0cmFja1JlcGxheUxpc3QKICAgICAgICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9
IGl0ZW1TaXplSW5CdWZmZXI7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlz
dCkpIHsKLSAgICAgICAgICAgIHJlcGxheUxpc3QtPmFwcGVuZCgqaXRlbSk7Ci0gICAgICAgICAg
ICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgpKQotICAgICAgICAgICAgICAgIHJlcGxheUxpc3Qt
PmFkZERyYXdpbmdJdGVtRXh0ZW50KFdURk1vdmUoZXh0ZW50KSk7CisgICAgICAgICAgICByZXBs
YXlMaXN0LT5hcHBlbmQoaXRlbSk7CisgICAgICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVt
KSkKKyAgICAgICAgICAgICAgICByZXBsYXlMaXN0LT5hZGREcmF3aW5nSXRlbUV4dGVudChPcHRp
b25hbDxGbG9hdFJlY3Q+KGV4dGVudCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCAxODFhMTJiMGU1MThlOGRjMjFkM2I3NDlm
MjcxMDFkMmEzZTk2ZjM5Li45ZTAzOTI1YzZkZjVmZGQyNDU0Y2VhYTczMTgxOGYzYzlkYmMyNmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsMTIgKzY2LDEzIEBA
IHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5EZWxlZ2F0ZSgpIHsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoSXRlbUhhbmRs
ZSwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBi
b29sIGFwcGx5KGNvbnN0IERpc3BsYXlMaXN0SXRlbSYsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgfTsKICAgICAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KCkgY29uc3Q7Ci0gICAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFz
b24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBhcHBseUl0ZW0oSXRl
bUhhbmRsZSk7CisgICAgdXNpbmcgQXBwbHlJdGVtUmVzdWx0ID0gc3RkOjpwYWlyPE9wdGlvbmFs
PFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
PjsKKyAgICBBcHBseUl0ZW1SZXN1bHQgYXBwbHlJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
OwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlQnVmZmVyPiBtX21hc2tJbWFnZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNmNhMWU2MGRh
YWJlNmUwNTgxYzI0YjYxYWQwNGI5OTY4NTM3YWNjNi4uNjVlMGVlMTJhNjdkOTI3NmI5ODFmYzEw
NDM3MWZmYWYwMWQ5ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsMzUgKzc0LDI2IEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlk
ZQorICAgIGJvb2wgYXBwbHkoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdl
RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byYgZ2V0SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRJbWFnZURhdGE+KCk7Ci0gICAgICAgICAgICBVTlVT
RURfVkFSSUFCTEUoZ2V0SW1hZ2VEYXRhSXRlbSk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY0OSBJbXBsZW1lbnQgdGhp
cy4KKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YSYpIHsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRl
bSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KCk7CisgICAg
ICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhJiBwdXRJ
bWFnZURhdGFJdGVtKSB7CiAgICAgICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1hZ2VEYXRhSXRl
bS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBwdXRJbWFnZURh
dGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwgcHV0SW1hZ2VE
YXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250
ZXh0PigpKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hDb250ZXh0JiBmbHVzaENvbnRleHQpIHsKICAgICAgICAgICAgIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjpmbHVzaENvbnRleHQoKTsKLSAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGl0
ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkuaWRlbnRpZmllcigp
OworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gZmx1c2hDb250ZXh0LmlkZW50aWZpZXIo
KTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRGbHVzaChpZGVudGlm
aWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAgfSwgWyZd
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIm
IG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcikgeworICAgICAgICAgICAgYXV0byBuZXh0QnVm
ZmVySWRlbnRpZmllciA9IG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlci5pZGVudGlmaWVyKCk7
CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuc2V0TmV4dEl0ZW1CdWZmZXJU
b1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsK
KyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgICAgIHJldHVybiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29udGV4dCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBpdGVtKTsKICAg
ICB9CiAKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZWUxNDJmMmY1OWZkYjZiNGNhYjU4OTM2
NzAzZWRjMjZmY2YxOWI5Yi4uMjEzNDQxZGRjNWRlNzUyNDlkNzFlN2YwNTk2YzRjMWM1NGE5ZTBk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQsMjAgKzExNCwxOCBAQCB1aW50NjRfdCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKIH0K
IAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShEaXNwbGF5TGlz
dDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitib29sIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghaXRlbS5pczxEaXNwbGF5TGlzdDo6
UGFpbnRGcmFtZUZvck1lZGlhPigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRv
JiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigp
OwotICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5pZGVudGlmaWVy
KCkpOwotICAgIGlmICghcGxheWVyKQorICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0
b3IoWyZdKGNvbnN0IERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmIG1lZGlhSXRlbSkg
eworICAgICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobWVkaWFJdGVtLmlk
ZW50aWZpZXIoKSkpCisgICAgICAgICAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxh
eWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJdGVtLmRlc3RpbmF0
aW9uKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtdKGNvbnN0IGF1dG8mIGl0ZW0pIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZp
c2l0b3IsIGl0ZW0pOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAt
MTgyLDcgKzE4MCw3IEBAIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwCiAgICAgZWxzZQogICAgICAg
ICByZXBsYXllckRlbGVnYXRlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyKj4oJmRlc3RpbmF0aW9uKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXIgeworICAgIHJldHVybiBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgewogICAgICAg
ICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCiAgICAgICAgIGRpc3BsYXlMaXN0LAogICAgICAgICAm
cmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpLApAQCAtMzExLDEyICszMDksMTIg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKICAgICB9CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25JZGVu
dGlmaWVyKQogewogICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaWRlbnRpZmllciwgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRpb25JZGVudGlmaWVy
LCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9LCBXVEY6Om51bGxvcHQgfX07
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSW50UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxJbWFnZURhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zMjYsNyArMzI0LDcgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGlt
YWdlRGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxG
b3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMzM2LDcgKzMzNCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh1cmxTdHJpbmcpKTsKIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM0Niw3ICszNDQsNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0YSkpOwog
fQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFE
YXRhRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKQEAgLTM1Niw3ICszNTQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Omdl
dEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyYwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIApAQCAtMzY1LDE4ICszNjMsMTggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmcKICAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFn
ZUJ1ZmZlcihpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgYXV0byBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5TmF0aXZl
SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6RG9udENvcHlCYWNraW5nU3RvcmUpOwor
ICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5OjpEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSBpbWFnZUJ1ZmZl
ci0+YmFja2VuZFNpemUoKTsKLSAgICAgICAgYXV0byByZXN1bHRTaXplID0gcHJlc2VydmVSZXNv
bHV0aW9uID09IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6WWVzID8gYmFja2VuZFNpemUg
OiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKKyAgICAgICAgYXV0byByZXN1bHRTaXplID0g
cHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzID8gYmFja2VuZFNp
emUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKICAgICAgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRTaXplLCB7IH0pOwogICAgICAg
ICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBjb250ZXh0
ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICAgICAgaWYgKCFjb250ZXh0
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2Uo
KmltYWdlLCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7IH0sIHJlc3VsdFNpemUgfSwgRmxvYXRS
ZWN0IHsgeyB9LCBiYWNrZW5kU2l6ZSB9LCB7IFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yOjpD
b3B5IH0pOworICAgICAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCByZXN1bHRT
aXplLCBGbG9hdFJlY3QgeyB7IH0sIHJlc3VsdFNpemUgfSwgRmxvYXRSZWN0IHsgeyB9LCBiYWNr
ZW5kU2l6ZSB9LCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogICAgICAgICBiaXRtYXAt
PmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogICAgIH0oKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGhhbmRsZSkpOwpAQCAtNDM0LDEwNiArNDMyLDMzIEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6
Okl0ZW1CCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZSht
X3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCi1PcHRp
b25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9u
KQordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgorc3RhdGljIGlubGluZSBPcHRpb25hbDxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKQogewotICAgIC8q
IFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlzSW5saW5lSXRlbSgpIGluIERpc3BsYXlMaXN0SXRl
bVR5cGUuY3BwLCAoMikgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5jb2RlSXRlbSgpLAotICAg
ICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSJz
IGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMuCi0gICAgICogU2VlIHRoZSBjb21t
ZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aHkuICovCi0KLSAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRv
UGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91
dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0
ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlz
cGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24p
OwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29t
cG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVM
b2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENv
bG9yOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVj
dFdpdGhDb2xvcj4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4g
ZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oZGF0YSwgbGVuZ3RoLCBoYW5k
bGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVk
UmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJv
dW5kZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5k
Q3JlYXRlPERpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9j
YXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6U2V0U3RhdGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5k
Q3JlYXRlPERpc3BsYXlMaXN0OjpTdHJva2VQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0
aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5
RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tl
UGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRy
YW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9J
bWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0
ZW5hdGVDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNl
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0Ogot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0
aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21t
YW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFp
bnRGcmFtZUZvck1lZGlhOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3Jl
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlNjYWxlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1p
dGVyTGltaXQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNr
bmVzczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNp
ZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VM
aW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkdldEltYWdlRGF0YTogewotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIC8vIFdlIGNhbid0IHVz
ZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBiZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBp
biB0aGUgY29tcGlsZXIuCisgICAgLy8gRG9pbmcgc28gd291bGQgZWl0aGVyIEEpIGJyZWFrIHRo
ZSBXZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBkb2luZyAiaWYgKCkgeyByZXR1cm47IH0gcmV0dXJu
OyIgaW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1cm47IH0gZWxzZSB7IHJldHVybjsgfSIKKyAgICAv
LyBvciBCKSBjYXVzZSB0aGUgY29tcGlsZXIgdG8gaW5maW5pdGVseSByZWN1cnNlIHdoZW4gZ2Vu
ZXJhdGluZyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICBp
ZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3RJdGVtPjo6dmFsdWUpIHsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdU
Rjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEksIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+
OworCisgICAgICAgIGlmICh0eXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQor
ICAgICAgICAgICAgcmV0dXJuIGRlY29kZUl0ZW08SSArIDE+KGRhdGEsIGxlbmd0aCwgdHlwZSk7
CisKKyAgICAgICAgQVNTRVJUKCFEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pOwor
ICAgICAgICBpZiBjb25zdGV4cHIgKCFEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0p
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2lu
Z2xlT2JqZWN0PERpc3BsYXlMaXN0SXRlbVR5cGU+KGRhdGEsIGxlbmd0aCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQudmFsdWUoKSkgfTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCitPcHRpb25hbDxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBEaXNwbGF5
TGlzdDo6SXRlbVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpkZWNvZGVJdGVtKGRh
dGEsIGxlbmd0aCwgdHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMzk0M2Q1MjFk
MzY5M2ZiZDJjZWYzNmI0N2QzNDk2YjFjMmRmMzY1OS4uYzljYzdjMDg0ZmFkY2RiZjNiYjRhYzI5
Y2E5NTlkOGYxYTllMzczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVi
bGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUmIHJlbW90ZVJlc291cmNlQ2FjaGUoKSB7IHJl
dHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGU7IH0KIAogICAgIC8vIFJlbmRlcmluZyBvcGVyYXRp
b25zLgotICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworICAgIGJvb2wgYXBwbHlNZWRpYUl0
ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYsIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICB2
b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC04NiwxOSArODYsNyBA
QCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmKTsK
ICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlQW5kQ3JlYXRlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQotICAgIHsKLSAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2luZ2xlT2JqZWN0PFQ+
KGRhdGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZWJLaXQyIHNob3VsZCBu
b3QgbmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDggYnl0ZXMgYXQgdGhlIGhhbmRsZSBhcmUg
cmVzZXJ2ZWQgZm9yIHRoZSB0eXBlLgotICAgICAgICAgICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0
IGEgd2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0aGluIGRpc3BsYXkgbGlzdCBjb2RlIGlu
IFdlYkNvcmUuCi0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2
NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7Ci0gICAgICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9j
YXRpb24gfX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBvdmVycmlkZTsKIAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlv
bik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGlu
aXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCmluZGV4IDViYmYyNTYzMDYyOTBlNDlhYzhkYjMxYjVkMDFhYzk2YjU2YWFjNDIuLjU3N2Jm
NTlmOWRmNjU3YTVmYzQyMjg5NWJmZWVlMDRkYjhhNDhkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCkBAIC0zMDEsMTAzICszMDEsMjAgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29k
ZUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSkgY29uc3Qgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIC8qIFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlzSW5saW5lSXRl
bSgpIGluIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwLCAoMikgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6ZGVjb2RlSXRlbSgpLAotICAgICAgICAgKiBhbmQgKDMpIGFsbCB0aGUgInN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwgaXRlbSBjbGFz
c2VzLgotICAgICAgICAgKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiBEaXNwbGF5TGlz
dEl0ZW1zLmggZm9yIHdoeS4gKi8KLQotICAgICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRo
OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29k
ZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFBhdGg+KGl0
ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwUGF0aD4oKSk7Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAg
ICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgICAgICByZXR1cm4g
SVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdGb2N1c1JpbmdSZWN0cz4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1
c1JpbmdSZWN0cz4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3R2x5cGhzOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2Rl
U2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzPihpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICAgICAg
cmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0xpbmVzRm9yVGV4dD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29k
ZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGl0ZW0uZ2V0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgICAgICBy
ZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZp
bGxDb21wb3NpdGVkUmVjdD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVu
Y29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBhdGg+KGl0ZW0uZ2V0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgICAg
IHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
aWxsUmVjdFdpdGhDb2xvcj4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6
OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJl
Y3RXaXRoR3JhZGllbnQ+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdp
dGhHcmFkaWVudD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVu
Y29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RX
aXRoUm91bmRlZEhvbGU+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZT4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVy
OjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVj
dD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oKSk7Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6
Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlB1dEltYWdlRGF0YT4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29k
ZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+
KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oKSk7Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAg
ICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6U2V0U3RhdGU+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0
ZT4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJv
a2VQYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2Jq
ZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJva2VQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U3Ryb2tlUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRl
cm46Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseVN0
cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdp
bmdDb21tYW5kczoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICBjYXNlIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsRWxsaXBz
ZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVz
dGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTYXZlOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VD
b2xvcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExp
bmVDYXA6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRM
aW5lSm9pbjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNl
dE1pdGVyTGltaXQ6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5l
UGF0aDoKLSNlbmRpZgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbUhlbHBlcihjb25zdCBUJiBp
dGVtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghVDo6aXNJbmxpbmVJdGVtKQorICAg
ICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFQ+KGl0ZW0p
OworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNv
ZGVJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0p
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdChbXShjb25z
dCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIC0+IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVJdGVtSGVscGVyKGRpc3BsYXlMaXN0SXRlbSk7
CisgICAgICAgIH0sIGl0ZW0pOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiM2E0
NmFmZWYzMWU1MjQ2MDllMDQ2YjhmMDE1OTY5M2I4OTIyMGZjLi4zMGM4MGM0Zjg0MGE3MGYzMGY5
N2FhOWU0MzRlNzQ1NzJlOTBkMzQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMjIgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1p
Z3JhdGUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHRvIHVzZSBhIFZhcmlhbnQgaW5zdGVhZCBvZiBJ
dGVtSGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjM1NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBOb3cgdGhhdCBhIEl0ZW1CdWZmZXJSZWFkaW5n
Q2xpZW50IGFuZCBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCBhcmUKKyAgICAgICAgICAgICAgICBu
ZWNlc3NhcnkgZm9yIHVzaW5nIG5vbi1pbmxpbmUgZGlzcGxheSBsaXN0IGl0ZW1zLCBzcGVjaWZ5
IHRoZW0gaGVyZSBpbiB0aGUgdGVzdC4KKyAgICAgICAgICAgICAgICBBbHNvLCBtaWdyYXRlIGZy
b20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0gbGluZS1ieS1saW5lLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOiBN
aWdyYXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0gbGluZS1ieS1saW5lLgor
CiAyMDIxLTAzLTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbd2Via2l0c2NtcHldIEJhc2UgR2l0SHViIG1vY2sgbGlua3Mgb24gcHJvdmlkZWQgcmVt
b3RlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxh
eUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxh
eUxpc3RUZXN0cy5jcHAKaW5kZXggMWNlMTQ2MjhjZWQ1ZTAwNjQyNWQyZWMyOWYxZGUwZWI3MWZl
MTM3NC4uZDhiMjZmYmQ5N2UzZWQyZjgyNDIyNTc1YzY0ZTA2M2JmYzVkMzIwMiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9E
aXNwbGF5TGlzdEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFkaWVudC5oPgogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC01OCw3ICs1OSw4OCBAQCBzdGF0aWMgUGF0aCBj
cmVhdGVDb21wbGV4UGF0aCgpCiAKIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMp
CiB7CisgICAgVmVjdG9yPEZpbGxQYXRoPiBmaWxsUGF0aFN0b3JhZ2U7CisgICAgVmVjdG9yPEZp
bGxSZWN0V2l0aEdyYWRpZW50PiBmaWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2U7CisgICAgVmVj
dG9yPEZpbGxSZWN0V2l0aENvbG9yPiBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2U7CisKKyAgICBj
bGFzcyBSZWFkaW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFJlYWRpbmdDbGllbnQoY29uc3QgVmVjdG9yPEZpbGxQYXRoPiYg
ZmlsbFBhdGhTdG9yYWdlLCBjb25zdCBWZWN0b3I8RmlsbFJlY3RXaXRoR3JhZGllbnQ+JiBmaWxs
UmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UsIGNvbnN0IFZlY3RvcjxGaWxsUmVjdFdpdGhDb2xvcj4m
IGZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZSkKKyAgICAgICAgICAgIDogbV9maWxsUGF0aFN0b3Jh
Z2UoZmlsbFBhdGhTdG9yYWdlKQorICAgICAgICAgICAgLCBtX2ZpbGxSZWN0V2l0aEdyYWRpZW50
U3RvcmFnZShmaWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UpCisgICAgICAgICAgICAsIG1fZmls
bFJlY3RXaXRoQ29sb3JTdG9yYWdlKGZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZSkKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBPcHRpb25hbDxEaXNwbGF5TGlz
dEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKSBmaW5hbAorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAodHlwZSA9PSBJdGVtVHlwZTo6RmlsbFBhdGgpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgRGlzcGxheUxpc3RJdGVtKG1fZmlsbFBhdGhTdG9yYWdlWypyZWludGVycHJldF9j
YXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSkgfTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4geyBE
aXNwbGF5TGlzdEl0ZW0obV9maWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2VbKnJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKSB9OworICAgICAgICAgICAgaWYgKHR5cGUgPT0g
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKQorICAgICAgICAgICAgICAgIHJldHVybiB7IERp
c3BsYXlMaXN0SXRlbShtX2ZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZVsqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBzaXplX3QqPihkYXRhKV0pIH07CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0KKworICAg
ICAgICBjb25zdCBWZWN0b3I8RmlsbFBhdGg+JiBtX2ZpbGxQYXRoU3RvcmFnZTsKKyAgICAgICAg
Y29uc3QgVmVjdG9yPEZpbGxSZWN0V2l0aEdyYWRpZW50PiYgbV9maWxsUmVjdFdpdGhHcmFkaWVu
dFN0b3JhZ2U7CisgICAgICAgIGNvbnN0IFZlY3RvcjxGaWxsUmVjdFdpdGhDb2xvcj4mIG1fZmls
bFJlY3RXaXRoQ29sb3JTdG9yYWdlOworICAgIH07CisKKyAgICBjbGFzcyBXcml0aW5nQ2xpZW50
IDogcHVibGljIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IFdyaXRpbmdDbGllbnQoVmVjdG9yPEZpbGxQYXRoPiYgZmlsbFBhdGhTdG9yYWdlLCBWZWN0b3I8
RmlsbFJlY3RXaXRoR3JhZGllbnQ+JiBmaWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2UsIFZlY3Rv
cjxGaWxsUmVjdFdpdGhDb2xvcj4mIGZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZSkKKyAgICAgICAg
ICAgIDogbV9maWxsUGF0aFN0b3JhZ2UoZmlsbFBhdGhTdG9yYWdlKQorICAgICAgICAgICAgLCBt
X2ZpbGxSZWN0V2l0aEdyYWRpZW50U3RvcmFnZShmaWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2Up
CisgICAgICAgICAgICAsIG1fZmlsbFJlY3RXaXRoQ29sb3JTdG9yYWdlKGZpbGxSZWN0V2l0aENv
bG9yU3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBmaW5h
bAorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfTEUoY2FwYWNpdHksIGdsb2JhbEl0ZW1C
dWZmZXJDYXBhY2l0eSk7CisgICAgICAgICAgICByZXR1cm4geyBJdGVtQnVmZmVySWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5
IH07CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVt
KGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsbFBhdGg+KGl0ZW0pKSB7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbV9maWxsUGF0aFN0b3JhZ2Uuc2l6ZSgpOwor
ICAgICAgICAgICAgICAgIG1fZmlsbFBhdGhTdG9yYWdlLmFwcGVuZChXVEY6OmdldDxGaWxsUGF0
aD4oaXRlbSkpOworICAgICAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZWludGVycHJldF9jYXN0PGNoYXIqPigmaW5kZXgpLCBzaXplb2YoaW5kZXgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGxSZWN0V2l0
aEdyYWRpZW50PihpdGVtKSkgeworICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IG1fZmls
bFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlLnNpemUoKTsKKyAgICAgICAgICAgICAgICBtX2ZpbGxS
ZWN0V2l0aEdyYWRpZW50U3RvcmFnZS5hcHBlbmQoV1RGOjpnZXQ8RmlsbFJlY3RXaXRoR3JhZGll
bnQ+KGl0ZW0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmluZGV4KSwgc2l6ZW9mKGluZGV4KSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxsUmVjdFdp
dGhDb2xvcj4oaXRlbSkpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXggPSBtX2ZpbGxS
ZWN0V2l0aENvbG9yU3RvcmFnZS5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9maWxsUmVjdFdp
dGhDb2xvclN0b3JhZ2UuYXBwZW5kKFdURjo6Z2V0PEZpbGxSZWN0V2l0aENvbG9yPihpdGVtKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KCZpbmRleCksIHNpemVvZihpbmRleCkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVtQnVm
ZmVySGFuZGxlJiwgc2l6ZV90LCBEaWRDaGFuZ2VJdGVtQnVmZmVyKSBmaW5hbAorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8RmlsbFBhdGg+JiBtX2ZpbGxQYXRoU3RvcmFn
ZTsKKyAgICAgICAgVmVjdG9yPEZpbGxSZWN0V2l0aEdyYWRpZW50PiYgbV9maWxsUmVjdFdpdGhH
cmFkaWVudFN0b3JhZ2U7CisgICAgICAgIFZlY3RvcjxGaWxsUmVjdFdpdGhDb2xvcj4mIG1fZmls
bFJlY3RXaXRoQ29sb3JTdG9yYWdlOworICAgIH07CisKICAgICBEaXNwbGF5TGlzdCBsaXN0Owor
ICAgIFdyaXRpbmdDbGllbnQgd3JpdGluZ0NsaWVudChmaWxsUGF0aFN0b3JhZ2UsIGZpbGxSZWN0
V2l0aEdyYWRpZW50U3RvcmFnZSwgZmlsbFJlY3RXaXRoQ29sb3JTdG9yYWdlKTsKKyAgICBSZWFk
aW5nQ2xpZW50IHJlYWRpbmdDbGllbnQoZmlsbFBhdGhTdG9yYWdlLCBmaWxsUmVjdFdpdGhHcmFk
aWVudFN0b3JhZ2UsIGZpbGxSZWN0V2l0aENvbG9yU3RvcmFnZSk7CisgICAgbGlzdC5zZXRJdGVt
QnVmZmVyQ2xpZW50KCZ3cml0aW5nQ2xpZW50KTsKKyAgICBsaXN0LnNldEl0ZW1CdWZmZXJDbGll
bnQoJnJlYWRpbmdDbGllbnQpOwogCiAgICAgRVhQRUNUX1RSVUUobGlzdC5pc0VtcHR5KCkpOwog
CkBAIC03OCw1NiArMTYwLDM1IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMp
CiAgICAgRVhQRUNUX0ZBTFNFKGxpc3QuaXNFbXB0eSgpKTsKIAogICAgIGJvb2wgb2JzZXJ2ZWRV
bmV4cGVjdGVkSXRlbSA9IGZhbHNlOwotICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnQsIHNp
emVdIDogbGlzdCkgewotICAgICAgICBzd2l0Y2ggKGhhbmRsZS0+dHlwZSgpKSB7Ci0gICAgICAg
IGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczogewotICAgICAgICAgICAgRVhQRUNU
X0ZBTFNFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGhhbmRsZS0+aXM8U2V0U3Ryb2tlVGhpY2tuZXNzPigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0
ZW0gPSBoYW5kbGUtPmdldDxTZXRTdHJva2VUaGlja25lc3M+KCk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVt
LCBleHRlbnQsIHNpemVdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAgIAorICAg
ICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdHJva2VU
aGlja25lc3MmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShpdGVtLmlzRHJhd2lu
Z0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0udGhpY2tuZXNzKCksIDEuNSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UGF0aDogewotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pc0RyYXdpbmdJdGVtKCkp
OwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxGaWxsUGF0aD4oKSk7Ci0gICAg
ICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8RmlsbFBhdGg+KCk7CisgICAgICAgIH0s
IFsmXShjb25zdCBGaWxsUGF0aCYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXRl
bS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnBhdGgoKS5wbGF0
Zm9ybVBhdGgoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDogewot
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0g
ICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+
KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkgewor
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAgICAg
IEVYUEVDVF9FUShpdGVtLnJlY3QoKSwgRmxvYXRSZWN0KDEuLCAxLiwgMTAuLCAxMC4pKTsKICAg
ICAgICAgICAgIEVYUEVDVF9FUSgmaXRlbS5ncmFkaWVudCgpLCBncmFkaWVudC5wdHIoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJ
bmxpbmVGaWxsQ29sb3I6IHsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUtPmlzRHJh
d2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPFNldElubGlu
ZUZpbGxDb2xvcj4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8U2V0
SW5saW5lRmlsbENvbG9yPigpOworICAgICAgICB9LCBbJl0oY29uc3QgU2V0SW5saW5lRmlsbENv
bG9yJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0RyYXdpbmdJdGVt
KTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLmNvbG9yKCksIENvbG9yOjpyZWQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
LSAgICAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDogewotICAgICAgICAgICAg
RVhQRUNUX1RSVUUoaGFuZGxlLT5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNU
X1RSVUUoaGFuZGxlLT5pczxTdHJva2VJbmxpbmVQYXRoPigpKTsKLSAgICAgICAgICAgIGF1dG8m
IGl0ZW0gPSBoYW5kbGUtPmdldDxTdHJva2VJbmxpbmVQYXRoPigpOworICAgICAgICB9LCBbJl0o
Y29uc3QgU3Ryb2tlSW5saW5lUGF0aCYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUo
aXRlbS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAgICAgIGNvbnN0IGF1dG8gcGF0aCA9IGl0ZW0u
cGF0aCgpOwogICAgICAgICAgICAgYXV0byYgbGluZSA9IHBhdGguaW5saW5lRGF0YTxMaW5lRGF0
YT4oKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShsaW5lLnN0YXJ0LCBGbG9hdFBvaW50KDAsIDAp
KTsKICAgICAgICAgICAgIEVYUEVDVF9FUShsaW5lLmVuZCwgRmxvYXRQb2ludCgxMC4sIDE1Likp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICNlbmRpZgotICAgICAgICBjYXNlIEl0
ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgZGVmYXVsdDogeworICAgICAgICB9LCBbJl0oY29uc3QgTWV0YUNvbW1hbmRDaGFu
Z2VJdGVtQnVmZmVyJikgeworICAgICAgICB9LCBbJl0oY29uc3QgYXV0byYpIHsKICAgICAgICAg
ICAgIG9ic2VydmVkVW5leHBlY3RlZEl0ZW0gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgV1RGOjp2aXNpdCh2aXNp
dG9yLCBpdGVtKTsKICAgICB9CiAKICAgICBFWFBFQ1RfRkFMU0Uob2JzZXJ2ZWRVbmV4cGVjdGVk
SXRlbSk7CkBAIC0xNDcsMTEgKzIwOCwxMSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVu
ZEl0ZW1zKQogCiAgICAgbGlzdC5hcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7
IDAsIDAsIDEwMCwgMTAwIH0sIENvbG9yOjpibGFjayk7CiAKLSAgICBmb3IgKGF1dG8gW2hhbmRs
ZSwgZXh0ZW50LCBzaXplXSA6IGxpc3QpIHsKLSAgICAgICAgRVhQRUNUX0VRKGhhbmRsZS0+dHlw
ZSgpLCBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3IpOwotICAgICAgICBFWFBFQ1RfVFJVRSho
YW5kbGUtPmlzPEZpbGxSZWN0V2l0aENvbG9yPigpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRp
c3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxGaWxsUmVjdFdpdGhDb2xvcj4oZGlzcGxheUxpc3RJdGVtLT5pdGVtKSk7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSBXVEY6OmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oZGlz
cGxheUxpc3RJdGVtLT5pdGVtKTsKKyAgICAgICAgRVhQRUNUX0VRKGl0ZW0uaXRlbVR5cGUsIEl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7CiAKLSAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRs
ZS0+Z2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOwogICAgICAgICBFWFBFQ1RfRVEoKml0ZW0uY29s
b3IoKS50cnlHZXRBc1NSR0JBQnl0ZXMoKSwgQ29sb3I6OmJsYWNrKTsKICAgICAgICAgRVhQRUNU
X0VRKGl0ZW0ucmVjdCgpLCBGbG9hdFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKICAgICB9CkBAIC0x
NzMsMTIgKzIzNCwxMSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQp
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+
IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmlu
YWwKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4g
ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5
cGUgdHlwZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0
ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBz
aXplb2Yoc2l6ZV90KSk7Ci0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9m
KHVpbnQ2NF90KSkgU3Ryb2tlUGF0aChtX2l0ZW1zWypyZWludGVycHJldF9jYXN0PGNvbnN0IHNp
emVfdCo+KGRhdGEpXSk7Ci0gICAgICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07
CisgICAgICAgICAgICByZXR1cm4geyBEaXNwbGF5TGlzdEl0ZW0oU3Ryb2tlUGF0aChtX2l0ZW1z
WypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSkpIH07CiAgICAgICAgIH0K
IAogICAgICAgICBjb25zdCBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CkBAIC0xOTQsMTQg
KzI1NCwxNCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAg
cHJpdmF0ZToKICAgICAgICAgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVf
dCBjYXBhY2l0eSkgZmluYWwKICAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0xUKGNhcGFj
aXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOworICAgICAgICAgICAgRVhQRUNUX0xFKGNh
cGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOwogICAgICAgICAgICAgcmV0dXJuIHsg
Z2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZl
ckNhcGFjaXR5IH07CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBl
bmNvZGVJdGVtKEl0ZW1IYW5kbGUgaGFuZGxlKSBjb25zdCBmaW5hbAorICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkgY29u
c3QgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6
ZSgpOwotICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoaGFuZGxlLmdldDxTdHJva2VQYXRoPigp
KTsKKyAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKFdURjo6Z2V0PFN0cm9rZVBhdGg+KGl0ZW0p
KTsKICAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPigmaW5kZXgpLCBzaXplb2Yoc2l6ZV90KSk7CiAgICAgICAgIH0KIApAQCAt
MjI1LDggKzI4NSw4IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkK
ICAgICBzaGFsbG93Q29weS5zZXRJdGVtQnVmZmVyQ2xpZW50KCZyZWFkZXIpOwogCiAgICAgVmVj
dG9yPEl0ZW1UeXBlPiBpdGVtVHlwZXM7Ci0gICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudCwg
c2l6ZV0gOiBzaGFsbG93Q29weSkKLSAgICAgICAgaXRlbVR5cGVzLmFwcGVuZChoYW5kbGUtPnR5
cGUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBzaGFsbG93Q29w
eSkKKyAgICAgICAgaXRlbVR5cGVzLmFwcGVuZChpdGVtVHlwZShkaXNwbGF5TGlzdEl0ZW0tPml0
ZW0pKTsKIAogICAgIEVYUEVDVF9GQUxTRShzaGFsbG93Q29weS5pc0VtcHR5KCkpOwogICAgIEVY
UEVDVF9FUShpdGVtVHlwZXMuc2l6ZSgpLCA0VSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4
IGI1NjlmMzQwN2UwNzUxNWY2MmUxOTAxZWUwMjJkNDE5NDdmZjM4OWEuLjFiMjVlZjIyNTJjOTRj
MmI2YTZiMjRiMzk2NjY4NzBjODQwMDM4ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg1LDcg
Kzg1LDcgQEAgc3RhdGljIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGdsb2JhbEJ1ZmZlcklkZW50aWZp
ZXIgPSBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXIKIAogY2xhc3MgUmVhZGluZ0NsaWVudCA6
IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBwcml2YXRlOgotICAgIE9wdGlvbmFs
PEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5hbAorICAgIE9wdGlvbmFsPERp
c3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhf
dCosIHNpemVfdCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9F
USh0eXBlLCBJdGVtVHlwZTo6RmlsbFBhdGgpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1
ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0
eSB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0oSXRlbUhh
bmRsZSkgY29uc3QgZmluYWwgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJikg
Y29uc3QgZmluYWwgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQogICAgIHZvaWQg
ZGlkQXBwZW5kRGF0YShjb25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90LCBEaWRDaGFuZ2VJ
dGVtQnVmZmVyKSBmaW5hbCB7IH0KIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423991</attachid>
            <date>2021-03-22 23:45:11 -0700</date>
            <delta_ts>2021-03-22 23:57:29 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-223560-20210322234509.patch</filename>
            <type>text/plain</type>
            <size>177131</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNkZjVhNWQxMjg0ZDAw
MGZhYjlmZTlmZjRhMWNiZTA2ODZmZGNlZC4uMjVmZWJhZTMyZDQxM2JmNDcyNzNmNzFiYmNhNmZm
MDZmMmFiMWFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAyMS0wMy0yMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gUmVwbGFjZSBJdGVtSGFuZGxlIHdpdGggYSBjb25zdCBWYXJpYW50JgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gs
IHdlIHdlcmUgcmVwcmVzZW50aW5nIHRoZSBjb25jZXB0IG9mICJhbiB1bmtub3duIERpc3BsYXlM
aXN0SXRlbSIgd2l0aCBJdGVtSGFuZGxlLAorICAgICAgICB3aGljaCB3YXMgYSBwb2ludGVyIHRv
IGEgYnl0ZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIERpc3BsYXlMaXN0OjpJdGVyYXRvci4gVGhl
IGZpcnN0IGJ5dGUgd2FzIGFuCisgICAgICAgIGVudW0gdmFsdWUgd2hpY2ggdG9sZCB5b3UgaG93
IHRvIGludGVycHJldCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkYXRhLiBUaGUgcmVtYWluZGVyIG9m
IHRoZSBieXRlcworICAgICAgICB3ZXJlIGp1c3QgYW4gb2JqZWN0LCBwbGFjZWQgdGhlcmUgYnkg
cGxhY2VtZW50IG5ldy4KKworICAgICAgICBUaGlzIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBh
cyBhIFZhcmlhbnQuIFVzaW5nIGEgcmVhbCB2YXJpYW50IGhhcyBhIGZldyBiZW5lZml0cyBvdmVy
IHRoaXMgY3VzdG9tCisgICAgICAgIHNvbHV0aW9uLCB0aG91Z2g6CisgICAgICAgIDEuIEJldHRl
ciB0eXBlIHNhZmV0eS4gV2UgZG9uJ3QgaGF2ZSB0byByZWFkIGluZGl2aWR1YWwgYnl0ZXMgYW5k
IGludGVycHJldCBvdGhlciBieXRlcyBvdXJzZWx2ZXMuCisgICAgICAgICAgICAgICBJbnN0ZWFk
LCB3ZSBjYW4gcmVseSBvbiB0aGUgVmFyaWFudCBpbmZyYXN0cnVjdHVyZSB0byBkbyB0aGlzLCB3
aGljaCBpcyB2ZXJ5IHdlbGwtdGVzdGVkLgorICAgICAgICAyLiBJdCdzIGxlc3MgZXJyb3ItcHJv
bmUsIGJlY2F1c2Ugd2UgY2FuIHVzZSB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmcgdG8gY2F1c2Ug
dGhlIGNvbXBpbGVyIHRvCisgICAgICAgICAgICAgICBnZW5lcmF0ZSBmdW5jdGlvbnMgZm9yIHVz
LiBGb3IgZXhhbXBsZSwgd2UgY2FuIGRvIHNvbWV0aGluZyBsaWtlCisKKyAgICAgICAgcmV0dXJu
IFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSAtPiBib29sIHsKKyAg
ICAgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdEl0ZW0uaXNEcmF3aW5nSXRlbTsKKyAgICAgICAg
fSwgZGlzcGxheUxpc3RJdGVtKTsKKworICAgICAgICBpbnN0ZWFkIG9mCisKKyAgICAgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgorICAgICAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0Ogor
ICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xlYXJSZWN0OgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKKyAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CisgICAgICAgIC4uLgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgVGhpcyBwYXRjaCBhY3R1YWxseSBkZWxl
dGVzIGFsbCBvZiB0aGUgcGxhY2VzIHdoZXJlIHdlIGhhdmUgYmlnIHN3aWNoIHN0YXRlbWVudHMg
b2YgZHJhd2luZyBjb21tYW5kcywKKyAgICAgICAgYW5kIHJlcGxhY2VzIHRoZW0gYWxsIHdpdGgg
c2ltaWxhciB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmcuIEFzIHN1Y2gsIHRoaXMgcGF0Y2ggZGVs
ZXRlcyBtb3JlIHRoYW4KKyAgICAgICAgMTIwMCBsaW5lcyB0aGFuIGl0IGFkZHMuCisKKyAgICAg
ICAgTW9zdCBvZiB0aGlzIHBhdGNoIGlzIGp1c3QgYSBkaXJlY3QgdHJhbnNsYXRpb24gZnJvbSBJ
dGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbSAod2hpY2ggaXMgYSB0eXBlZGVmCisgICAgICAg
IHRvIGEgVmFyaWFudCksIGxpbmUtYnktbGluZS4gSG93ZXZlciwgdGhlcmUgYXJlIHR3byBub24t
dHJpdmlhbCBjaGFuZ2VzOgorCisgICAgICAgIDEuIFRoZSBjb21wbGV4aXR5IGluc2lkZSBEaXNw
bGF5TGlzdDo6SXRlcmF0b3IgaXMgc2lnbmlmaWNhbnRseSByZWR1Y2VkIGJlY2F1c2UgaXQgbm8g
bG9uZ2VyIGhhcyB0bworICAgICAgICAgICAgICAgYWxsb2NhdGUgdGhlIGJhY2tpbmcgc3RvcmFn
ZSBmb3IgdGhlIEl0ZW1IYW5kbGUuIEkndmUgYWxzbyBzaW1wbGlmaWVkIHRoZSByZXR1cm4gdHlw
ZSBvZgorICAgICAgICAgICAgICAgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvciooKSB0
byBtYWtlIGl0IGEgbGl0dGxlIG1vcmUgY2xlYXIgd2hhdCB0aGUgZmllbGRzIG1lYW4uCisgICAg
ICAgIDIuIEkndmUgbWFkZSB1c2luZyBhIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGFuZCBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCByZXF1aXJlZCBmb3IgdXNpbmcgbm9uLWlubGluZQorICAgICAg
ICAgICAgICAgZGlzcGxheSBsaXN0IGl0ZW1zLiBUaGVzZSBjbGllbnRzIHdlcmUgYWx3YXlzIHNw
ZWNpZmllZCBpbiBXZWJLaXQgLSB0aGV5IHdlcmUgb25seSBvcHRpb25hbCBmb3IKKyAgICAgICAg
ICAgICAgIHRlc3RpbmcuIEhvd2V2ZXIsIHRoZSBjb2RlIGNvdWxkIGJlIHNpZ25pZmljYW50bHkg
c2ltcGxpZmllZCBpZiB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSB0aGUKKyAgICAgICAgICAgICAg
IGNhc2Ugb2Ygbm9uLWlubGluZSBpdGVtcyB3aXRob3V0IHRoZXNlIGNsaWVudHMuIEFuZCwgcGhp
bG9zb3BoaWNhbGx5LCB0aGVzZSBjbGllbnRzICpzaG91bGQqIGJlCisgICAgICAgICAgICAgICBy
ZXF1aXJlZCB0byBkbyBlbmNvZGluZy9kZWNvZGluZywgd2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBu
b24taW5saW5lIGl0ZW1zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlz
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6IExp
bmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0ZW1IYW5kbGUgdG8KKyAgICAgICAgICAgICAg
RGlzcGxheUxpc3RJdGVtLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpzaG91bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0Ojphc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6YXBwZW5kKTogV2UgY2FuIG1ha2UgdGhlIGNvbXBpbGVyIGdlbmVy
YXRlIHRoaXMgZnVuY3Rpb24hCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6aXRlcmF0b3I6OmF0RW5kIGNvbnN0KTogRGVsZXRlZC4gTW92ZWQgdG8gRGlzcGxh
eUxpc3RJdGVyYXRvci5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKTogRGVsZXRlZC4gRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjphZHZhbmNl
KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKTogRGVsZXRlZC4gRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlVG9F
bmQpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKTogRGVs
ZXRlZC4gRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Oml0ZXJhdG9yOjppdGVyYXRvcik6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6fml0ZXJhdG9yKTogRGVsZXRlZC4g
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJh
dG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4gRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9y
OjpvcGVyYXRvcisrKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOiBEZWxldGVkLiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6Oml0ZW1CdWZmZXIgY29uc3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YmVnaW4gY29uc3QpOiBEZWxldGVkLiBNb3ZlZCB0
byB0aGUgLmNwcCBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjplbmQgY29uc3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKTogQmVjYXVzZSB0aGlz
IHBhdGNoIHN0YXJ0cyByZXF1aXJpbmcgYQorICAgICAgICAgICAgSXRlbUJ1ZmZlclJlYWRpbmdD
bGllbnQgZm9yIGFueSBub24taW5saW5lIGl0ZW1zLCB3aGljaCBpcyBubyBwcm9ibGVtIGJlY2Fz
dWUgd2Ugd2VyZSBhbHdheXMKKyAgICAgICAgICAgIHNwZWNpZnlpbmcgb25lIGluIFdlYktpdCBh
bnl3YXksIHdlIG5vIGxvbmdlciBuZWVkIG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZl
cnMuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6b3BlcmF0b3I9
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6Y2xl
YXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpz
d2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlOjpkZXNjcmlwdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBwbHkpOiBEZWxldGVkLiBXZSBjYW4gbWFrZSB0
aGUgY29tcGlsZXIgZ2VuZXJhdGUgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KTogRGVsZXRlZC4gVGhlcmUgd2VyZSB0d28g
cGxhY2VzIHdoZXJlIHRoaXMgd2FzIHVzZWQ6CisgICAgICAgICAgICAxLiBXZSByb3VuZC10cmlw
cGVkIHRocm91Z2ggSXRlbUhhbmRsZSB3aGVuZXZlciBhcHBlbmRpbmcgYW4gaXRlbSwganVzdCBz
byB3ZSBjb3VsZCBwYXNzIGRhdGEgdG8KKyAgICAgICAgICAgICAgICAgICBJdGVtQnVmZmVyUmVh
ZGluZ0NsaWVudC4gVGhpcyBpcyB1bm5lY2Vzc2FyeSBub3cgdGhhdCB3ZSBjYW4ganVzdCBwYXNz
IERpc3BsYXlMaXN0SXRlbQorICAgICAgICAgICAgICAgICAgIGluc3RlYWQuCisgICAgICAgICAg
ICAyLiBEZXN0cm95aW5nIG5vbi1pbmxpbmUgaXRlbXMgd2hpY2ggd2VyZSBhcHBlbmRlZCB3aXRo
b3V0IGEgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQuIEFib3ZlIEkKKyAgICAgICAgICAgICAgICAg
ICBkZXNjcmliZSB0aGF0IHRoaXMgcGF0Y2ggc3RhcnRzIHJlcXVpcmluZyBhIEl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50IGZvciBhbnkgbm9uLWlubGluZSBpdGVtcywKKyAgICAgICAgICAgICAgICAg
ICB3aGljaCBpcyBubyBwcm9ibGVtIGJlY2F1c2Ugd2Ugd2VyZSBhbHdheXMgc3BlY2lmeWluZyBv
bmUgaW4gV2ViS2l0IGFueXdheS4KKyAgICAgICAgICAgIFNvLCBuZWl0aGVyIG9mIHRoZXNlIHNp
dHVhdGlvbnMgc3Vydml2ZWQgdGhpcyBwYXRjaCwgc28gdGhpcyBlbnRpcmUgZnVuY3Rpb24gaXMg
ZGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpjb3B5SW50byk6IERlbGV0
ZWQuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhpcyBub3cgdGhhdCB0aGUgaXRlcmF0b3IgZG9lc24n
dAorICAgICAgICAgICAgYWxsb2NhdGUgc3RvcmFnZSBmb3IgdGhlIEl0ZW1IYW5kbGUuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6c2FmZUNvcHkgY29uc3QpOiBE
ZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjptX2FsbG9jYXRl
ZEJ1ZmZlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOiBNaWdyYXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNw
bGF5TGlzdEl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6
dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjppc0RyYXdpbmdJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpvcGVyYXRvciBib29sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpvcGVyYXRvciEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnR5
cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU6OmlzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtSGFuZGxlOjpnZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg6IEFk
ZGVkLiBNb3ZlZCBmcm9tCisgICAgICAgICAgICAgIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwOiBSZW1vdmVkLiBUaGUgY29tcGlsZXIgY2FuIGdlbmVyYXRlIGFsbCBvZgorICAgICAg
ICAgICAgICB0aGVzZSBmdW5jdGlvbnMhISEKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0
ZW1zLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFw
cGx5IGNvbnN0KTogYXBwbHkoKSBuZWVkcyB0byBiZSBjb25zdCBmb3IgdGhlIHRlbXBsYXRlCisg
ICAgICAgICAgICAgIG1ldGFwcm9ncmFtbWluZyB0byB3b3JrLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOiBUaGUgY29tcGlsZXIgY2FuIGdlbmVyYXRlIHRoaXMg
ZnVuY3Rpb24hCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlw
aHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KTogTmVlZHMgdG8gYmUgY29uc3QgZm9yIHRoZSB0ZW1w
bGF0ZQorICAgICAgICAgICAgICBtZXRhcHJvZ3JhbW1pbmcgdG8gd29yay4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKTogTW92ZWQgZnJvbSBEaXNwbGF5TGlz
dEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpp
dGVtVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNp
emVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHA6IEFk
ZGVkLiBUaGUgc2ltcGxpZmllZCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICAgICAgICB0aGUg
aXRlcmF0b3IuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjphdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSBjb25z
dCk6IFRoaXMgaXMgdGhlIG1hZ2ljLiBXZSBjYW4gYWN0dWFsbHkKKyAgICAgICAgICAgICAgcmVj
dXJzZSBvdmVyIHRoZSBzZXQgb2YgdHlwZXMgaW4gdGhlIHZhcmlhbnQuIFdlIGRvIHRoaXMgd2l0
aCBhIHRlbXBsYXRlIHBhcmFtZXRlciB0aGF0IGlzIG9mIHR5cGUKKyAgICAgICAgICAgICAgc2l6
ZV90LiBXZSB1c2UgImlmIGNvbnN0ZXhwciIgdG8gaGFuZGxlIHRoZSBiYXNlIGNhc2UsIGFuZCB3
ZSBwdWxsIG91dCB0aGUgdHlwZSBieSB1c2luZworICAgICAgICAgICAgICBXVEY6OnZhcmlhbnRf
YWx0ZXJuYXRpdmVfdCB3aXRoIHRoZSBJIHRlbXBsYXRlIHBhcmFtZXRlci4gT25jZSB3ZSBoYXZl
IHRoZSBwYXJ0aWN1bGFyIHR5cGUgaW4gdGhlCisgICAgICAgICAgICAgIFZhcmlhbnQsIHdlIHB1
bGwgb3V0IGl0cyBpdGVtVHlwZSBhbmQgY29tcGFyZSBhZ2FpbnN0IHRoZSBpdGVtVHlwZSBpbiB0
aGUgYnVmZmVyLiBJZiBpdCBkb2Vzbid0CisgICAgICAgICAgICAgIG1hdGNoLCB3ZSByZWN1cnNl
IHdpdGggSSArIDEsIGFuZCBpdCBkb2VzIG1hdGNoLCB3ZSBydW4gdGhlIHNhbWUgcGFyc2luZyBy
b3V0aW5lcyB0aGF0IHdlcmUgaW4gdGhlCisgICAgICAgICAgICAgIG9sZCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgaXRlcmF0b3IgYmVmb3JlIHRoaXMgcGF0Y2guCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3Vy
cmVudEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjplbmRPZkN1cnJlbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmg6IEFkZGVkLiBUaGlz
IGlzIHNpZ25pZmljYW50bHkgc2ltcGxpZmllZCBmcm9tIHRoZQorICAgICAgICAgICAgICB3YXkg
aXQgd29ya2VkIGJlZm9yZSB0aGlzIHBhdGNoLiBXZSBubyBsb25nZXIgaGF2ZSB0byBhbGxvY2F0
ZSBzdG9yYWdlIGZvciB0aGUgSXRlbUhhbmRsZXMuIFdlIGhhdmUKKyAgICAgICAgICAgICAgc2ln
bmlmaWNhbnRseSBmZXdlciBtZW1iZXIgdmFyaWFibGVzLCB0b28uCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6aXRlbUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kRHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbU9mVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0
ZW1PZlR5cGUpOiBNb3ZlZCBmcm9tIHRoZSAuY3BwIGZpbGUuIEJlY2F1c2UgaXQncyBhIHRlbXBs
YXRlLAorICAgICAgICAgICAgICBpdCBoYXMgdG8gYmUgaGVyZS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlJbWFnZUJ1ZmZlckl0ZW0pOiBMaW5lLWJ5LWxp
bmUgdHJhbnNsYXRpb24gZnJvbSBJdGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbS4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlGb250SXRlbSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5KTogSGVscGVyLiBPbmx5IGNhbGwg
dGhlIGFwcGx5IGZ1bmN0aW9uIGluIHRoZSBEaXNwbGF5TGlzdCBpdGVtIGlmIGl0IGV4aXN0cy4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKTogTGlu
ZS1ieS1saW5lIHRyYW5zbGF0aW9uIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0u
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6IFVwZGF0
ZSBmb3IgdGhlIG5ldyByZXR1cm4gdHlwZSBvZgorICAgICAgICAgICAgICBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6Om9wZXJhdG9yKigpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlOjphcHBseSk6IExpbmUtYnktbGluZSB0cmFuc2xhdGlv
biBmcm9tIEl0ZW1IYW5kbGUgdG8KKyAgICAgICAgICAgICAgRGlzcGxheUxpc3RJdGVtLgorCiAy
MDIxLTAzLTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0dQVSBQcm9jZXNzXTogSW1wcm92ZSBnZXRJbWFnZURhdGEoKSBwZXJmIHBhcnQgMTog
QWRkIGEgR2V0SW1hZ2VEYXRhIGRpc3BsYXkgbGlzdCBpdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk2M2Q1MmQ5
MzFmYTA5ODcxMGU5MGE5NmE4ZjFhZWVhNjUyNTk3MjYuLmJlNWFhZDEzZDE5NGU4OGY3ODNkNTgy
NDU1Y2ViMjY0MGUwNTBjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDMtMjIg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIFJlcGxhY2UgSXRlbUhhbmRsZSB3aXRoIGEgY29uc3QgVmFyaWFudCYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzU2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOiBMaW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJv
bSBJdGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbS4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQpOiBUaGlzIGZpbGUgaGFzICJ1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZSIgc28gd2UgZG9uJ3QgbmVlZCB0bworICAgICAgICAgICAgICBx
dWFsaWZ5IG5hbWVzLiBEcm9wIHRoZSBXZWJDb3JlOjouCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0
bWFwRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6ZGVjb2RlSXRlbSk6
IFRoZSBjb21waWxlciBjYW4gZ2VuZXJhdGUgdGhpcyBmdW5jdGlvbiBmb3IgdXMsIGluIG11Y2gg
dGhlIHNhbWUgd2F5IHRoYXQgaXQgZGlkCisgICAgICAgICAgICAgIGZvciBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkZWNvZGVBbmRDcmVhdGUpOiBEZWxldGVkLiBObyBsb25nZXIgbmVjZXNzYXJ5IG5v
dyB0aGF0IHRoZSBjb21waWxlcgorICAgICAgICAgICAgICBpcyBnZW5lcmF0aW5nIG91ciBmdW5j
dGlvbnMgZm9yIHVzLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6ZW5jb2RlSXRlbUhlbHBlcik6IFRoZSBjb21waWxlciBjYW4gZ2VuZXJhdGUgdGhpcyBmdW5j
dGlvbiBmb3IgdXMuCisKIDIwMjEtMDMtMjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBJbXByb3ZlIGdldEltYWdlRGF0
YSgpIHBlcmYgcGFydCAxOiBBZGQgYSBHZXRJbWFnZURhdGEgZGlzcGxheSBsaXN0IGl0ZW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IGQ4YjJlOWIzNzBlYzk1ODAyMWFjODRiNjY4NDk2OThhMTFmYjQ4
YTUuLmY1MWU4YzkzZWE2M2VmMDc1NzUyM2JmZTViNDMyODNiMTEwZWZhYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTMxNCwxMCArMTMxNCwxMyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaAogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggMzAwYWE4MDdkMWYwYTIwODY3YjU2MTdiZGI5ZGNiODgxNDg2ZGU0Ny4uMjhkYTQ5MTM2Yjc3
NjAwZGE4NGYzMGY3OWY4YTgyOTBiZGQyNDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwMTksOSAr
MjAxOSwxMCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKLXBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNw
cAorcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAwYjg1OWYzYTQyYjA5MDQ5MzBiMDZmZTIxZjhjZDNhMTcx
OWEzNjExLi5kN2NiNzYzN2E2ODFhMmIxNzc4ZTc5YzI1OWE1YTk2Mzc5ZWFkZWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
MjUsNiArNjI1LDkgQEAKIAkJMUM3M0E3MTUyMTg1NzU4NzAwNENDRUE1IC8qIFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgx
Qjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2
RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM5M0NCQ0YyNjA1QkQ0
MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNw
bGF5TGlzdEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMUM5M0NCRDMyNjA2RjhFNzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDOTNDQkQyMjYwNkYzRTMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMUM5M0NCRUIyNjA5QUYyRTAwOEZERUY5IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkU3MjYw
OUE2RTMwMDhGREVGOSAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYz
NDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNjg3Miw2ICs2ODc1LDExIEBACiAJCTFDOEQyNkNFMjJDMDk1MTMwMEQxMjVGMyAv
KiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOEQyNkQwMjJDMDlDREUwMEQxMjVGMyAvKiBsaWJjb21wcmVzc2lvbi50YmQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29k
ZS50ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliY29tcHJlc3Npb24udGJk
OyBwYXRoID0gdXNyL2xpYi9saWJjb21wcmVzc2lvbi50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09U
OyB9OwogCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JDQzI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5M0NCQ0QyNjA1QkQ0MzAwOEZERUY5
IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JEMjI2MDZGM0UzMDA4
RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDOTNDQkU2MjYwOUE2RTMwMDhGREVGOSAvKiBJbk1lbW9yeURpc3BsYXlMaXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluTWVtb3J5RGlzcGxheUxpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JFNzI2MDlBNkUzMDA4RkRFRjkgLyogSW5NZW1v
cnlEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOUFFNUNBMjFFRDlERjUwMDY5RDVGMiAvKiBX
SExTTEhpZ2hab21iaWVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xIaWdoWm9t
YmllRmluZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5QUU1Q0IyMUVE
OURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEhpZ2hab21iaWVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNB
MEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2NjY5LDcgKzE2Njc3LDYgQEAKIAkJRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8q
IFN0YXRpY1Bhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rh
dGljUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMzRTkwNDFE
QkJEQkMyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdGF0aWNQYXN0ZWJvYXJkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQz
NzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzcGxheUxpc3RJdGVtVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGNDM3N0Q1NjI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQ0MEU3NkUyMzNEOTREMzAwNjNGOUFCIC8qIENsaXBib2FyZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc2RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2
aWdhdG9yQ2xpcGJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmln
YXRvckNsaXBib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc3MDIz
M0Q5NEQ0MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDbGlwYm9hcmRJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xODAyOSwxNCArMTgwMzYsMTggQEAKIAkJCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyog
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJCUY0MjJCOEI2MjUzRjcwNjUwMDRFNzdF
OCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwICovLAogCQkJCUY0MjJCOEI1MjUzRjcwNjUw
MDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLywKKwkJCQkxQzkzQ0JEMjI2MDZG
M0UzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovLAogCQkJ
CTBGRTVGQkNDMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmNwcCAqLywKIAkJ
CQkwRkU1RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oICovLAotCQkJ
CUY0Mzc3RDU2MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAqLywK
IAkJCQlGNDM3N0Q1NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICov
LAorCQkJCTFDOTNDQkNDMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNw
cCAqLywKKwkJCQkxQzkzQ0JDRDI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRv
ci5oICovLAogCQkJCTBGRTVGQkNFMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCAqLywKIAkJCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlci5oICovLAogCQkJCTBGRTVGQkQwMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dFJlcGxheWVyLmNwcCAqLywKIAkJCQkwRkU1RkJEMTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RSZXBsYXllci5oICovLAorCQkJCTFDOTNDQkU2MjYwOUE2RTMwMDhGREVGOSAvKiBJbk1l
bW9yeURpc3BsYXlMaXN0LmNwcCAqLywKKwkJCQkxQzkzQ0JFNzI2MDlBNkUzMDA4RkRFRjkgLyog
SW5NZW1vcnlEaXNwbGF5TGlzdC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkaXNwbGF5bGlzdHM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzIwNTMsOCArMzIwNjQsMTAgQEAKIAkJ
CQk3MjQyQUM5NzI1NzU4RkUxMDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3
MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkz
Q0JEMzI2MDZGOEU3MDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlM
aXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAv
KiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JDRjI2MDVC
RDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxh
eWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNzc0LDYgKzMyNzg3LDcg
QEAKIAkJCQlCQ0VBNDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hT
dHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYxQ0MxREUyMjVGOEI0OTAwNzIwQUQyIC8qIElu
bGluZVRleHRJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JFQjI2MDlBRjJFMDA4RkRF
RjkgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVCNzY3NTcx
REExOUJERjAwM0UyM0I1IC8qIElucHV0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1MkVG
REY0MjExMjg3NUEwMEFEMjgyQSAvKiBJbnB1dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IDVjZWE3NDUyZDVmZjJlNmNiNWYzZTExNjY1OTdiNzlmZDhmNzNkN2QuLmRhYTA2Zjc0MWU1N2Jh
ZDNjY2ExM2FjMGNmNjI1NWU0ODg2ZDkyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKICNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgpAQCAtMjI1LDggKzIyNiw4IEBAIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZv
clRleHRSdW4oR3JhCiAKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0PigpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4g
ZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0
PigpOwogICAgIEdyYXBoaWNzQ29udGV4dCByZWNvcmRpbmdDb250ZXh0KFsmXShHcmFwaGljc0Nv
bnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxE
aXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBj
b250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSwgbnVsbHB0ciwg
RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9u
OjpEb250RGVjb25zdHJ1Y3QpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiYjMyYmYzNTk3NDI0YjdlOWFh
MGRiY2MxMDk3NGRjOTExMTBlMjc1Li5lMTcxMDYwMjg1ZGI2NmY0Zjg4OGVmZmJlMDE5YmFhYmY0
MDhiYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMTU0LDEwICsxNTQsMTAgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0
YXRlJiYpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KEdyYXBoaWNzQ29udGV4dFN0
YXRlJiYpOwogCiAgICAgZW51bSBDaGFuZ2UgOiB1aW50MzJfdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcAppbmRleCA1YjU1YmVjOGMwYWUyMWE5Mjk4NDVhNDE1ZDEzNTc5YzM2OWJkNTQ3Li43
OTgxZTY2M2U0OTBkY2MxMWUyYTI4MDU2M2ExMWJiYTNiZGUyMjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgorI2luY2x1ZGUgIkRpc3BsYXlM
aXN0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04NCwxMiArODUsMTAg
QEAgdm9pZCBEaXNwbGF5TGlzdDo6Y2xlYXIoKQogICAgIG1fbmF0aXZlSW1hZ2VzLmNsZWFyKCk7
CiB9CiAKLWJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBm
bGFncywgSXRlbUhhbmRsZSBpdGVtKQorYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZs
YWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCiB7Ci0g
ICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgor
ICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFNldFN0YXRlJiBz
dGF0ZUl0ZW0pIC0+IGJvb2wgewogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6Oklu
Y2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgc3Rh
dGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogZm9y
IG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5nZSBmbGFncyBh
cmUgcGxhdGZvcm0tc3BlY2lmaWMuCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hh
bmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTk3LDMwICs5NiwzMCBAQCBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNU
ZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgICAgIGlmIChzdGF0ZUl0
ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsK
ICNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIGlmICghKGZsYWdzICYg
QXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBicmVhazsKKyAgICB9LCBbJl0oY29uc3QgQXBwbHlGaWxsUGF0
dGVybiYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNs
dWRlc1BsYXRmb3JtT3BlcmF0aW9uczsKKyAgICB9LCBbJl0oY29uc3QgQXBwbHlTdHJva2VQYXR0
ZXJuJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1
ZGVzUGxhdGZvcm1PcGVyYXRpb25zOwogI2VuZGlmCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtdKGNvbnN0IGF1dG8mKSAtPiBi
b29sIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlz
aXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFN0cmluZyBEaXNwbGF5TGlzdDo6YXNUZXh0KEFzVGV4
dEZsYWdzIGZsYWdzKSBjb25zdAogewogICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06
OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxl
UmVjdCk7Ci0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDog
KnRoaXMpIHsKLSAgICAgICAgaWYgKCFzaG91bGREdW1wRm9yRmxhZ3MoZmxhZ3MsICppdGVtKSkK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7CisgICAgICAg
IGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxp
c3RJdGVtLnZhbHVlKCk7CisgICAgICAgIGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCBp
dGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFRleHRTdHJlYW06Okdyb3Vw
U2NvcGUgZ3JvdXAoc3RyZWFtKTsKICAgICAgICAgc3RyZWFtIDw8IGl0ZW07Ci0gICAgICAgIGlm
IChpdGVtLT5pc0RyYXdpbmdJdGVtKCkpCisgICAgICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0p
KQogICAgICAgICAgICAgc3RyZWFtIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KICAg
ICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKQEAgLTEzMSwxMCArMTMwLDExIEBAIHZvaWQgRGlz
cGxheUxpc3Q6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgVGV4dFN0cmVhbTo6R3Jv
dXBTY29wZSBncm91cCh0cyk7CiAgICAgdHMgPDwgImRpc3BsYXkgbGlzdCI7CiAKLSAgICBmb3Ig
KGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiAqdGhpcykgeworICAgIGZv
ciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKKyAgICAgICAgY29uc3Qg
YXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0u
dmFsdWUoKTsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAg
ICAgIHRzIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLT5pc0RyYXdpbmdJdGVtKCkpCisgICAg
ICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQogICAgICAgICAgICAgdHMgPDwgIiBleHRlbnQg
IiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHRzLnN0YXJ0R3JvdXAoKTsKQEAgLTE4NiwyNDkgKzE4
NiwyMyBAQCB2b2lkIERpc3BsYXlMaXN0OjpzZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoYm9v
bCB2YWx1ZSkKICAgICBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyA9IHZhbHVlOwogfQogCi12
b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQotewotICAgIHN3aXRjaCAo
aXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4g
YXBwZW5kPFNhdmU+KGl0ZW0uZ2V0PFNhdmU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3Rv
cmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UmVzdG9yZT4oaXRlbS5nZXQ8UmVzdG9yZT4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFRy
YW5zbGF0ZT4oaXRlbS5nZXQ8VHJhbnNsYXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3Rh
dGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Um90YXRlPihpdGVtLmdldDxSb3RhdGU+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNjYWxlPihp
dGVtLmdldDxTY2FsZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KGl0ZW0uZ2V0PENvbmNhdGVuYXRl
Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8U2V0Q1RNPihpdGVtLmdldDxTZXRDVE0+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxsR3Jh
ZGllbnQ+KGl0ZW0uZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldElubGlu
ZUZpbGxDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJ
bmxpbmVTdHJva2VDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTZXRTdHJva2VUaGlja25lc3M+KGl0ZW0uZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0U3Rh
dGU+KGl0ZW0uZ2V0PFNldFN0YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2Fw
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVDYXA+KGl0ZW0uZ2V0PFNldExpbmVDYXA+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFNldExpbmVEYXNoPihpdGVtLmdldDxTZXRMaW5lRGFzaD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TGluZUpvaW4+KGl0
ZW0uZ2V0PFNldExpbmVKb2luPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldE1pdGVyTGltaXQ+KGl0ZW0uZ2V0PFNldE1pdGVy
TGltaXQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICByZXR1
cm4gYXBwZW5kPENsZWFyU2hhZG93PihpdGVtLmdldDxDbGVhclNoYWRvdz4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwPihpdGVtLmdldDxD
bGlwPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICByZXR1cm4gYXBw
ZW5kPENsaXBPdXQ+KGl0ZW0uZ2V0PENsaXBPdXQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVy
PihpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0VG9QYXRoPihpdGVtLmdl
dDxDbGlwT3V0VG9QYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRlbS5nZXQ8Q2xpcFBhdGg+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4g
YXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4o
aXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdHbHlwaHM+KGl0ZW0uZ2V0
PERyYXdHbHlwaHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PERyYXdJbWFnZUJ1
ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxEcmF3UGF0dGVybj4oaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdSZWN0PihpdGVtLmdldDxE
cmF3UmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RHJhd0xpbmU+KGl0ZW0uZ2V0PERyYXdMaW5lPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdMaW5lc0Zv
clRleHQ+KGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcj4oaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8RHJhd0VsbGlwc2U+KGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UGF0aD4oaXRlbS5nZXQ8
RHJhd1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdQYXRoPihpdGVtLmdldDxEcmF3Rm9jdXNS
aW5nUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdSZWN0cz4oaXRlbS5nZXQ8RHJhd0ZvY3Vz
UmluZ1JlY3RzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxGaWxsUmVjdD4oaXRlbS5nZXQ8RmlsbFJlY3Q+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0
V2l0aENvbG9yPihpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJl
Y3RXaXRoR3JhZGllbnQ+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RmlsbENvbXBvc2l0ZWRSZWN0PihpdGVtLmdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxG
aWxsUm91bmRlZFJlY3Q+KGl0ZW0uZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
PigpKTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsSW5saW5lUGF0aD4oaXRl
bS5nZXQ8RmlsbElubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFBhdGg+KGl0ZW0uZ2V0PEZpbGxQYXRo
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxGaWxsRWxsaXBzZT4oaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGbHVzaENvbnRleHQ+
KGl0ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyPihpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxHZXRJbWFnZURhdGE+KGl0ZW0uZ2V0PEdldEltYWdlRGF0YT4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gYXBwZW5kPFB1dEltYWdl
RGF0YT4oaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlh
PihpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZVJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlUmVjdD4oaXRlbS5nZXQ8U3Ry
b2tlUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxTdHJva2VMaW5lPihpdGVtLmdldDxTdHJva2VMaW5lPigpKTsKLSNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRo
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZUlubGluZVBhdGg+KGl0ZW0uZ2V0PFN0cm9r
ZUlubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VQYXRoPihpdGVtLmdldDxTdHJva2VQYXRoPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFN0cm9rZUVsbGlwc2U+KGl0ZW0uZ2V0PFN0cm9rZUVsbGlwc2U+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclJlY3Q+KGl0
ZW0uZ2V0PENsZWFyUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPihp
dGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRUcmFuc3BhcmVu
Y3lMYXllcj4oaXRlbS5nZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotI2lmIFVTRShDRykK
LSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8QXBwbHlTdHJva2VQYXR0ZXJuPihpdGVtLmdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8QXBwbHlGaWxsUGF0dGVybj4oaXRlbS5nZXQ8QXBwbHlGaWxsUGF0dGVybj4oKSk7Ci0j
ZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KGl0ZW0uZ2V0PEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3I+KCkpOwotICAgIH0KLX0KLQotYm9vbCBEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6OmF0RW5kKCkgY29uc3QKLXsKLSAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkgfHwg
IW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvJiBpdGVtcyA9ICpp
dGVtQnVmZmVyKCk7Ci0gICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy5tX3dyaXRhYmxlQnVmZmVy
LmRhdGEgKyBpdGVtcy5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIHJldHVybiBtX2N1cnNv
ciA9PSBlbmRDdXJzb3I7Ci19Ci0KLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVD
dXJyZW50SXRlbSgpCi17Ci0gICAgY2xlYXJDdXJyZW50SXRlbSgpOwotCi0gICAgaWYgKGF0RW5k
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIoKTsK
LSAgICBhdXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsK
LSAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtVHlwZSkgJiYgIW1fZGlzcGxheUxpc3QubV9kcmF3
aW5nSXRlbUV4dGVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fY3VycmVudEV4dGVudCA9IG1f
ZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKLSAg
ICAgICAgbV9kcmF3aW5nSXRlbUluZGV4Kys7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY3VycmVu
dEV4dGVudCA9IFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1zLm1fcmVh
ZGluZ0NsaWVudDsKLSAgICBhdXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKTsKLSAgICBpZiAoY2xpZW50KSB7Ci0gICAg
ICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBz
aXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJ
dGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbSkpOwotICAgICAgICBpZiAoaXNJbmxpbmVJdGVtKGl0ZW1UeXBlKSkgewotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCFJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5zYWZlQ29weSh7
IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSkpKQotICAgICAgICAgICAgICAgIG1faXNWYWxpZCA9
IGZhbHNlOwotCi0gICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVk
U2l6ZU9mVHlwZUFuZEl0ZW07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGRh
dGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOwotICAg
ICAgICAgICAgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0
X3QpOwotICAgICAgICAgICAgYXV0byBkZWNvZGVkSXRlbUhhbmRsZSA9IGNsaWVudC0+ZGVjb2Rl
SXRlbShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUsIG1fY3VycmVudEJ1ZmZlckZv
ckl0ZW0pOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFkZWNvZGVkSXRlbUhhbmRsZSkpCi0g
ICAgICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIG1fY3VycmVu
dEJ1ZmZlckZvckl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAg
ICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkg
KyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBt
X2N1cnNvcjsKLSAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtOwotICAgIH0KLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OmFk
dmFuY2UoKQotewotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2N1
cnNvciArPSBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyOwotCi0gICAgaWYgKG1fY3Vyc29yID09
IG1fY3VycmVudEVuZE9mQnVmZmVyICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZm
ZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fcmVhZE9ubHlCdWZm
ZXJJbmRleCsrOwotICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwot
ICAgIH0KLQotICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci19Ci0KLXZvaWQgRGlzcGxheUxpc3Q6
Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKCkKK3ZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZm
ZXIoKTsKLSAgICBpZiAoaXRlbXMgJiYgaXRlbXMtPm1fcmVhZGluZ0NsaWVudCAmJiBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtKSB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9pc1ZhbGlkKSkKLSAgICAg
ICAgICAgIEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0uZGVzdHJveSgpOwot
Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1fZml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbSkpCi0gICAgICAgICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtKTsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMDsK
LSAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gbnVsbHB0cjsKKyAgICBXVEY6OnZpc2l0KFsm
XShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgIGFwcGVuZChpdGVtKTsKKyAgICB9LCBpdGVt
KTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVUb0VuZCgpCithdXRvIERp
c3BsYXlMaXN0OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgaWYgKGF1dG8gaXRl
bXMgPSBpdGVtQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJs
ZUJ1ZmZlci5kYXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgICAgIG1f
Y3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3I7Ci0gICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7Ci0gICAgfQorICAgIHJldHVy
biB7ICp0aGlzIH07CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29y
VG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCithdXRvIERpc3BsYXlMaXN0OjplbmQoKSBjb25zdCAt
PiBJdGVyYXRvcgogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKCFp
dGVtcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBudW1iZXJPZlJlYWRPbmx5QnVmZmVy
cyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7Ci0gICAgaWYgKG1fcmVhZE9ubHlC
dWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7Ci0gICAgICAgIGF1dG8mIG5l
eHRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZl
ckluZGV4XTsKLSAgICAgICAgbV9jdXJzb3IgPSBuZXh0QnVmZmVySGFuZGxlLmRhdGE7Ci0gICAg
ICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBuZXh0QnVmZmVySGFuZGxlLmNh
cGFjaXR5OwotICAgIH0gZWxzZSBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9m
UmVhZE9ubHlCdWZmZXJzKSB7Ci0gICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVC
dWZmZXIuZGF0YTsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvciArIGl0
ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIH0KKyAgICByZXR1cm4geyAqdGhpcywg
SXRlcmF0b3I6OkltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMgfTsKIH0KIAotCiB9IC8vIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdAogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAppbmRleCBmMTg5ZGVkZjY3NDliY2MyMDE0NzJhZWQyYTg3MTZiYTY1NzQ2NTJl
Li44OGIxYmI2ZDAzNjEwMjg0OWZiNzY5N2U5MDJmY2I0MmM3Nzk0MzEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Miw3ICs0Miw2IEBAIGNsYXNzIFRleHRTdHJlYW07CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogZW51bSBBc1RleHRGbGFn
IHsKQEAgLTg5LDc2ICs4OCwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3JFYWNoSXRlbUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4m
JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lk
IGFwcGVuZChBcmdzJiYuLi4gYXJncyk7Ci0gICAgdm9pZCBhcHBlbmQoSXRlbUhhbmRsZSk7Cisg
ICAgdm9pZCBhcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBib29sIHRyYWNr
c0RyYXdpbmdJdGVtRXh0ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tzRHJhd2luZ0l0ZW1F
eHRlbnRzOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUcmFja3NEcmF3aW5nSXRlbUV4
dGVudHMoYm9vbCk7CiAKLSAgICBjbGFzcyBpdGVyYXRvciB7Ci0gICAgcHVibGljOgotICAgICAg
ICBlbnVtIGNsYXNzIEltbWVkaWF0ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9OwotICAgICAgICBp
dGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRv
RW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAg
ICAgICAgICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Olll
cykKLSAgICAgICAgICAgICAgICBtb3ZlVG9FbmQoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAg
ICAgICAgICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIH5pdGVyYXRvcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFyQ3VycmVu
dEl0ZW0oKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVy
YXRvciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlM
aXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9
Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IrKygpIHsgYWR2YW5jZSgpOyB9Ci0KLSAgICAgICAgc3Ry
dWN0IFZhbHVlIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IGl0ZW07Ci0gICAg
ICAgICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGV4dGVudDsKLSAgICAgICAgICAgIHNpemVfdCBp
dGVtU2l6ZUluQnVmZmVyIHsgMCB9OwotICAgICAgICB9OwotCi0gICAgICAgIFZhbHVlIG9wZXJh
dG9yKigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICAgICAgbV9pc1ZhbGlkID8gbWFrZU9wdGlvbmFsKEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtIH0pIDogV1RGOjpudWxsb3B0LAotICAgICAgICAgICAgICAgIG1fY3VycmVudEV4
dGVudCwKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLAotICAgICAg
ICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKLQotICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVy
KCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVRvRW5kKCk7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWR2YW5jZSgpOwotICAgICAgICBib29sIGF0RW5kKCkgY29uc3Q7Ci0KLSAgICAgICAgSXRl
bUJ1ZmZlciogaXRlbUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUJ1
ZmZlcklmRXhpc3RzKCk7IH0KLQotICAgICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5
TGlzdDsKLSAgICAgICAgdWludDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07Ci0gICAgICAgIHNp
emVfdCBtX3JlYWRPbmx5QnVmZmVySW5kZXggeyAwIH07Ci0gICAgICAgIHNpemVfdCBtX2RyYXdp
bmdJdGVtSW5kZXggeyAwIH07Ci0gICAgICAgIHVpbnQ4X3QqIG1fY3VycmVudEVuZE9mQnVmZmVy
IHsgbnVsbHB0ciB9OwotCi0gICAgICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJ
dGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1dIHsgMCB9OwotICAgICAgICB1aW50
OF90KiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OwotICAgICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IG1fY3VycmVudEV4dGVudDsKLSAgICAgICAgc2l6ZV90IG1fY3VycmVudEl0
ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1ZSB9Owot
ICAgIH07Ci0KLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMgfTsg
fQotICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMsIGl0ZXJhdG9yOjpJ
bW1lZGlhdGVseU1vdmVUb0VuZDo6WWVzIH07IH0KKyAgICBjbGFzcyBJdGVyYXRvcjsKKworICAg
IFdFQkNPUkVfRVhQT1JUIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgSXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSXRlbUJ1ZmZlciogaXRl
bUJ1ZmZlcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5nZXQoKTsgfQpAQCAtMTkx
LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBi
b29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgSXRlbUhhbmRsZSk7CisgICAgc3Rh
dGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBO
YXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGI1YzM3NDE5ZDZmZmFhMTY4ZDRiYjk5ZTQxODg0
ZmRhZDRkMTc2OTcuLmJhNmU4YmE1YTdhMDhmNzU4NjllNDg2MjU4ODU1ZTczNDkxZTY0MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDU2NCArMzIs
NiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotI2lm
ICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotQ1N0cmluZyBJdGVtSGFuZGxlOjpk
ZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgVGV4dFN0cmVhbSB0czsKLSAgICB0cyA8PCAqdGhp
czsKLSAgICByZXR1cm4gdHMucmVsZWFzZSgpLnV0ZjgoKTsKLX0KLSNlbmRpZgotCi12b2lkIEl0
ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBzd2l0Y2gg
KHR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIGdldDxTYXZlPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVz
dG9yZToKLSAgICAgICAgZ2V0PFJlc3RvcmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIGdldDxUcmFuc2xh
dGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpSb3RhdGU6Ci0gICAgICAgIGdldDxSb3RhdGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgZ2V0PFNjYWxlPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29u
Y2F0ZW5hdGVDVE06Ci0gICAgICAgIGdldDxDb25jYXRlbmF0ZUNUTT4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAg
Z2V0PFNldENUTT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgZ2V0PFNldElubGluZUZp
bGxHcmFkaWVudD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgZ2V0PFNldElubGluZUZpbGxD
b2xvcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICBnZXQ8U2V0SW5saW5lU3Ryb2tlQ29s
b3I+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIGdldDxTZXRTdHJva2VUaGlja25lc3M+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRT
dGF0ZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICBnZXQ8U2V0TGluZUNhcD4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVEYXNoOgotICAgICAgICBnZXQ8U2V0TGluZURhc2g+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgZ2V0
PFNldExpbmVKb2luPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgZ2V0PFNldE1pdGVyTGltaXQ+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVh
clNoYWRvdzoKLSAgICAgICAgZ2V0PENsZWFyU2hhZG93PigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgZ2V0PENsaXA+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0OgotICAgICAgICBnZXQ8Q2xpcE91dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICBn
ZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICBnZXQ8Q2xpcE91dFRv
UGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOgotICAgICAgICBnZXQ8Q2xpcFBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0dseXBoczoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIGdldDxEcmF3SW1h
Z2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIGdldDxEcmF3TmF0aXZlSW1hZ2U+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjoKLSAgICAgICAgZ2V0PERyYXdQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIGdldDxE
cmF3UmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lOgotICAgICAgICBnZXQ8RHJhd0xpbmU+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0Ogot
ICAgICAgICBnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0g
ICAgICAgIGdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAg
IGdldDxEcmF3RWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICBnZXQ8RHJhd1BhdGg+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNS
aW5nUGF0aDoKLSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3Rz
OgotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIGdldDxG
aWxsUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50Pigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bENvbXBvc2l0ZWRSZWN0OgotICAgICAgICBnZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLmFwcGx5
KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5k
ZWRSZWN0OgotICAgICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0PigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhv
bGU6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICBnZXQ8RmlsbElubGluZVBhdGg+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBnZXQ8RmlsbFBhdGg+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAg
ICAgZ2V0PEZpbGxFbGxpcHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICBnZXQ8Rmx1c2hDb250ZXh0
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5
cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURh
dGE6Ci0gICAgICAgIC8vIFNob3VsZCBhbHJlYWR5IGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRl
LgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgZ2V0PFBhaW50RnJhbWVG
b3JNZWRpYT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIGdldDxTdHJva2VSZWN0PigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAg
ICAgICAgZ2V0PFN0cm9rZUxpbmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsK
LSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJ
bmxpbmVQYXRoOgotICAgICAgICBnZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0
aDoKLSAgICAgICAgZ2V0PFN0cm9rZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICBnZXQ8U3Ry
b2tlRWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgZ2V0PENsZWFyUmVjdD4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXI6Ci0gICAgICAgIGdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpLmFwcGx5KGNv
bnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJl
bmN5TGF5ZXI6Ci0gICAgICAgIGdldDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpB
cHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIGdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZp
bGxQYXR0ZXJuOgotICAgICAgICBnZXQ8QXBwbHlGaWxsUGF0dGVybj4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcjoKLSAgICAgICAgZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgSXRlbUhhbmRs
ZTo6ZGVzdHJveSgpCi17Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwT3V0VG9QYXRoOgotICAgICAgICBnZXQ8Q2xpcE91dFRvUGF0aD4oKS5+Q2xpcE91dFRv
UGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0g
ICAgICAgIGdldDxDbGlwUGF0aD4oKS5+Q2xpcFBhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICBnZXQ8RHJhd0ZvY3Vz
UmluZ1BhdGg+KCkufkRyYXdGb2N1c1JpbmdQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIGdldDxEcmF3Rm9jdXNS
aW5nUmVjdHM+KCkufkRyYXdGb2N1c1JpbmdSZWN0cygpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgZ2V0PERyYXdHbHlwaHM+KCkufkRy
YXdHbHlwaHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5l
c0ZvclRleHQ6Ci0gICAgICAgIGdldDxEcmF3TGluZXNGb3JUZXh0PigpLn5EcmF3TGluZXNGb3JU
ZXh0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAg
ICAgICAgZ2V0PERyYXdQYXRoPigpLn5EcmF3UGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICBnZXQ8RmlsbENvbXBv
c2l0ZWRSZWN0PigpLn5GaWxsQ29tcG9zaXRlZFJlY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBnZXQ8RmlsbFBhdGg+KCkufkZpbGxQ
YXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhD
b2xvcjoKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLn5GaWxsUmVjdFdpdGhDb2xv
cigpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3Jh
ZGllbnQ6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKS5+RmlsbFJlY3RXaXRo
R3JhZGllbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCku
fkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCku
fkZpbGxSb3VuZGVkUmVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
R2V0SW1hZ2VEYXRhOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxHZXRJbWFnZURhdGE+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIGdldDxQdXRJbWFnZURhdGE+KCku
flB1dEltYWdlRGF0YSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
TGluZURhc2g6Ci0gICAgICAgIGdldDxTZXRMaW5lRGFzaD4oKS5+U2V0TGluZURhc2goKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICBnZXQ8
U2V0U3RhdGU+KCkuflNldFN0YXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTdHJva2VQYXRoOgotICAgICAgICBnZXQ8U3Ryb2tlUGF0aD4oKS5+U3Ryb2tlUGF0aCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2lm
IFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBseUZpbGxQYXR0
ZXJuPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlT
dHJva2VQYXR0ZXJuOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxBcHBseVN0cm9rZVBhdHRlcm4+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENs
ZWFyUmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
ZWFyU2hhZG93OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxDbGVhclNoYWRvdz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPENsaXA+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxDbGlwT3V0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENsaXBUb0ltYWdlQnVmZmVyPjo6dmFsdWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENvbmNhdGVu
YXRlQ1RNPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3RWxsaXBz
ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8RHJhd0ltYWdlQnVmZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd1BhdHRlcm4+Ojp2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0xp
bmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVj
dDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
RHJhd1JlY3Q+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVy
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxF
bmRUcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxGaWxsRWxsaXBzZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJ
bmxpbmVQYXRoOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxGaWxsSW5saW5lUGF0aD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlm
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEZpbGxSZWN0Pjo6dmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxGbHVzaENvbnRleHQ+Ojp2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFD
b21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPjo6dmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxQ
YWludEZyYW1lRm9yTWVkaWE+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxSZXN0b3JlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxSb3RhdGU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxTYXZlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFNjYWxlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxTZXRDVE0+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldElubGluZUZpbGxDb2xvcj46OnZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFk
aWVudDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8U2V0SW5saW5lRmlsbEdyYWRpZW50Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldElubGluZVN0cm9rZUNvbG9yPjo6
dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0
TGluZUNhcD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVKb2luOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxTZXRMaW5lSm9pbj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldE1pdGVyTGltaXQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldFN0cm9rZVRoaWNr
bmVzcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUVsbGlwc2U6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPFN0cm9rZUVsbGlwc2U+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRo
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxT
dHJva2VJbmxpbmVQYXRoPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U3Ryb2tlTGluZT46OnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VHJhbnNsYXRlPjo6dmFs
dWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSwgdHlw
ZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNlOwot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8VCwg
c3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0gdHJ1
ZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8
IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGNvcHlJbnRvKGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1I
YW5kbGUsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uV2l0aE9mZnNldCkKLXsKLSAgICBuZXcgKGRlc3Rp
bmF0aW9uV2l0aE9mZnNldCkgSXRlbShpdGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gY29weUludG8oY29uc3QgSXRlbUhhbmRs
ZSYgaXRlbUhhbmRsZSwgdWludDhfdCogZGVzdGluYXRpb25XaXRoT2Zmc2V0KQotewotICAgIGF1
dG8qIG5ld0l0ZW0gPSBuZXcgKGRlc3RpbmF0aW9uV2l0aE9mZnNldCkgSXRlbShpdGVtSGFuZGxl
LmdldDxJdGVtPigpKTsKLSAgICByZXR1cm4gbmV3SXRlbS0+aXNWYWxpZCgpOwotfQotCi1ib29s
IEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0Ci17Ci0g
ICAgYXV0byBpdGVtVHlwZSA9IHR5cGUoKTsKLSAgICBkZXN0aW5hdGlvbi5kYXRhWzBdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwotICAgIGF1dG8gaXRlbU9mZnNldCA9IGRlc3Rp
bmF0aW9uLmRhdGEgKyBzaXplb2YodWludDY0X3QpOwotICAgIHN3aXRjaCAoaXRlbVR5cGUpIHsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gY29weUlu
dG88Q2xpcE91dFRvUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88Q2xpcFBhdGg+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1c1JpbmdQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd0ZvY3VzUmluZ1JlY3RzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdHbHlwaHM+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1
cm4gY29weUludG88RHJhd0xpbmVzRm9yVGV4dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERy
YXdOYXRpdmVJbWFnZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd1BhdHRlcm4+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPERyYXdQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbENvbXBv
c2l0ZWRSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBh
dGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4g
Y29weUludG88RmlsbFJlY3RXaXRoQ29sb3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PEZpbGxSZWN0V2l0aEdyYWRpZW50PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSb3Vu
ZGVkUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdl
RGF0YToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEdldEltYWdlRGF0YT4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFB1dEltYWdlRGF0YT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZURhc2g+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPFNldFN0YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVBh
dGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNj
YWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpB
cHBseUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlGaWxsUGF0dGVy
bj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0
dGVybjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVybj4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRyYW5zcGFyZW5j
eUxheWVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0
OgotICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxDbGVhclNoYWRvdz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXA6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBP
dXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1
ZmZlcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBUb0ltYWdlQnVmZmVyPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAg
IHJldHVybiBjb3B5SW50bzxDb25jYXRlbmF0ZUNUTT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxEcmF3RWxsaXBzZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdMaW5lOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xpbmU+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPERyYXdSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gY29weUludG88RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRUcmFuc3Bh
cmVuY3lMYXllcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxF
bGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbEVsbGlwc2U+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxJbmxpbmVQYXRo
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gY29weUlu
dG88Rmx1c2hDb250ZXh0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4g
Y29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyOgotICAgICAgICByZXR1cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1l
ZGlhOgotICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRGcmFtZUZvck1lZGlhPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFJlc3RvcmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpSb3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSb3RhdGU+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4gY29weUludG88
U2F2ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAg
ICAgICByZXR1cm4gY29weUludG88U2NhbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRDVE0+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0g
ICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsQ29sb3I+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAg
IHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFNldElubGluZVN0cm9rZUNvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNl
dExpbmVDYXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5l
Sm9pbjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVKb2luPigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFNldE1pdGVyTGltaXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRT
dHJva2VUaGlja25lc3M+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
dHJva2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlRWxsaXBzZT4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJv
a2VJbmxpbmVQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlUmVjdD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAg
IHJldHVybiBjb3B5SW50bzxTdHJva2VMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gY29weUludG88VHJhbnNsYXRl
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogSXRl
bUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVySGFuZGxlcyYmIGhhbmRsZXMpCiAgICAgOiBt
X3JlYWRPbmx5QnVmZmVycyhXVEZNb3ZlKGhhbmRsZXMpKQogewpAQCAtNjA1LDcgKzQ3LDYgQEAg
SXRlbUJ1ZmZlcjo6fkl0ZW1CdWZmZXIoKQogSXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVm
ZmVyJiYgb3RoZXIpCiAgICAgOiBtX3JlYWRpbmdDbGllbnQoc3RkOjpleGNoYW5nZShvdGhlci5t
X3JlYWRpbmdDbGllbnQsIG51bGxwdHIpKQogICAgICwgbV93cml0aW5nQ2xpZW50KHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV93cml0aW5nQ2xpZW50LCBudWxscHRyKSkKLSAgICAsIG1faXRlbXNUb0Rl
c3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zVG9EZXN0
cm95SW5BbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9hbGxvY2F0ZWRCdWZmZXJzKHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9yZWFk
T25seUJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlYWRPbmx5QnVmZmVycywgeyB9KSkK
ICAgICAsIG1fd3JpdGFibGVCdWZmZXIoc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRhYmxlQnVm
ZmVyLCB7IH0pKQpAQCAtNjE3LDcgKzU4LDYgQEAgSXRlbUJ1ZmZlciYgSXRlbUJ1ZmZlcjo6b3Bl
cmF0b3I9KEl0ZW1CdWZmZXImJiBvdGhlcikKIHsKICAgICBtX3JlYWRpbmdDbGllbnQgPSBzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1fcmVhZGluZ0NsaWVudCwgbnVsbHB0cik7CiAgICAgbV93cml0aW5n
Q2xpZW50ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRpbmdDbGllbnQsIG51bGxwdHIpOwot
ICAgIG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSk7CiAgICAgbV9hbGxv
Y2F0ZWRCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2FsbG9jYXRlZEJ1ZmZlcnMsIHsg
fSk7CiAgICAgbV9yZWFkT25seUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVhZE9u
bHlCdWZmZXJzLCB7IH0pOwogICAgIG1fd3JpdGFibGVCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1fd3JpdGFibGVCdWZmZXIsIHsgfSk7CkBAIC02NTEsOSArOTEsNiBAQCB2b2lkIEl0ZW1C
dWZmZXI6OmZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhh
bmRsZSYpPiYmIG1hcAogCiB2b2lkIEl0ZW1CdWZmZXI6OmNsZWFyKCkKIHsKLSAgICBmb3IgKGF1
dG8gaXRlbSA6IHN0ZDo6ZXhjaGFuZ2UobV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVy
cywgeyB9KSkKLSAgICAgICAgaXRlbS5kZXN0cm95KCk7Ci0KICAgICBmb3IgKGF1dG8qIGJ1ZmZl
ciA6IHN0ZDo6ZXhjaGFuZ2UobV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICAgICBmYXN0
RnJlZShidWZmZXIpOwogCkBAIC02NjQsNyArMTAxLDcgQEAgdm9pZCBJdGVtQnVmZmVyOjpjbGVh
cigpCiAKIERpZENoYW5nZUl0ZW1CdWZmZXIgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVy
SWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpCiB7Ci0gICAgYXV0byBzaXplRm9yQnVmZmVy
U3dpdGNoSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICBhdXRvIHNpemVGb3JCdWZmZXJTd2l0Y2hJ
dGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPE1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcj4oKTsKICAgICBpZiAobV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIG51bWJlck9mQnl0
ZXMgKyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA8PSBtX3dyaXRhYmxlQnVmZmVyLmNhcGFjaXR5
KQogICAgICAgICByZXR1cm4gRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6Tm87CiAKQEAgLTY4MCw3ICsx
MTcsNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZl
cklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogICAgIHJldHVybiBoYWRQcmV2aW91c0J1
ZmZlciA/IERpZENoYW5nZUl0ZW1CdWZmZXI6OlllcyA6IERpZENoYW5nZUl0ZW1CdWZmZXI6Ok5v
OwogfQogCi12b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0p
Cit2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFy
eUl0ZW0pCiB7CiAgICAgYXV0byBkYXRhID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRl
bXBvcmFyeUl0ZW0pOwogICAgIGlmICghZGF0YSkKQEAgLTY5MSw3ICsxMjgsNyBAQCB2b2lkIEl0
ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiAKICAgICBhdXRvIGJ1
ZmZlckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNp
dHlGb3JFbmNvZGVkSXRlbSk7CiAKLSAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVu
TnVtYmVyT2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZW1wb3JhcnlJdGVtLnR5cGUo
KSk7CisgICAgbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUodGVtcG9yYXJ5SXRlbSkpOwogICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5O
dW1iZXJPZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZm
ZXIuZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwg
ZGF0YS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCAxMzhkOWNhMGJkNzM0M2RiYmY1ZjUxOTE2MDdj
M2IxOTJhMzc3YmViLi4xZjYxOTcwZGRjMTFjNmE0MGMyNWEwYmZkYTQzYzUwMjljNjA1N2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0SXRlbXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOCw5
ICs0MCw2IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0Owog
Ci1lbnVtIEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJdGVtQnVmZmVySWRl
bnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKLQog
Ly8gQW4gSXRlbUJ1ZmZlckhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCBj
b250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLgogc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGUg
ewogICAgIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CkBAIC01MywzNiArNTIsNiBA
QCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZSB7CiAKIHVzaW5nIEl0ZW1CdWZmZXJIYW5kbGVzID0g
VmVjdG9yPEl0ZW1CdWZmZXJIYW5kbGUsIDI+OwogCi0vLyBBbiBJdGVtSGFuZGxlIHdyYXBzIGEg
cG9pbnRlciB0byBhbiBJdGVtVHlwZSBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSBhbiBpdGVtIG9m
IHRoYXQgdHlwZS4KLS8vIEVhY2ggaXRlbSBoYW5kbGUgZGF0YSBwb2ludGVyIGlzIGFsaWduZWQg
dG8gOCBieXRlcywgYW5kIHRoZSBpdGVtIGl0c2VsZiBpcyBhbHNvIGFsaWduZWQKLS8vIHRvIDgg
Ynl0ZXMuIFRvIGVuc3VyZSB0aGlzLCB0aGUgaXRlbSB0eXBlIGNvbnNpc3RzIG9mIDggYnl0ZXMg
KDEgYnl0ZSBmb3IgdGhlIHR5cGUgYW5kIDcKLS8vIGJ5dGVzIG9mIHBhZGRpbmcpLgotc3RydWN0
IEl0ZW1IYW5kbGUgewotICAgIHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07Ci0KLSAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJv
eSgpOwotICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkRp
c3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKHR5cGUoKSk7IH0KLQotICAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhISgqdGhpcyk7IH0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFkYXRhOyB9Ci0KLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElTQUJM
RUQKLSAgICBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIEl0ZW1U
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtVHlwZT4oZGF0YVswXSk7
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXMoKSBjb25zdCB7IHJldHVybiB0
eXBlKCkgPT0gVDo6aXRlbVR5cGU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUJiBnZXQo
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzPFQ+KCkpOwotICAgICAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZkYXRhW3NpemVvZih1aW50NjRfdCldKTsKLSAgICB9Ci0K
LSAgICBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0OwotfTsKLQog
ZW51bSBjbGFzcyBEaWRDaGFuZ2VJdGVtQnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogY2xh
c3MgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgewpAQCAtOTAsNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQoKSB7IH0KIAogICAgIHZpcnR1YWwg
SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCkgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERpc3Bs
YXlMaXN0SXRlbSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShj
b25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5nZUl0
ZW1CdWZmZXIpID0gMDsKIH07CiAKQEAgLTk4LDcgKzY3LDcgQEAgY2xhc3MgSXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkl0ZW1CdWZmZXJSZWFkaW5nQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VE
X1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIE9w
dGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7CiB9Owog
CiAvLyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEsIGFuZCBj
b25zaXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFuZGxlICh0byB3aGljaCBkaXNwbGF5
CkBAIC0xNDksMjYgKzExOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YSBiYWNrIGludG8gYW4g
aXRlbSBvZiB0eXBlIFQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4g
dm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUgfHwgIVQ6OmlzSW5saW5l
SXRlbSk7Ci0KLSAgICAgICAgaWYgKCFUOjppc0lubGluZUl0ZW0gJiYgbV93cml0aW5nQ2xpZW50
KSB7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgICAgIF9fZGVjbHNwZWMoYWxpZ24oOCkp
IHR5cGVkZWYgdWludDhfdCBFbmNvZGluZ0J1ZmZlcltzaXplb2YodWludDY0X3QpICsgc2l6ZW9m
KFQpXTsKLSNlbHNlCi0gICAgICAgICAgICB1c2luZyBFbmNvZGluZ0J1ZmZlciBfX2F0dHJpYnV0
ZV9fKChhbGlnbmVkICg4KSkpID0gdWludDhfdFtzaXplb2YodWludDY0X3QpICsgc2l6ZW9mKFQp
XTsKLSNlbmRpZgotICAgICAgICAgICAgc3RhdGljIEVuY29kaW5nQnVmZmVyIHRlbXBvcmFyeUl0
ZW1CdWZmZXI7Ci0gICAgICAgICAgICB0ZW1wb3JhcnlJdGVtQnVmZmVyWzBdID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwotICAgICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJdGVt
QnVmZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OwotICAgICAgICAgICAgYXBwZW5kKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKLSAgICAgICAg
ICAgIEl0ZW1IYW5kbGUgeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0uZGVzdHJveSgpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUg
PT0gVDo6aXNJbmxpbmVJdGVtKTsKKworICAgICAgICBpZiAoIVQ6OmlzSW5saW5lSXRlbSkgewor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93cml0aW5nQ2xpZW50KTsKKyAgICAgICAgICAg
IGFwcGVuZChEaXNwbGF5TGlzdEl0ZW0oVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlckNo
YW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bUluQnl0ZXMoVDo6aXRlbVR5cGUpKTsKLQotICAgICAgICBpZiAoIXN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpCi0gICAgICAgICAgICBtX2l0ZW1zVG9EZXN0cm95SW5B
bGxvY2F0ZWRCdWZmZXJzLmFwcGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVu
TnVtYmVyT2ZCeXRlc10gfSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0
YWJsZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxUPigpKTsK
IAogICAgICAgICB1bmNoZWNrZWRBcHBlbmQ8VD4oYnVmZmVyQ2hhbmdlZCwgc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKICAgICB9CkBAIC0xODMsMTggKzE0MSwxNyBAQCBwcml2YXRlOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZCeXRl
cywgRGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBEaWRDaGFuZ2VJ
dGVtQnVmZmVyIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVz
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChEaWRD
aGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIsIEFyZ3MmJi4uLiBhcmdzKQogICAg
IHsKICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0gPSAmbV93cml0YWJsZUJ1ZmZlci5kYXRhW21f
d3JpdHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAgICBzdGFydE9mSXRlbVswXSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgbmV3IChzdGFydE9mSXRlbSArIHNp
emVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAg
ZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUp
LCBkaWRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXpl
T2ZUeXBlQW5kSXRlbUluQnl0ZXM8VD4oKSwgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgfQog
CiAgICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqIG1fcmVhZGluZ0NsaWVudCB7IG51bGxwdHIg
fTsKICAgICBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCogbV93cml0aW5nQ2xpZW50IHsgbnVsbHB0
ciB9OwotICAgIFZlY3RvcjxJdGVtSGFuZGxlPiBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRC
dWZmZXJzOwogICAgIFZlY3Rvcjx1aW50OF90Kj4gbV9hbGxvY2F0ZWRCdWZmZXJzOwogICAgIEl0
ZW1CdWZmZXJIYW5kbGVzIG1fcmVhZE9ubHlCdWZmZXJzOwogICAgIEl0ZW1CdWZmZXJIYW5kbGUg
bV93cml0YWJsZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzQ5N2YzOTUwNThhNjc2ODY0NDhh
MjU1NzE3NDBjZjQwMzdhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2Vu
dW0gSXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEl0ZW1CdWZmZXJJZGVudGlm
aWVyID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmllclR5cGU+OworCit9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRiMWRiOTQ3YWI4NTU3ZjAwY2FmOWQwMTc2ZTcxYjI1ZDk2MTU4Yzcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgotCi0jaW5jbHVk
ZSAiRGlzcGxheUxpc3RJdGVtcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewotCi1zdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBl
IHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToK
LSAgICAgICAgcmV0dXJuIHNpemVvZihTYXZlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3Jl
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFJlc3RvcmUpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRy
YW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihUcmFuc2xhdGUpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihSb3RhdGUpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNjYWxlKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIHNpemVvZihDb25jYXRl
bmF0ZUNUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKFNldENUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50Ogot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElubGluZUZpbGxHcmFkaWVudCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElu
bGluZUZpbGxDb2xvcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lU3Ryb2tlQ29sb3IpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRT
dHJva2VUaGlja25lc3MpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKFNldFN0YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVDYXApOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVEYXNoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVEYXNoKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRMaW5lSm9p
bik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihTZXRNaXRlckxpbWl0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihDbGVhclNoYWRvdyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
T3V0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBUb0ltYWdlQnVm
ZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKENsaXBPdXRUb1BhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3
R2x5cGhzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJl
dHVybiBzaXplb2YoRHJhd0ltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0
aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd05hdGl2ZUltYWdlKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3UGF0
dGVybik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoRHJhd1JlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKERyYXdMaW5lKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdMaW5lc0ZvclRleHQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlw
c2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0VsbGlwc2UpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXRoKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3
Rm9jdXNSaW5nUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdGb2N1c1JpbmdSZWN0cyk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3QpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZp
bGxSZWN0V2l0aENvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVu
dDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhHcmFkaWVudCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZp
bGxDb21wb3NpdGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0Ogot
ICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSb3VuZGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxJ
bmxpbmVQYXRoKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKEZpbGxQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBz
ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNoQ29udGV4dCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVy
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEdl
dEltYWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKFB1dEltYWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFt
ZUZvck1lZGlhOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFBhaW50RnJhbWVGb3JNZWRpYSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJv
a2VSZWN0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFN0cm9rZUxpbmUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ry
b2tlSW5saW5lUGF0aCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZVBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlRWxsaXBzZSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsZWFyUmVj
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAg
cmV0dXJuIHNpemVvZihCZWdpblRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmRUcmFuc3Bh
cmVuY3lMYXllcik7Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tl
UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihBcHBseVN0cm9rZVBhdHRlcm4pOwotICAg
IGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
QXBwbHlGaWxsUGF0dGVybik7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmlj
ZVNjYWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0K
LQotYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgLyogU2VlIHRoZSBj
b21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aGF0IHRoaXMgbWVh
bnMuCi0gICAgICogVGhpcyBuZWVkcyB0byBtYXRjaCBhbGwgdGhlICJzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNEcmF3aW5nSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMu
ICovCi0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmlj
ZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQ
YXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgot
ICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9J
bWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
bHVzaENvbnRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5h
dGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgSXRlbVR5cGU6
OlJvdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNj
YWxlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJ
bmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50
OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgIGNhc2UgSXRl
bVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJM
aW1pdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRTdHJva2VUaGlja25lc3M6Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgIGNh
c2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6
OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVk
UmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5F
X1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0
SW1hZ2VEYXRhOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxF
KElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1zaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1U
eXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0
aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7Ci19Ci0K
LWJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgLyogU2VlIHRoZSBjb21t
ZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aGF0IHRoaXMgbWVhbnMu
Ci0gICAgICogVGhpcyBuZWVkcyB0byBtYXRjaCAoMSkgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
ZW5jb2RlSXRlbSgpLCAoMikgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSgpLAot
ICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMuICovCi0KLSAgICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0
ZWRSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRp
ZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFn
ZURhdGE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0U3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0j
aWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlw
ZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0ltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90
c0ZvckRvY3VtZW50TWFya2VyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bEVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZy
YW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0ZW1U
eXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTY2FsZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0SW5saW5lRmlsbENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFk
aWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYg
RU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5l
UGF0aDoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggMGVmZDBiNzJiMDI5YWZiMDEyODkxMDMw
OWNmZTFiYmNkZDZkMzkxZS4uNGUxZmViYzdhZWZlMTdlNjg5MDBhMGIwYTQxNWRlNWM4MzMwOGMy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk5LDkgKzk5LDUgQEAg
ZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IsCiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1J
bkJ5dGVzKEl0ZW1UeXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1U
eXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSk7Ci0KIH0g
Ly8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMGU0MGEyNmFlMDA5N2RjODBlNDhiMjQy
ZWIxOWRmZjk2YzQxYjNmZS4uM2ZkMzU4MmI0NjQ1MmJjMmY2ZTAxYTdkZmNkOGJiZjA4ZWUyODU2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKIAor
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCkBAIC0yMjAsMTIgKzIyMSwxMiBAQCBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRAogewog
fQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2
ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdl
KQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJ
bWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkg
Y29uc3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJu
SW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVy
bi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0
YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVm
KCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAg
aWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1f
c3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVm
KCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAg
Y29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmls
bFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsK
IH0KIApAQCAtMTA4NSwxOTUgKzEwODYsMTIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCi17
Ci0gICAgdHMgPDwgaXRlbS50eXBlKCk7Ci0KLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxUcmFu
c2xhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8Um90YXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2NhbGU+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U2V0Q1RNPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25j
YXRlbmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNl
dFN0cm9rZVRoaWNrbmVzcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0U3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxTZXRMaW5lQ2FwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZURhc2g+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TWl0ZXJMaW1p
dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8Q2xpcD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlw
T3V0VG9QYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0
aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PERyYXdHbHlwaHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PERyYXdQYXR0ZXJuPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1JlY3Q+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxE
cmF3TGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVz
Rm9yVGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
cjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdD4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSb3Vu
ZGVkUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RmlsbElubGluZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmx1c2hDb250
ZXh0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8R2V0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PFN0cm9rZVJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUxpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCk7Ci0gICAgICAg
IGJyZWFrOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUlubGluZVBh
dGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGVhclJlY3Q+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCk7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgLy8gSXRlbXMgd2l0aCBubyBhZGRpdGlvbmFsIGRhdGEuCi0gICAgY2FzZSBJ
dGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgSXRl
bVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0
dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICBi
cmVhazsKLSAgICB9CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCit7CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0
byYgZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgIHRzIDw8IGRpc3BsYXlMaXN0SXRlbS5pdGVt
VHlwZTsKKyAgICAgICAgdHMgPDwgZGlzcGxheUxpc3RJdGVtOworICAgIH0sIGl0ZW0pOwogICAg
IHJldHVybiB0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZTkz
YjA0NjQ0M2JhNGFjNzYyYWUzMjMxNTNjYjRmYTBjM2E2NWE1Zi4uZWJmNmZkMjIxZTljYjJjODc3
ZWJhZjIyYWQ2MjMyYWUyZjc3OGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CkBAIC0yNiwxMSArMjYsMTQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZm
ZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgogI2luY2x1
ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2x5
cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmgiCkBAIC0zOCw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGV4dFN0cmVhbTsKQEAgLTUzLDEyICs1NywxMCBA
QCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiAvKiBpc0lubGluZUl0ZW0gaW5kaWNhdGVzIHdo
ZXRoZXIgdGhlIG9iamVjdCBuZWVkcyB0byBiZSBwYXNzZWQgdGhyb3VnaCBJUEM6OkVuY29kZXIg
aW4gb3JkZXIgdG8gc2VyaWFsaXplLAogICogb3Igd2hldGhlciB3ZSBjYW4ganVzdCB1c2UgcGxh
Y2VtZW50IG5ldyBhbmQgYmUgZG9uZS4KLSAqIEl0IG5lZWRzIHRvIG1hdGNoICgxKSBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjplbmNvZGVJdGVtKCksICgyKSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkZWNvZGVJdGVtKCksCi0gKiBhbmQgKDMpIGlzSW5saW5lSXRlbSgpIGluIERpc3BsYXlMaXN0
SXRlbVR5cGUuY3BwLgogICoKICAqIGlzRHJhd2luZ0l0ZW0gaW5kaWNhdGVzIGlmIHRoaXMgY29t
bWFuZCBjYW4gYWZmZWN0IGRpcnR5IHJlY3RzLgogICogV2UgY2FuIGRvIHRoaW5ncyBsaWtlIHNr
aXAgZHJhd2luZyBpdGVtcyB3aGVuIHJlcGxheWluZyB0aGVtIGlmIHRoZWlyIGV4dGVudHMgZG9u
J3QgaW50ZXJzZWN0IHdpdGggdGhlIGN1cnJlbnQgY2xpcC4KLSAqIEl0IG5lZWRzIHRvIG1hdGNo
IGlzRHJhd2luZ0l0ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcC4gKi8KKyAqLwogCiBj
bGFzcyBTYXZlIHsKIHB1YmxpYzoKQEAgLTI3Nyw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERl
Y29kZXImKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2Uq
IHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5J
bWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIHN0cnVjdCBQYXR0ZXJuRGF0YSB7CkBAIC05MTEsNyArOTEzLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSB7IHJldHVybiBtX2ZvbnRJZGVudGlmaWVy
OyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2FsQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIEZsb2F0UG9p
bnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAgY29u
c3QgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mIGdseXBocygpIGNvbnN0IHsgcmV0dXJu
IG1fZ2x5cGhzOyB9CkBAIC0yMjc0LDcgKzIyNzYsOTcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7Cit1c2luZyBEaXNwbGF5TGlzdEl0ZW0g
PSBWYXJpYW50PAorICAgIFNhdmUsCisgICAgUmVzdG9yZSwKKyAgICBUcmFuc2xhdGUsCisgICAg
Um90YXRlLAorICAgIFNjYWxlLAorICAgIFNldENUTSwKKyAgICBDb25jYXRlbmF0ZUNUTSwKKyAg
ICBTZXRJbmxpbmVGaWxsR3JhZGllbnQsCisgICAgU2V0SW5saW5lRmlsbENvbG9yLAorICAgIFNl
dElubGluZVN0cm9rZUNvbG9yLAorICAgIFNldFN0cm9rZVRoaWNrbmVzcywKKyAgICBTZXRTdGF0
ZSwKKyAgICBTZXRMaW5lQ2FwLAorICAgIFNldExpbmVEYXNoLAorICAgIFNldExpbmVKb2luLAor
ICAgIFNldE1pdGVyTGltaXQsCisgICAgQ2xlYXJTaGFkb3csCisgICAgQ2xpcCwKKyAgICBDbGlw
T3V0LAorICAgIENsaXBUb0ltYWdlQnVmZmVyLAorICAgIENsaXBPdXRUb1BhdGgsCisgICAgQ2xp
cFBhdGgsCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAgRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzLAorICAgIERyYXdHbHlwaHMsCisgICAgRHJhd0ltYWdlQnVmZmVyLAorICAg
IERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGF0dGVybiwKKyAgICBCZWdpblRyYW5zcGFyZW5j
eUxheWVyLAorICAgIEVuZFRyYW5zcGFyZW5jeUxheWVyLAorICAgIERyYXdSZWN0LAorICAgIERy
YXdMaW5lLAorICAgIERyYXdMaW5lc0ZvclRleHQsCisgICAgRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlciwKKyAgICBEcmF3RWxsaXBzZSwKKyAgICBEcmF3UGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5n
UGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5nUmVjdHMsCisgICAgRmlsbFJlY3QsCisgICAgRmlsbFJl
Y3RXaXRoQ29sb3IsCisgICAgRmlsbFJlY3RXaXRoR3JhZGllbnQsCisgICAgRmlsbENvbXBvc2l0
ZWRSZWN0LAorICAgIEZpbGxSb3VuZGVkUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZSwKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICBGaWxsSW5saW5lUGF0aCwKKyNl
bmRpZgorICAgIEZpbGxQYXRoLAorICAgIEZpbGxFbGxpcHNlLAorICAgIEdldEltYWdlRGF0YSwK
KyAgICBQdXRJbWFnZURhdGEsCisgICAgUGFpbnRGcmFtZUZvck1lZGlhLAorICAgIFN0cm9rZVJl
Y3QsCisgICAgU3Ryb2tlTGluZSwKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICBT
dHJva2VJbmxpbmVQYXRoLAorI2VuZGlmCisgICAgU3Ryb2tlUGF0aCwKKyAgICBTdHJva2VFbGxp
cHNlLAorICAgIENsZWFyUmVjdCwKKyNpZiBVU0UoQ0cpCisgICAgQXBwbHlTdHJva2VQYXR0ZXJu
LAorICAgIEFwcGx5RmlsbFBhdHRlcm4sCisjZW5kaWYKKyAgICBBcHBseURldmljZVNjYWxlRmFj
dG9yLAorICAgIEZsdXNoQ29udGV4dCwKKyAgICBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIs
CisgICAgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPjsKKworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisK
K2lubGluZSBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgZGlzcGxheUxpc3RJdGVtKQoreworICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1
dG8mIGRpc3BsYXlMaXN0SXRlbSkgeworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlz
RHJhd2luZ0l0ZW07CisgICAgfSwgZGlzcGxheUxpc3RJdGVtKTsKK30KKworaW5saW5lIGNvbnN0
ZXhwciBJdGVtVHlwZSBpdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0
SXRlbSkKK3sKKyAgICByZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlz
dEl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlMaXN0SXRlbS5pdGVtVHlwZTsKKyAgICB9
LCBkaXNwbGF5TGlzdEl0ZW0pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0ZXhw
ciBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKCkKK3sKKyAgICByZXR1cm4g
c2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCks
IHNpemVvZihUKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkBAIC0yMzM0LDYgKzI0MjYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyLAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVt
QnVmZmVyLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6R2V0SW1hZ2VEYXRh
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWQ4NmJkYjkyZDljMTE4
NzRkOTYxODBlYWI2ZjcxMWY5NTA5ZjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3Bw
CkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0
b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKwor
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kKQorICAgIDog
bV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKK3sKKyAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9F
bmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykgeworICAgICAgICBpZiAoYXV0byBpdGVt
cyA9IGl0ZW1CdWZmZXIoKSkgeworICAgICAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0g
aXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICAgICAgICAgIG1fY3Vyc29yID0g
ZW5kT2ZDdXJyZW50QnVmZmVyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbW92
ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKK30KKworI2lmIEFTU0VSVF9FTkFCTEVE
Citib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAoreworICAgIGlmICht
X2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25z
dCBhdXRvKiBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gZW5kQ3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZm
ZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworICAgIHJldHVybiBtX2N1
cnNvciA9PSBlbmRDdXJzb3I7Cit9CisjZW5kaWYKKworYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVlPgoreworICAgIEFTU0VSVCgh
YXRFbmQoKSk7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRJdGVtSW5mbyk7CisKKyAgICBhdXRvIGN1
cnJlbnRJdGVtSW5mbyA9IGN1cnJlbnRJdGVtKCk7CisgICAgaWYgKCFjdXJyZW50SXRlbUluZm8p
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBtX2N1cnJlbnRJdGVtSW5mbyA9
IHt7IGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyLCBjdXJyZW50SXRlbUluZm8tPmlzRHJh
d2luZ0l0ZW0gfX07CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGN1cnJlbnRFeHRlbnQ7Cisg
ICAgaWYgKGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9kaXNwbGF5TGlzdC5t
X2RyYXdpbmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBt
X2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CisK
KyAgICByZXR1cm4ge3sgV1RGTW92ZShjdXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSks
IFdURk1vdmUoY3VycmVudEV4dGVudCksIGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyIH19
OworfQorCit2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCit7CisgICAg
QVNTRVJUKCFhdEVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50SXRlbUluZm8pOworCisgICAg
aWYgKG1fY3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtKQorICAgICAgICArK21fZHJhd2lu
Z0l0ZW1JbmRleDsKKworICAgIG1fY3Vyc29yICs9IG1fY3VycmVudEl0ZW1JbmZvLT5zaXplSW5C
dWZmZXI7CisKKyAgICBpZiAobV9jdXJzb3IgPT0gZW5kT2ZDdXJyZW50QnVmZmVyKCkgJiYgbV9y
ZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXpl
KCkpIHsKKyAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4Kys7CisgICAgICAgIG1vdmVDdXJz
b3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7CisgICAgfQorCisgICAgbV9jdXJyZW50SXRlbUlu
Zm8gPSB7IH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0YXRp
YyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNlOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6
dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmlzVmFsaWQoKSk+PiA9IHRydWU7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYpCit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMg
aW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4g
aXNWYWxpZChjb25zdCBJdGVtJiBpdGVtKQoreworICAgIHJldHVybiBpdGVtLmlzVmFsaWQoKTsK
K30KKwordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEk+CitpbmxpbmUgYXV0byBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkgY29uc3QgLT4gT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1
bHQ+Cit7CisgICAgLy8gV2UgY2FuJ3QgdXNlIGVhcmx5LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1
c2Ugb2YgdGVtcGxhdGUgZXhwYW5zaW9uIGluIHRoZSBjb21waWxlci4KKyAgICAvLyBEb2luZyBz
byB3b3VsZCBlaXRoZXIgQSkgYnJlYWsgdGhlIFdlYktpdCBzdHlsZSBydWxlIGFib3V0IGRvaW5n
ICJpZiAoKSB7IHJldHVybjsgfSByZXR1cm47IiBpbnN0ZWFkIG9mICJpZiAoKSB7IHJldHVybjsg
fSBlbHNlIHsgcmV0dXJuOyB9IgorICAgIC8vIG9yIEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBp
bmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9u
cyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIGlmIGNvbnN0ZXhwciAoSSA8IFdURjo6dmFyaWFudF9z
aXplPERpc3BsYXlMaXN0SXRlbT46OnZhbHVlKSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0
SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJLCBEaXNwbGF5TGlzdEl0ZW0+
OworCisgICAgICAgIGNvbnN0IGF1dG8qIGVuZE9mQ3VycmVudEJ1ZmZlciA9IHRoaXMtPmVuZE9m
Q3VycmVudEJ1ZmZlcigpOworCisgICAgICAgIGlmIChtX2N1cnNvciArIDEgPiBlbmRPZkN1cnJl
bnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1
dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0pOworICAgICAg
ICBpZiAoaXRlbVR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6aXRlbVR5cGUpCisgICAgICAg
ICAgICByZXR1cm4gY3VycmVudEl0ZW08SSArIDE+KCk7CisKKyAgICAgICAgaWYgKERpc3BsYXlM
aXN0SXRlbVR5cGU6OmlzSW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKG1fY3Vyc29yICsg
cGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPERpc3BsYXlMaXN0SXRlbVR5cGU+KCkgPiBl
bmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBE
aXNwbGF5TGlzdEl0ZW1UeXBlKj4obV9jdXJzb3IgKyBzaXplb2YodWludDY0X3QpKTsKKyAgICAg
ICAgICAgIGlmICghaXNWYWxpZChpdGVtKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIg
PSBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90
KSwgc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAgICAgICAgIHJldHVybiB7eyBp
dGVtLCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3
aW5nSXRlbSB9fTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1CdWZm
ZXIoKS0+bV9yZWFkaW5nQ2xpZW50OworICAgICAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKG1fY3Vyc29yICsgMiAqIHNpemVv
Zih1aW50NjRfdCkgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3QqPihtX2N1cnNvcilbMV07CisgICAgICAgIGNvbnN0IGF1dG8qIHN0YXJ0T2ZEYXRh
ID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKKyAgICAgICAgaWYgKHN0YXJ0T2ZE
YXRhICsgZGF0YUxlbmd0aCA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBpdGVtID0gY2xpZW50LT5kZWNvZGVJdGVt
KHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSk7CisgICAgICAgIGlmICghaXRlbSB8
fCAhaXNWYWxpZChpdGVtLnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6
ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRh
dGFMZW5ndGgpOworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZShpdGVtLnZhbHVlKCkpLCBjdXJy
ZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9
fTsKKyAgICB9CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIERpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKQoreworICAg
IGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgaWYgKCFpdGVtcykKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRP
bmx5QnVmZmVycy5zaXplKCk7CisgICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJl
ck9mUmVhZE9ubHlCdWZmZXJzKSB7CisgICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUg
PSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAg
ICAgbV9jdXJzb3IgPSBjdXJyZW50QnVmZmVySGFuZGxlLmRhdGE7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVm
ZmVycyk7CisgICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YTsK
KyAgICB9Cit9CisKK3VpbnQ4X3QqIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50
QnVmZmVyKCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIEFT
U0VSVChpdGVtcyk7CisKKyAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMt
Pm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4
IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZl
ckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhd
OworICAgICAgICByZXR1cm4gY3VycmVudEJ1ZmZlckhhbmRsZS5kYXRhICsgY3VycmVudEJ1ZmZl
ckhhbmRsZS5jYXBhY2l0eTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlcklu
ZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsKKyAgICByZXR1cm4gaXRlbXMtPm1fd3Jp
dGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworfQorCit9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGEy
NmFhMmUyNTYxOWZhZmIzOTEwOTQ1YWNhMzI1NGYwMWNhODZhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEaXNwbGF5TGlzdC5o
IgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworY2xhc3MgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHsK
K3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEltbWVkaWF0ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9
OworICAgIEl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiwgSW1tZWRpYXRlbHlNb3ZlVG9FbmQg
PSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6Tm8pOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVyLm1fZGlz
cGxheUxpc3QgJiYgbV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlcmF0b3IrKygpOworCisgICAgc3RydWN0IFZh
bHVlIHsKKyAgICAgICAgRGlzcGxheUxpc3RJdGVtIGl0ZW07CisgICAgICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gZXh0ZW50OworICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsK
KyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmFsdWU+IG9wZXJhdG9yKigp
IGNvbnN0OworCitwcml2YXRlOgorICAgIHN0cnVjdCBDdXJyZW50SXRlbVJlc3VsdCB7CisgICAg
ICAgIERpc3BsYXlMaXN0SXRlbSBkaXNwbGF5TGlzdEl0ZW07CisgICAgICAgIHN0ZDo6c2l6ZV90
IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAg
dGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgorICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVz
dWx0PiBjdXJyZW50SXRlbSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3Zl
Q3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOworICAgIHVpbnQ4X3QqIGVuZE9mQ3VycmVu
dEJ1ZmZlcigpIGNvbnN0OworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29sIGF0RW5kKCkg
Y29uc3Q7CisjZW5kaWYKKworICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJZkV4aXN0cygpOyB9CisKKyAgICBjb25zdCBE
aXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKKyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1JbmZvIHsK
KyAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVmZmVyOworICAgICAgICBib29sIGlzRHJhd2lu
Z0l0ZW07CisgICAgfTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPEN1cnJlbnRJdGVtSW5mbz4gbV9j
dXJyZW50SXRlbUluZm87CisgICAgdWludDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07CisgICAg
c2l6ZV90IG1fcmVhZE9ubHlCdWZmZXJJbmRleCB7IDAgfTsKKyAgICBzaXplX3QgbV9kcmF3aW5n
SXRlbUluZGV4IHsgMCB9OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IDgzN2YwZTkwZTI3ZjU5OGMwY2I3ZTkxMzY0M2UwNWI4YTAzMDA2
OTMuLjg3ZjY2NjdlOGJiODY4MTk3YTQyOWRkNzk4ZWYxN2Y5MDdjMjFlOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyMSwyNiArMTIxLDE3IEBAIHZv
aWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZUNoYW5nZSYgY2hhbmdlcywKICAgICAgICAgYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVu
dD4oKmNoYW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnQsIGNoYW5nZXMubV9zdGF0ZS5maWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVt
T2ZUeXBlKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1f
ZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtT2ZUeXBlKHR5cGUpOwotCi0gICAgaWYgKGlzRHJhd2lu
Z0l0ZW0odHlwZSkKLSNpZiBVU0UoQ0cpCi0gICAgICAgIHx8IHR5cGUgPT0gSXRlbVR5cGU6OkFw
cGx5U3Ryb2tlUGF0dGVybiB8fCB0eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4K
LSNlbmRpZgotICAgICkgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3Rh
dGVDaGFuZ2VzID0gY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2U7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3Rh
dGVDaGFuZ2VzLmNoYW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0
ZSk7Ci0gICAgICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgewotICAgICAgICAgICAgTE9H
X1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5n
IHN0YXRlICIgPDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3Rh
dGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKSk7Ci0gICAgICAgICAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oc3RhdGVDaGFuZ2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgICAgICAgICBz
dGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFncyA9IHsgfTsKLSAgICAgICAgICAgIGN1cnJlbnRTdGF0
ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsKLSAgICAgICAgfQot
ICAgICAgICBjdXJyZW50U3RhdGUoKS53YXNVc2VkRm9yRHJhd2luZyA9IHRydWU7Cit2b2lkIFJl
Y29yZGVyOjp3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VzRnJvbUxhc3RT
dGF0ZSA9IHN0YXRlQ2hhbmdlcy5jaGFuZ2VzRnJvbVN0YXRlKGN1cnJlbnRTdGF0ZSgpLmxhc3RE
cmF3aW5nU3RhdGUpOworICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgeworICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZp
bmcgc3RhdGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9z
dGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKKyAgICAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJ
dGVtKHN0YXRlQ2hhbmdlcywgY2hhbmdlc0Zyb21MYXN0U3RhdGUpOworICAgICAgICBzdGF0ZUNo
YW5nZXMubV9jaGFuZ2VGbGFncyA9IHsgfTsKKyAgICAgICAgY3VycmVudFN0YXRlKCkubGFzdERy
YXdpbmdTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOwogICAgIH0KKyAgICBjdXJyZW50U3Rh
dGUoKS53YXNVc2VkRm9yRHJhd2luZyA9IHRydWU7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAppbmRleCAwY2VjNDhkNzE2M2E2MWM5MTg4MGUyNmY1MTZkYWEyYTA3MDkzY2Fh
Li5mMjBlNjM2OWEwZDJkMTk0NDBjYjM4YmNjMDA3ZTFkY2IyNzhlMmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQo
QXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICB3aWxsQXBwZW5kSXRlbU9mVHlwZShUOjpp
dGVtVHlwZSk7CisgICAgICAgIHdpbGxBcHBlbmRJdGVtT2ZUeXBlPFQ+KCk7CiAgICAgICAgIG1f
ZGlzcGxheUxpc3QuYXBwZW5kPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAKICAg
ICAgICAgaWYgY29uc3RleHByIChUOjppc0RyYXdpbmdJdGVtKSB7CkBAIC0xNzIsNyArMTcyLDIx
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKCkKKyAgICB7CisgICAgICAgIGlmICht
X2RlbGVnYXRlKQorICAgICAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW1PZlR5cGUo
VDo6aXRlbVR5cGUpOworCisgICAgICAgIGlmIChUOjppc0RyYXdpbmdJdGVtCisjaWYgVVNFKENH
KQorICAgICAgICAgICAgfHwgVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0
dGVybiB8fCBUOjppdGVtVHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuCisjZW5k
aWYKKyAgICAgICAgKQorICAgICAgICAgICAgd2lsbEFwcGVuZERyYXdpbmdJdGVtKCk7CisgICAg
fQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKTsKIAog
ICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggZDE3MzdhMjc5YzM5N2UwOTA5M2QxMzg0
MzNkYjM4NDdkNmY0NzQ5Mi4uZTMyZTA2MTk3N2VjNmI4MDk1ZjNlNjU5NmE2ODIzMTZlYmRkYWE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogCiAjaW5jbHVkZSAiRGlzcGxh
eUxpc3RJdGVtcy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtNTIsOSArNTMsOCBAQCBHcmFwaGljc0NvbnRleHQmIFJl
cGxheWVyOjpjb250ZXh0KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBz
dGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVm
ZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVy
cywgY29uc3QgVCYgaW1hZ2VCdWZmZXJJdGVtKQogewotICAgIGF1dG8mIGltYWdlQnVmZmVySXRl
bSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1
ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVm
ZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGlt
YWdlQnVmZmVySXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwpAQCAtNjQsOSArNjQs
OCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpYwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5s
aW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0
aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VI
YXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZl
SW1hZ2VzLCBjb25zdCBUJiBuYXRpdmVJbWFnZUl0ZW0pCiB7Ci0gICAgYXV0byYgbmF0aXZlSW1h
Z2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5h
dGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2UgPSBu
YXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgbmF0aXZlSW1h
Z2VJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZSk7CkBAIC03NSwxMCArNzQsOCBAQCBpbmxpbmUg
c3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJ
bWFnZUl0ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKLWlu
bGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNl
dFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFz
aE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdl
cywgY29uc3QgU2V0U3RhdGUmIHNldFN0YXRlSXRlbSkKIHsKLSAgICBhdXRvJiBzZXRTdGF0ZUl0
ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKLQogICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0
ZXJuSW1hZ2UgPSBudWxscHRyOwogICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0g
bnVsbHB0cjsKIApAQCAtOTksOSArOTYsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDbwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCitp
bmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlG
b250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNv
dXJjZU1hcCYgZm9udHMsIGNvbnN0IFQmIGZvbnRJdGVtKQogewotICAgIGF1dG8mIGZvbnRJdGVt
ID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGZvbnRJdGVt
LmZvbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSBmb250cy5nZXQocmVzb3Vy
Y2VJZGVudGlmaWVyKSkgewogICAgICAgICBmb250SXRlbS5hcHBseShjb250ZXh0LCAqZm9udCk7
CkBAIC0xMTAsNjggKzEwNiw2OCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleAogICAgIHJldHVy
biByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKLXN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5
UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwbGF5ZXI6
OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCitleHRlcm4gR3JhcGhpY3NDb250ZXh0JiBzeW50
aGVzaXplTFZhbHVlR3JhcGhpY3NDb250ZXh0OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1l
ID0gdm9pZD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseSA9IGZhbHNlOwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBs
eTxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5hcHBseShzeW50aGVz
aXplTFZhbHVlR3JhcGhpY3NDb250ZXh0KSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0FwcGx5
PEl0ZW0+LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiwgR3JhcGhpY3NDb250ZXh0JikKK3sKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWZfdDxIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHkoY29uc3QgSXRlbSYgaXRlbSwg
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCit7CisgICAgcmV0dXJuIGl0ZW0uYXBw
bHkoZ3JhcGhpY3NDb250ZXh0KTsKK30KKworYXV0byBSZXBsYXllcjo6YXBwbHlJdGVtKGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0CiB7CiAgICAgaWYgKG1f
ZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgY29udGV4dCgpKSkKICAgICAgICAg
cmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKIAotICAgIGlmIChpdGVtLmlz
PERyYXdJbWFnZUJ1ZmZlcj4oKSkgeworICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0
b3IoWyZdKGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsK
ICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVy
cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5n
Q2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikg
fTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9
Ci0KLSAgICBpZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkgeworICAgIH0sIFsmXShj
b25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSkgLT4gc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BS
ZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiB7CiAg
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUlt
YWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVy
cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5n
Q2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikg
fTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9
Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKKyAgICB9LCBbJl0oY29u
c3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBp
ZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFn
ZUl0ZW08RHJhd05hdGl2ZUltYWdlPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkK
ICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNv
dXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlm
IChpdGVtLmlzPERyYXdHbHlwaHM+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgp
LCBtX2ZvbnRzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0pIC0+
IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4oY29udGV4dCgp
LCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5
UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3UGF0dGVybj4oKSkgewotICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRp
dmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0p
KQorICAgIH0sIFsmXShjb25zdCBEcmF3R2x5cGhzJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQg
eworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBw
bHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQogICAgICAg
ICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBX
VEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVy
biB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0u
aXM8U2V0U3RhdGU+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgU2V0U3RhdGUmIGl0ZW0pIC0+IEFw
cGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBp
dGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9Owog
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQot
ICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgfSwg
WyZdKGNvbnN0IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBjbGlwSXRlbSkgLT4gQXBwbHlJ
dGVtUmVzdWx0IHsKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9Owot
ICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPigpOwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5j
b2xvclNwYWNlKCksIG1fY29udGV4dCk7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgV1RG
OjpudWxsb3B0IH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigp
KSB7CisgICAgfSwgWyZdKGNvbnN0IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0p
IC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbSwgV1RGOjpu
dWxsb3B0IH07Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigpOwogICAgICAgICBtX2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1f
bWFza0ltYWdlQnVmZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgbV9tYXNr
SW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0sIFsmXShjb25zdCBh
dXRvJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBhcHBseShpdGVtLCBjb250
ZXh0KCkpOworICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9Owor
ICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiBSZXBs
YXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBi
b29sIHRyYWNrUmVwbGF5TGlzdCkKQEAgLTE4NywyOCArMTgzLDMwIEBAIFJlcGxheVJlc3VsdCBS
ZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tS
ZXBsYXlMaXN0CiAgICAgc2l6ZV90IGkgPSAwOwogI2VuZGlmCiAgICAgUmVwbGF5UmVzdWx0IHJl
c3VsdDsKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiBt
X2Rpc3BsYXlMaXN0KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBt
X2Rpc3BsYXlMaXN0KSB7CisgICAgICAgIGlmICghZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAg
ICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlk
SXRlbTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgYXV0
byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFs
dWUoKTsKKwogICAgICAgICBpZiAoIWluaXRpYWxDbGlwLmlzWmVybygpICYmIGV4dGVudCAmJiAh
ZXh0ZW50LT5pbnRlcnNlY3RzKGluaXRpYWxDbGlwKSkgewogICAgICAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJza2lwcGluZyAiIDw8IGkrKyA8PCAiICIg
PDwgaXRlbSk7CiAgICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNp
emVJbkJ1ZmZlcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKCFpdGVtKSB7Ci0gICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9w
UmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJhcHBs
eWluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CiAKLSAgICAgICAgaWYgKGl0ZW0tPmlzPE1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSkgeworICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXI+KGl0ZW0pKSB7CiAgICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0g
aXRlbVNpemVJbkJ1ZmZlcjsKICAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9
IFN0b3BSZXBsYXlSZWFzb246OkNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI7Ci0gICAgICAg
ICAgICByZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBpdGVtLT5nZXQ8TWV0YUNv
bW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpLmlkZW50aWZpZXIoKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IFdURjo6Z2V0PE1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbSkuaWRlbnRpZmllcigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byBbcmVhc29u
Rm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJdID0gYXBwbHlJdGVt
KCppdGVtKTsgcmVhc29uRm9yU3RvcHBpbmcpIHsKKyAgICAgICAgaWYgKGF1dG8gW3JlYXNvbkZv
clN0b3BwaW5nLCBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyXSA9IGFwcGx5SXRlbShp
dGVtKTsgcmVhc29uRm9yU3RvcHBpbmcpIHsKICAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JT
dG9wcGluZyA9ICpyZWFzb25Gb3JTdG9wcGluZzsKICAgICAgICAgICAgIHJlc3VsdC5taXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE3LDkgKzIxNSw5IEBAIFJlcGxh
eVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJv
b2wgdHJhY2tSZXBsYXlMaXN0CiAgICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBp
dGVtU2l6ZUluQnVmZmVyOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3Qp
KSB7Ci0gICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoKml0ZW0pOwotICAgICAgICAgICAg
aWYgKGl0ZW0tPmlzRHJhd2luZ0l0ZW0oKSkKLSAgICAgICAgICAgICAgICByZXBsYXlMaXN0LT5h
ZGREcmF3aW5nSXRlbUV4dGVudChXVEZNb3ZlKGV4dGVudCkpOworICAgICAgICAgICAgcmVwbGF5
TGlzdC0+YXBwZW5kKGl0ZW0pOworICAgICAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkp
CisgICAgICAgICAgICAgICAgcmVwbGF5TGlzdC0+YWRkRHJhd2luZ0l0ZW1FeHRlbnQoT3B0aW9u
YWw8RmxvYXRSZWN0PihleHRlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggMTgxYTEyYjBlNTE4ZThkYzIxZDNiNzQ5ZjI3
MTAxZDJhM2U5NmYzOS4uOWUwMzkyNWM2ZGY1ZmRkMjQ1NGNlYWE3MzE4MThmM2M5ZGJjMjZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDEyICs2NiwxMyBAQCBw
dWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB+RGVsZWdhdGUoKSB7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KEl0ZW1IYW5kbGUs
IEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBhcHBseShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mLCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIH07CiAgICAgCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0OwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29u
PiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1I
YW5kbGUpOworICAgIHVzaW5nIEFwcGx5SXRlbVJlc3VsdCA9IHN0ZDo6cGFpcjxPcHRpb25hbDxT
dG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj47
CisgICAgQXBwbHlJdGVtUmVzdWx0IGFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlE
aXNwbGF5TGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU4N2FlZDQwNjg3MmY0N2U3ZjFhOTg4MDU1NjQw
OGJlYWU4NjNjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcApAQCAtMCwwICsxLDEz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKKwor
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworY2xhc3MgV3JpdGluZ0NsaWVudCA6IHB1YmxpYyBJ
dGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CitwdWJsaWM6Citwcml2YXRlOgorICAgIEl0ZW1CdWZm
ZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QpIGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtSGVscGVyKGNvbnN0IFQmIGl0ZW0pCisg
ICAgeworICAgICAgICBWZWN0b3I8Y2hhcj4gYmFja2luZ1N0b3JlKHNpemVvZihpdGVtKSk7Cisg
ICAgICAgIG5ldyAoYmFja2luZ1N0b3JlLmRhdGEoKSkgVChpdGVtKTsKKyAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYmFja2luZ1N0b3JlKSk7CisgICAgfQorCisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
IGl0ZW0pIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdChbXShj
b25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlSXRlbUhlbHBlcihp
dGVtKTsKKyAgICAgICAgfSwgaXRlbSk7CisgICAgfQorCisgICAgdm9pZCBkaWRBcHBlbmREYXRh
KGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QsIERpZENoYW5nZUl0ZW1CdWZmZXIpIGZp
bmFsCisgICAgeworICAgIH0KK307CisKK2NsYXNzIFJlYWRpbmdDbGllbnQgOiBwdWJsaWMgSXRl
bUJ1ZmZlclJlYWRpbmdDbGllbnQgeworcHVibGljOgorcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8
c3RkOjpzaXplX3QgSSA9IDA+CisgICAgc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4g
ZGVjb2RlSXRlbUhlbHBlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
SXRlbVR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1
cm4gc3R5bGUgaGVyZSBiZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGls
ZXIuCisgICAgICAgIC8vIERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0
IHN0eWxlIHJ1bGUgYWJvdXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3Rl
YWQgb2YgImlmICgpIHsgcmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgICAgIC8vIG9y
IEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0
aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBp
ZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1
ZSkgeworICAgICAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFu
dF9hbHRlcm5hdGl2ZV90PEksIERpc3BsYXlMaXN0SXRlbT47CisgICAgICAgICAgICBpZiAodHlw
ZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZGVjb2RlSXRlbUhlbHBlcjxJICsgMT4oZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gc2l6ZW9mKERp
c3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5TGlzdEl0ZW0o
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3RJdGVtVHlwZSo+KGRhdGEpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgT3B0
aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBkZWNvZGVJdGVtSGVscGVyKGRhdGEsIGRhdGFMZW5ndGgs
IHR5cGUpOworICAgIH0KK307CisKK2NsYXNzIERlc3Ryb3lpbmdDbGllbnQgOiBwdWJsaWMgSXRl
bUJ1ZmZlclJlYWRpbmdDbGllbnQgeworcHVibGljOgorcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8
c3RkOjpzaXplX3QgSSA9IDA+CisgICAgc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4g
ZGVjb2RlSXRlbUhlbHBlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
SXRlbVR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1
cm4gc3R5bGUgaGVyZSBiZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGls
ZXIuCisgICAgICAgIC8vIERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0
IHN0eWxlIHJ1bGUgYWJvdXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3Rl
YWQgb2YgImlmICgpIHsgcmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgICAgIC8vIG9y
IEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0
aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBp
ZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1
ZSkgeworICAgICAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFu
dF9hbHRlcm5hdGl2ZV90PEksIERpc3BsYXlMaXN0SXRlbT47CisgICAgICAgICAgICBpZiAodHlw
ZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZGVjb2RlSXRlbUhlbHBlcjxJICsgMT4oZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gc2l6ZW9mKERp
c3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAgICAgICAgIGF1dG8mIG9iamVjdCA9ICpyZWludGVy
cHJldF9jYXN0PGNvbnN0IERpc3BsYXlMaXN0SXRlbVR5cGUqPihkYXRhKTsKKyAgICAgICAgICAg
IG9iamVjdC5+RGlzcGxheUxpc3RJdGVtVHlwZSgpOworICAgICAgICAgICAgcmV0dXJuIERpc3Bs
YXlMaXN0SXRlbShUcmFuc2xhdGUoMCwgMCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIGRl
Y29kZUl0ZW1IZWxwZXIoZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAgfQorfTsKKworSW5N
ZW1vcnlEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCisgICAgOiBtX3dyaXRpbmdD
bGllbnQoV1RGOjptYWtlVW5pcXVlPFdyaXRpbmdDbGllbnQ+KCkpCisgICAgLCBtX3JlYWRpbmdD
bGllbnQoV1RGOjptYWtlVW5pcXVlPFJlYWRpbmdDbGllbnQ+KCkpCit7CisgICAgc2V0SXRlbUJ1
ZmZlckNsaWVudChtX3dyaXRpbmdDbGllbnQuZ2V0KCkpOworICAgIHNldEl0ZW1CdWZmZXJDbGll
bnQobV9yZWFkaW5nQ2xpZW50LmdldCgpKTsKK30KKworSW5NZW1vcnlEaXNwbGF5TGlzdDo6fklu
TWVtb3J5RGlzcGxheUxpc3QoKQoreworICAgIERlc3Ryb3lpbmdDbGllbnQgZGVzdHJveWluZ0Ns
aWVudDsKKyAgICBzZXRJdGVtQnVmZmVyQ2xpZW50KCZkZXN0cm95aW5nQ2xpZW50KTsKKyAgICBh
dXRvIGVuZCA9IHRoaXMtPmVuZCgpOworICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHRoaXMtPmJl
Z2luKCk7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikKKyAgICAgICAgaXRlcmF0b3Iub3Bl
cmF0b3IqKCk7Cit9CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQyYWI0ODA4NjIzZjhiZmY4OWI5NmFjYjUyNTAxMWExMDI3NjI1YjMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2NsYXNzIEluTWVtb3J5RGlzcGxh
eUxpc3QgOiBwdWJsaWMgRGlzcGxheUxpc3QgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IEluTWVtb3J5RGlzcGxheUxpc3QoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfklu
TWVtb3J5RGlzcGxheUxpc3QoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRl
bUJ1ZmZlcldyaXRpbmdDbGllbnQ+IG1fd3JpdGluZ0NsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQ+IG1fcmVhZGluZ0NsaWVudDsKK307CisKK30KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmgKaW5kZXggNmNhMWU2MGRhYWJlNmUwNTgxYzI0YjYxYWQwNGI5OTY4NTM3YWNjNi4u
NjVlMGVlMTJhNjdkOTI3NmI5ODFmYzEwNDM3MWZmYWYwMWQ5ZjM5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQs
MzUgKzc0LDI2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wgYXBwbHko
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byYgZ2V0
SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRJbWFnZURh
dGE+KCk7Ci0gICAgICAgICAgICBVTlVTRURfVkFSSUFCTEUoZ2V0SW1hZ2VEYXRhSXRlbSk7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDY0OSBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjpt
YWtlVmlzaXRvcihbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YSYp
IHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0
ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAg
ICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpQdXRJbWFnZURhdGE+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UHV0SW1hZ2VEYXRhJiBwdXRJbWFnZURhdGFJdGVtKSB7CiAgICAgICAgICAgICBwdXRJ
bWFnZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVt
LmltYWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRl
bS5kZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0JiBmbHVzaENvbnRleHQpIHsKICAgICAg
ICAgICAgIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKTsKLSAgICAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aENvbnRleHQ+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
Zmx1c2hDb250ZXh0LmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5kaWRGbHVzaChpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChp
dGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpLmlkZW50
aWZpZXIoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXImIG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcikgewor
ICAgICAgICAgICAgYXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9IG1ldGFDb21tYW5kQ2hhbmdl
SXRlbUJ1ZmZlci5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIsIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1l
ZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0p
IHsKKyAgICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRp
YUl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gV1RGOjp2
aXNpdCh2aXNpdG9yLCBpdGVtKTsKICAgICB9CiAKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
ZWUxNDJmMmY1OWZkYjZiNGNhYjU4OTM2NzAzZWRjMjZmY2YxOWI5Yi4uMjEzNDQxZGRjNWRlNzUy
NDlkNzFlN2YwNTk2YzRjMWM1NGE5ZTBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQs
MjAgKzExNCwxOCBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjph
cHBseU1lZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVt
KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlm
ICghaXRlbS5pczxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNwbGF5TGlz
dDo6UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxh
eWVyKG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpOwotICAgIGlmICghcGxheWVyKQorICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IERpc3BsYXlMaXN0OjpQYWludEZy
YW1lRm9yTWVkaWEmIG1lZGlhSXRlbSkgeworICAgICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCku
bWVkaWFQbGF5ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBjb250ZXh0
LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBs
YXllciwgbWVkaWFJdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIH0s
IFtdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOwor
ICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTgyLDcgKzE4MCw3IEBAIERpc3BsYXlMaXN0OjpSZXBs
YXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0
OjpEaXNwCiAgICAgZWxzZQogICAgICAgICByZXBsYXllckRlbGVnYXRlID0gc3RhdGljX2Nhc3Q8
VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyKj4oJmRlc3RpbmF0aW9uKTsKIAotICAgIHJl
dHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgeworICAgIHJldHVybiBEaXNwbGF5
TGlzdDo6UmVwbGF5ZXIgewogICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCiAgICAgICAg
IGRpc3BsYXlMaXN0LAogICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVy
cygpLApAQCAtMzExLDEyICszMDksMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKICAgICB9
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1Jl
YWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyKQogewogICAgIG1fcGVuZGluZ1dha2V1cElu
Zm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUo
KSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNp
ZmllZCB9LCBXVEY6Om51bGxvcHQgfX07CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRS
ZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkltYWdl
RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSW50
UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxJbWFnZURhdGE+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0zMjYsNyArMzI0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJ
bWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGltYWdlRGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9u
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzM2LDcgKzMzNCw3IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh1
cmxTdHJpbmcpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9y
SW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0
YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAg
LTM0Niw3ICszNDQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJ
bWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpbwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM1Niw3ICszNTQsNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0YSkpOwog
fQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvcklt
YWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBG
b3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJl
c2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzY1LDE4ICszNjMsMTggQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW5kZXJpbmcKICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBpbWFnZSA9
IGltYWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6
RG9udENvcHlCYWNraW5nU3RvcmUpOworICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXIt
PmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5OjpEb250Q29weUJhY2tpbmdTdG9yZSk7
CiAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8g
YmFja2VuZFNpemUgPSBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsKLSAgICAgICAgYXV0byBy
ZXN1bHRTaXplID0gcHJlc2VydmVSZXNvbHV0aW9uID09IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1
dGlvbjo6WWVzID8gYmFja2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKKyAg
ICAgICAgYXV0byByZXN1bHRTaXplID0gcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzID8gYmFja2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsK
ICAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShy
ZXN1bHRTaXplLCB7IH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKICAgICAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBj
b250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7
IH0sIHJlc3VsdFNpemUgfSwgRmxvYXRSZWN0IHsgeyB9LCBiYWNrZW5kU2l6ZSB9LCB7IFdlYkNv
cmU6OkNvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOworICAgICAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoKmltYWdlLCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7IH0sIHJlc3VsdFNpemUg
fSwgRmxvYXRSZWN0IHsgeyB9LCBiYWNrZW5kU2l6ZSB9LCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpD
b3B5IH0pOwogICAgICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogICAgIH0oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZSkpOwpAQCAtNDM0LDEwNiArNDMy
LDMzIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlz
cGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQp
LT5hcmd1bWVudHMpOwogfQogCi1PcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FS
Tl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUs
IHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgor
c3RhdGljIGlubGluZSBPcHRpb25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBkZWNv
ZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZSB0eXBlKQogewotICAgIC8qIFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlzSW5saW5l
SXRlbSgpIGluIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwLCAoMikgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6ZW5jb2RlSXRlbSgpLAotICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0
ZXhwciBib29sIGlzSW5saW5lSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNz
ZXMuCi0gICAgICogU2VlIHRoZSBjb21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVt
cy5oIGZvciB3aHkuICovCi0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdGb2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3Rz
PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6RHJhd0dseXBocz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6
RHJhd1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0YSwgbGVuZ3Ro
LCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQ
YXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUGF0
aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3Jl
YXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVM
b2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxs
UmVjdFdpdGhHcmFkaWVudD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6U2V0TGluZURhc2g+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0U3RhdGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxl
TG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTdHJva2VQYXRoPihk
YXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpSb3RhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNhdmU6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGlu
ZUZpbGxDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmls
bEdyYWRpZW50OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJv
a2VDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpUcmFuc2xhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkdldEltYWdl
RGF0YTogewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQorICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBiZWNhdXNl
IG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgLy8gRG9pbmcgc28g
d291bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBkb2luZyAi
aWYgKCkgeyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1cm47IH0g
ZWxzZSB7IHJldHVybjsgfSIKKyAgICAvLyBvciBCKSBjYXVzZSB0aGUgY29tcGlsZXIgdG8gaW5m
aW5pdGVseSByZWN1cnNlIHdoZW4gZ2VuZXJhdGluZyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMg
b2YgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6
ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjo6dmFsdWUpIHsKKyAgICAgICAgdXNpbmcg
RGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEksIERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIGlmICh0eXBlICE9IERpc3BsYXlM
aXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZUl0ZW08SSAr
IDE+KGRhdGEsIGxlbmd0aCwgdHlwZSk7CisKKyAgICAgICAgQVNTRVJUKCFEaXNwbGF5TGlzdEl0
ZW1UeXBlOjppc0lubGluZUl0ZW0pOworICAgICAgICBpZiBjb25zdGV4cHIgKCFEaXNwbGF5TGlz
dEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9
IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2luZ2xlT2JqZWN0PERpc3BsYXlMaXN0SXRlbVR5cGU+KGRh
dGEsIGxlbmd0aCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQudmFs
dWUoKSkgfTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQog
CitPcHRpb25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkKK3sKKyAgICByZXR1
cm4gV2ViS2l0OjpkZWNvZGVJdGVtKGRhdGEsIGxlbmd0aCwgdHlwZSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKaW5kZXggMzk0M2Q1MjFkMzY5M2ZiZDJjZWYzNmI0N2QzNDk2YjFjMmRmMzY1OS4u
YzljYzdjMDg0ZmFkY2RiZjNiYjRhYzI5Y2E5NTlkOGYxYTllMzczZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUmIHJl
bW90ZVJlc291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGU7IH0KIAog
ICAgIC8vIFJlbmRlcmluZyBvcGVyYXRpb25zLgotICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYp
OworICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVz
c2FnZXMgdG8gYmUgc2VudC4KICAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CkBAIC04NiwxOSArODYsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLCBJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgb3ZlcnJpZGU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2Rl
QW5kQ3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhh
bmRsZUxvY2F0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IElQQzo6RGVjb2Rl
cjo6ZGVjb2RlU2luZ2xlT2JqZWN0PFQ+KGRhdGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBXZWJLaXQyIHNob3VsZCBub3QgbmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDgg
Ynl0ZXMgYXQgdGhlIGhhbmRsZSBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSB0eXBlLgotICAgICAgICAg
ICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0
aGluIGRpc3BsYXkgbGlzdCBjb2RlIGluIFdlYkNvcmUuCi0gICAgICAgICAgICBuZXcgKGhhbmRs
ZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7Ci0gICAgICAg
ICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQg
c3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6
OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxP
ZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDViYmYyNTYzMDYyOTBlNDlhYzhkYjMx
YjVkMDFhYzk2YjU2YWFjNDIuLjU3N2JmNTlmOWRmNjU3YTVmYzQyMjg5NWJmZWVlMDRkYjhhNDhk
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0zMDEsMTAzICszMDEsMjAgQEAg
cHJvdGVjdGVkOgogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGUgaXRlbSkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIC8qIFRoaXMgbmVlZHMg
dG8gbWF0Y2ggKDEpIGlzSW5saW5lSXRlbSgpIGluIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwLCAo
MikgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSgpLAotICAgICAgICAgKiBhbmQg
KDMpIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUg
dGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLgotICAgICAgICAgKiBTZWUgdGhlIGNvbW1lbnQg
YXQgdGhlIHRvcCBvZiBEaXNwbGF5TGlzdEl0ZW1zLmggZm9yIHdoeS4gKi8KLQotICAgICAgICBz
d2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rl
cjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRo
PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oKSk7Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAg
ICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Q2xpcFBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlw
UGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpE
cmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29k
ZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGl0
ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVj
dHM6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0cz4oaXRlbS5nZXQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0cz4oKSk7Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICAgICAgcmV0
dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3R2x5cGhzPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4o
KSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGlu
ZXNGb3JUZXh0OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xl
T2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oKSk7Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgICAgIHJl
dHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oKSk7
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9z
aXRlZFJlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVP
YmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oaXRlbS5nZXQ8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oKSk7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgICAg
IHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RmlsbFBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUGF0aD4o
KSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhDb2xvcjoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmds
ZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KGl0ZW0uZ2V0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4oKSk7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoK
LSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAg
ICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAg
ICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZpbGxSb3VuZGVkUmVjdD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVy
OjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4o
aXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSk7Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAg
ICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpT
ZXRMaW5lRGFzaD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTZXRTdGF0ZToKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNp
bmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU+KGl0ZW0uZ2V0PFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6
RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJva2VQ
YXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ryb2tlUGF0aD4oKSk7Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxl
RmFjdG9yOgotI2lmIFVTRShDRykKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3Q6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclNoYWRv
dzoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZm
ZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNl
OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3TGluZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdSZWN0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxJbmxpbmVQ
YXRoOgotI2VuZGlmCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsUmVjdDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkZsdXNoQ29udGV4dDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50
RnJhbWVGb3JNZWRpYToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlJlc3RvcmU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpSb3RhdGU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
YXZlOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2NhbGU6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxs
Q29sb3I6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJ
bmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5j
b2RlSXRlbUhlbHBlcihjb25zdCBUJiBpdGVtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHBy
ICghVDo6aXNJbmxpbmVJdGVtKQorICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5j
b2RlU2luZ2xlT2JqZWN0PFQ+KGl0ZW0pOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBy
ZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIC0+IFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVJdGVt
SGVscGVyKGRpc3BsYXlMaXN0SXRlbSk7CisgICAgICAgIH0sIGl0ZW0pOwogICAgIH0KIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBj
cmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBiM2E0NmFmZWYzMWU1MjQ2MDllMDQ2YjhmMDE1OTY5M2I4OTIy
MGZjLi4zMGM4MGM0Zjg0MGE3MGYzMGY5N2FhOWU0MzRlNzQ1NzJlOTBkMzQzIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMjEtMDMtMjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1pZ3JhdGUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHRvIHVz
ZSBhIFZhcmlhbnQgaW5zdGVhZCBvZiBJdGVtSGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9E
aXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBOb3cg
dGhhdCBhIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGFuZCBJdGVtQnVmZmVyV3JpdGluZ0NsaWVu
dCBhcmUKKyAgICAgICAgICAgICAgICBuZWNlc3NhcnkgZm9yIHVzaW5nIG5vbi1pbmxpbmUgZGlz
cGxheSBsaXN0IGl0ZW1zLCBzcGVjaWZ5IHRoZW0gaGVyZSBpbiB0aGUgdGVzdC4KKyAgICAgICAg
ICAgICAgICBBbHNvLCBtaWdyYXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0g
bGluZS1ieS1saW5lLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9E
aXNwbGF5TGlzdFRlc3RzQ0cuY3BwOiBNaWdyYXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5
TGlzdEl0ZW0gbGluZS1ieS1saW5lLgorCiAyMDIxLTAzLTIyICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0c2NtcHldIEJhc2UgR2l0SHViIG1v
Y2sgbGlua3Mgb24gcHJvdmlkZWQgcmVtb3RlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggMWNlMTQ2MjhjZWQ1
ZTAwNjQyNWQyZWMyOWYxZGUwZWI3MWZlMTM3NC4uMTc3N2RiNzNkNzI3ODJlOWNiMmRjM2E4MDc4
ZDg4MmQyMzQ4MWYxOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1z
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFkaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5NZW1vcnlEaXNwbGF5TGlz
dC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTU4LDcgKzYwLDExIEBAIHN0YXRpYyBQYXRoIGNyZWF0ZUNvbXBsZXhQYXRoKCkKIAog
VEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKIHsKLSAgICBEaXNwbGF5TGlzdCBs
aXN0OworICAgIFZlY3RvcjxGaWxsUGF0aD4gZmlsbFBhdGhTdG9yYWdlOworICAgIFZlY3RvcjxG
aWxsUmVjdFdpdGhHcmFkaWVudD4gZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlOworICAgIFZl
Y3RvcjxGaWxsUmVjdFdpdGhDb2xvcj4gZmlsbFJlY3RXaXRoQ29sb3JTdG9yYWdlOworCisgICAg
SW5NZW1vcnlEaXNwbGF5TGlzdCBsaXN0OwogCiAgICAgRVhQRUNUX1RSVUUobGlzdC5pc0VtcHR5
KCkpOwogCkBAIC03OCw1NiArODQsMzUgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJ
dGVtcykKICAgICBFWFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5KCkpOwogCiAgICAgYm9vbCBvYnNl
cnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVu
dCwgc2l6ZV0gOiBsaXN0KSB7Ci0gICAgICAgIHN3aXRjaCAoaGFuZGxlLT50eXBlKCkpIHsKLSAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOiB7Ci0gICAgICAgICAgICBF
WFBFQ1RfRkFMU0UoaGFuZGxlLT5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNU
X1RSVUUoaGFuZGxlLT5pczxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgICAgICAgICAgYXV0
byYgaXRlbSA9IGhhbmRsZS0+Z2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKKyAgICAgICAgY29uc3QgYXV0byYg
W2l0ZW0sIGV4dGVudCwgc2l6ZV0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKKyAgICAgICAg
CisgICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFNldFN0
cm9rZVRoaWNrbmVzcyYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNE
cmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS50aGlja25lc3MoKSwgMS41
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxQYXRoOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzRHJhd2luZ0l0
ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPEZpbGxQYXRoPigpKTsK
LSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxGaWxsUGF0aD4oKTsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0IEZpbGxQYXRoJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJV
RShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucGF0aCgp
LnBsYXRmb3JtUGF0aCgpLCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50
OiB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7Ci0g
ICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPEZpbGxSZWN0V2l0aEdyYWRpZW50Pigp
KTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxGaWxsUmVjdFdpdGhHcmFk
aWVudD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVt
KSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAg
ICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVjdCgpLCBGbG9hdFJlY3QoMS4sIDEuLCAxMC4sIDEwLikp
OwogICAgICAgICAgICAgRVhQRUNUX0VRKCZpdGVtLmdyYWRpZW50KCksIGdyYWRpZW50LnB0cigp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZUZpbGxDb2xvcjogewotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS0+
aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8U2V0
SW5saW5lRmlsbENvbG9yPigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdl
dDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBTZXRJbmxpbmVG
aWxsQ29sb3ImIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShpdGVtLmlzRHJhd2lu
Z0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0uY29sb3IoKSwgQ29sb3I6OnJlZCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOiB7Ci0gICAgICAg
ICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBF
WFBFQ1RfVFJVRShoYW5kbGUtPmlzPFN0cm9rZUlubGluZVBhdGg+KCkpOwotICAgICAgICAgICAg
YXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PFN0cm9rZUlubGluZVBhdGg+KCk7CisgICAgICAgIH0s
IFsmXShjb25zdCBTdHJva2VJbmxpbmVQYXRoJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgY29uc3QgYXV0byBwYXRoID0g
aXRlbS5wYXRoKCk7CiAgICAgICAgICAgICBhdXRvJiBsaW5lID0gcGF0aC5pbmxpbmVEYXRhPExp
bmVEYXRhPigpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGxpbmUuc3RhcnQsIEZsb2F0UG9pbnQo
MCwgMCkpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGxpbmUuZW5kLCBGbG9hdFBvaW50KDEwLiwg
MTUuKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNh
c2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgIH0sIFsmXShjb25zdCBNZXRhQ29tbWFu
ZENoYW5nZUl0ZW1CdWZmZXImKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBhdXRvJikgewogICAg
ICAgICAgICAgb2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSA9IHRydWU7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBXVEY6OnZpc2l0
KHZpc2l0b3IsIGl0ZW0pOwogICAgIH0KIAogICAgIEVYUEVDVF9GQUxTRShvYnNlcnZlZFVuZXhw
ZWN0ZWRJdGVtKTsKQEAgLTE0NywxMSArMTMyLDExIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywg
QXBwZW5kSXRlbXMpCiAKICAgICBsaXN0LmFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oRmxvYXRS
ZWN0IHsgMCwgMCwgMTAwLCAxMDAgfSwgQ29sb3I6OmJsYWNrKTsKIAotICAgIGZvciAoYXV0byBb
aGFuZGxlLCBleHRlbnQsIHNpemVdIDogbGlzdCkgewotICAgICAgICBFWFBFQ1RfRVEoaGFuZGxl
LT50eXBlKCksIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKGhhbmRsZS0+aXM8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOworICAgIGZvciAoY29uc3QgYXV0
byYgZGlzcGxheUxpc3RJdGVtIDogbGlzdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEZpbGxSZWN0V2l0aENvbG9yPihkaXNwbGF5TGlzdEl0ZW0tPml0ZW0p
KTsKKyAgICAgICAgY29uc3QgYXV0byYgaXRlbSA9IFdURjo6Z2V0PEZpbGxSZWN0V2l0aENvbG9y
PihkaXNwbGF5TGlzdEl0ZW0tPml0ZW0pOworICAgICAgICBFWFBFQ1RfRVEoaXRlbS5pdGVtVHlw
ZSwgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKIAotICAgICAgICBhdXRvJiBpdGVtID0g
aGFuZGxlLT5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7CiAgICAgICAgIEVYUEVDVF9FUSgqaXRl
bS5jb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICBF
WFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIH0K
QEAgLTE3MywxMiArMTU4LDExIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNs
aWVudCkKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8SXRlbUhh
bmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9u
KSBmaW5hbAorICAgICAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JF
VFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJ
dGVtVHlwZSB0eXBlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEodHlw
ZSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGFMZW5n
dGgsIHNpemVvZihzaXplX3QpKTsKLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBz
aXplb2YodWludDY0X3QpKSBTdHJva2VQYXRoKG1faXRlbXNbKnJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgc2l6ZV90Kj4oZGF0YSldKTsKLSAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlv
biB9fTsKKyAgICAgICAgICAgIHJldHVybiB7IERpc3BsYXlMaXN0SXRlbShTdHJva2VQYXRoKG1f
aXRlbXNbKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKSkgfTsKICAgICAg
ICAgfQogCiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVtczsKQEAgLTE5
NCwxNCArMTc4LDE0IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkK
ICAgICBwcml2YXRlOgogICAgICAgICBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIo
c2l6ZV90IGNhcGFjaXR5KSBmaW5hbAogICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfTFQo
Y2FwYWNpdHksIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSk7CisgICAgICAgICAgICBFWFBFQ1Rf
TEUoY2FwYWNpdHksIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSk7CiAgICAgICAgICAgICByZXR1
cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVt
QnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW0oSXRlbUhhbmRsZSBoYW5kbGUpIGNvbnN0IGZpbmFsCisgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVt
KSBjb25zdCBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVt
cy5zaXplKCk7Ci0gICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChoYW5kbGUuZ2V0PFN0cm9rZVBh
dGg+KCkpOworICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoV1RGOjpnZXQ8U3Ryb2tlUGF0aD4o
aXRlbSkpOwogICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KCZpbmRleCksIHNpemVvZihzaXplX3QpKTsKICAgICAgICAgfQog
CkBAIC0yMjUsOCArMjA5LDggQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xp
ZW50KQogICAgIHNoYWxsb3dDb3B5LnNldEl0ZW1CdWZmZXJDbGllbnQoJnJlYWRlcik7CiAKICAg
ICBWZWN0b3I8SXRlbVR5cGU+IGl0ZW1UeXBlczsKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0
ZW50LCBzaXplXSA6IHNoYWxsb3dDb3B5KQotICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGhhbmRs
ZS0+dHlwZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IHNoYWxs
b3dDb3B5KQorICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGl0ZW1UeXBlKGRpc3BsYXlMaXN0SXRl
bS0+aXRlbSkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHNoYWxsb3dDb3B5LmlzRW1wdHkoKSk7CiAg
ICAgRVhQRUNUX0VRKGl0ZW1UeXBlcy5zaXplKCksIDRVKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
aW5kZXggYjU2OWYzNDA3ZTA3NTE1ZjYyZTE5MDFlZTAyMmQ0MTk0N2ZmMzg5YS4uMWIyNWVmMjI1
MmM5NGMyYjZhNmIyNGIzOTY2Njg3MGM4NDAwMzhlYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
ODUsNyArODUsNyBAQCBzdGF0aWMgSXRlbUJ1ZmZlcklkZW50aWZpZXIgZ2xvYmFsQnVmZmVySWRl
bnRpZmllciA9IEl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcgogCiBjbGFzcyBSZWFkaW5nQ2xp
ZW50IDogcHVibGljIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKIHByaXZhdGU6Ci0gICAgT3B0
aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWlu
dDhfdCosIHNpemVfdCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCopIGZpbmFsCisgICAgT3B0aW9u
YWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1
aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlKSBmaW5hbAogICAgIHsKICAgICAgICAgRVhQ
RUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpGaWxsUGF0aCk7CiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHsgZ2xv
YmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNh
cGFjaXR5IH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJ
dGVtSGFuZGxlKSBjb25zdCBmaW5hbCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mKSBjb25zdCBmaW5hbCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CiAgICAg
dm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QsIERpZENo
YW5nZUl0ZW1CdWZmZXIpIGZpbmFsIHsgfQogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423992</attachid>
            <date>2021-03-22 23:57:31 -0700</date>
            <delta_ts>2021-03-24 00:58:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-223560-20210322235730.patch</filename>
            <type>text/plain</type>
            <size>177173</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNkZjVhNWQxMjg0ZDAw
MGZhYjlmZTlmZjRhMWNiZTA2ODZmZGNlZC4uMjVmZWJhZTMyZDQxM2JmNDcyNzNmNzFiYmNhNmZm
MDZmMmFiMWFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAyMS0wMy0yMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gUmVwbGFjZSBJdGVtSGFuZGxlIHdpdGggYSBjb25zdCBWYXJpYW50JgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gs
IHdlIHdlcmUgcmVwcmVzZW50aW5nIHRoZSBjb25jZXB0IG9mICJhbiB1bmtub3duIERpc3BsYXlM
aXN0SXRlbSIgd2l0aCBJdGVtSGFuZGxlLAorICAgICAgICB3aGljaCB3YXMgYSBwb2ludGVyIHRv
IGEgYnl0ZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIERpc3BsYXlMaXN0OjpJdGVyYXRvci4gVGhl
IGZpcnN0IGJ5dGUgd2FzIGFuCisgICAgICAgIGVudW0gdmFsdWUgd2hpY2ggdG9sZCB5b3UgaG93
IHRvIGludGVycHJldCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkYXRhLiBUaGUgcmVtYWluZGVyIG9m
IHRoZSBieXRlcworICAgICAgICB3ZXJlIGp1c3QgYW4gb2JqZWN0LCBwbGFjZWQgdGhlcmUgYnkg
cGxhY2VtZW50IG5ldy4KKworICAgICAgICBUaGlzIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBh
cyBhIFZhcmlhbnQuIFVzaW5nIGEgcmVhbCB2YXJpYW50IGhhcyBhIGZldyBiZW5lZml0cyBvdmVy
IHRoaXMgY3VzdG9tCisgICAgICAgIHNvbHV0aW9uLCB0aG91Z2g6CisgICAgICAgIDEuIEJldHRl
ciB0eXBlIHNhZmV0eS4gV2UgZG9uJ3QgaGF2ZSB0byByZWFkIGluZGl2aWR1YWwgYnl0ZXMgYW5k
IGludGVycHJldCBvdGhlciBieXRlcyBvdXJzZWx2ZXMuCisgICAgICAgICAgICAgICBJbnN0ZWFk
LCB3ZSBjYW4gcmVseSBvbiB0aGUgVmFyaWFudCBpbmZyYXN0cnVjdHVyZSB0byBkbyB0aGlzLCB3
aGljaCBpcyB2ZXJ5IHdlbGwtdGVzdGVkLgorICAgICAgICAyLiBJdCdzIGxlc3MgZXJyb3ItcHJv
bmUsIGJlY2F1c2Ugd2UgY2FuIHVzZSB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmcgdG8gY2F1c2Ug
dGhlIGNvbXBpbGVyIHRvCisgICAgICAgICAgICAgICBnZW5lcmF0ZSBmdW5jdGlvbnMgZm9yIHVz
LiBGb3IgZXhhbXBsZSwgd2UgY2FuIGRvIHNvbWV0aGluZyBsaWtlCisKKyAgICAgICAgcmV0dXJu
IFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSAtPiBib29sIHsKKyAg
ICAgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdEl0ZW0uaXNEcmF3aW5nSXRlbTsKKyAgICAgICAg
fSwgZGlzcGxheUxpc3RJdGVtKTsKKworICAgICAgICBpbnN0ZWFkIG9mCisKKyAgICAgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgorICAgICAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0Ogor
ICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xlYXJSZWN0OgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKKyAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CisgICAgICAgIC4uLgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgVGhpcyBwYXRjaCBhY3R1YWxseSBkZWxl
dGVzIGFsbCBvZiB0aGUgcGxhY2VzIHdoZXJlIHdlIGhhdmUgYmlnIHN3aWNoIHN0YXRlbWVudHMg
b2YgZHJhd2luZyBjb21tYW5kcywKKyAgICAgICAgYW5kIHJlcGxhY2VzIHRoZW0gYWxsIHdpdGgg
c2ltaWxhciB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmcuIEFzIHN1Y2gsIHRoaXMgcGF0Y2ggZGVs
ZXRlcyBtb3JlIHRoYW4KKyAgICAgICAgMTIwMCBsaW5lcyB0aGFuIGl0IGFkZHMuCisKKyAgICAg
ICAgTW9zdCBvZiB0aGlzIHBhdGNoIGlzIGp1c3QgYSBkaXJlY3QgdHJhbnNsYXRpb24gZnJvbSBJ
dGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbSAod2hpY2ggaXMgYSB0eXBlZGVmCisgICAgICAg
IHRvIGEgVmFyaWFudCksIGxpbmUtYnktbGluZS4gSG93ZXZlciwgdGhlcmUgYXJlIHR3byBub24t
dHJpdmlhbCBjaGFuZ2VzOgorCisgICAgICAgIDEuIFRoZSBjb21wbGV4aXR5IGluc2lkZSBEaXNw
bGF5TGlzdDo6SXRlcmF0b3IgaXMgc2lnbmlmaWNhbnRseSByZWR1Y2VkIGJlY2F1c2UgaXQgbm8g
bG9uZ2VyIGhhcyB0bworICAgICAgICAgICAgICAgYWxsb2NhdGUgdGhlIGJhY2tpbmcgc3RvcmFn
ZSBmb3IgdGhlIEl0ZW1IYW5kbGUuIEkndmUgYWxzbyBzaW1wbGlmaWVkIHRoZSByZXR1cm4gdHlw
ZSBvZgorICAgICAgICAgICAgICAgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvciooKSB0
byBtYWtlIGl0IGEgbGl0dGxlIG1vcmUgY2xlYXIgd2hhdCB0aGUgZmllbGRzIG1lYW4uCisgICAg
ICAgIDIuIEkndmUgbWFkZSB1c2luZyBhIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGFuZCBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCByZXF1aXJlZCBmb3IgdXNpbmcgbm9uLWlubGluZQorICAgICAg
ICAgICAgICAgZGlzcGxheSBsaXN0IGl0ZW1zLiBUaGVzZSBjbGllbnRzIHdlcmUgYWx3YXlzIHNw
ZWNpZmllZCBpbiBXZWJLaXQgLSB0aGV5IHdlcmUgb25seSBvcHRpb25hbCBmb3IKKyAgICAgICAg
ICAgICAgIHRlc3RpbmcuIEhvd2V2ZXIsIHRoZSBjb2RlIGNvdWxkIGJlIHNpZ25pZmljYW50bHkg
c2ltcGxpZmllZCBpZiB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSB0aGUKKyAgICAgICAgICAgICAg
IGNhc2Ugb2Ygbm9uLWlubGluZSBpdGVtcyB3aXRob3V0IHRoZXNlIGNsaWVudHMuIEFuZCwgcGhp
bG9zb3BoaWNhbGx5LCB0aGVzZSBjbGllbnRzICpzaG91bGQqIGJlCisgICAgICAgICAgICAgICBy
ZXF1aXJlZCB0byBkbyBlbmNvZGluZy9kZWNvZGluZywgd2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBu
b24taW5saW5lIGl0ZW1zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlz
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6IExp
bmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0ZW1IYW5kbGUgdG8KKyAgICAgICAgICAgICAg
RGlzcGxheUxpc3RJdGVtLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpzaG91bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0Ojphc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6YXBwZW5kKTogV2UgY2FuIG1ha2UgdGhlIGNvbXBpbGVyIGdlbmVy
YXRlIHRoaXMgZnVuY3Rpb24hCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6aXRlcmF0b3I6OmF0RW5kIGNvbnN0KTogRGVsZXRlZC4gTW92ZWQgdG8gRGlzcGxh
eUxpc3RJdGVyYXRvci5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKTogRGVsZXRlZC4gRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjphZHZhbmNl
KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKTogRGVsZXRlZC4gRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlVG9F
bmQpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKTogRGVs
ZXRlZC4gRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Oml0ZXJhdG9yOjppdGVyYXRvcik6IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6fml0ZXJhdG9yKTogRGVsZXRlZC4g
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJh
dG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4gRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9y
OjpvcGVyYXRvcisrKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOiBEZWxldGVkLiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6Oml0ZW1CdWZmZXIgY29uc3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YmVnaW4gY29uc3QpOiBEZWxldGVkLiBNb3ZlZCB0
byB0aGUgLmNwcCBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjplbmQgY29uc3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKTogQmVjYXVzZSB0aGlz
IHBhdGNoIHN0YXJ0cyByZXF1aXJpbmcgYQorICAgICAgICAgICAgSXRlbUJ1ZmZlclJlYWRpbmdD
bGllbnQgZm9yIGFueSBub24taW5saW5lIGl0ZW1zLCB3aGljaCBpcyBubyBwcm9ibGVtIGJlY2Fz
dWUgd2Ugd2VyZSBhbHdheXMKKyAgICAgICAgICAgIHNwZWNpZnlpbmcgb25lIGluIFdlYktpdCBh
bnl3YXksIHdlIG5vIGxvbmdlciBuZWVkIG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZl
cnMuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6b3BlcmF0b3I9
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6Y2xl
YXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpz
d2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlOjpkZXNjcmlwdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBwbHkpOiBEZWxldGVkLiBXZSBjYW4gbWFrZSB0
aGUgY29tcGlsZXIgZ2VuZXJhdGUgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KTogRGVsZXRlZC4gVGhlcmUgd2VyZSB0d28g
cGxhY2VzIHdoZXJlIHRoaXMgd2FzIHVzZWQ6CisgICAgICAgICAgICAxLiBXZSByb3VuZC10cmlw
cGVkIHRocm91Z2ggSXRlbUhhbmRsZSB3aGVuZXZlciBhcHBlbmRpbmcgYW4gaXRlbSwganVzdCBz
byB3ZSBjb3VsZCBwYXNzIGRhdGEgdG8KKyAgICAgICAgICAgICAgICAgICBJdGVtQnVmZmVyUmVh
ZGluZ0NsaWVudC4gVGhpcyBpcyB1bm5lY2Vzc2FyeSBub3cgdGhhdCB3ZSBjYW4ganVzdCBwYXNz
IERpc3BsYXlMaXN0SXRlbQorICAgICAgICAgICAgICAgICAgIGluc3RlYWQuCisgICAgICAgICAg
ICAyLiBEZXN0cm95aW5nIG5vbi1pbmxpbmUgaXRlbXMgd2hpY2ggd2VyZSBhcHBlbmRlZCB3aXRo
b3V0IGEgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQuIEFib3ZlIEkKKyAgICAgICAgICAgICAgICAg
ICBkZXNjcmliZSB0aGF0IHRoaXMgcGF0Y2ggc3RhcnRzIHJlcXVpcmluZyBhIEl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50IGZvciBhbnkgbm9uLWlubGluZSBpdGVtcywKKyAgICAgICAgICAgICAgICAg
ICB3aGljaCBpcyBubyBwcm9ibGVtIGJlY2F1c2Ugd2Ugd2VyZSBhbHdheXMgc3BlY2lmeWluZyBv
bmUgaW4gV2ViS2l0IGFueXdheS4KKyAgICAgICAgICAgIFNvLCBuZWl0aGVyIG9mIHRoZXNlIHNp
dHVhdGlvbnMgc3Vydml2ZWQgdGhpcyBwYXRjaCwgc28gdGhpcyBlbnRpcmUgZnVuY3Rpb24gaXMg
ZGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpjb3B5SW50byk6IERlbGV0
ZWQuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhpcyBub3cgdGhhdCB0aGUgaXRlcmF0b3IgZG9lc24n
dAorICAgICAgICAgICAgYWxsb2NhdGUgc3RvcmFnZSBmb3IgdGhlIEl0ZW1IYW5kbGUuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6c2FmZUNvcHkgY29uc3QpOiBE
ZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjptX2FsbG9jYXRl
ZEJ1ZmZlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOiBNaWdyYXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNw
bGF5TGlzdEl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6
dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjppc0RyYXdpbmdJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpvcGVyYXRvciBib29sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpvcGVyYXRvciEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnR5
cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU6OmlzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtSGFuZGxlOjpnZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg6IEFk
ZGVkLiBNb3ZlZCBmcm9tCisgICAgICAgICAgICAgIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwOiBSZW1vdmVkLiBUaGUgY29tcGlsZXIgY2FuIGdlbmVyYXRlIGFsbCBvZgorICAgICAg
ICAgICAgICB0aGVzZSBmdW5jdGlvbnMhISEKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0
ZW1zLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFw
cGx5IGNvbnN0KTogYXBwbHkoKSBuZWVkcyB0byBiZSBjb25zdCBmb3IgdGhlIHRlbXBsYXRlCisg
ICAgICAgICAgICAgIG1ldGFwcm9ncmFtbWluZyB0byB3b3JrLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOiBUaGUgY29tcGlsZXIgY2FuIGdlbmVyYXRlIHRoaXMg
ZnVuY3Rpb24hCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlw
aHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KTogTmVlZHMgdG8gYmUgY29uc3QgZm9yIHRoZSB0ZW1w
bGF0ZQorICAgICAgICAgICAgICBtZXRhcHJvZ3JhbW1pbmcgdG8gd29yay4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKTogTW92ZWQgZnJvbSBEaXNwbGF5TGlz
dEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpp
dGVtVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNp
emVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHA6IEFk
ZGVkLiBUaGUgc2ltcGxpZmllZCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICAgICAgICB0aGUg
aXRlcmF0b3IuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjphdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSBjb25z
dCk6IFRoaXMgaXMgdGhlIG1hZ2ljLiBXZSBjYW4gYWN0dWFsbHkKKyAgICAgICAgICAgICAgcmVj
dXJzZSBvdmVyIHRoZSBzZXQgb2YgdHlwZXMgaW4gdGhlIHZhcmlhbnQuIFdlIGRvIHRoaXMgd2l0
aCBhIHRlbXBsYXRlIHBhcmFtZXRlciB0aGF0IGlzIG9mIHR5cGUKKyAgICAgICAgICAgICAgc2l6
ZV90LiBXZSB1c2UgImlmIGNvbnN0ZXhwciIgdG8gaGFuZGxlIHRoZSBiYXNlIGNhc2UsIGFuZCB3
ZSBwdWxsIG91dCB0aGUgdHlwZSBieSB1c2luZworICAgICAgICAgICAgICBXVEY6OnZhcmlhbnRf
YWx0ZXJuYXRpdmVfdCB3aXRoIHRoZSBJIHRlbXBsYXRlIHBhcmFtZXRlci4gT25jZSB3ZSBoYXZl
IHRoZSBwYXJ0aWN1bGFyIHR5cGUgaW4gdGhlCisgICAgICAgICAgICAgIFZhcmlhbnQsIHdlIHB1
bGwgb3V0IGl0cyBpdGVtVHlwZSBhbmQgY29tcGFyZSBhZ2FpbnN0IHRoZSBpdGVtVHlwZSBpbiB0
aGUgYnVmZmVyLiBJZiBpdCBkb2Vzbid0CisgICAgICAgICAgICAgIG1hdGNoLCB3ZSByZWN1cnNl
IHdpdGggSSArIDEsIGFuZCBpdCBkb2VzIG1hdGNoLCB3ZSBydW4gdGhlIHNhbWUgcGFyc2luZyBy
b3V0aW5lcyB0aGF0IHdlcmUgaW4gdGhlCisgICAgICAgICAgICAgIG9sZCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgaXRlcmF0b3IgYmVmb3JlIHRoaXMgcGF0Y2guCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3Vy
cmVudEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjplbmRPZkN1cnJlbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmg6IEFkZGVkLiBUaGlz
IGlzIHNpZ25pZmljYW50bHkgc2ltcGxpZmllZCBmcm9tIHRoZQorICAgICAgICAgICAgICB3YXkg
aXQgd29ya2VkIGJlZm9yZSB0aGlzIHBhdGNoLiBXZSBubyBsb25nZXIgaGF2ZSB0byBhbGxvY2F0
ZSBzdG9yYWdlIGZvciB0aGUgSXRlbUhhbmRsZXMuIFdlIGhhdmUKKyAgICAgICAgICAgICAgc2ln
bmlmaWNhbnRseSBmZXdlciBtZW1iZXIgdmFyaWFibGVzLCB0b28uCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6aXRlbUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kRHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbU9mVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0
ZW1PZlR5cGUpOiBNb3ZlZCBmcm9tIHRoZSAuY3BwIGZpbGUuIEJlY2F1c2UgaXQncyBhIHRlbXBs
YXRlLAorICAgICAgICAgICAgICBpdCBoYXMgdG8gYmUgaGVyZS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlJbWFnZUJ1ZmZlckl0ZW0pOiBMaW5lLWJ5LWxp
bmUgdHJhbnNsYXRpb24gZnJvbSBJdGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbS4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlGb250SXRlbSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5KTogSGVscGVyLiBPbmx5IGNhbGwg
dGhlIGFwcGx5IGZ1bmN0aW9uIGluIHRoZSBEaXNwbGF5TGlzdCBpdGVtIGlmIGl0IGV4aXN0cy4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKTogTGlu
ZS1ieS1saW5lIHRyYW5zbGF0aW9uIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0u
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6IFVwZGF0
ZSBmb3IgdGhlIG5ldyByZXR1cm4gdHlwZSBvZgorICAgICAgICAgICAgICBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6Om9wZXJhdG9yKigpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlOjphcHBseSk6IExpbmUtYnktbGluZSB0cmFuc2xhdGlv
biBmcm9tIEl0ZW1IYW5kbGUgdG8KKyAgICAgICAgICAgICAgRGlzcGxheUxpc3RJdGVtLgorCiAy
MDIxLTAzLTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0dQVSBQcm9jZXNzXTogSW1wcm92ZSBnZXRJbWFnZURhdGEoKSBwZXJmIHBhcnQgMTog
QWRkIGEgR2V0SW1hZ2VEYXRhIGRpc3BsYXkgbGlzdCBpdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk2M2Q1MmQ5
MzFmYTA5ODcxMGU5MGE5NmE4ZjFhZWVhNjUyNTk3MjYuLmJlNWFhZDEzZDE5NGU4OGY3ODNkNTgy
NDU1Y2ViMjY0MGUwNTBjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDMtMjIg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIFJlcGxhY2UgSXRlbUhhbmRsZSB3aXRoIGEgY29uc3QgVmFyaWFudCYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzU2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOiBMaW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJv
bSBJdGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbS4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQpOiBUaGlzIGZpbGUgaGFzICJ1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZSIgc28gd2UgZG9uJ3QgbmVlZCB0bworICAgICAgICAgICAgICBx
dWFsaWZ5IG5hbWVzLiBEcm9wIHRoZSBXZWJDb3JlOjouCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0
bWFwRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6ZGVjb2RlSXRlbSk6
IFRoZSBjb21waWxlciBjYW4gZ2VuZXJhdGUgdGhpcyBmdW5jdGlvbiBmb3IgdXMsIGluIG11Y2gg
dGhlIHNhbWUgd2F5IHRoYXQgaXQgZGlkCisgICAgICAgICAgICAgIGZvciBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkZWNvZGVBbmRDcmVhdGUpOiBEZWxldGVkLiBObyBsb25nZXIgbmVjZXNzYXJ5IG5v
dyB0aGF0IHRoZSBjb21waWxlcgorICAgICAgICAgICAgICBpcyBnZW5lcmF0aW5nIG91ciBmdW5j
dGlvbnMgZm9yIHVzLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6ZW5jb2RlSXRlbUhlbHBlcik6IFRoZSBjb21waWxlciBjYW4gZ2VuZXJhdGUgdGhpcyBmdW5j
dGlvbiBmb3IgdXMuCisKIDIwMjEtMDMtMjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBJbXByb3ZlIGdldEltYWdlRGF0
YSgpIHBlcmYgcGFydCAxOiBBZGQgYSBHZXRJbWFnZURhdGEgZGlzcGxheSBsaXN0IGl0ZW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IGQ4YjJlOWIzNzBlYzk1ODAyMWFjODRiNjY4NDk2OThhMTFmYjQ4
YTUuLmY1MWU4YzkzZWE2M2VmMDc1NzUyM2JmZTViNDMyODNiMTEwZWZhYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTMxNCwxMCArMTMxNCwxMyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaAogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggMzAwYWE4MDdkMWYwYTIwODY3YjU2MTdiZGI5ZGNiODgxNDg2ZGU0Ny4uMjhkYTQ5MTM2Yjc3
NjAwZGE4NGYzMGY3OWY4YTgyOTBiZGQyNDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwMTksOSAr
MjAxOSwxMCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKLXBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNw
cAorcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAwYjg1OWYzYTQyYjA5MDQ5MzBiMDZmZTIxZjhjZDNhMTcx
OWEzNjExLi5kN2NiNzYzN2E2ODFhMmIxNzc4ZTc5YzI1OWE1YTk2Mzc5ZWFkZWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
MjUsNiArNjI1LDkgQEAKIAkJMUM3M0E3MTUyMTg1NzU4NzAwNENDRUE1IC8qIFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgx
Qjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2
RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM5M0NCQ0YyNjA1QkQ0
MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNw
bGF5TGlzdEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMUM5M0NCRDMyNjA2RjhFNzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDOTNDQkQyMjYwNkYzRTMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMUM5M0NCRUIyNjA5QUYyRTAwOEZERUY5IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkU3MjYw
OUE2RTMwMDhGREVGOSAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYz
NDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNjg3Miw2ICs2ODc1LDExIEBACiAJCTFDOEQyNkNFMjJDMDk1MTMwMEQxMjVGMyAv
KiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOEQyNkQwMjJDMDlDREUwMEQxMjVGMyAvKiBsaWJjb21wcmVzc2lvbi50YmQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29k
ZS50ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliY29tcHJlc3Npb24udGJk
OyBwYXRoID0gdXNyL2xpYi9saWJjb21wcmVzc2lvbi50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09U
OyB9OwogCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JDQzI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5M0NCQ0QyNjA1QkQ0MzAwOEZERUY5
IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JEMjI2MDZGM0UzMDA4
RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDOTNDQkU2MjYwOUE2RTMwMDhGREVGOSAvKiBJbk1lbW9yeURpc3BsYXlMaXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluTWVtb3J5RGlzcGxheUxpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JFNzI2MDlBNkUzMDA4RkRFRjkgLyogSW5NZW1v
cnlEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOUFFNUNBMjFFRDlERjUwMDY5RDVGMiAvKiBX
SExTTEhpZ2hab21iaWVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xIaWdoWm9t
YmllRmluZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5QUU1Q0IyMUVE
OURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEhpZ2hab21iaWVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNB
MEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2NjY5LDcgKzE2Njc3LDYgQEAKIAkJRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8q
IFN0YXRpY1Bhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rh
dGljUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMzRTkwNDFE
QkJEQkMyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdGF0aWNQYXN0ZWJvYXJkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQz
NzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzcGxheUxpc3RJdGVtVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGNDM3N0Q1NjI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQ0MEU3NkUyMzNEOTREMzAwNjNGOUFCIC8qIENsaXBib2FyZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc2RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2
aWdhdG9yQ2xpcGJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmln
YXRvckNsaXBib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc3MDIz
M0Q5NEQ0MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDbGlwYm9hcmRJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xODAyOSwxNCArMTgwMzYsMTggQEAKIAkJCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyog
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJCUY0MjJCOEI2MjUzRjcwNjUwMDRFNzdF
OCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwICovLAogCQkJCUY0MjJCOEI1MjUzRjcwNjUw
MDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLywKKwkJCQkxQzkzQ0JEMjI2MDZG
M0UzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovLAogCQkJ
CTBGRTVGQkNDMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmNwcCAqLywKIAkJ
CQkwRkU1RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oICovLAotCQkJ
CUY0Mzc3RDU2MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAqLywK
IAkJCQlGNDM3N0Q1NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICov
LAorCQkJCTFDOTNDQkNDMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNw
cCAqLywKKwkJCQkxQzkzQ0JDRDI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRv
ci5oICovLAogCQkJCTBGRTVGQkNFMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCAqLywKIAkJCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlci5oICovLAogCQkJCTBGRTVGQkQwMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dFJlcGxheWVyLmNwcCAqLywKIAkJCQkwRkU1RkJEMTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RSZXBsYXllci5oICovLAorCQkJCTFDOTNDQkU2MjYwOUE2RTMwMDhGREVGOSAvKiBJbk1l
bW9yeURpc3BsYXlMaXN0LmNwcCAqLywKKwkJCQkxQzkzQ0JFNzI2MDlBNkUzMDA4RkRFRjkgLyog
SW5NZW1vcnlEaXNwbGF5TGlzdC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkaXNwbGF5bGlzdHM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzIwNTMsOCArMzIwNjQsMTAgQEAKIAkJ
CQk3MjQyQUM5NzI1NzU4RkUxMDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3
MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkz
Q0JEMzI2MDZGOEU3MDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlM
aXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAv
KiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JDRjI2MDVC
RDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxh
eWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNzc0LDYgKzMyNzg3LDcg
QEAKIAkJCQlCQ0VBNDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hT
dHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYxQ0MxREUyMjVGOEI0OTAwNzIwQUQyIC8qIElu
bGluZVRleHRJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JFQjI2MDlBRjJFMDA4RkRF
RjkgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVCNzY3NTcx
REExOUJERjAwM0UyM0I1IC8qIElucHV0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1MkVG
REY0MjExMjg3NUEwMEFEMjgyQSAvKiBJbnB1dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IDVjZWE3NDUyZDVmZjJlNmNiNWYzZTExNjY1OTdiNzlmZDhmNzNkN2QuLmRhYTA2Zjc0MWU1N2Jh
ZDNjY2ExM2FjMGNmNjI1NWU0ODg2ZDkyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKICNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgpAQCAtMjI1LDggKzIyNiw4IEBAIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZv
clRleHRSdW4oR3JhCiAKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0PigpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4g
ZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0
PigpOwogICAgIEdyYXBoaWNzQ29udGV4dCByZWNvcmRpbmdDb250ZXh0KFsmXShHcmFwaGljc0Nv
bnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxE
aXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBj
b250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSwgbnVsbHB0ciwg
RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9u
OjpEb250RGVjb25zdHJ1Y3QpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiYjMyYmYzNTk3NDI0YjdlOWFh
MGRiY2MxMDk3NGRjOTExMTBlMjc1Li5lMTcxMDYwMjg1ZGI2NmY0Zjg4OGVmZmJlMDE5YmFhYmY0
MDhiYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMTU0LDEwICsxNTQsMTAgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0
YXRlJiYpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KEdyYXBoaWNzQ29udGV4dFN0
YXRlJiYpOwogCiAgICAgZW51bSBDaGFuZ2UgOiB1aW50MzJfdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcAppbmRleCA1YjU1YmVjOGMwYWUyMWE5Mjk4NDVhNDE1ZDEzNTc5YzM2OWJkNTQ3Li43
OTgxZTY2M2U0OTBkY2MxMWUyYTI4MDU2M2ExMWJiYTNiZGUyMjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgorI2luY2x1ZGUgIkRpc3BsYXlM
aXN0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04NCwxMiArODUsMTAg
QEAgdm9pZCBEaXNwbGF5TGlzdDo6Y2xlYXIoKQogICAgIG1fbmF0aXZlSW1hZ2VzLmNsZWFyKCk7
CiB9CiAKLWJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBm
bGFncywgSXRlbUhhbmRsZSBpdGVtKQorYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZs
YWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCiB7Ci0g
ICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgor
ICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFNldFN0YXRlJiBz
dGF0ZUl0ZW0pIC0+IGJvb2wgewogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6Oklu
Y2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgc3Rh
dGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogZm9y
IG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5nZSBmbGFncyBh
cmUgcGxhdGZvcm0tc3BlY2lmaWMuCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hh
bmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTk3LDMwICs5NiwzMCBAQCBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNU
ZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgICAgIGlmIChzdGF0ZUl0
ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsK
ICNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIGlmICghKGZsYWdzICYg
QXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBicmVhazsKKyAgICB9LCBbJl0oY29uc3QgQXBwbHlGaWxsUGF0
dGVybiYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNs
dWRlc1BsYXRmb3JtT3BlcmF0aW9uczsKKyAgICB9LCBbJl0oY29uc3QgQXBwbHlTdHJva2VQYXR0
ZXJuJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1
ZGVzUGxhdGZvcm1PcGVyYXRpb25zOwogI2VuZGlmCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtdKGNvbnN0IGF1dG8mKSAtPiBi
b29sIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlz
aXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFN0cmluZyBEaXNwbGF5TGlzdDo6YXNUZXh0KEFzVGV4
dEZsYWdzIGZsYWdzKSBjb25zdAogewogICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06
OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxl
UmVjdCk7Ci0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDog
KnRoaXMpIHsKLSAgICAgICAgaWYgKCFzaG91bGREdW1wRm9yRmxhZ3MoZmxhZ3MsICppdGVtKSkK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7CisgICAgICAg
IGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxp
c3RJdGVtLnZhbHVlKCk7CisgICAgICAgIGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCBp
dGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFRleHRTdHJlYW06Okdyb3Vw
U2NvcGUgZ3JvdXAoc3RyZWFtKTsKICAgICAgICAgc3RyZWFtIDw8IGl0ZW07Ci0gICAgICAgIGlm
IChpdGVtLT5pc0RyYXdpbmdJdGVtKCkpCisgICAgICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0p
KQogICAgICAgICAgICAgc3RyZWFtIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KICAg
ICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKQEAgLTEzMSwxMCArMTMwLDExIEBAIHZvaWQgRGlz
cGxheUxpc3Q6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgVGV4dFN0cmVhbTo6R3Jv
dXBTY29wZSBncm91cCh0cyk7CiAgICAgdHMgPDwgImRpc3BsYXkgbGlzdCI7CiAKLSAgICBmb3Ig
KGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiAqdGhpcykgeworICAgIGZv
ciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKKyAgICAgICAgY29uc3Qg
YXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0u
dmFsdWUoKTsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAg
ICAgIHRzIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLT5pc0RyYXdpbmdJdGVtKCkpCisgICAg
ICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQogICAgICAgICAgICAgdHMgPDwgIiBleHRlbnQg
IiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHRzLnN0YXJ0R3JvdXAoKTsKQEAgLTE4NiwyNDkgKzE4
NiwyMyBAQCB2b2lkIERpc3BsYXlMaXN0OjpzZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoYm9v
bCB2YWx1ZSkKICAgICBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyA9IHZhbHVlOwogfQogCi12
b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQotewotICAgIHN3aXRjaCAo
aXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4g
YXBwZW5kPFNhdmU+KGl0ZW0uZ2V0PFNhdmU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3Rv
cmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UmVzdG9yZT4oaXRlbS5nZXQ8UmVzdG9yZT4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFRy
YW5zbGF0ZT4oaXRlbS5nZXQ8VHJhbnNsYXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3Rh
dGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Um90YXRlPihpdGVtLmdldDxSb3RhdGU+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNjYWxlPihp
dGVtLmdldDxTY2FsZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KGl0ZW0uZ2V0PENvbmNhdGVuYXRl
Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8U2V0Q1RNPihpdGVtLmdldDxTZXRDVE0+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxsR3Jh
ZGllbnQ+KGl0ZW0uZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldElubGlu
ZUZpbGxDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJ
bmxpbmVTdHJva2VDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTZXRTdHJva2VUaGlja25lc3M+KGl0ZW0uZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0U3Rh
dGU+KGl0ZW0uZ2V0PFNldFN0YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2Fw
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVDYXA+KGl0ZW0uZ2V0PFNldExpbmVDYXA+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFNldExpbmVEYXNoPihpdGVtLmdldDxTZXRMaW5lRGFzaD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TGluZUpvaW4+KGl0
ZW0uZ2V0PFNldExpbmVKb2luPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldE1pdGVyTGltaXQ+KGl0ZW0uZ2V0PFNldE1pdGVy
TGltaXQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICByZXR1
cm4gYXBwZW5kPENsZWFyU2hhZG93PihpdGVtLmdldDxDbGVhclNoYWRvdz4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwPihpdGVtLmdldDxD
bGlwPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICByZXR1cm4gYXBw
ZW5kPENsaXBPdXQ+KGl0ZW0uZ2V0PENsaXBPdXQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVy
PihpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0VG9QYXRoPihpdGVtLmdl
dDxDbGlwT3V0VG9QYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRlbS5nZXQ8Q2xpcFBhdGg+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4g
YXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4o
aXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdHbHlwaHM+KGl0ZW0uZ2V0
PERyYXdHbHlwaHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PERyYXdJbWFnZUJ1
ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxEcmF3UGF0dGVybj4oaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdSZWN0PihpdGVtLmdldDxE
cmF3UmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RHJhd0xpbmU+KGl0ZW0uZ2V0PERyYXdMaW5lPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdMaW5lc0Zv
clRleHQ+KGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcj4oaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8RHJhd0VsbGlwc2U+KGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UGF0aD4oaXRlbS5nZXQ8
RHJhd1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdQYXRoPihpdGVtLmdldDxEcmF3Rm9jdXNS
aW5nUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdSZWN0cz4oaXRlbS5nZXQ8RHJhd0ZvY3Vz
UmluZ1JlY3RzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxGaWxsUmVjdD4oaXRlbS5nZXQ8RmlsbFJlY3Q+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0
V2l0aENvbG9yPihpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJl
Y3RXaXRoR3JhZGllbnQ+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RmlsbENvbXBvc2l0ZWRSZWN0PihpdGVtLmdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxG
aWxsUm91bmRlZFJlY3Q+KGl0ZW0uZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
PigpKTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsSW5saW5lUGF0aD4oaXRl
bS5nZXQ8RmlsbElubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFBhdGg+KGl0ZW0uZ2V0PEZpbGxQYXRo
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxGaWxsRWxsaXBzZT4oaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGbHVzaENvbnRleHQ+
KGl0ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyPihpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxHZXRJbWFnZURhdGE+KGl0ZW0uZ2V0PEdldEltYWdlRGF0YT4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gYXBwZW5kPFB1dEltYWdl
RGF0YT4oaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlh
PihpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZVJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlUmVjdD4oaXRlbS5nZXQ8U3Ry
b2tlUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxTdHJva2VMaW5lPihpdGVtLmdldDxTdHJva2VMaW5lPigpKTsKLSNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRo
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZUlubGluZVBhdGg+KGl0ZW0uZ2V0PFN0cm9r
ZUlubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VQYXRoPihpdGVtLmdldDxTdHJva2VQYXRoPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFN0cm9rZUVsbGlwc2U+KGl0ZW0uZ2V0PFN0cm9rZUVsbGlwc2U+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclJlY3Q+KGl0
ZW0uZ2V0PENsZWFyUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPihp
dGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRUcmFuc3BhcmVu
Y3lMYXllcj4oaXRlbS5nZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotI2lmIFVTRShDRykK
LSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8QXBwbHlTdHJva2VQYXR0ZXJuPihpdGVtLmdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8QXBwbHlGaWxsUGF0dGVybj4oaXRlbS5nZXQ8QXBwbHlGaWxsUGF0dGVybj4oKSk7Ci0j
ZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KGl0ZW0uZ2V0PEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3I+KCkpOwotICAgIH0KLX0KLQotYm9vbCBEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6OmF0RW5kKCkgY29uc3QKLXsKLSAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkgfHwg
IW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvJiBpdGVtcyA9ICpp
dGVtQnVmZmVyKCk7Ci0gICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy5tX3dyaXRhYmxlQnVmZmVy
LmRhdGEgKyBpdGVtcy5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIHJldHVybiBtX2N1cnNv
ciA9PSBlbmRDdXJzb3I7Ci19Ci0KLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVD
dXJyZW50SXRlbSgpCi17Ci0gICAgY2xlYXJDdXJyZW50SXRlbSgpOwotCi0gICAgaWYgKGF0RW5k
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIoKTsK
LSAgICBhdXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsK
LSAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtVHlwZSkgJiYgIW1fZGlzcGxheUxpc3QubV9kcmF3
aW5nSXRlbUV4dGVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fY3VycmVudEV4dGVudCA9IG1f
ZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKLSAg
ICAgICAgbV9kcmF3aW5nSXRlbUluZGV4Kys7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY3VycmVu
dEV4dGVudCA9IFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1zLm1fcmVh
ZGluZ0NsaWVudDsKLSAgICBhdXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKTsKLSAgICBpZiAoY2xpZW50KSB7Ci0gICAg
ICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBz
aXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJ
dGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbSkpOwotICAgICAgICBpZiAoaXNJbmxpbmVJdGVtKGl0ZW1UeXBlKSkgewotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCFJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5zYWZlQ29weSh7
IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSkpKQotICAgICAgICAgICAgICAgIG1faXNWYWxpZCA9
IGZhbHNlOwotCi0gICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVk
U2l6ZU9mVHlwZUFuZEl0ZW07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGRh
dGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOwotICAg
ICAgICAgICAgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0
X3QpOwotICAgICAgICAgICAgYXV0byBkZWNvZGVkSXRlbUhhbmRsZSA9IGNsaWVudC0+ZGVjb2Rl
SXRlbShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUsIG1fY3VycmVudEJ1ZmZlckZv
ckl0ZW0pOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFkZWNvZGVkSXRlbUhhbmRsZSkpCi0g
ICAgICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIG1fY3VycmVu
dEJ1ZmZlckZvckl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAg
ICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkg
KyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBt
X2N1cnNvcjsKLSAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtOwotICAgIH0KLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OmFk
dmFuY2UoKQotewotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2N1
cnNvciArPSBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyOwotCi0gICAgaWYgKG1fY3Vyc29yID09
IG1fY3VycmVudEVuZE9mQnVmZmVyICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZm
ZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fcmVhZE9ubHlCdWZm
ZXJJbmRleCsrOwotICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwot
ICAgIH0KLQotICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci19Ci0KLXZvaWQgRGlzcGxheUxpc3Q6
Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKCkKK3ZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZm
ZXIoKTsKLSAgICBpZiAoaXRlbXMgJiYgaXRlbXMtPm1fcmVhZGluZ0NsaWVudCAmJiBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtKSB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9pc1ZhbGlkKSkKLSAgICAg
ICAgICAgIEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0uZGVzdHJveSgpOwot
Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1fZml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbSkpCi0gICAgICAgICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtKTsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMDsK
LSAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gbnVsbHB0cjsKKyAgICBXVEY6OnZpc2l0KFsm
XShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgIGFwcGVuZChpdGVtKTsKKyAgICB9LCBpdGVt
KTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVUb0VuZCgpCithdXRvIERp
c3BsYXlMaXN0OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgaWYgKGF1dG8gaXRl
bXMgPSBpdGVtQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJs
ZUJ1ZmZlci5kYXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgICAgIG1f
Y3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3I7Ci0gICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7Ci0gICAgfQorICAgIHJldHVy
biB7ICp0aGlzIH07CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlQ3Vyc29y
VG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCithdXRvIERpc3BsYXlMaXN0OjplbmQoKSBjb25zdCAt
PiBJdGVyYXRvcgogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKCFp
dGVtcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBudW1iZXJPZlJlYWRPbmx5QnVmZmVy
cyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7Ci0gICAgaWYgKG1fcmVhZE9ubHlC
dWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7Ci0gICAgICAgIGF1dG8mIG5l
eHRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZl
ckluZGV4XTsKLSAgICAgICAgbV9jdXJzb3IgPSBuZXh0QnVmZmVySGFuZGxlLmRhdGE7Ci0gICAg
ICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBuZXh0QnVmZmVySGFuZGxlLmNh
cGFjaXR5OwotICAgIH0gZWxzZSBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9m
UmVhZE9ubHlCdWZmZXJzKSB7Ci0gICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVC
dWZmZXIuZGF0YTsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvciArIGl0
ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIH0KKyAgICByZXR1cm4geyAqdGhpcywg
SXRlcmF0b3I6OkltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMgfTsKIH0KIAotCiB9IC8vIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdAogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAppbmRleCBmMTg5ZGVkZjY3NDliY2MyMDE0NzJhZWQyYTg3MTZiYTY1NzQ2NTJl
Li44OGIxYmI2ZDAzNjEwMjg0OWZiNzY5N2U5MDJmY2I0MmM3Nzk0MzEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Miw3ICs0Miw2IEBAIGNsYXNzIFRleHRTdHJlYW07CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogZW51bSBBc1RleHRGbGFn
IHsKQEAgLTg5LDc2ICs4OCwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3JFYWNoSXRlbUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4m
JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lk
IGFwcGVuZChBcmdzJiYuLi4gYXJncyk7Ci0gICAgdm9pZCBhcHBlbmQoSXRlbUhhbmRsZSk7Cisg
ICAgdm9pZCBhcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBib29sIHRyYWNr
c0RyYXdpbmdJdGVtRXh0ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tzRHJhd2luZ0l0ZW1F
eHRlbnRzOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUcmFja3NEcmF3aW5nSXRlbUV4
dGVudHMoYm9vbCk7CiAKLSAgICBjbGFzcyBpdGVyYXRvciB7Ci0gICAgcHVibGljOgotICAgICAg
ICBlbnVtIGNsYXNzIEltbWVkaWF0ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9OwotICAgICAgICBp
dGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRv
RW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAg
ICAgICAgICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Olll
cykKLSAgICAgICAgICAgICAgICBtb3ZlVG9FbmQoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAg
ICAgICAgICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIH5pdGVyYXRvcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFyQ3VycmVu
dEl0ZW0oKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVy
YXRvciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlM
aXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9
Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IrKygpIHsgYWR2YW5jZSgpOyB9Ci0KLSAgICAgICAgc3Ry
dWN0IFZhbHVlIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IGl0ZW07Ci0gICAg
ICAgICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGV4dGVudDsKLSAgICAgICAgICAgIHNpemVfdCBp
dGVtU2l6ZUluQnVmZmVyIHsgMCB9OwotICAgICAgICB9OwotCi0gICAgICAgIFZhbHVlIG9wZXJh
dG9yKigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICAgICAgbV9pc1ZhbGlkID8gbWFrZU9wdGlvbmFsKEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtIH0pIDogV1RGOjpudWxsb3B0LAotICAgICAgICAgICAgICAgIG1fY3VycmVudEV4
dGVudCwKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLAotICAgICAg
ICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKLQotICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVy
KCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVRvRW5kKCk7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWR2YW5jZSgpOwotICAgICAgICBib29sIGF0RW5kKCkgY29uc3Q7Ci0KLSAgICAgICAgSXRl
bUJ1ZmZlciogaXRlbUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUJ1
ZmZlcklmRXhpc3RzKCk7IH0KLQotICAgICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5
TGlzdDsKLSAgICAgICAgdWludDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07Ci0gICAgICAgIHNp
emVfdCBtX3JlYWRPbmx5QnVmZmVySW5kZXggeyAwIH07Ci0gICAgICAgIHNpemVfdCBtX2RyYXdp
bmdJdGVtSW5kZXggeyAwIH07Ci0gICAgICAgIHVpbnQ4X3QqIG1fY3VycmVudEVuZE9mQnVmZmVy
IHsgbnVsbHB0ciB9OwotCi0gICAgICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJ
dGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1dIHsgMCB9OwotICAgICAgICB1aW50
OF90KiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OwotICAgICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IG1fY3VycmVudEV4dGVudDsKLSAgICAgICAgc2l6ZV90IG1fY3VycmVudEl0
ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1ZSB9Owot
ICAgIH07Ci0KLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMgfTsg
fQotICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMsIGl0ZXJhdG9yOjpJ
bW1lZGlhdGVseU1vdmVUb0VuZDo6WWVzIH07IH0KKyAgICBjbGFzcyBJdGVyYXRvcjsKKworICAg
IFdFQkNPUkVfRVhQT1JUIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgSXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSXRlbUJ1ZmZlciogaXRl
bUJ1ZmZlcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5nZXQoKTsgfQpAQCAtMTkx
LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBi
b29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgSXRlbUhhbmRsZSk7CisgICAgc3Rh
dGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBO
YXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGI1YzM3NDE5ZDZmZmFhMTY4ZDRiYjk5ZTQxODg0
ZmRhZDRkMTc2OTcuLmJhNmU4YmE1YTdhMDhmNzU4NjllNDg2MjU4ODU1ZTczNDkxZTY0MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDU2NCArMzIs
NiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotI2lm
ICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotQ1N0cmluZyBJdGVtSGFuZGxlOjpk
ZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgVGV4dFN0cmVhbSB0czsKLSAgICB0cyA8PCAqdGhp
czsKLSAgICByZXR1cm4gdHMucmVsZWFzZSgpLnV0ZjgoKTsKLX0KLSNlbmRpZgotCi12b2lkIEl0
ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBzd2l0Y2gg
KHR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIGdldDxTYXZlPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVz
dG9yZToKLSAgICAgICAgZ2V0PFJlc3RvcmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIGdldDxUcmFuc2xh
dGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpSb3RhdGU6Ci0gICAgICAgIGdldDxSb3RhdGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgZ2V0PFNjYWxlPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29u
Y2F0ZW5hdGVDVE06Ci0gICAgICAgIGdldDxDb25jYXRlbmF0ZUNUTT4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAg
Z2V0PFNldENUTT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgZ2V0PFNldElubGluZUZp
bGxHcmFkaWVudD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgZ2V0PFNldElubGluZUZpbGxD
b2xvcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICBnZXQ8U2V0SW5saW5lU3Ryb2tlQ29s
b3I+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIGdldDxTZXRTdHJva2VUaGlja25lc3M+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRT
dGF0ZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICBnZXQ8U2V0TGluZUNhcD4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVEYXNoOgotICAgICAgICBnZXQ8U2V0TGluZURhc2g+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgZ2V0
PFNldExpbmVKb2luPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgZ2V0PFNldE1pdGVyTGltaXQ+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVh
clNoYWRvdzoKLSAgICAgICAgZ2V0PENsZWFyU2hhZG93PigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgZ2V0PENsaXA+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0OgotICAgICAgICBnZXQ8Q2xpcE91dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICBn
ZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICBnZXQ8Q2xpcE91dFRv
UGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOgotICAgICAgICBnZXQ8Q2xpcFBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0dseXBoczoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIGdldDxEcmF3SW1h
Z2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIGdldDxEcmF3TmF0aXZlSW1hZ2U+KCku
YXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjoKLSAgICAgICAgZ2V0PERyYXdQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIGdldDxE
cmF3UmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lOgotICAgICAgICBnZXQ8RHJhd0xpbmU+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0Ogot
ICAgICAgICBnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0g
ICAgICAgIGdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAg
IGdldDxEcmF3RWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICBnZXQ8RHJhd1BhdGg+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNS
aW5nUGF0aDoKLSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3Rz
OgotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIGdldDxG
aWxsUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50Pigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bENvbXBvc2l0ZWRSZWN0OgotICAgICAgICBnZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLmFwcGx5
KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5k
ZWRSZWN0OgotICAgICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0PigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhv
bGU6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICBnZXQ8RmlsbElubGluZVBhdGg+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBnZXQ8RmlsbFBhdGg+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAg
ICAgZ2V0PEZpbGxFbGxpcHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICBnZXQ8Rmx1c2hDb250ZXh0
PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5
cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURh
dGE6Ci0gICAgICAgIC8vIFNob3VsZCBhbHJlYWR5IGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRl
LgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgZ2V0PFBhaW50RnJhbWVG
b3JNZWRpYT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIGdldDxTdHJva2VSZWN0PigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAg
ICAgICAgZ2V0PFN0cm9rZUxpbmU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsK
LSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJ
bmxpbmVQYXRoOgotICAgICAgICBnZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0
aDoKLSAgICAgICAgZ2V0PFN0cm9rZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICBnZXQ8U3Ry
b2tlRWxsaXBzZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgZ2V0PENsZWFyUmVjdD4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXI6Ci0gICAgICAgIGdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpLmFwcGx5KGNv
bnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJl
bmN5TGF5ZXI6Ci0gICAgICAgIGdldDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKS5hcHBseShjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpB
cHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIGdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZp
bGxQYXR0ZXJuOgotICAgICAgICBnZXQ8QXBwbHlGaWxsUGF0dGVybj4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcjoKLSAgICAgICAgZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgSXRlbUhhbmRs
ZTo6ZGVzdHJveSgpCi17Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwT3V0VG9QYXRoOgotICAgICAgICBnZXQ8Q2xpcE91dFRvUGF0aD4oKS5+Q2xpcE91dFRv
UGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0g
ICAgICAgIGdldDxDbGlwUGF0aD4oKS5+Q2xpcFBhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICBnZXQ8RHJhd0ZvY3Vz
UmluZ1BhdGg+KCkufkRyYXdGb2N1c1JpbmdQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIGdldDxEcmF3Rm9jdXNS
aW5nUmVjdHM+KCkufkRyYXdGb2N1c1JpbmdSZWN0cygpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgZ2V0PERyYXdHbHlwaHM+KCkufkRy
YXdHbHlwaHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5l
c0ZvclRleHQ6Ci0gICAgICAgIGdldDxEcmF3TGluZXNGb3JUZXh0PigpLn5EcmF3TGluZXNGb3JU
ZXh0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAg
ICAgICAgZ2V0PERyYXdQYXRoPigpLn5EcmF3UGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICBnZXQ8RmlsbENvbXBv
c2l0ZWRSZWN0PigpLn5GaWxsQ29tcG9zaXRlZFJlY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBnZXQ8RmlsbFBhdGg+KCkufkZpbGxQ
YXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhD
b2xvcjoKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLn5GaWxsUmVjdFdpdGhDb2xv
cigpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3Jh
ZGllbnQ6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKS5+RmlsbFJlY3RXaXRo
R3JhZGllbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCku
fkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCku
fkZpbGxSb3VuZGVkUmVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
R2V0SW1hZ2VEYXRhOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxHZXRJbWFnZURhdGE+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIGdldDxQdXRJbWFnZURhdGE+KCku
flB1dEltYWdlRGF0YSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
TGluZURhc2g6Ci0gICAgICAgIGdldDxTZXRMaW5lRGFzaD4oKS5+U2V0TGluZURhc2goKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICBnZXQ8
U2V0U3RhdGU+KCkuflNldFN0YXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTdHJva2VQYXRoOgotICAgICAgICBnZXQ8U3Ryb2tlUGF0aD4oKS5+U3Ryb2tlUGF0aCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2lm
IFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBseUZpbGxQYXR0
ZXJuPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlT
dHJva2VQYXR0ZXJuOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxBcHBseVN0cm9rZVBhdHRlcm4+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENs
ZWFyUmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
ZWFyU2hhZG93OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxDbGVhclNoYWRvdz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPENsaXA+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxDbGlwT3V0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENsaXBUb0ltYWdlQnVmZmVyPjo6dmFsdWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPENvbmNhdGVu
YXRlQ1RNPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3RWxsaXBz
ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8RHJhd0ltYWdlQnVmZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd1BhdHRlcm4+Ojp2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0xp
bmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVj
dDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
RHJhd1JlY3Q+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVy
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxF
bmRUcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxGaWxsRWxsaXBzZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJ
bmxpbmVQYXRoOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxGaWxsSW5saW5lUGF0aD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlm
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEZpbGxSZWN0Pjo6dmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxGbHVzaENvbnRleHQ+Ojp2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFD
b21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPjo6dmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxQ
YWludEZyYW1lRm9yTWVkaWE+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxSZXN0b3JlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxSb3RhdGU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxTYXZlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFNjYWxlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxTZXRDVE0+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldElubGluZUZpbGxDb2xvcj46OnZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFk
aWVudDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8U2V0SW5saW5lRmlsbEdyYWRpZW50Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldElubGluZVN0cm9rZUNvbG9yPjo6
dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0
TGluZUNhcD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVKb2luOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxTZXRMaW5lSm9pbj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldE1pdGVyTGltaXQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldFN0cm9rZVRoaWNr
bmVzcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUVsbGlwc2U6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPFN0cm9rZUVsbGlwc2U+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRo
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxT
dHJva2VJbmxpbmVQYXRoPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U3Ryb2tlTGluZT46OnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VHJhbnNsYXRlPjo6dmFs
dWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSwgdHlw
ZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNlOwot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8VCwg
c3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0gdHJ1
ZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8
IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGNvcHlJbnRvKGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1I
YW5kbGUsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uV2l0aE9mZnNldCkKLXsKLSAgICBuZXcgKGRlc3Rp
bmF0aW9uV2l0aE9mZnNldCkgSXRlbShpdGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLXR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gY29weUludG8oY29uc3QgSXRlbUhhbmRs
ZSYgaXRlbUhhbmRsZSwgdWludDhfdCogZGVzdGluYXRpb25XaXRoT2Zmc2V0KQotewotICAgIGF1
dG8qIG5ld0l0ZW0gPSBuZXcgKGRlc3RpbmF0aW9uV2l0aE9mZnNldCkgSXRlbShpdGVtSGFuZGxl
LmdldDxJdGVtPigpKTsKLSAgICByZXR1cm4gbmV3SXRlbS0+aXNWYWxpZCgpOwotfQotCi1ib29s
IEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0Ci17Ci0g
ICAgYXV0byBpdGVtVHlwZSA9IHR5cGUoKTsKLSAgICBkZXN0aW5hdGlvbi5kYXRhWzBdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwotICAgIGF1dG8gaXRlbU9mZnNldCA9IGRlc3Rp
bmF0aW9uLmRhdGEgKyBzaXplb2YodWludDY0X3QpOwotICAgIHN3aXRjaCAoaXRlbVR5cGUpIHsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gY29weUlu
dG88Q2xpcE91dFRvUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88Q2xpcFBhdGg+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1c1JpbmdQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd0ZvY3VzUmluZ1JlY3RzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdHbHlwaHM+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1
cm4gY29weUludG88RHJhd0xpbmVzRm9yVGV4dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERy
YXdOYXRpdmVJbWFnZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd1BhdHRlcm4+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPERyYXdQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbENvbXBv
c2l0ZWRSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBh
dGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4g
Y29weUludG88RmlsbFJlY3RXaXRoQ29sb3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PEZpbGxSZWN0V2l0aEdyYWRpZW50PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSb3Vu
ZGVkUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdl
RGF0YToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEdldEltYWdlRGF0YT4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFB1dEltYWdlRGF0YT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZURhc2g+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPFNldFN0YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVBh
dGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNj
YWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpB
cHBseUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlGaWxsUGF0dGVy
bj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0
dGVybjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVybj4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRyYW5zcGFyZW5j
eUxheWVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0
OgotICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxDbGVhclNoYWRvdz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXA6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBP
dXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1
ZmZlcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBUb0ltYWdlQnVmZmVyPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAg
IHJldHVybiBjb3B5SW50bzxDb25jYXRlbmF0ZUNUTT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxEcmF3RWxsaXBzZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdMaW5lOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xpbmU+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPERyYXdSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gY29weUludG88RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRUcmFuc3Bh
cmVuY3lMYXllcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxF
bGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbEVsbGlwc2U+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxJbmxpbmVQYXRo
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gY29weUlu
dG88Rmx1c2hDb250ZXh0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4g
Y29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyOgotICAgICAgICByZXR1cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1l
ZGlhOgotICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRGcmFtZUZvck1lZGlhPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFJlc3RvcmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpSb3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSb3RhdGU+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4gY29weUludG88
U2F2ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAg
ICAgICByZXR1cm4gY29weUludG88U2NhbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRDVE0+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0g
ICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsQ29sb3I+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAg
IHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFNldElubGluZVN0cm9rZUNvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNl
dExpbmVDYXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5l
Sm9pbjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVKb2luPigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFNldE1pdGVyTGltaXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRT
dHJva2VUaGlja25lc3M+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
dHJva2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlRWxsaXBzZT4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJv
a2VJbmxpbmVQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlUmVjdD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAg
IHJldHVybiBjb3B5SW50bzxTdHJva2VMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gY29weUludG88VHJhbnNsYXRl
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogSXRl
bUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVySGFuZGxlcyYmIGhhbmRsZXMpCiAgICAgOiBt
X3JlYWRPbmx5QnVmZmVycyhXVEZNb3ZlKGhhbmRsZXMpKQogewpAQCAtNjA1LDcgKzQ3LDYgQEAg
SXRlbUJ1ZmZlcjo6fkl0ZW1CdWZmZXIoKQogSXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVm
ZmVyJiYgb3RoZXIpCiAgICAgOiBtX3JlYWRpbmdDbGllbnQoc3RkOjpleGNoYW5nZShvdGhlci5t
X3JlYWRpbmdDbGllbnQsIG51bGxwdHIpKQogICAgICwgbV93cml0aW5nQ2xpZW50KHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV93cml0aW5nQ2xpZW50LCBudWxscHRyKSkKLSAgICAsIG1faXRlbXNUb0Rl
c3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zVG9EZXN0
cm95SW5BbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9hbGxvY2F0ZWRCdWZmZXJzKHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICwgbV9yZWFk
T25seUJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlYWRPbmx5QnVmZmVycywgeyB9KSkK
ICAgICAsIG1fd3JpdGFibGVCdWZmZXIoc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRhYmxlQnVm
ZmVyLCB7IH0pKQpAQCAtNjE3LDcgKzU4LDYgQEAgSXRlbUJ1ZmZlciYgSXRlbUJ1ZmZlcjo6b3Bl
cmF0b3I9KEl0ZW1CdWZmZXImJiBvdGhlcikKIHsKICAgICBtX3JlYWRpbmdDbGllbnQgPSBzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1fcmVhZGluZ0NsaWVudCwgbnVsbHB0cik7CiAgICAgbV93cml0aW5n
Q2xpZW50ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRpbmdDbGllbnQsIG51bGxwdHIpOwot
ICAgIG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSk7CiAgICAgbV9hbGxv
Y2F0ZWRCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2FsbG9jYXRlZEJ1ZmZlcnMsIHsg
fSk7CiAgICAgbV9yZWFkT25seUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVhZE9u
bHlCdWZmZXJzLCB7IH0pOwogICAgIG1fd3JpdGFibGVCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1fd3JpdGFibGVCdWZmZXIsIHsgfSk7CkBAIC02NTEsOSArOTEsNiBAQCB2b2lkIEl0ZW1C
dWZmZXI6OmZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhh
bmRsZSYpPiYmIG1hcAogCiB2b2lkIEl0ZW1CdWZmZXI6OmNsZWFyKCkKIHsKLSAgICBmb3IgKGF1
dG8gaXRlbSA6IHN0ZDo6ZXhjaGFuZ2UobV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVy
cywgeyB9KSkKLSAgICAgICAgaXRlbS5kZXN0cm95KCk7Ci0KICAgICBmb3IgKGF1dG8qIGJ1ZmZl
ciA6IHN0ZDo6ZXhjaGFuZ2UobV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pKQogICAgICAgICBmYXN0
RnJlZShidWZmZXIpOwogCkBAIC02NjQsNyArMTAxLDcgQEAgdm9pZCBJdGVtQnVmZmVyOjpjbGVh
cigpCiAKIERpZENoYW5nZUl0ZW1CdWZmZXIgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVy
SWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpCiB7Ci0gICAgYXV0byBzaXplRm9yQnVmZmVy
U3dpdGNoSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICBhdXRvIHNpemVGb3JCdWZmZXJTd2l0Y2hJ
dGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPE1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcj4oKTsKICAgICBpZiAobV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIG51bWJlck9mQnl0
ZXMgKyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA8PSBtX3dyaXRhYmxlQnVmZmVyLmNhcGFjaXR5
KQogICAgICAgICByZXR1cm4gRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6Tm87CiAKQEAgLTY4MCw3ICsx
MTcsNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZl
cklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogICAgIHJldHVybiBoYWRQcmV2aW91c0J1
ZmZlciA/IERpZENoYW5nZUl0ZW1CdWZmZXI6OlllcyA6IERpZENoYW5nZUl0ZW1CdWZmZXI6Ok5v
OwogfQogCi12b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0p
Cit2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFy
eUl0ZW0pCiB7CiAgICAgYXV0byBkYXRhID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRl
bXBvcmFyeUl0ZW0pOwogICAgIGlmICghZGF0YSkKQEAgLTY5MSw3ICsxMjgsNyBAQCB2b2lkIEl0
ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiAKICAgICBhdXRvIGJ1
ZmZlckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNp
dHlGb3JFbmNvZGVkSXRlbSk7CiAKLSAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVu
TnVtYmVyT2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZW1wb3JhcnlJdGVtLnR5cGUo
KSk7CisgICAgbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUodGVtcG9yYXJ5SXRlbSkpOwogICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5O
dW1iZXJPZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZm
ZXIuZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwg
ZGF0YS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCAxMzhkOWNhMGJkNzM0M2RiYmY1ZjUxOTE2MDdj
M2IxOTJhMzc3YmViLi4xZjYxOTcwZGRjMTFjNmE0MGMyNWEwYmZkYTQzYzUwMjljNjA1N2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0SXRlbXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOCw5
ICs0MCw2IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0Owog
Ci1lbnVtIEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJdGVtQnVmZmVySWRl
bnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKLQog
Ly8gQW4gSXRlbUJ1ZmZlckhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCBj
b250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLgogc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGUg
ewogICAgIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CkBAIC01MywzNiArNTIsNiBA
QCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZSB7CiAKIHVzaW5nIEl0ZW1CdWZmZXJIYW5kbGVzID0g
VmVjdG9yPEl0ZW1CdWZmZXJIYW5kbGUsIDI+OwogCi0vLyBBbiBJdGVtSGFuZGxlIHdyYXBzIGEg
cG9pbnRlciB0byBhbiBJdGVtVHlwZSBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSBhbiBpdGVtIG9m
IHRoYXQgdHlwZS4KLS8vIEVhY2ggaXRlbSBoYW5kbGUgZGF0YSBwb2ludGVyIGlzIGFsaWduZWQg
dG8gOCBieXRlcywgYW5kIHRoZSBpdGVtIGl0c2VsZiBpcyBhbHNvIGFsaWduZWQKLS8vIHRvIDgg
Ynl0ZXMuIFRvIGVuc3VyZSB0aGlzLCB0aGUgaXRlbSB0eXBlIGNvbnNpc3RzIG9mIDggYnl0ZXMg
KDEgYnl0ZSBmb3IgdGhlIHR5cGUgYW5kIDcKLS8vIGJ5dGVzIG9mIHBhZGRpbmcpLgotc3RydWN0
IEl0ZW1IYW5kbGUgewotICAgIHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07Ci0KLSAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJv
eSgpOwotICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkRp
c3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKHR5cGUoKSk7IH0KLQotICAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhISgqdGhpcyk7IH0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFkYXRhOyB9Ci0KLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElTQUJM
RUQKLSAgICBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIEl0ZW1U
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtVHlwZT4oZGF0YVswXSk7
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXMoKSBjb25zdCB7IHJldHVybiB0
eXBlKCkgPT0gVDo6aXRlbVR5cGU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUJiBnZXQo
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzPFQ+KCkpOwotICAgICAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZkYXRhW3NpemVvZih1aW50NjRfdCldKTsKLSAgICB9Ci0K
LSAgICBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0OwotfTsKLQog
ZW51bSBjbGFzcyBEaWRDaGFuZ2VJdGVtQnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogY2xh
c3MgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgewpAQCAtOTAsNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQoKSB7IH0KIAogICAgIHZpcnR1YWwg
SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCkgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKGNvbnN0IERpc3Bs
YXlMaXN0SXRlbSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShj
b25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5nZUl0
ZW1CdWZmZXIpID0gMDsKIH07CiAKQEAgLTk4LDcgKzY3LDcgQEAgY2xhc3MgSXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkl0ZW1CdWZmZXJSZWFkaW5nQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VE
X1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIE9w
dGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7CiB9Owog
CiAvLyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEsIGFuZCBj
b25zaXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFuZGxlICh0byB3aGljaCBkaXNwbGF5
CkBAIC0xNDksMjYgKzExOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YSBiYWNrIGludG8gYW4g
aXRlbSBvZiB0eXBlIFQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4g
dm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUgfHwgIVQ6OmlzSW5saW5l
SXRlbSk7Ci0KLSAgICAgICAgaWYgKCFUOjppc0lubGluZUl0ZW0gJiYgbV93cml0aW5nQ2xpZW50
KSB7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgICAgIF9fZGVjbHNwZWMoYWxpZ24oOCkp
IHR5cGVkZWYgdWludDhfdCBFbmNvZGluZ0J1ZmZlcltzaXplb2YodWludDY0X3QpICsgc2l6ZW9m
KFQpXTsKLSNlbHNlCi0gICAgICAgICAgICB1c2luZyBFbmNvZGluZ0J1ZmZlciBfX2F0dHJpYnV0
ZV9fKChhbGlnbmVkICg4KSkpID0gdWludDhfdFtzaXplb2YodWludDY0X3QpICsgc2l6ZW9mKFQp
XTsKLSNlbmRpZgotICAgICAgICAgICAgc3RhdGljIEVuY29kaW5nQnVmZmVyIHRlbXBvcmFyeUl0
ZW1CdWZmZXI7Ci0gICAgICAgICAgICB0ZW1wb3JhcnlJdGVtQnVmZmVyWzBdID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwotICAgICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJdGVt
QnVmZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OwotICAgICAgICAgICAgYXBwZW5kKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKLSAgICAgICAg
ICAgIEl0ZW1IYW5kbGUgeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0uZGVzdHJveSgpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUg
PT0gVDo6aXNJbmxpbmVJdGVtKTsKKworICAgICAgICBpZiAoIVQ6OmlzSW5saW5lSXRlbSkgewor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93cml0aW5nQ2xpZW50KTsKKyAgICAgICAgICAg
IGFwcGVuZChEaXNwbGF5TGlzdEl0ZW0oVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlckNo
YW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bUluQnl0ZXMoVDo6aXRlbVR5cGUpKTsKLQotICAgICAgICBpZiAoIXN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpCi0gICAgICAgICAgICBtX2l0ZW1zVG9EZXN0cm95SW5B
bGxvY2F0ZWRCdWZmZXJzLmFwcGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVu
TnVtYmVyT2ZCeXRlc10gfSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0
YWJsZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxUPigpKTsK
IAogICAgICAgICB1bmNoZWNrZWRBcHBlbmQ8VD4oYnVmZmVyQ2hhbmdlZCwgc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKICAgICB9CkBAIC0xODMsMTggKzE0MSwxNyBAQCBwcml2YXRlOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZCeXRl
cywgRGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBEaWRDaGFuZ2VJ
dGVtQnVmZmVyIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVz
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChEaWRD
aGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIsIEFyZ3MmJi4uLiBhcmdzKQogICAg
IHsKICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0gPSAmbV93cml0YWJsZUJ1ZmZlci5kYXRhW21f
d3JpdHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAgICBzdGFydE9mSXRlbVswXSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgbmV3IChzdGFydE9mSXRlbSArIHNp
emVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAg
ZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUp
LCBkaWRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXpl
T2ZUeXBlQW5kSXRlbUluQnl0ZXM8VD4oKSwgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgfQog
CiAgICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqIG1fcmVhZGluZ0NsaWVudCB7IG51bGxwdHIg
fTsKICAgICBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCogbV93cml0aW5nQ2xpZW50IHsgbnVsbHB0
ciB9OwotICAgIFZlY3RvcjxJdGVtSGFuZGxlPiBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRC
dWZmZXJzOwogICAgIFZlY3Rvcjx1aW50OF90Kj4gbV9hbGxvY2F0ZWRCdWZmZXJzOwogICAgIEl0
ZW1CdWZmZXJIYW5kbGVzIG1fcmVhZE9ubHlCdWZmZXJzOwogICAgIEl0ZW1CdWZmZXJIYW5kbGUg
bV93cml0YWJsZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzQ5N2YzOTUwNThhNjc2ODY0NDhh
MjU1NzE3NDBjZjQwMzdhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2Vu
dW0gSXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEl0ZW1CdWZmZXJJZGVudGlm
aWVyID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmllclR5cGU+OworCit9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRiMWRiOTQ3YWI4NTU3ZjAwY2FmOWQwMTc2ZTcxYjI1ZDk2MTU4Yzcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgotCi0jaW5jbHVk
ZSAiRGlzcGxheUxpc3RJdGVtcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewotCi1zdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBl
IHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToK
LSAgICAgICAgcmV0dXJuIHNpemVvZihTYXZlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3Jl
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFJlc3RvcmUpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRy
YW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihUcmFuc2xhdGUpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihSb3RhdGUpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNjYWxlKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIHNpemVvZihDb25jYXRl
bmF0ZUNUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKFNldENUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50Ogot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElubGluZUZpbGxHcmFkaWVudCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElu
bGluZUZpbGxDb2xvcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lU3Ryb2tlQ29sb3IpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRT
dHJva2VUaGlja25lc3MpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKFNldFN0YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVDYXApOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVEYXNoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVEYXNoKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRMaW5lSm9p
bik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihTZXRNaXRlckxpbWl0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihDbGVhclNoYWRvdyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
T3V0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBUb0ltYWdlQnVm
ZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKENsaXBPdXRUb1BhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3
R2x5cGhzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJl
dHVybiBzaXplb2YoRHJhd0ltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0
aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd05hdGl2ZUltYWdlKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3UGF0
dGVybik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoRHJhd1JlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKERyYXdMaW5lKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdMaW5lc0ZvclRleHQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlw
c2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0VsbGlwc2UpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXRoKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3
Rm9jdXNSaW5nUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdGb2N1c1JpbmdSZWN0cyk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3QpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZp
bGxSZWN0V2l0aENvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVu
dDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhHcmFkaWVudCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZp
bGxDb21wb3NpdGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0Ogot
ICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSb3VuZGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxJ
bmxpbmVQYXRoKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKEZpbGxQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBz
ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNoQ29udGV4dCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVy
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEdl
dEltYWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKFB1dEltYWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFt
ZUZvck1lZGlhOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFBhaW50RnJhbWVGb3JNZWRpYSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJv
a2VSZWN0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFN0cm9rZUxpbmUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ry
b2tlSW5saW5lUGF0aCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZVBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlRWxsaXBzZSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsZWFyUmVj
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAg
cmV0dXJuIHNpemVvZihCZWdpblRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmRUcmFuc3Bh
cmVuY3lMYXllcik7Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tl
UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihBcHBseVN0cm9rZVBhdHRlcm4pOwotICAg
IGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
QXBwbHlGaWxsUGF0dGVybik7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmlj
ZVNjYWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0K
LQotYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgLyogU2VlIHRoZSBj
b21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aGF0IHRoaXMgbWVh
bnMuCi0gICAgICogVGhpcyBuZWVkcyB0byBtYXRjaCBhbGwgdGhlICJzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNEcmF3aW5nSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMu
ICovCi0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmlj
ZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQ
YXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgot
ICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9J
bWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
bHVzaENvbnRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5h
dGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgSXRlbVR5cGU6
OlJvdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNj
YWxlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJ
bmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50
OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgIGNhc2UgSXRl
bVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJM
aW1pdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRTdHJva2VUaGlja25lc3M6Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgIGNh
c2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6
OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVk
UmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5F
X1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0
SW1hZ2VEYXRhOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxF
KElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1zaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1U
eXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0
aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7Ci19Ci0K
LWJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgLyogU2VlIHRoZSBjb21t
ZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aGF0IHRoaXMgbWVhbnMu
Ci0gICAgICogVGhpcyBuZWVkcyB0byBtYXRjaCAoMSkgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
ZW5jb2RlSXRlbSgpLCAoMikgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSgpLAot
ICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMuICovCi0KLSAgICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0
ZWRSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRp
ZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFn
ZURhdGE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0U3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0j
aWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlw
ZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0ltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90
c0ZvckRvY3VtZW50TWFya2VyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bEVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZy
YW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0ZW1U
eXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTY2FsZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0SW5saW5lRmlsbENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFk
aWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYg
RU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5l
UGF0aDoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggMGVmZDBiNzJiMDI5YWZiMDEyODkxMDMw
OWNmZTFiYmNkZDZkMzkxZS4uNGUxZmViYzdhZWZlMTdlNjg5MDBhMGIwYTQxNWRlNWM4MzMwOGMy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk5LDkgKzk5LDUgQEAg
ZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IsCiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1J
bkJ5dGVzKEl0ZW1UeXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1U
eXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSk7Ci0KIH0g
Ly8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMGU0MGEyNmFlMDA5N2RjODBlNDhiMjQy
ZWIxOWRmZjk2YzQxYjNmZS4uM2ZkMzU4MmI0NjQ1MmJjMmY2ZTAxYTdkZmNkOGJiZjA4ZWUyODU2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKIAor
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCkBAIC0yMjAsMTIgKzIyMSwxMiBAQCBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRAogewog
fQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2
ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdl
KQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJ
bWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkg
Y29uc3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJu
SW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVy
bi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0
YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVm
KCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAg
aWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1f
c3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVm
KCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAg
Y29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmls
bFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsK
IH0KIApAQCAtMTA4NSwxOTUgKzEwODYsMTIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCi17
Ci0gICAgdHMgPDwgaXRlbS50eXBlKCk7Ci0KLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxUcmFu
c2xhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8Um90YXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2NhbGU+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U2V0Q1RNPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25j
YXRlbmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNl
dFN0cm9rZVRoaWNrbmVzcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0U3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxTZXRMaW5lQ2FwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZURhc2g+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TWl0ZXJMaW1p
dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8Q2xpcD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlw
T3V0VG9QYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0
aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PERyYXdHbHlwaHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PERyYXdQYXR0ZXJuPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1JlY3Q+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxE
cmF3TGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVz
Rm9yVGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
cjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdD4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSb3Vu
ZGVkUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RmlsbElubGluZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmx1c2hDb250
ZXh0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8R2V0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PFN0cm9rZVJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUxpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCk7Ci0gICAgICAg
IGJyZWFrOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUlubGluZVBh
dGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGVhclJlY3Q+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCk7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgLy8gSXRlbXMgd2l0aCBubyBhZGRpdGlvbmFsIGRhdGEuCi0gICAgY2FzZSBJ
dGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgSXRl
bVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0
dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICBi
cmVhazsKLSAgICB9CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCit7CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0
byYgZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgIHRzIDw8IGRpc3BsYXlMaXN0SXRlbS5pdGVt
VHlwZTsKKyAgICAgICAgdHMgPDwgZGlzcGxheUxpc3RJdGVtOworICAgIH0sIGl0ZW0pOwogICAg
IHJldHVybiB0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZTkz
YjA0NjQ0M2JhNGFjNzYyYWUzMjMxNTNjYjRmYTBjM2E2NWE1Zi4uZWJmNmZkMjIxZTljYjJjODc3
ZWJhZjIyYWQ2MjMyYWUyZjc3OGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CkBAIC0yNiwxMSArMjYsMTQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZm
ZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgogI2luY2x1
ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2x5
cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmgiCkBAIC0zOCw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGV4dFN0cmVhbTsKQEAgLTUzLDEyICs1NywxMCBA
QCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiAvKiBpc0lubGluZUl0ZW0gaW5kaWNhdGVzIHdo
ZXRoZXIgdGhlIG9iamVjdCBuZWVkcyB0byBiZSBwYXNzZWQgdGhyb3VnaCBJUEM6OkVuY29kZXIg
aW4gb3JkZXIgdG8gc2VyaWFsaXplLAogICogb3Igd2hldGhlciB3ZSBjYW4ganVzdCB1c2UgcGxh
Y2VtZW50IG5ldyBhbmQgYmUgZG9uZS4KLSAqIEl0IG5lZWRzIHRvIG1hdGNoICgxKSBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjplbmNvZGVJdGVtKCksICgyKSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkZWNvZGVJdGVtKCksCi0gKiBhbmQgKDMpIGlzSW5saW5lSXRlbSgpIGluIERpc3BsYXlMaXN0
SXRlbVR5cGUuY3BwLgogICoKICAqIGlzRHJhd2luZ0l0ZW0gaW5kaWNhdGVzIGlmIHRoaXMgY29t
bWFuZCBjYW4gYWZmZWN0IGRpcnR5IHJlY3RzLgogICogV2UgY2FuIGRvIHRoaW5ncyBsaWtlIHNr
aXAgZHJhd2luZyBpdGVtcyB3aGVuIHJlcGxheWluZyB0aGVtIGlmIHRoZWlyIGV4dGVudHMgZG9u
J3QgaW50ZXJzZWN0IHdpdGggdGhlIGN1cnJlbnQgY2xpcC4KLSAqIEl0IG5lZWRzIHRvIG1hdGNo
IGlzRHJhd2luZ0l0ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcC4gKi8KKyAqLwogCiBj
bGFzcyBTYXZlIHsKIHB1YmxpYzoKQEAgLTI3Nyw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERl
Y29kZXImKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2Uq
IHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5J
bWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIHN0cnVjdCBQYXR0ZXJuRGF0YSB7CkBAIC05MTEsNyArOTEzLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSB7IHJldHVybiBtX2ZvbnRJZGVudGlmaWVy
OyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2FsQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIEZsb2F0UG9p
bnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAgY29u
c3QgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mIGdseXBocygpIGNvbnN0IHsgcmV0dXJu
IG1fZ2x5cGhzOyB9CkBAIC0yMjc0LDcgKzIyNzYsOTcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7Cit1c2luZyBEaXNwbGF5TGlzdEl0ZW0g
PSBWYXJpYW50PAorICAgIFNhdmUsCisgICAgUmVzdG9yZSwKKyAgICBUcmFuc2xhdGUsCisgICAg
Um90YXRlLAorICAgIFNjYWxlLAorICAgIFNldENUTSwKKyAgICBDb25jYXRlbmF0ZUNUTSwKKyAg
ICBTZXRJbmxpbmVGaWxsR3JhZGllbnQsCisgICAgU2V0SW5saW5lRmlsbENvbG9yLAorICAgIFNl
dElubGluZVN0cm9rZUNvbG9yLAorICAgIFNldFN0cm9rZVRoaWNrbmVzcywKKyAgICBTZXRTdGF0
ZSwKKyAgICBTZXRMaW5lQ2FwLAorICAgIFNldExpbmVEYXNoLAorICAgIFNldExpbmVKb2luLAor
ICAgIFNldE1pdGVyTGltaXQsCisgICAgQ2xlYXJTaGFkb3csCisgICAgQ2xpcCwKKyAgICBDbGlw
T3V0LAorICAgIENsaXBUb0ltYWdlQnVmZmVyLAorICAgIENsaXBPdXRUb1BhdGgsCisgICAgQ2xp
cFBhdGgsCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAgRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzLAorICAgIERyYXdHbHlwaHMsCisgICAgRHJhd0ltYWdlQnVmZmVyLAorICAg
IERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGF0dGVybiwKKyAgICBCZWdpblRyYW5zcGFyZW5j
eUxheWVyLAorICAgIEVuZFRyYW5zcGFyZW5jeUxheWVyLAorICAgIERyYXdSZWN0LAorICAgIERy
YXdMaW5lLAorICAgIERyYXdMaW5lc0ZvclRleHQsCisgICAgRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlciwKKyAgICBEcmF3RWxsaXBzZSwKKyAgICBEcmF3UGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5n
UGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5nUmVjdHMsCisgICAgRmlsbFJlY3QsCisgICAgRmlsbFJl
Y3RXaXRoQ29sb3IsCisgICAgRmlsbFJlY3RXaXRoR3JhZGllbnQsCisgICAgRmlsbENvbXBvc2l0
ZWRSZWN0LAorICAgIEZpbGxSb3VuZGVkUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZSwKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICBGaWxsSW5saW5lUGF0aCwKKyNl
bmRpZgorICAgIEZpbGxQYXRoLAorICAgIEZpbGxFbGxpcHNlLAorICAgIEdldEltYWdlRGF0YSwK
KyAgICBQdXRJbWFnZURhdGEsCisgICAgUGFpbnRGcmFtZUZvck1lZGlhLAorICAgIFN0cm9rZVJl
Y3QsCisgICAgU3Ryb2tlTGluZSwKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICBT
dHJva2VJbmxpbmVQYXRoLAorI2VuZGlmCisgICAgU3Ryb2tlUGF0aCwKKyAgICBTdHJva2VFbGxp
cHNlLAorICAgIENsZWFyUmVjdCwKKyNpZiBVU0UoQ0cpCisgICAgQXBwbHlTdHJva2VQYXR0ZXJu
LAorICAgIEFwcGx5RmlsbFBhdHRlcm4sCisjZW5kaWYKKyAgICBBcHBseURldmljZVNjYWxlRmFj
dG9yLAorICAgIEZsdXNoQ29udGV4dCwKKyAgICBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIs
CisgICAgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPjsKKworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisK
K2lubGluZSBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgZGlzcGxheUxpc3RJdGVtKQoreworICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1
dG8mIGRpc3BsYXlMaXN0SXRlbSkgeworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlz
RHJhd2luZ0l0ZW07CisgICAgfSwgZGlzcGxheUxpc3RJdGVtKTsKK30KKworaW5saW5lIGNvbnN0
ZXhwciBJdGVtVHlwZSBpdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0
SXRlbSkKK3sKKyAgICByZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlz
dEl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlMaXN0SXRlbS5pdGVtVHlwZTsKKyAgICB9
LCBkaXNwbGF5TGlzdEl0ZW0pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0ZXhw
ciBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKCkKK3sKKyAgICByZXR1cm4g
c2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCks
IHNpemVvZihUKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkBAIC0yMzM0LDYgKzI0MjYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyLAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVt
QnVmZmVyLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6R2V0SW1hZ2VEYXRh
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWQ4NmJkYjkyZDljMTE4
NzRkOTYxODBlYWI2ZjcxMWY5NTA5ZjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3Bw
CkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0
b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKwor
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kKQorICAgIDog
bV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKK3sKKyAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9F
bmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykgeworICAgICAgICBpZiAoYXV0byBpdGVt
cyA9IGl0ZW1CdWZmZXIoKSkgeworICAgICAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0g
aXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICAgICAgICAgIG1fY3Vyc29yID0g
ZW5kT2ZDdXJyZW50QnVmZmVyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbW92
ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKK30KKworI2lmIEFTU0VSVF9FTkFCTEVE
Citib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAoreworICAgIGlmICht
X2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25z
dCBhdXRvKiBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gZW5kQ3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZm
ZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworICAgIHJldHVybiBtX2N1
cnNvciA9PSBlbmRDdXJzb3I7Cit9CisjZW5kaWYKKworYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVlPgoreworICAgIEFTU0VSVCgh
YXRFbmQoKSk7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRJdGVtSW5mbyk7CisKKyAgICBhdXRvIGN1
cnJlbnRJdGVtSW5mbyA9IGN1cnJlbnRJdGVtKCk7CisgICAgaWYgKCFjdXJyZW50SXRlbUluZm8p
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBtX2N1cnJlbnRJdGVtSW5mbyA9
IHt7IGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyLCBjdXJyZW50SXRlbUluZm8tPmlzRHJh
d2luZ0l0ZW0gfX07CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGN1cnJlbnRFeHRlbnQ7Cisg
ICAgaWYgKGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9kaXNwbGF5TGlzdC5t
X2RyYXdpbmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBt
X2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CisK
KyAgICByZXR1cm4ge3sgV1RGTW92ZShjdXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSks
IFdURk1vdmUoY3VycmVudEV4dGVudCksIGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyIH19
OworfQorCit2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCit7CisgICAg
QVNTRVJUKCFhdEVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50SXRlbUluZm8pOworCisgICAg
aWYgKG1fY3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtKQorICAgICAgICArK21fZHJhd2lu
Z0l0ZW1JbmRleDsKKworICAgIG1fY3Vyc29yICs9IG1fY3VycmVudEl0ZW1JbmZvLT5zaXplSW5C
dWZmZXI7CisKKyAgICBpZiAobV9jdXJzb3IgPT0gZW5kT2ZDdXJyZW50QnVmZmVyKCkgJiYgbV9y
ZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXpl
KCkpIHsKKyAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4Kys7CisgICAgICAgIG1vdmVDdXJz
b3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7CisgICAgfQorCisgICAgbV9jdXJyZW50SXRlbUlu
Zm8gPSB7IH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0YXRp
YyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNlOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6
dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmlzVmFsaWQoKSk+PiA9IHRydWU7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYpCit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMg
aW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4g
aXNWYWxpZChjb25zdCBJdGVtJiBpdGVtKQoreworICAgIHJldHVybiBpdGVtLmlzVmFsaWQoKTsK
K30KKwordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEk+CitpbmxpbmUgYXV0byBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkgY29uc3QgLT4gT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1
bHQ+Cit7CisgICAgLy8gV2UgY2FuJ3QgdXNlIGVhcmx5LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1
c2Ugb2YgdGVtcGxhdGUgZXhwYW5zaW9uIGluIHRoZSBjb21waWxlci4KKyAgICAvLyBEb2luZyBz
byB3b3VsZCBlaXRoZXIgQSkgYnJlYWsgdGhlIFdlYktpdCBzdHlsZSBydWxlIGFib3V0IGRvaW5n
ICJpZiAoKSB7IHJldHVybjsgfSByZXR1cm47IiBpbnN0ZWFkIG9mICJpZiAoKSB7IHJldHVybjsg
fSBlbHNlIHsgcmV0dXJuOyB9IgorICAgIC8vIG9yIEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBp
bmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9u
cyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIGlmIGNvbnN0ZXhwciAoSSA8IFdURjo6dmFyaWFudF9z
aXplPERpc3BsYXlMaXN0SXRlbT46OnZhbHVlKSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0
SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJLCBEaXNwbGF5TGlzdEl0ZW0+
OworCisgICAgICAgIGNvbnN0IGF1dG8qIGVuZE9mQ3VycmVudEJ1ZmZlciA9IHRoaXMtPmVuZE9m
Q3VycmVudEJ1ZmZlcigpOworCisgICAgICAgIGlmIChtX2N1cnNvciArIDEgPiBlbmRPZkN1cnJl
bnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1
dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0pOworICAgICAg
ICBpZiAoaXRlbVR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6aXRlbVR5cGUpCisgICAgICAg
ICAgICByZXR1cm4gY3VycmVudEl0ZW08SSArIDE+KCk7CisKKyAgICAgICAgaWYgKERpc3BsYXlM
aXN0SXRlbVR5cGU6OmlzSW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKG1fY3Vyc29yICsg
cGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPERpc3BsYXlMaXN0SXRlbVR5cGU+KCkgPiBl
bmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBE
aXNwbGF5TGlzdEl0ZW1UeXBlKj4obV9jdXJzb3IgKyBzaXplb2YodWludDY0X3QpKTsKKyAgICAg
ICAgICAgIGlmICghaXNWYWxpZChpdGVtKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIg
PSBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90
KSwgc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAgICAgICAgIHJldHVybiB7eyBp
dGVtLCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3
aW5nSXRlbSB9fTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1CdWZm
ZXIoKS0+bV9yZWFkaW5nQ2xpZW50OworICAgICAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKG1fY3Vyc29yICsgMiAqIHNpemVv
Zih1aW50NjRfdCkgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3QqPihtX2N1cnNvcilbMV07CisgICAgICAgIGNvbnN0IGF1dG8qIHN0YXJ0T2ZEYXRh
ID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKKyAgICAgICAgaWYgKHN0YXJ0T2ZE
YXRhICsgZGF0YUxlbmd0aCA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBpdGVtID0gY2xpZW50LT5kZWNvZGVJdGVt
KHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSk7CisgICAgICAgIGlmICghaXRlbSB8
fCAhaXNWYWxpZChpdGVtLnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6
ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRh
dGFMZW5ndGgpOworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZShpdGVtLnZhbHVlKCkpLCBjdXJy
ZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9
fTsKKyAgICB9CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIERpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKQoreworICAg
IGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgaWYgKCFpdGVtcykKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRP
bmx5QnVmZmVycy5zaXplKCk7CisgICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJl
ck9mUmVhZE9ubHlCdWZmZXJzKSB7CisgICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUg
PSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAg
ICAgbV9jdXJzb3IgPSBjdXJyZW50QnVmZmVySGFuZGxlLmRhdGE7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVm
ZmVycyk7CisgICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YTsK
KyAgICB9Cit9CisKK3VpbnQ4X3QqIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50
QnVmZmVyKCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIEFT
U0VSVChpdGVtcyk7CisKKyAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMt
Pm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4
IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZl
ckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhd
OworICAgICAgICByZXR1cm4gY3VycmVudEJ1ZmZlckhhbmRsZS5kYXRhICsgY3VycmVudEJ1ZmZl
ckhhbmRsZS5jYXBhY2l0eTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlcklu
ZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsKKyAgICByZXR1cm4gaXRlbXMtPm1fd3Jp
dGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworfQorCit9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGEy
NmFhMmUyNTYxOWZhZmIzOTEwOTQ1YWNhMzI1NGYwMWNhODZhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEaXNwbGF5TGlzdC5o
IgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworY2xhc3MgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHsK
K3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEltbWVkaWF0ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9
OworICAgIEl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiwgSW1tZWRpYXRlbHlNb3ZlVG9FbmQg
PSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6Tm8pOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVyLm1fZGlz
cGxheUxpc3QgJiYgbV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlcmF0b3IrKygpOworCisgICAgc3RydWN0IFZh
bHVlIHsKKyAgICAgICAgRGlzcGxheUxpc3RJdGVtIGl0ZW07CisgICAgICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gZXh0ZW50OworICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsK
KyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmFsdWU+IG9wZXJhdG9yKigp
IGNvbnN0OworCitwcml2YXRlOgorICAgIHN0cnVjdCBDdXJyZW50SXRlbVJlc3VsdCB7CisgICAg
ICAgIERpc3BsYXlMaXN0SXRlbSBkaXNwbGF5TGlzdEl0ZW07CisgICAgICAgIHN0ZDo6c2l6ZV90
IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAg
dGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgorICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVz
dWx0PiBjdXJyZW50SXRlbSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3Zl
Q3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOworICAgIHVpbnQ4X3QqIGVuZE9mQ3VycmVu
dEJ1ZmZlcigpIGNvbnN0OworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29sIGF0RW5kKCkg
Y29uc3Q7CisjZW5kaWYKKworICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJZkV4aXN0cygpOyB9CisKKyAgICBjb25zdCBE
aXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKKyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1JbmZvIHsK
KyAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVmZmVyOworICAgICAgICBib29sIGlzRHJhd2lu
Z0l0ZW07CisgICAgfTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPEN1cnJlbnRJdGVtSW5mbz4gbV9j
dXJyZW50SXRlbUluZm87CisgICAgdWludDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07CisgICAg
c2l6ZV90IG1fcmVhZE9ubHlCdWZmZXJJbmRleCB7IDAgfTsKKyAgICBzaXplX3QgbV9kcmF3aW5n
SXRlbUluZGV4IHsgMCB9OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IDgzN2YwZTkwZTI3ZjU5OGMwY2I3ZTkxMzY0M2UwNWI4YTAzMDA2
OTMuLjg3ZjY2NjdlOGJiODY4MTk3YTQyOWRkNzk4ZWYxN2Y5MDdjMjFlOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyMSwyNiArMTIxLDE3IEBAIHZv
aWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZUNoYW5nZSYgY2hhbmdlcywKICAgICAgICAgYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVu
dD4oKmNoYW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnQsIGNoYW5nZXMubV9zdGF0ZS5maWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVt
T2ZUeXBlKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1f
ZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtT2ZUeXBlKHR5cGUpOwotCi0gICAgaWYgKGlzRHJhd2lu
Z0l0ZW0odHlwZSkKLSNpZiBVU0UoQ0cpCi0gICAgICAgIHx8IHR5cGUgPT0gSXRlbVR5cGU6OkFw
cGx5U3Ryb2tlUGF0dGVybiB8fCB0eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4K
LSNlbmRpZgotICAgICkgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3Rh
dGVDaGFuZ2VzID0gY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2U7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3Rh
dGVDaGFuZ2VzLmNoYW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0
ZSk7Ci0gICAgICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgewotICAgICAgICAgICAgTE9H
X1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5n
IHN0YXRlICIgPDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3Rh
dGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKSk7Ci0gICAgICAgICAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oc3RhdGVDaGFuZ2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgICAgICAgICBz
dGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFncyA9IHsgfTsKLSAgICAgICAgICAgIGN1cnJlbnRTdGF0
ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsKLSAgICAgICAgfQot
ICAgICAgICBjdXJyZW50U3RhdGUoKS53YXNVc2VkRm9yRHJhd2luZyA9IHRydWU7Cit2b2lkIFJl
Y29yZGVyOjp3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VzRnJvbUxhc3RT
dGF0ZSA9IHN0YXRlQ2hhbmdlcy5jaGFuZ2VzRnJvbVN0YXRlKGN1cnJlbnRTdGF0ZSgpLmxhc3RE
cmF3aW5nU3RhdGUpOworICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgeworICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZp
bmcgc3RhdGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9z
dGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKKyAgICAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJ
dGVtKHN0YXRlQ2hhbmdlcywgY2hhbmdlc0Zyb21MYXN0U3RhdGUpOworICAgICAgICBzdGF0ZUNo
YW5nZXMubV9jaGFuZ2VGbGFncyA9IHsgfTsKKyAgICAgICAgY3VycmVudFN0YXRlKCkubGFzdERy
YXdpbmdTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOwogICAgIH0KKyAgICBjdXJyZW50U3Rh
dGUoKS53YXNVc2VkRm9yRHJhd2luZyA9IHRydWU7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAppbmRleCAwY2VjNDhkNzE2M2E2MWM5MTg4MGUyNmY1MTZkYWEyYTA3MDkzY2Fh
Li5mMjBlNjM2OWEwZDJkMTk0NDBjYjM4YmNjMDA3ZTFkY2IyNzhlMmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQo
QXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICB3aWxsQXBwZW5kSXRlbU9mVHlwZShUOjpp
dGVtVHlwZSk7CisgICAgICAgIHdpbGxBcHBlbmRJdGVtT2ZUeXBlPFQ+KCk7CiAgICAgICAgIG1f
ZGlzcGxheUxpc3QuYXBwZW5kPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAKICAg
ICAgICAgaWYgY29uc3RleHByIChUOjppc0RyYXdpbmdJdGVtKSB7CkBAIC0xNzIsNyArMTcyLDIx
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKCkKKyAgICB7CisgICAgICAgIGlmICht
X2RlbGVnYXRlKQorICAgICAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW1PZlR5cGUo
VDo6aXRlbVR5cGUpOworCisgICAgICAgIGlmIChUOjppc0RyYXdpbmdJdGVtCisjaWYgVVNFKENH
KQorICAgICAgICAgICAgfHwgVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0
dGVybiB8fCBUOjppdGVtVHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuCisjZW5k
aWYKKyAgICAgICAgKQorICAgICAgICAgICAgd2lsbEFwcGVuZERyYXdpbmdJdGVtKCk7CisgICAg
fQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKTsKIAog
ICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggZDE3MzdhMjc5YzM5N2UwOTA5M2QxMzg0
MzNkYjM4NDdkNmY0NzQ5Mi4uZTMyZTA2MTk3N2VjNmI4MDk1ZjNlNjU5NmE2ODIzMTZlYmRkYWE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogCiAjaW5jbHVkZSAiRGlzcGxh
eUxpc3RJdGVtcy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtNTIsOSArNTMsOCBAQCBHcmFwaGljc0NvbnRleHQmIFJl
cGxheWVyOjpjb250ZXh0KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBz
dGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVm
ZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVy
cywgY29uc3QgVCYgaW1hZ2VCdWZmZXJJdGVtKQogewotICAgIGF1dG8mIGltYWdlQnVmZmVySXRl
bSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1
ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVm
ZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGlt
YWdlQnVmZmVySXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwpAQCAtNjQsOSArNjQs
OCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpYwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5s
aW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0
aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VI
YXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZl
SW1hZ2VzLCBjb25zdCBUJiBuYXRpdmVJbWFnZUl0ZW0pCiB7Ci0gICAgYXV0byYgbmF0aXZlSW1h
Z2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5h
dGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2UgPSBu
YXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgbmF0aXZlSW1h
Z2VJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZSk7CkBAIC03NSwxMCArNzQsOCBAQCBpbmxpbmUg
c3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJ
bWFnZUl0ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKLWlu
bGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNl
dFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFz
aE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdl
cywgY29uc3QgU2V0U3RhdGUmIHNldFN0YXRlSXRlbSkKIHsKLSAgICBhdXRvJiBzZXRTdGF0ZUl0
ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKLQogICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0
ZXJuSW1hZ2UgPSBudWxscHRyOwogICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0g
bnVsbHB0cjsKIApAQCAtOTksOSArOTYsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDbwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCitp
bmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlG
b250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNv
dXJjZU1hcCYgZm9udHMsIGNvbnN0IFQmIGZvbnRJdGVtKQogewotICAgIGF1dG8mIGZvbnRJdGVt
ID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGZvbnRJdGVt
LmZvbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSBmb250cy5nZXQocmVzb3Vy
Y2VJZGVudGlmaWVyKSkgewogICAgICAgICBmb250SXRlbS5hcHBseShjb250ZXh0LCAqZm9udCk7
CkBAIC0xMTAsNjggKzEwNiw2OCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleAogICAgIHJldHVy
biByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKLXN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5
UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwbGF5ZXI6
OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCitleHRlcm4gR3JhcGhpY3NDb250ZXh0JiBzeW50
aGVzaXplTFZhbHVlR3JhcGhpY3NDb250ZXh0OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1l
ID0gdm9pZD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseSA9IGZhbHNlOwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBs
eTxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5hcHBseShzeW50aGVz
aXplTFZhbHVlR3JhcGhpY3NDb250ZXh0KSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0FwcGx5
PEl0ZW0+LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiwgR3JhcGhpY3NDb250ZXh0JikKK3sKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWZfdDxIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHkoY29uc3QgSXRlbSYgaXRlbSwg
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCit7CisgICAgcmV0dXJuIGl0ZW0uYXBw
bHkoZ3JhcGhpY3NDb250ZXh0KTsKK30KKworYXV0byBSZXBsYXllcjo6YXBwbHlJdGVtKGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0CiB7CiAgICAgaWYgKG1f
ZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgY29udGV4dCgpKSkKICAgICAgICAg
cmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKIAotICAgIGlmIChpdGVtLmlz
PERyYXdJbWFnZUJ1ZmZlcj4oKSkgeworICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0
b3IoWyZdKGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsK
ICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVy
cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5n
Q2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikg
fTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9
Ci0KLSAgICBpZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkgeworICAgIH0sIFsmXShj
b25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSkgLT4gc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BS
ZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiB7CiAg
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUlt
YWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVy
cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5n
Q2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikg
fTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9
Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKKyAgICB9LCBbJl0oY29u
c3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBp
ZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFn
ZUl0ZW08RHJhd05hdGl2ZUltYWdlPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkK
ICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNv
dXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlm
IChpdGVtLmlzPERyYXdHbHlwaHM+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgp
LCBtX2ZvbnRzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0pIC0+
IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4oY29udGV4dCgp
LCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5
UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3UGF0dGVybj4oKSkgewotICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRp
dmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0p
KQorICAgIH0sIFsmXShjb25zdCBEcmF3R2x5cGhzJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQg
eworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBw
bHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQogICAgICAg
ICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBX
VEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVy
biB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0u
aXM8U2V0U3RhdGU+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgU2V0U3RhdGUmIGl0ZW0pIC0+IEFw
cGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBp
dGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9Owog
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQot
ICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgfSwg
WyZdKGNvbnN0IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBjbGlwSXRlbSkgLT4gQXBwbHlJ
dGVtUmVzdWx0IHsKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9Owot
ICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPigpOwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5j
b2xvclNwYWNlKCksIG1fY29udGV4dCk7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgV1RG
OjpudWxsb3B0IH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigp
KSB7CisgICAgfSwgWyZdKGNvbnN0IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0p
IC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbSwgV1RGOjpu
dWxsb3B0IH07Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigpOwogICAgICAgICBtX2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1f
bWFza0ltYWdlQnVmZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgbV9tYXNr
SW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0sIFsmXShjb25zdCBh
dXRvJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBhcHBseShpdGVtLCBjb250
ZXh0KCkpOworICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9Owor
ICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiBSZXBs
YXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBi
b29sIHRyYWNrUmVwbGF5TGlzdCkKQEAgLTE4NywyOCArMTgzLDMwIEBAIFJlcGxheVJlc3VsdCBS
ZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tS
ZXBsYXlMaXN0CiAgICAgc2l6ZV90IGkgPSAwOwogI2VuZGlmCiAgICAgUmVwbGF5UmVzdWx0IHJl
c3VsdDsKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiBt
X2Rpc3BsYXlMaXN0KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBt
X2Rpc3BsYXlMaXN0KSB7CisgICAgICAgIGlmICghZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAg
ICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlk
SXRlbTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgYXV0
byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFs
dWUoKTsKKwogICAgICAgICBpZiAoIWluaXRpYWxDbGlwLmlzWmVybygpICYmIGV4dGVudCAmJiAh
ZXh0ZW50LT5pbnRlcnNlY3RzKGluaXRpYWxDbGlwKSkgewogICAgICAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJza2lwcGluZyAiIDw8IGkrKyA8PCAiICIg
PDwgaXRlbSk7CiAgICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNp
emVJbkJ1ZmZlcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKCFpdGVtKSB7Ci0gICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9w
UmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJhcHBs
eWluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CiAKLSAgICAgICAgaWYgKGl0ZW0tPmlzPE1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSkgeworICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXI+KGl0ZW0pKSB7CiAgICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0g
aXRlbVNpemVJbkJ1ZmZlcjsKICAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9
IFN0b3BSZXBsYXlSZWFzb246OkNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI7Ci0gICAgICAg
ICAgICByZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBpdGVtLT5nZXQ8TWV0YUNv
bW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpLmlkZW50aWZpZXIoKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IFdURjo6Z2V0PE1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbSkuaWRlbnRpZmllcigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byBbcmVhc29u
Rm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJdID0gYXBwbHlJdGVt
KCppdGVtKTsgcmVhc29uRm9yU3RvcHBpbmcpIHsKKyAgICAgICAgaWYgKGF1dG8gW3JlYXNvbkZv
clN0b3BwaW5nLCBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyXSA9IGFwcGx5SXRlbShp
dGVtKTsgcmVhc29uRm9yU3RvcHBpbmcpIHsKICAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JT
dG9wcGluZyA9ICpyZWFzb25Gb3JTdG9wcGluZzsKICAgICAgICAgICAgIHJlc3VsdC5taXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE3LDkgKzIxNSw5IEBAIFJlcGxh
eVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJv
b2wgdHJhY2tSZXBsYXlMaXN0CiAgICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBp
dGVtU2l6ZUluQnVmZmVyOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3Qp
KSB7Ci0gICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoKml0ZW0pOwotICAgICAgICAgICAg
aWYgKGl0ZW0tPmlzRHJhd2luZ0l0ZW0oKSkKLSAgICAgICAgICAgICAgICByZXBsYXlMaXN0LT5h
ZGREcmF3aW5nSXRlbUV4dGVudChXVEZNb3ZlKGV4dGVudCkpOworICAgICAgICAgICAgcmVwbGF5
TGlzdC0+YXBwZW5kKGl0ZW0pOworICAgICAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkp
CisgICAgICAgICAgICAgICAgcmVwbGF5TGlzdC0+YWRkRHJhd2luZ0l0ZW1FeHRlbnQoT3B0aW9u
YWw8RmxvYXRSZWN0PihleHRlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggMTgxYTEyYjBlNTE4ZThkYzIxZDNiNzQ5ZjI3
MTAxZDJhM2U5NmYzOS4uOWUwMzkyNWM2ZGY1ZmRkMjQ1NGNlYWE3MzE4MThmM2M5ZGJjMjZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDEyICs2NiwxMyBAQCBw
dWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB+RGVsZWdhdGUoKSB7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KEl0ZW1IYW5kbGUs
IEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBhcHBseShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mLCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIH07CiAgICAgCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0OwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29u
PiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1I
YW5kbGUpOworICAgIHVzaW5nIEFwcGx5SXRlbVJlc3VsdCA9IHN0ZDo6cGFpcjxPcHRpb25hbDxT
dG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj47
CisgICAgQXBwbHlJdGVtUmVzdWx0IGFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlE
aXNwbGF5TGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE0YjA1OWI1YjQ3M2Q0MGFmNzRlYjc3ZjBhMjM1
ZmFlZDVkMGI0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcApAQCAtMCwwICsxLDEz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKKwor
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworY2xhc3MgV3JpdGluZ0NsaWVudCA6IHB1YmxpYyBJ
dGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
cml2YXRlOgorICAgIEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QpIGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtSGVs
cGVyKGNvbnN0IFQmIGl0ZW0pCisgICAgeworICAgICAgICBWZWN0b3I8Y2hhcj4gYmFja2luZ1N0
b3JlKHNpemVvZihpdGVtKSk7CisgICAgICAgIG5ldyAoYmFja2luZ1N0b3JlLmRhdGEoKSkgVChp
dGVtKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYmFja2lu
Z1N0b3JlKSk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgICAgICByZXR1
cm4gZW5jb2RlSXRlbUhlbHBlcihpdGVtKTsKKyAgICAgICAgfSwgaXRlbSk7CisgICAgfQorCisg
ICAgdm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QsIERp
ZENoYW5nZUl0ZW1CdWZmZXIpIGZpbmFsCisgICAgeworICAgIH0KK307CisKK2NsYXNzIFJlYWRp
bmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSA9
IDA+CisgICAgc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gZGVjb2RlSXRlbUhlbHBl
cihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkK
KyAgICB7CisgICAgICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBi
ZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgICAgIC8v
IERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0IHN0eWxlIHJ1bGUgYWJv
dXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3RlYWQgb2YgImlmICgpIHsg
cmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgICAgIC8vIG9yIEIpIGNhdXNlIHRoZSBj
b21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0aW5nIHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBpZiBjb25zdGV4cHIgKEkg
PCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICAg
ICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90
PEksIERpc3BsYXlMaXN0SXRlbT47CisgICAgICAgICAgICBpZiAodHlwZSAhPSBEaXNwbGF5TGlz
dEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlSXRlbUhl
bHBlcjxJICsgMT4oZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5
cGUpKTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5TGlzdEl0ZW0oKnJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgRGlzcGxheUxpc3RJdGVtVHlwZSo+KGRhdGEpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgT3B0aW9uYWw8RGlzcGxheUxp
c3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBkZWNvZGVJdGVtSGVscGVyKGRhdGEsIGRhdGFMZW5ndGgsIHR5cGUpOworICAgIH0K
K307CisKK2NsYXNzIERlc3Ryb3lpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdD
bGllbnQgeworcHVibGljOgorcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSA9
IDA+CisgICAgc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gZGVjb2RlSXRlbUhlbHBl
cihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkK
KyAgICB7CisgICAgICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBi
ZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgICAgIC8v
IERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0IHN0eWxlIHJ1bGUgYWJv
dXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3RlYWQgb2YgImlmICgpIHsg
cmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgICAgIC8vIG9yIEIpIGNhdXNlIHRoZSBj
b21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0aW5nIHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBpZiBjb25zdGV4cHIgKEkg
PCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICAg
ICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90
PEksIERpc3BsYXlMaXN0SXRlbT47CisgICAgICAgICAgICBpZiAodHlwZSAhPSBEaXNwbGF5TGlz
dEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlSXRlbUhl
bHBlcjxJICsgMT4oZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5
cGUpKTsKKyAgICAgICAgICAgIGF1dG8mIG9iamVjdCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0
IERpc3BsYXlMaXN0SXRlbVR5cGUqPihkYXRhKTsKKyAgICAgICAgICAgIG9iamVjdC5+RGlzcGxh
eUxpc3RJdGVtVHlwZSgpOworICAgICAgICAgICAgcmV0dXJuIERpc3BsYXlMaXN0SXRlbShUcmFu
c2xhdGUoMCwgMCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVS
TiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVt
VHlwZSB0eXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIGRlY29kZUl0ZW1IZWxwZXIo
ZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAgfQorfTsKKworSW5NZW1vcnlEaXNwbGF5TGlz
dDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCisgICAgOiBtX3dyaXRpbmdDbGllbnQoV1RGOjptYWtl
VW5pcXVlPFdyaXRpbmdDbGllbnQ+KCkpCisgICAgLCBtX3JlYWRpbmdDbGllbnQoV1RGOjptYWtl
VW5pcXVlPFJlYWRpbmdDbGllbnQ+KCkpCit7CisgICAgc2V0SXRlbUJ1ZmZlckNsaWVudChtX3dy
aXRpbmdDbGllbnQuZ2V0KCkpOworICAgIHNldEl0ZW1CdWZmZXJDbGllbnQobV9yZWFkaW5nQ2xp
ZW50LmdldCgpKTsKK30KKworSW5NZW1vcnlEaXNwbGF5TGlzdDo6fkluTWVtb3J5RGlzcGxheUxp
c3QoKQoreworICAgIERlc3Ryb3lpbmdDbGllbnQgZGVzdHJveWluZ0NsaWVudDsKKyAgICBzZXRJ
dGVtQnVmZmVyQ2xpZW50KCZkZXN0cm95aW5nQ2xpZW50KTsKKyAgICBhdXRvIGVuZCA9IHRoaXMt
PmVuZCgpOworICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHRoaXMtPmJlZ2luKCk7IGl0ZXJhdG9y
ICE9IGVuZDsgKytpdGVyYXRvcikKKyAgICAgICAgaXRlcmF0b3Iub3BlcmF0b3IqKCk7Cit9CisK
K30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQy
YWI0ODA4NjIzZjhiZmY4OWI5NmFjYjUyNTAxMWExMDI3NjI1YjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlE
aXNwbGF5TGlzdC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3QuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CisKK2NsYXNzIEluTWVtb3J5RGlzcGxheUxpc3QgOiBwdWJsaWMg
RGlzcGxheUxpc3QgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEluTWVtb3J5RGlzcGxh
eUxpc3QoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkluTWVtb3J5RGlzcGxheUxp
c3QoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcldyaXRpbmdD
bGllbnQ+IG1fd3JpdGluZ0NsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQ+IG1fcmVhZGluZ0NsaWVudDsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXgg
NmNhMWU2MGRhYWJlNmUwNTgxYzI0YjYxYWQwNGI5OTY4NTM3YWNjNi4uNjVlMGVlMTJhNjdkOTI3
NmI5ODFmYzEwNDM3MWZmYWYwMWQ5ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsMzUgKzc0LDI2IEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBv
dmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkdldEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byYgZ2V0SW1hZ2VEYXRhSXRlbSA9
IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRJbWFnZURhdGE+KCk7Ci0gICAgICAg
ICAgICBVTlVTRURfVkFSSUFCTEUoZ2V0SW1hZ2VEYXRhSXRlbSk7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY0OSBJbXBs
ZW1lbnQgdGhpcy4KKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0o
Y29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YSYpIHsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byYgcHV0SW1h
Z2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+
KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VE
YXRhJiBwdXRJbWFnZURhdGFJdGVtKSB7CiAgICAgICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1h
Z2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBw
dXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwg
cHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Rmx1c2hDb250ZXh0PigpKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6Rmx1c2hDb250ZXh0JiBmbHVzaENvbnRleHQpIHsKICAgICAgICAgICAgIEJhc2VDb25j
cmV0ZUltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKTsKLSAgICAgICAgICAgIGF1dG8gaWRlbnRp
ZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkuaWRl
bnRpZmllcigpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gZmx1c2hDb250ZXh0Lmlk
ZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRGbHVz
aChpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpLmlkZW50aWZpZXIoKTsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0
ZW1CdWZmZXImIG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcikgeworICAgICAgICAgICAgYXV0
byBuZXh0QnVmZmVySWRlbnRpZmllciA9IG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlci5pZGVu
dGlmaWVyKCk7CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuc2V0TmV4dEl0
ZW1CdWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBj
b250ZXh0KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgICAg
IHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29u
dGV4dCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBp
dGVtKTsKICAgICB9CiAKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZWUxNDJmMmY1OWZkYjZi
NGNhYjU4OTM2NzAzZWRjMjZmY2YxOWI5Yi4uMjEzNDQxZGRjNWRlNzUyNDlkNzFlN2YwNTk2YzRj
MWM1NGE5ZTBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQsMjAgKzExNCwxOCBAQCB1
aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiti
b29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghaXRlbS5pczxEaXNw
bGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZv
ck1lZGlhPigpOwotICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5p
ZGVudGlmaWVyKCkpOwotICAgIGlmICghcGxheWVyKQorICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoWyZdKGNvbnN0IERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmIG1l
ZGlhSXRlbSkgeworICAgICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobWVk
aWFJdGVtLmlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JN
ZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJdGVt
LmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworICAgIHJldHVybiBXVEY6
OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFu
ZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQpAQCAtMTgyLDcgKzE4MCw3IEBAIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwCiAgICAgZWxz
ZQogICAgICAgICByZXBsYXllckRlbGVnYXRlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyKj4oJmRlc3RpbmF0aW9uKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXIgeworICAgIHJldHVybiBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIg
ewogICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCiAgICAgICAgIGRpc3BsYXlMaXN0LAog
ICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpLApAQCAtMzExLDEy
ICszMDksMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURp
c3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKICAgICB9CiB9CiAKLXZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoRGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25JZGVudGlmaWVyKQogewogICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaWRlbnRp
ZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9LCBXVEY6Om51
bGxvcHQgfX07CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0IHNyY1JlY3QsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSW50UmVjdCBzcmNSZWN0LCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxJbWFnZURhdGE+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zMjYsNyAr
MzI0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGltYWdlRGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Omdl
dERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzM2LDcgKzMzNCw3IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh1cmxTdHJpbmcpKTsKIH0K
IAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVy
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM0Niw3ICszNDQsNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
ZGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9y
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhf
dD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTM1Niw3ICszNTQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
YwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJlc2VydmVSZXNvbHV0aW9u
IHByZXNlcnZlUmVzb2x1dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMzY1LDE4ICszNjMsMTggQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5k
ZXJpbmcKICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5j
YWNoZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBpbWFnZSA9IGltYWdlQnVmZmVyLT5j
b3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6RG9udENvcHlCYWNraW5n
U3RvcmUpOworICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5OjpEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGlmICgh
aW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSBp
bWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsKLSAgICAgICAgYXV0byByZXN1bHRTaXplID0gcHJl
c2VydmVSZXNvbHV0aW9uID09IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6WWVzID8gYmFj
a2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKKyAgICAgICAgYXV0byByZXN1
bHRTaXplID0gcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzID8g
YmFja2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKICAgICAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRTaXplLCB7IH0p
OwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0
byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICAgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoKmltYWdlLCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7IH0sIHJlc3VsdFNpemUg
fSwgRmxvYXRSZWN0IHsgeyB9LCBiYWNrZW5kU2l6ZSB9LCB7IFdlYkNvcmU6OkNvbXBvc2l0ZU9w
ZXJhdG9yOjpDb3B5IH0pOworICAgICAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdl
LCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7IH0sIHJlc3VsdFNpemUgfSwgRmxvYXRSZWN0IHsg
eyB9LCBiYWNrZW5kU2l6ZSB9LCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogICAgICAg
ICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogICAgIH0oKTsKICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGhhbmRsZSkpOwpAQCAtNDM0LDEwNiArNDMyLDMzIEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlz
cGxheUxpc3Q6Okl0ZW1CCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpl
eGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwog
fQogCi1PcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJO
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRs
ZUxvY2F0aW9uKQordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgorc3RhdGljIGlubGluZSBP
cHRpb25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBkZWNvZGVJdGVtKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKQog
ewotICAgIC8qIFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlzSW5saW5lSXRlbSgpIGluIERpc3Bs
YXlMaXN0SXRlbVR5cGUuY3BwLCAoMikgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5jb2RlSXRl
bSgpLAotICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5s
aW5lSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMuCi0gICAgICogU2Vl
IHRoZSBjb21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aHkuICov
Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6Q2xpcE91dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRo
OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNS
aW5nUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGRlY29k
ZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPihkYXRhLCBsZW5ndGgs
IGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ds
eXBoczoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ds
eXBocz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRD
cmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxl
TG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlz
cGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlv
bik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBy
ZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUGF0aD4oZGF0YSwgbGVuZ3Ro
LCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxS
ZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpGaWxsUmVjdFdpdGhDb2xvcj4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVu
dD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZp
bGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6RmlsbFJvdW5kZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4g
ZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5l
RGFzaDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0TGlu
ZURhc2g+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6U2V0U3RhdGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4g
ZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTdHJva2VQYXRoPihkYXRhLCBsZW5ndGgsIGhh
bmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFw
cGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGVhclJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyU2hhZG93
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdE
b3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdFbGxpcHNlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZm
ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNw
YXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNl
OgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmx1c2hD
b250ZXh0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpSZXN0b3JlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlNjYWxlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0
cm9rZVRoaWNrbmVzczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxs
aXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpTdHJva2VMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkdldEltYWdlRGF0YTogewotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIC8vIFdl
IGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBiZWNhdXNlIG9mIHRlbXBsYXRlIGV4
cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgLy8gRG9pbmcgc28gd291bGQgZWl0aGVyIEEp
IGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBkb2luZyAiaWYgKCkgeyByZXR1cm47
IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1cm47IH0gZWxzZSB7IHJldHVybjsg
fSIKKyAgICAvLyBvciBCKSBjYXVzZSB0aGUgY29tcGlsZXIgdG8gaW5maW5pdGVseSByZWN1cnNl
IHdoZW4gZ2VuZXJhdGluZyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgb2YgdGhpcyBmdW5jdGlv
bi4KKyAgICBpZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3RJdGVtPjo6dmFsdWUpIHsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVt
VHlwZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEksIERpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdEl0ZW0+OworCisgICAgICAgIGlmICh0eXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0
ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZUl0ZW08SSArIDE+KGRhdGEsIGxlbmd0
aCwgdHlwZSk7CisKKyAgICAgICAgQVNTRVJUKCFEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lubGlu
ZUl0ZW0pOworICAgICAgICBpZiBjb25zdGV4cHIgKCFEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lu
bGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IElQQzo6RGVjb2Rlcjo6
ZGVjb2RlU2luZ2xlT2JqZWN0PERpc3BsYXlMaXN0SXRlbVR5cGU+KGRhdGEsIGxlbmd0aCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQudmFsdWUoKSkgfTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCitPcHRpb25hbDxEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpkZWNv
ZGVJdGVtKGRhdGEsIGxlbmd0aCwgdHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXgg
Mzk0M2Q1MjFkMzY5M2ZiZDJjZWYzNmI0N2QzNDk2YjFjMmRmMzY1OS4uYzljYzdjMDg0ZmFkY2Ri
ZjNiYjRhYzI5Y2E5NTlkOGYxYTllMzczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcx
LDcgQEAgcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUmIHJlbW90ZVJlc291cmNlQ2Fj
aGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGU7IH0KIAogICAgIC8vIFJlbmRlcmlu
ZyBvcGVyYXRpb25zLgotICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworICAgIGJvb2wgYXBw
bHlNZWRpYUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYs
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2Vu
dC4KICAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC04Niwx
OSArODYsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFw
aG9yZSYmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRl
Y29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7Ci0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlQW5kQ3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQot
ICAgIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2luZ2xl
T2JqZWN0PFQ+KGRhdGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZWJLaXQy
IHNob3VsZCBub3QgbmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDggYnl0ZXMgYXQgdGhlIGhh
bmRsZSBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSB0eXBlLgotICAgICAgICAgICAgLy8gTmVlZCB0byBm
aWd1cmUgb3V0IGEgd2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0aGluIGRpc3BsYXkgbGlz
dCBjb2RlIGluIFdlYkNvcmUuCi0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6
ZW9mKHVpbnQ2NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7Ci0gICAgICAgICAgICByZXR1cm4ge3sg
aGFuZGxlTG9jYXRpb24gfX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBvdmVycmlkZTsK
IAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBk
ZXN0aW5hdGlvbik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oCmluZGV4IDViYmYyNTYzMDYyOTBlNDlhYzhkYjMxYjVkMDFhYzk2YjU2YWFj
NDIuLjU3N2JmNTlmOWRmNjU3YTVmYzQyMjg5NWJmZWVlMDRkYjhhNDhkZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0zMDEsMTAzICszMDEsMjAgQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSkgY29u
c3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIC8qIFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlz
SW5saW5lSXRlbSgpIGluIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwLCAoMikgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGVjb2RlSXRlbSgpLAotICAgICAgICAgKiBhbmQgKDMpIGFsbCB0aGUgInN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwg
aXRlbSBjbGFzc2VzLgotICAgICAgICAgKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiBE
aXNwbGF5TGlzdEl0ZW1zLmggZm9yIHdoeS4gKi8KLQotICAgICAgICBzd2l0Y2ggKGl0ZW0udHlw
ZSgpKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlw
T3V0VG9QYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xl
T2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPihpdGVtLmdldDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJ
UEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xp
cFBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwUGF0aD4oKSk7Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0
aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgICAg
ICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0cz4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdGb2N1c1JpbmdSZWN0cz4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rl
cjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzPihp
dGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oKSk7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAg
ICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29k
ZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGl0
ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oKSk7Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAg
ICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVu
Y29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBhdGg+
KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUGF0aD4oKSk7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAg
ICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgICAgIHJl
dHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
aWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgICAgIHJldHVy
biBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gSVBD
OjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxS
b3VuZGVkUmVjdD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVj
dD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJ
bWFnZURhdGE6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVP
YmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oaXRlbS5nZXQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgICAgIHJldHVybiBJ
UEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0
TGluZURhc2g+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oKSk7
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToK
LSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpTZXRTdGF0ZT4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTdHJva2VQYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2Rl
U2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJva2VQYXRoPihpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ryb2tlUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVT
RShDRykKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5
RmlsbFBhdHRlcm46Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENs
aXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZToK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0Ogot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJl
bmN5TGF5ZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlmCi0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJlc3RvcmU6Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTYXZlOgotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGll
bnQ6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxp
bmVTdHJva2VDb2xvcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFU
SF9EQVRBKQotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ry
b2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbUhlbHBlcihj
b25zdCBUJiBpdGVtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghVDo6aXNJbmxpbmVJ
dGVtKQorICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0
PFQ+KGl0ZW0pOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBlbmNvZGVJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0
ZW0mIGl0ZW0pIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjp2aXNp
dChbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIC0+IFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVJdGVtSGVscGVyKGRpc3BsYXlM
aXN0SXRlbSk7CisgICAgICAgIH0sIGl0ZW0pOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkg
b3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBiM2E0NmFmZWYzMWU1MjQ2MDllMDQ2YjhmMDE1OTY5M2I4OTIyMGZjLi4zMGM4MGM0Zjg0
MGE3MGYzMGY5N2FhOWU0MzRlNzQ1NzJlOTBkMzQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMjIgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIE1pZ3JhdGUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHRvIHVzZSBhIFZhcmlhbnQgaW5z
dGVhZCBvZiBJdGVtSGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM1NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBOb3cgdGhhdCBhIEl0ZW1CdWZm
ZXJSZWFkaW5nQ2xpZW50IGFuZCBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCBhcmUKKyAgICAgICAg
ICAgICAgICBuZWNlc3NhcnkgZm9yIHVzaW5nIG5vbi1pbmxpbmUgZGlzcGxheSBsaXN0IGl0ZW1z
LCBzcGVjaWZ5IHRoZW0gaGVyZSBpbiB0aGUgdGVzdC4KKyAgICAgICAgICAgICAgICBBbHNvLCBt
aWdyYXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0gbGluZS1ieS1saW5lLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwOiBNaWdyYXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0gbGluZS1i
eS1saW5lLgorCiAyMDIxLTAzLTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbd2Via2l0c2NtcHldIEJhc2UgR2l0SHViIG1vY2sgbGlua3Mgb24gcHJv
dmlkZWQgcmVtb3RlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggMWNlMTQ2MjhjZWQ1ZTAwNjQyNWQyZWMyOWYx
ZGUwZWI3MWZlMTM3NC4uMTc3N2RiNzNkNzI3ODJlOWNiMmRjM2E4MDc4ZDg4MmQyMzQ4MWYxOCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0
VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFkaWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5NZW1vcnlEaXNwbGF5TGlzdC5oPgogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU4LDcgKzYw
LDExIEBAIHN0YXRpYyBQYXRoIGNyZWF0ZUNvbXBsZXhQYXRoKCkKIAogVEVTVChEaXNwbGF5TGlz
dFRlc3RzLCBBcHBlbmRJdGVtcykKIHsKLSAgICBEaXNwbGF5TGlzdCBsaXN0OworICAgIFZlY3Rv
cjxGaWxsUGF0aD4gZmlsbFBhdGhTdG9yYWdlOworICAgIFZlY3RvcjxGaWxsUmVjdFdpdGhHcmFk
aWVudD4gZmlsbFJlY3RXaXRoR3JhZGllbnRTdG9yYWdlOworICAgIFZlY3RvcjxGaWxsUmVjdFdp
dGhDb2xvcj4gZmlsbFJlY3RXaXRoQ29sb3JTdG9yYWdlOworCisgICAgSW5NZW1vcnlEaXNwbGF5
TGlzdCBsaXN0OwogCiAgICAgRVhQRUNUX1RSVUUobGlzdC5pc0VtcHR5KCkpOwogCkBAIC03OCw1
NiArODQsMzUgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKICAgICBFWFBF
Q1RfRkFMU0UobGlzdC5pc0VtcHR5KCkpOwogCiAgICAgYm9vbCBvYnNlcnZlZFVuZXhwZWN0ZWRJ
dGVtID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudCwgc2l6ZV0gOiBsaXN0
KSB7Ci0gICAgICAgIHN3aXRjaCAoaGFuZGxlLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBJdGVt
VHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFu
ZGxlLT5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5p
czxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRs
ZS0+Z2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3Bs
YXlMaXN0SXRlbSA6IGxpc3QpIHsKKyAgICAgICAgY29uc3QgYXV0byYgW2l0ZW0sIGV4dGVudCwg
c2l6ZV0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYg
aXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS50aGlja25lc3MoKSwgMS41KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB7Ci0g
ICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAg
ICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPEZpbGxQYXRoPigpKTsKLSAgICAgICAgICAgIGF1
dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxGaWxsUGF0aD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0
IEZpbGxQYXRoJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2lu
Z0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucGF0aCgpLnBsYXRmb3JtUGF0aCgp
LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OiB7Ci0gICAgICAgICAg
ICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBF
Q1RfVFJVRShoYW5kbGUtPmlzPEZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKLSAgICAgICAgICAg
IGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVtKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VR
KGl0ZW0ucmVjdCgpLCBGbG9hdFJlY3QoMS4sIDEuLCAxMC4sIDEwLikpOwogICAgICAgICAgICAg
RVhQRUNUX0VRKCZpdGVtLmdyYWRpZW50KCksIGdyYWRpZW50LnB0cigpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxD
b2xvcjogewotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgp
KTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8U2V0SW5saW5lRmlsbENvbG9y
PigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxTZXRJbmxpbmVGaWxs
Q29sb3I+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImIGl0ZW0p
IHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAg
ICAgICAgRVhQRUNUX0VRKGl0ZW0uY29sb3IoKSwgQ29sb3I6OnJlZCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgICAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJV
RShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5k
bGUtPmlzPFN0cm9rZUlubGluZVBhdGg+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhh
bmRsZS0+Z2V0PFN0cm9rZUlubGluZVBhdGg+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBTdHJv
a2VJbmxpbmVQYXRoJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJh
d2luZ0l0ZW0pOwogICAgICAgICAgICAgY29uc3QgYXV0byBwYXRoID0gaXRlbS5wYXRoKCk7CiAg
ICAgICAgICAgICBhdXRvJiBsaW5lID0gcGF0aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpOwogICAg
ICAgICAgICAgRVhQRUNUX0VRKGxpbmUuc3RhcnQsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAg
ICAgICAgRVhQRUNUX0VRKGxpbmUuZW5kLCBGbG9hdFBvaW50KDEwLiwgMTUuKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNhc2UgSXRlbVR5cGU6Ok1l
dGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OiB7CisgICAgICAgIH0sIFsmXShjb25zdCBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXImKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBhdXRvJikgewogICAgICAgICAgICAgb2JzZXJ2
ZWRVbmV4cGVjdGVkSXRlbSA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0p
OwogICAgIH0KIAogICAgIEVYUEVDVF9GQUxTRShvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtKTsKQEAg
LTE0NywxMSArMTMyLDExIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMpCiAK
ICAgICBsaXN0LmFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oRmxvYXRSZWN0IHsgMCwgMCwgMTAw
LCAxMDAgfSwgQ29sb3I6OmJsYWNrKTsKIAotICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnQs
IHNpemVdIDogbGlzdCkgewotICAgICAgICBFWFBFQ1RfRVEoaGFuZGxlLT50eXBlKCksIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8
RmlsbFJlY3RXaXRoQ29sb3I+KCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJ
dGVtIDogbGlzdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEZpbGxSZWN0V2l0aENvbG9yPihkaXNwbGF5TGlzdEl0ZW0tPml0ZW0pKTsKKyAgICAgICAgY29u
c3QgYXV0byYgaXRlbSA9IFdURjo6Z2V0PEZpbGxSZWN0V2l0aENvbG9yPihkaXNwbGF5TGlzdEl0
ZW0tPml0ZW0pOworICAgICAgICBFWFBFQ1RfRVEoaXRlbS5pdGVtVHlwZSwgSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yKTsKIAotICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8Rmls
bFJlY3RXaXRoQ29sb3I+KCk7CiAgICAgICAgIEVYUEVDVF9FUSgqaXRlbS5jb2xvcigpLnRyeUdl
dEFzU1JHQkFCeXRlcygpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICBFWFBFQ1RfRVEoaXRlbS5y
ZWN0KCksIEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIH0KQEAgLTE3MywxMiArMTU4
LDExIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVT
RURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBmaW5hbAorICAgICAg
ICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVt
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKSBm
aW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6OlN0
cm9rZVBhdGgpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGgsIHNpemVvZihzaXpl
X3QpKTsKLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBzaXplb2YodWludDY0X3Qp
KSBTdHJva2VQYXRoKG1faXRlbXNbKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0
YSldKTsKLSAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlvbiB9fTsKKyAgICAgICAg
ICAgIHJldHVybiB7IERpc3BsYXlMaXN0SXRlbShTdHJva2VQYXRoKG1faXRlbXNbKnJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKSkgfTsKICAgICAgICAgfQogCiAgICAgICAg
IGNvbnN0IFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVtczsKQEAgLTE5NCwxNCArMTc4LDE0IEBA
IFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICBwcml2YXRlOgog
ICAgICAgICBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5
KSBmaW5hbAogICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfTFQoY2FwYWNpdHksIGdsb2Jh
bEl0ZW1CdWZmZXJDYXBhY2l0eSk7CisgICAgICAgICAgICBFWFBFQ1RfTEUoY2FwYWNpdHksIGds
b2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSk7CiAgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZm
ZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkg
fTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0o
SXRlbUhhbmRsZSBoYW5kbGUpIGNvbnN0IGZpbmFsCisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKSBjb25zdCBmaW5hbAog
ICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7Ci0gICAg
ICAgICAgICBtX2l0ZW1zLmFwcGVuZChoYW5kbGUuZ2V0PFN0cm9rZVBhdGg+KCkpOworICAgICAg
ICAgICAgbV9pdGVtcy5hcHBlbmQoV1RGOjpnZXQ8U3Ryb2tlUGF0aD4oaXRlbSkpOwogICAgICAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZpbmRleCksIHNpemVvZihzaXplX3QpKTsKICAgICAgICAgfQogCkBAIC0yMjUsOCArMjA5
LDggQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgIHNoYWxs
b3dDb3B5LnNldEl0ZW1CdWZmZXJDbGllbnQoJnJlYWRlcik7CiAKICAgICBWZWN0b3I8SXRlbVR5
cGU+IGl0ZW1UeXBlczsKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IHNo
YWxsb3dDb3B5KQotICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGhhbmRsZS0+dHlwZSgpKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IHNoYWxsb3dDb3B5KQorICAgICAg
ICBpdGVtVHlwZXMuYXBwZW5kKGl0ZW1UeXBlKGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkpOwogCiAg
ICAgRVhQRUNUX0ZBTFNFKHNoYWxsb3dDb3B5LmlzRW1wdHkoKSk7CiAgICAgRVhQRUNUX0VRKGl0
ZW1UeXBlcy5zaXplKCksIDRVKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggYjU2OWYzNDA3
ZTA3NTE1ZjYyZTE5MDFlZTAyMmQ0MTk0N2ZmMzg5YS4uMWIyNWVmMjI1MmM5NGMyYjZhNmIyNGIz
OTY2Njg3MGM4NDAwMzhlYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODUsNyArODUsNyBAQCBz
dGF0aWMgSXRlbUJ1ZmZlcklkZW50aWZpZXIgZ2xvYmFsQnVmZmVySWRlbnRpZmllciA9IEl0ZW1C
dWZmZXJJZGVudGlmaWVyOjpnZW5lcgogCiBjbGFzcyBSZWFkaW5nQ2xpZW50IDogcHVibGljIEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8SXRlbUhhbmRs
ZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwg
SXRlbVR5cGUgdHlwZSwgdWludDhfdCopIGZpbmFsCisgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJ
dGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90
LCBJdGVtVHlwZSB0eXBlKSBmaW5hbAogICAgIHsKICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0
ZW1UeXBlOjpGaWxsUGF0aCk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMDAs
NyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRp
ZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25z
dCBmaW5hbCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5h
bCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CiAgICAgdm9pZCBkaWRBcHBlbmRE
YXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QsIERpZENoYW5nZUl0ZW1CdWZmZXIp
IGZpbmFsIHsgfQogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424103</attachid>
            <date>2021-03-24 00:58:05 -0700</date>
            <delta_ts>2021-03-24 11:23:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223560-20210324005804.patch</filename>
            <type>text/plain</type>
            <size>183385</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNkZjVhNWQxMjg0ZDAw
MGZhYjlmZTlmZjRhMWNiZTA2ODZmZGNlZC4uOTc5ZmQ4MmY1NTA5OWYyNDY1OWZiZjhkMmI5Y2Ix
NGUyMTRjYWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAyMS0wMy0yMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gUmVwbGFjZSBJdGVtSGFuZGxlIHdpdGggYSBjb25zdCBWYXJpYW50JgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gs
IHdlIHdlcmUgcmVwcmVzZW50aW5nIHRoZSBjb25jZXB0IG9mICJhbiB1bmtub3duIERpc3BsYXlM
aXN0SXRlbSIgd2l0aCBJdGVtSGFuZGxlLAorICAgICAgICB3aGljaCB3YXMgYSBwb2ludGVyIHRv
IGEgYnl0ZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIERpc3BsYXlMaXN0OjpJdGVyYXRvci4gVGhl
IGZpcnN0IGJ5dGUgd2FzIGFuCisgICAgICAgIGVudW0gdmFsdWUgd2hpY2ggdG9sZCB5b3UgaG93
IHRvIGludGVycHJldCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkYXRhLiBUaGUgcmVtYWluZGVyIG9m
IHRoZSBieXRlcworICAgICAgICB3ZXJlIGp1c3QgYW4gb2JqZWN0LCBwbGFjZWQgdGhlcmUgYnkg
cGxhY2VtZW50IG5ldy4KKworICAgICAgICBUaGlzIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBh
cyBhIFZhcmlhbnQuIFVzaW5nIGEgcmVhbCB2YXJpYW50IGhhcyBhIGZldyBiZW5lZml0cyBvdmVy
IHRoaXMgY3VzdG9tCisgICAgICAgIHNvbHV0aW9uLCB0aG91Z2g6CisgICAgICAgIDEuIEJldHRl
ciB0eXBlIHNhZmV0eS4gV2UgZG9uJ3QgaGF2ZSB0byByZWFkIGluZGl2aWR1YWwgYnl0ZXMgYW5k
IGludGVycHJldCBvdGhlciBieXRlcyBvdXJzZWx2ZXMuCisgICAgICAgICAgICAgICBJbnN0ZWFk
LCB3ZSBjYW4gcmVseSBvbiB0aGUgVmFyaWFudCBpbmZyYXN0cnVjdHVyZSB0byBkbyB0aGlzLCB3
aGljaCBpcyB2ZXJ5IHdlbGwtdGVzdGVkLgorICAgICAgICAyLiBJdCdzIGxlc3MgZXJyb3ItcHJv
bmUsIGJlY2F1c2Ugd2UgY2FuIHVzZSB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmcgdG8gY2F1c2Ug
dGhlIGNvbXBpbGVyIHRvCisgICAgICAgICAgICAgICBnZW5lcmF0ZSBmdW5jdGlvbnMgZm9yIHVz
LiBGb3IgZXhhbXBsZSwgd2UgY2FuIGRvIHNvbWV0aGluZyBsaWtlCisKKyAgICAgICAgcmV0dXJu
IFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSAtPiBib29sIHsKKyAg
ICAgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdEl0ZW0uaXNEcmF3aW5nSXRlbTsKKyAgICAgICAg
fSwgZGlzcGxheUxpc3RJdGVtKTsKKworICAgICAgICBpbnN0ZWFkIG9mCisKKyAgICAgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgorICAgICAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0Ogor
ICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xlYXJSZWN0OgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKKyAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CisgICAgICAgIC4uLgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgVGhpcyBwYXRjaCBhY3R1YWxseSBkZWxl
dGVzIGFsbCBvZiB0aGUgcGxhY2VzIHdoZXJlIHdlIGhhdmUgYmlnIHN3aWNoIHN0YXRlbWVudHMg
b2YgZHJhd2luZyBjb21tYW5kcywKKyAgICAgICAgYW5kIHJlcGxhY2VzIHRoZW0gYWxsIHdpdGgg
c2ltaWxhciB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmcuIEFzIHN1Y2gsIHRoaXMgcGF0Y2ggZGVs
ZXRlcyBtb3JlIHRoYW4KKyAgICAgICAgMTIwMCBsaW5lcyB0aGFuIGl0IGFkZHMuCisKKyAgICAg
ICAgTW9zdCBvZiB0aGlzIHBhdGNoIGlzIGp1c3QgYSBkaXJlY3QgdHJhbnNsYXRpb24gZnJvbSBJ
dGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbSAod2hpY2ggaXMgYSB0eXBlZGVmCisgICAgICAg
IHRvIGEgVmFyaWFudCksIGxpbmUtYnktbGluZS4gSG93ZXZlciwgdGhlcmUgYXJlIHRocmVlIG5v
bi10cml2aWFsIGNoYW5nZXM6CisKKyAgICAgICAgMS4gVGhlIGNvbXBsZXhpdHkgaW5zaWRlIERp
c3BsYXlMaXN0OjpJdGVyYXRvciBpcyBzaWduaWZpY2FudGx5IHJlZHVjZWQgYmVjYXVzZSBpdCBu
byBsb25nZXIgaGFzIHRvCisgICAgICAgICAgICAgICBhbGxvY2F0ZSB0aGUgYmFja2luZyBzdG9y
YWdlIGZvciB0aGUgSXRlbUhhbmRsZS4gSSd2ZSBhbHNvIHNpbXBsaWZpZWQgdGhlIHJldHVybiB0
eXBlIG9mCisgICAgICAgICAgICAgICBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigp
IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBjbGVhciB3aGF0IHRoZSBmaWVsZHMgbWVhbi4KKyAg
ICAgICAgMi4gSSd2ZSBtYWRlIHVzaW5nIGEgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgYW5kIEl0
ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHJlcXVpcmVkIGZvciB1c2luZyBub24taW5saW5lCisgICAg
ICAgICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbXMuIFRoZXNlIGNsaWVudHMgd2VyZSBhbHdheXMg
c3BlY2lmaWVkIGluIFdlYktpdCAtIHRoZXkgd2VyZSBvbmx5IG9wdGlvbmFsIGZvcgorICAgICAg
ICAgICAgICAgdGVzdGluZy4gSG93ZXZlciwgdGhlIGNvZGUgY291bGQgYmUgc2lnbmlmaWNhbnRs
eSBzaW1wbGlmaWVkIGlmIHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlIHRoZQorICAgICAgICAgICAg
ICAgY2FzZSBvZiBub24taW5saW5lIGl0ZW1zIHdpdGhvdXQgdGhlc2UgY2xpZW50cy4gQW5kLCBw
aGlsb3NvcGhpY2FsbHksIHRoZXNlIGNsaWVudHMgKnNob3VsZCogYmUKKyAgICAgICAgICAgICAg
IHJlcXVpcmVkIHRvIGRvIGVuY29kaW5nL2RlY29kaW5nLCB3aGljaCBpcyBuZWNlc3NhcnkgZm9y
IG5vbi1pbmxpbmUgaXRlbXMuCisgICAgICAgIDMuIFRoZSBhZGRpdGlvbiBvZiB0aGUgSW5NZW1v
cnlEaXNwbGF5TGlzdC4gVGhpcyBpcyBhIHJlZ3VsYXIgZGlzcGxheSBsaXN0LCBleGNlcHQgaXQg
ZG9lc24ndCBzZXJpYWxpemUKKyAgICAgICAgICAgICAgIGl0cyBpdGVtcyBpbnRvIHRoZSBidWZm
ZXIuIEluc3RlYWQsIGl0IHVzZXMgcGxhY2VtZW50IG5ldyB0byBwbGFjZSBpdHMgaXRlbXMgaW4g
dGhlIGJ1ZmZlci4KKyAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciB0aGlzIHBsYWNlbWVudCBu
ZXcgdHJpY2sgdG8gd29yaywgdGhlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGludGVyZmFjZSBo
YWQgdG8gYmUKKyAgICAgICAgICAgICAgIGV4cGFuZGVkIHRvIGFsbG93IGZvciBlbmNvZGluZyBp
dGVtcyBkaXJlY3RseSBpbmxpbmUgdGhlIGJ1ZmZlciwgcmF0aGVyIHRoYW4gZW5jb2RpbmcgdGhl
bSBpbnRvCisgICAgICAgICAgICAgICBhIFNoYXJlZEJ1ZmZlciBhbmQgaGF2aW5nIHRoZSBEaXNw
bGF5TGlzdCBtZW1jcHkoKSB0aGUgYnl0ZXMgaW50byB0aGUgYnVmZmVyLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6IExpbmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0
ZW1IYW5kbGUgdG8KKyAgICAgICAgICAgICAgRGlzcGxheUxpc3RJdGVtLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojphc1RleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBwZW5kKTogV2Ug
Y2FuIG1ha2UgdGhlIGNvbXBpbGVyIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24hCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmJlZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6ZW5kIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OmF0RW5kIGNvbnN0
KTogRGVsZXRlZC4gTW92ZWQgdG8gRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJ
dGVtKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjphZHZhbmNlKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJ
dGVtKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlVG9FbmQpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVDdXJzb3JU
b1N0YXJ0T2ZDdXJyZW50QnVmZmVyKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjppdGVyYXRvcik6IERlbGV0ZWQu
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVy
YXRvcjo6fml0ZXJhdG9yKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4gRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9y
OjpvcGVyYXRvciE9KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4gRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpv
cGVyYXRvciogY29uc3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Oml0ZW1CdWZmZXIgY29uc3QpOiBEZWxldGVk
LiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YmVn
aW4gY29uc3QpOiBEZWxldGVkLiBNb3ZlZCB0byB0aGUgLmNwcCBmaWxlLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjplbmQgY29uc3QpOiBEZWxldGVkLiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
OjpJdGVtQnVmZmVyKTogQmVjYXVzZSB0aGlzIHBhdGNoIHN0YXJ0cyByZXF1aXJpbmcgYQorICAg
ICAgICAgICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgZm9yIGFueSBub24taW5saW5lIGl0ZW1z
LCB3aGljaCBpcyBubyBwcm9ibGVtIGJlY2FzdWUgd2Ugd2VyZSBhbHdheXMKKyAgICAgICAgICAg
IHNwZWNpZnlpbmcgb25lIGluIFdlYktpdCBhbnl3YXksIHdlIG5vIGxvbmdlciBuZWVkIG1faXRl
bXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcjo6b3BlcmF0b3I9KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6Y2xlYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXNjcmlwdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBw
bHkpOiBEZWxldGVkLiBXZSBjYW4gbWFrZSB0aGUgY29tcGlsZXIgZ2VuZXJhdGUgdGhpcyBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95
KTogRGVsZXRlZC4gVGhlcmUgd2VyZSB0d28gcGxhY2VzIHdoZXJlIHRoaXMgd2FzIHVzZWQ6Cisg
ICAgICAgICAgICAxLiBXZSByb3VuZC10cmlwcGVkIHRocm91Z2ggSXRlbUhhbmRsZSB3aGVuZXZl
ciBhcHBlbmRpbmcgYW4gaXRlbSwganVzdCBzbyB3ZSBjb3VsZCBwYXNzIGRhdGEgdG8KKyAgICAg
ICAgICAgICAgICAgICBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudC4gVGhpcyBpcyB1bm5lY2Vzc2Fy
eSBub3cgdGhhdCB3ZSBjYW4ganVzdCBwYXNzIERpc3BsYXlMaXN0SXRlbQorICAgICAgICAgICAg
ICAgICAgIGluc3RlYWQuCisgICAgICAgICAgICAyLiBEZXN0cm95aW5nIG5vbi1pbmxpbmUgaXRl
bXMgd2hpY2ggd2VyZSBhcHBlbmRlZCB3aXRob3V0IGEgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQu
IEFib3ZlIEkKKyAgICAgICAgICAgICAgICAgICBkZXNjcmliZSB0aGF0IHRoaXMgcGF0Y2ggc3Rh
cnRzIHJlcXVpcmluZyBhIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZvciBhbnkgbm9uLWlubGlu
ZSBpdGVtcywKKyAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBubyBwcm9ibGVtIGJlY2F1c2Ug
d2Ugd2VyZSBhbHdheXMgc3BlY2lmeWluZyBvbmUgaW4gV2ViS2l0IGFueXdheS4KKyAgICAgICAg
ICAgIFNvLCBuZWl0aGVyIG9mIHRoZXNlIHNpdHVhdGlvbnMgc3Vydml2ZWQgdGhpcyBwYXRjaCwg
c28gdGhpcyBlbnRpcmUgZnVuY3Rpb24gaXMgZGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0Ojpjb3B5SW50byk6IERlbGV0ZWQuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhpcyBu
b3cgdGhhdCB0aGUgaXRlcmF0b3IgZG9lc24ndAorICAgICAgICAgICAgYWxsb2NhdGUgc3RvcmFn
ZSBmb3IgdGhlIEl0ZW1IYW5kbGUuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZTo6c2FmZUNvcHkgY29uc3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjptX2FsbG9jYXRlZEJ1ZmZlcnMpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOiBNaWdy
YXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjppc0RyYXdpbmdJdGVtIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpvcGVyYXRv
ciBib29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlOjpvcGVyYXRvciEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmlzIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpnZXQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg6IEFkZGVkLiBNb3ZlZCBmcm9tCisgICAgICAgICAgICAg
IERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOiBSZW1vdmVkLiBUaGUgY29tcGlsZXIg
Y2FuIGdlbmVyYXRlIGFsbCBvZgorICAgICAgICAgICAgICB0aGVzZSBmdW5jdGlvbnMhISEKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlw
ZS5oOiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KTogYXBwbHkoKSBuZWVkcyB0byBi
ZSBjb25zdCBmb3IgdGhlIHRlbXBsYXRlCisgICAgICAgICAgICAgIG1ldGFwcm9ncmFtbWluZyB0
byB3b3JrLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOiBUaGUg
Y29tcGlsZXIgY2FuIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24hCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KTogTmVl
ZHMgdG8gYmUgY29uc3QgZm9yIHRoZSB0ZW1wbGF0ZQorICAgICAgICAgICAgICBtZXRhcHJvZ3Jh
bW1pbmcgdG8gd29yay4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJ
dGVtKTogTW92ZWQgZnJvbSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjppdGVtVHlwZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlm
aWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5jcHA6IEFkZGVkLiBUaGUgc2ltcGxpZmllZCBpbXBsZW1lbnRh
dGlvbiBvZgorICAgICAgICAgICAgICB0aGUgaXRlcmF0b3IuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphdEVuZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpv
cGVyYXRvciogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSBjb25zdCk6IFRoaXMgaXMgdGhlIG1hZ2ljLiBXZSBjYW4g
YWN0dWFsbHkKKyAgICAgICAgICAgICAgcmVjdXJzZSBvdmVyIHRoZSBzZXQgb2YgdHlwZXMgaW4g
dGhlIHZhcmlhbnQuIFdlIGRvIHRoaXMgd2l0aCBhIHRlbXBsYXRlIHBhcmFtZXRlciB0aGF0IGlz
IG9mIHR5cGUKKyAgICAgICAgICAgICAgc2l6ZV90LiBXZSB1c2UgImlmIGNvbnN0ZXhwciIgdG8g
aGFuZGxlIHRoZSBiYXNlIGNhc2UsIGFuZCB3ZSBwdWxsIG91dCB0aGUgdHlwZSBieSB1c2luZwor
ICAgICAgICAgICAgICBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdCB3aXRoIHRoZSBJIHRlbXBs
YXRlIHBhcmFtZXRlci4gT25jZSB3ZSBoYXZlIHRoZSBwYXJ0aWN1bGFyIHR5cGUgaW4gdGhlCisg
ICAgICAgICAgICAgIFZhcmlhbnQsIHdlIHB1bGwgb3V0IGl0cyBpdGVtVHlwZSBhbmQgY29tcGFy
ZSBhZ2FpbnN0IHRoZSBpdGVtVHlwZSBpbiB0aGUgYnVmZmVyLiBJZiBpdCBkb2Vzbid0CisgICAg
ICAgICAgICAgIG1hdGNoLCB3ZSByZWN1cnNlIHdpdGggSSArIDEsIGFuZCBpdCBkb2VzIG1hdGNo
LCB3ZSBydW4gdGhlIHNhbWUgcGFyc2luZyByb3V0aW5lcyB0aGF0IHdlcmUgaW4gdGhlCisgICAg
ICAgICAgICAgIG9sZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaXRlcmF0b3IgYmVmb3JlIHRoaXMg
cGF0Y2guCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJh
dG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjplbmRPZkN1cnJlbnRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZXJhdG9yLmg6IEFkZGVkLiBUaGlzIGlzIHNpZ25pZmljYW50bHkgc2ltcGxpZmllZCBm
cm9tIHRoZQorICAgICAgICAgICAgICB3YXkgaXQgd29ya2VkIGJlZm9yZSB0aGlzIHBhdGNoLiBX
ZSBubyBsb25nZXIgaGF2ZSB0byBhbGxvY2F0ZSBzdG9yYWdlIGZvciB0aGUgSXRlbUhhbmRsZXMu
IFdlIGhhdmUKKyAgICAgICAgICAgICAgc2lnbmlmaWNhbnRseSBmZXdlciBtZW1iZXIgdmFyaWFi
bGVzLCB0b28uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6aXRlbUJ1ZmZlciBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kRHJh
d2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxs
QXBwZW5kSXRlbU9mVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW1PZlR5cGUpOiBNb3ZlZCBmcm9tIHRoZSAuY3Bw
IGZpbGUuIEJlY2F1c2UgaXQncyBhIHRlbXBsYXRlLAorICAgICAgICAgICAgICBpdCBoYXMgdG8g
YmUgaGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlJ
bWFnZUJ1ZmZlckl0ZW0pOiBMaW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJvbSBJdGVtSGFuZGxl
IHRvIERpc3BsYXlMaXN0SXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBs
eU5hdGl2ZUltYWdlSXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmFwcGx5U2V0U3RhdGVJdGVtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6YXBwbHlGb250SXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmFwcGx5KTogSGVscGVyLiBPbmx5IGNhbGwgdGhlIGFwcGx5IGZ1bmN0aW9uIGluIHRoZSBEaXNw
bGF5TGlzdCBpdGVtIGlmIGl0IGV4aXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZXBsYXllcjo6YXBwbHlJdGVtKTogTGluZS1ieS1saW5lIHRyYW5zbGF0aW9uIGZyb20gSXRl
bUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OnJlcGxheSk6IFVwZGF0ZSBmb3IgdGhlIG5ldyByZXR1cm4gdHlwZSBvZgor
ICAgICAgICAgICAgICBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlOjphcHBs
eSk6IExpbmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0ZW1IYW5kbGUgdG8KKyAgICAgICAg
ICAgICAgRGlzcGxheUxpc3RJdGVtLgorCiAyMDIxLTAzLTIyICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXTogSW1wcm92ZSBn
ZXRJbWFnZURhdGEoKSBwZXJmIHBhcnQgMTogQWRkIGEgR2V0SW1hZ2VEYXRhIGRpc3BsYXkgbGlz
dCBpdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDk2M2Q1MmQ5MzFmYTA5ODcxMGU5MGE5NmE4ZjFhZWVhNjUyNTk3
MjYuLmJlNWFhZDEzZDE5NGU4OGY3ODNkNTgyNDU1Y2ViMjY0MGUwNTBjNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMjEtMDMtMjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFJlcGxhY2UgSXRlbUhhbmRsZSB3
aXRoIGEgY29uc3QgVmFyaWFudCYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzU2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOiBM
aW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJvbSBJdGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRl
bS4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlh
SXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpz
dWJtaXQpOiBUaGlzIGZpbGUgaGFzICJ1c2luZyBuYW1lc3BhY2UgV2ViQ29yZSIgc28gd2UgZG9u
J3QgbmVlZCB0bworICAgICAgICAgICAgICBxdWFsaWZ5IG5hbWVzLiBEcm9wIHRoZSBXZWJDb3Jl
OjouCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVt
QnVmZmVyVG9SZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldEltYWdlRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFE
YXRhRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6ZGVjb2RlSXRlbSk6IFRoZSBjb21waWxlciBjYW4gZ2VuZXJhdGUgdGhp
cyBmdW5jdGlvbiBmb3IgdXMsIGluIG11Y2ggdGhlIHNhbWUgd2F5IHRoYXQgaXQgZGlkCisgICAg
ICAgICAgICAgIGZvciBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVBbmRDcmVhdGUpOiBEZWxl
dGVkLiBObyBsb25nZXIgbmVjZXNzYXJ5IG5vdyB0aGF0IHRoZSBjb21waWxlcgorICAgICAgICAg
ICAgICBpcyBnZW5lcmF0aW5nIG91ciBmdW5jdGlvbnMgZm9yIHVzLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5jb2RlSXRlbUhlbHBlcik6IFRoZSBjb21w
aWxlciBjYW4gZ2VuZXJhdGUgdGhpcyBmdW5jdGlvbiBmb3IgdXMuCisKIDIwMjEtMDMtMjIgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFBy
b2Nlc3NdOiBJbXByb3ZlIGdldEltYWdlRGF0YSgpIHBlcmYgcGFydCAxOiBBZGQgYSBHZXRJbWFn
ZURhdGEgZGlzcGxheSBsaXN0IGl0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGQ4YjJlOWIzNzBl
Yzk1ODAyMWFjODRiNjY4NDk2OThhMTFmYjQ4YTUuLmY1MWU4YzkzZWE2M2VmMDc1NzUyM2JmZTVi
NDMyODNiMTEwZWZhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTMxNCwxMCArMTMxNCwxMyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklk
ZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5
RGlzcGxheUxpc3QuaAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMzAwYWE4MDdkMWYwYTIwODY3YjU2MTdiZGI5
ZGNiODgxNDg2ZGU0Ny4uMjhkYTQ5MTM2Yjc3NjAwZGE4NGYzMGY3OWY4YTgyOTBiZGQyNDkyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIwMTksOSArMjAxOSwxMCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3Rh
bnRMaWdodFNvdXJjZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYjg1OWYz
YTQyYjA5MDQ5MzBiMDZmZTIxZjhjZDNhMTcxOWEzNjExLi5kN2NiNzYzN2E2ODFhMmIxNzc4ZTc5
YzI1OWE1YTk2Mzc5ZWFkZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjUsNiArNjI1LDkgQEAKIAkJMUM3M0E3MTUyMTg1
NzU4NzAwNENDRUE1IC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0Qg
LyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1
QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyog
SW5zcGVjdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMUM5M0NCQ0YyNjA1QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTND
QkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM5M0NCRDMyNjA2RjhFNzAw
OEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTNDQkQyMjYwNkYzRTMwMDhGREVG
OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM5M0NCRUIyNjA5QUYyRTAwOEZERUY5
IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDOTNDQkU3MjYwOUE2RTMwMDhGREVGOSAvKiBJbk1lbW9yeURpc3Bs
YXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAw
QUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3Jp
cHRPYmplY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9Owog
CQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZD
NDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjg3Miw2ICs2ODc1LDExIEBACiAJ
CTFDOEQyNkNFMjJDMDk1MTMwMEQxMjVGMyAvKiBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGll
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEQyNkQwMjJDMDlDREUwMEQxMjVG
MyAvKiBsaWJjb21wcmVzc2lvbi50YmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS50ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24i
OyBuYW1lID0gbGliY29tcHJlc3Npb24udGJkOyBwYXRoID0gdXNyL2xpYi9saWJjb21wcmVzc2lv
bi50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5
RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBW
ZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JDQzI2
MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM5M0NCQ0QyNjA1QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzkzQ0JEMjI2MDZGM0UzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVy
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkU2MjYwOUE2RTMwMDhG
REVGOSAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluTWVt
b3J5RGlzcGxheUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzQ0JF
NzI2MDlBNkUzMDA4RkRFRjkgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbk1lbW9yeURpc3BsYXlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
OUFFNUNBMjFFRDlERjUwMDY5RDVGMiAvKiBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM5QUU1Q0IyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJp
ZUZpbmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNM
UmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjY5LDcgKzE2Njc3LDYgQEAKIAkJ
RjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDMzRTkwNDFEQkJEQkMyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVi
b2FyZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNQYXN0ZWJvYXJkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzNzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERpc3Bs
YXlMaXN0SXRlbVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNDM3N0Q1NjI1NTFDOUM2MDA4MEFCRkUgLyog
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0
ZW1UeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MEU3NkUyMzNEOTRE
MzAwNjNGOUFCIC8qIENsaXBib2FyZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQw
RTc2RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2aWdhdG9yQ2xpcGJvYXJkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvckNsaXBib2FyZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDQwRTc3MDIzM0Q5NEQ0MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRl
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRJdGVtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODAyOSwxNCArMTgwMzYsMTggQEAKIAkJCQk3
MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAog
CQkJCUY0MjJCOEI2MjUzRjcwNjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
ICovLAogCQkJCUY0MjJCOEI1MjUzRjcwNjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaCAqLywKKwkJCQkxQzkzQ0JEMjI2MDZGM0UzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oICovLAogCQkJCTBGRTVGQkNDMUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdEl0ZW1zLmNwcCAqLywKIAkJCQkwRkU1RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RJdGVtcy5oICovLAotCQkJCUY0Mzc3RDU2MjU1MUM5QzYwMDgwQUJGRSAvKiBE
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAqLywKIAkJCQlGNDM3N0Q1NTI1NTFDOUM2MDA4MEFCRkUg
LyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovLAorCQkJCTFDOTNDQkNDMjYwNUJENDMwMDhGREVG
OSAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCAqLywKKwkJCQkxQzkzQ0JDRDI2MDVCRDQzMDA4
RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oICovLAogCQkJCTBGRTVGQkNFMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAqLywKIAkJCQkwRkU1RkJDRjFDM0RE
NTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovLAogCQkJCTBGRTVGQkQwMUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmNwcCAqLywKIAkJCQkwRkU1RkJE
MTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oICovLAorCQkJCTFDOTND
QkU2MjYwOUE2RTMwMDhGREVGOSAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcCAqLywKKwkJCQkx
QzkzQ0JFNzI2MDlBNkUzMDA4RkRFRjkgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oICovLAogCQkJ
KTsKIAkJCXBhdGggPSBkaXNwbGF5bGlzdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMzIwNTMsOCArMzIwNjQsMTAgQEAKIAkJCQk3MjQyQUM5NzI1NzU4RkUxMDA1QTlDRjEgLyog
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNF
MjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzkzQ0JEMzI2MDZGOEU3MDA4RkRFRjkgLyogRGlzcGxh
eUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxQzkzQ0JDRjI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFG
MkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVy
cyAqLywKQEAgLTMyNzc0LDYgKzMyNzg3LDcgQEAKIAkJCQlCQ0VBNDg1QTA5N0Q5MzAyMDA5NEM5
RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwMTA3MDExOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYx
Q0MxREUyMjVGOEI0OTAwNzIwQUQyIC8qIElubGluZVRleHRJdGVtLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxQzkzQ0JFQjI2MDlBRjJFMDA4RkRFRjkgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkVCNzY3NTcxREExOUJERjAwM0UyM0I1IC8qIElucHV0RXZlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU1MkVGREY0MjExMjg3NUEwMEFEMjgyQSAvKiBJbnB1dE1v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDVjZWE3NDUyZDVmZjJlNmNiNWYzZTExNjY1OTdi
NzlmZDhmNzNkN2QuLmZkNmRkNzc2ZDc3NGU1NjZkZTc2MTZjOWMzNzJlZjQ4ZWI3OTMwNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJHbHlw
aEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkluTWVt
b3J5RGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiU3Vy
cm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgpAQCAt
MjEwLDcgKzIxMSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAgZHJhd0VtcGhhc2lz
TWFya3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmssIHN0YXJ0UG9pbnQpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxh
eUxpc3RGb3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYg
cnVuLCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RS
ZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitzdGQ6OnVuaXF1ZV9w
dHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5
TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQo
IWNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKTsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9
IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKQEAgLTIyNSw4ICsyMjYsOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RG
b3JUZXh0UnVuKEdyYQogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdD4oKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNw
bGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9yeURp
c3BsYXlMaXN0PigpOwogICAgIEdyYXBoaWNzQ29udGV4dCByZWNvcmRpbmdDb250ZXh0KFsmXShH
cmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewogICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3Bs
YXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSwg
bnVsbHB0ciwgRGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29u
c3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggNjZiNmYxM2FkMzMwMmQ2MmRi
Yzk1MDIzMDM4ZGJmNDZlMjhjMTkyMC4uMWVmOWU3NmZmMTZkNDA4ZjU3Nzg4ZmZiY2ZkODZkNTc1
NTVhYmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFRleHRMYXlvdXQ7CiBjbGFzcyBUZXh0UnVu
OwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewotY2xhc3MgRGlzcGxheUxpc3Q7CitjbGFzcyBJ
bk1lbW9yeURpc3BsYXlMaXN0OwogfQogICAgIAogc3RydWN0IEdseXBoRGF0YTsKQEAgLTE5OSw3
ICsxOTksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZmxvYXQgc3ludGhldGljT2JsaXF1ZUFu
Z2xlKCkgeyByZXR1cm4gMTQ7IH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHsg
fSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNw
bGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8
dW5zaWduZWQ+IHRvID0geyB9LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBDdXN0b21Gb250
Tm90UmVhZHlBY3Rpb246OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CiAKICNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShDRykKICAgICBzdGF0aWMgdm9pZCBzZXRGb250U21vb3RoaW5n
TGV2ZWwoaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRkYzkxMTEw
ZTI3NS4uZTE3MTA2MDI4NWRiNjZmNGY4ODhlZmZiZTAxOWJhYWJmNDA4YmJmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTE1NCwxMCArMTU0LDEwIEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+
R3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250
ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKIAogICAgIGVu
dW0gQ2hhbmdlIDogdWludDMyX3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggNWI1
NWJlYzhjMGFlMjFhOTI5ODQ1YTQxNWQxMzU3OWMzNjliZDU0Ny4uNzk4MWU2NjNlNDkwZGNjMTFl
MmEyODA1NjNhMTFiYmEzYmRlMjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODQsMTIgKzg1LDEwIEBAIHZvaWQgRGlzcGxheUxp
c3Q6OmNsZWFyKCkKICAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOwogfQogCi1ib29sIERpc3Bs
YXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUg
aXRlbSkKK2Jvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBm
bGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQogewotICAgIHN3aXRjaCAoaXRlbS50
eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICBhdXRvIHZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdGF0ZSYgc3RhdGVJdGVtKSAtPiBib29s
IHsKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3Bl
cmF0aW9ucykpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0
PFNldFN0YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0
aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNp
ZmljLgogICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxh
Z3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0No
YW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NywzMCArOTYsMzAgQEAg
Ym9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJ
dGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCku
bV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgVVNFKENHKQotICAg
IGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBw
bHlTdHJva2VQYXR0ZXJuOgotICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1
ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgYnJlYWs7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5RmlsbFBhdHRlcm4mKSAtPiBib29sIHsK
KyAgICAgICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJh
dGlvbnM7CisgICAgfSwgWyZdKGNvbnN0IEFwcGx5U3Ryb2tlUGF0dGVybiYpIC0+IGJvb2wgewor
ICAgICAgICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0
aW9uczsKICNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJikgLT4gYm9vbCB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0p
OwogfQogCiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChBc1RleHRGbGFncyBmbGFncykgY29u
c3QKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlw
bGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAgIGZvciAo
YXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7Ci0gICAgICAg
IGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCAqaXRlbSkpCisgICAgZm9yIChjb25zdCBh
dXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRl
bSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwor
ICAgICAgICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVh
bSk7CiAgICAgICAgIHN0cmVhbSA8PCBpdGVtOwotICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5n
SXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKICAgICAgICAgICAgIHN0
cmVhbSA8PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgcmV0dXJuIHN0cmVhbS5y
ZWxlYXNlKCk7CkBAIC0xMzEsMTAgKzEzMCwxMSBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMp
OwogICAgIHRzIDw8ICJkaXNwbGF5IGxpc3QiOwogCi0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRl
bnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogKnRoaXMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRp
c3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRl
bnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAg
IFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAgICB0cyA8PCBpdGVtOwot
ICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5n
SXRlbShpdGVtKSkKICAgICAgICAgICAgIHRzIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAg
IH0KICAgICB0cy5zdGFydEdyb3VwKCk7CkBAIC0xODYsMjQ5ICsxODYsMjMgQEAgdm9pZCBEaXNw
bGF5TGlzdDo6c2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wgdmFsdWUpCiAgICAgbV90
cmFja3NEcmF3aW5nSXRlbUV4dGVudHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6
YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTYXZlPihpdGVt
LmdldDxTYXZlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFJlc3RvcmU+KGl0ZW0uZ2V0PFJlc3RvcmU+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxUcmFuc2xhdGU+KGl0ZW0uZ2V0
PFRyYW5zbGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFJvdGF0ZT4oaXRlbS5nZXQ8Um90YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTY2FsZT4oaXRlbS5nZXQ8U2NhbGU+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPENvbmNhdGVuYXRlQ1RNPihpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldENUTT4oaXRlbS5n
ZXQ8U2V0Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PihpdGVtLmdldDxT
ZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZp
bGxDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KGl0ZW0u
Z2V0PFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5l
U3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+
KGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0U3Ryb2tlVGhpY2tu
ZXNzPihpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0YXRlPihpdGVtLmdldDxTZXRT
dGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxTZXRMaW5lQ2FwPihpdGVtLmdldDxTZXRMaW5lQ2FwPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lRGFzaD4o
aXRlbS5nZXQ8U2V0TGluZURhc2g+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2lu
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVKb2luPihpdGVtLmdldDxTZXRMaW5lSm9p
bj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxTZXRNaXRlckxpbWl0PihpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclNo
YWRvdz4oaXRlbS5nZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcD4oaXRlbS5nZXQ8Q2xpcD4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0PihpdGVt
LmdldDxDbGlwT3V0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8Q2xpcFRv
SW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
Q2xpcFBhdGg+KGl0ZW0uZ2V0PENsaXBQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3R2x5cGhzPihpdGVtLmdldDxEcmF3R2x5cGhzPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8RHJhd0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdHRlcm4+KGl0
ZW0uZ2V0PERyYXdQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UmVjdD4oaXRlbS5nZXQ8RHJhd1JlY3Q+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdMaW5l
PihpdGVtLmdldDxEcmF3TGluZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxE
cmF3TGluZXNGb3JUZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI+KGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdFbGxpcHNlPihp
dGVtLmdldDxEcmF3RWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdGg+KGl0ZW0uZ2V0PERyYXdQYXRoPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxEcmF3Rm9jdXNSaW5nUGF0aD4oaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxEcmF3Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJl
Y3Q+KGl0ZW0uZ2V0PEZpbGxSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oaXRlbS5n
ZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aEdyYWRpZW50Pihp
dGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVj
dD4oaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJvdW5kZWRSZWN0Pihp
dGVtLmdldDxGaWxsUm91bmRlZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlPihpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7Ci0jaWYgRU5BQkxF
KElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbElubGluZVBhdGg+KGl0ZW0uZ2V0PEZpbGxJbmxpbmVQ
YXRoPigpKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPEZpbGxQYXRoPihpdGVtLmdldDxGaWxsUGF0aD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbEVsbGlwc2U+
KGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRl
eHQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpdGVtLmdldDxGbHVzaENv
bnRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8R2V0SW1hZ2VE
YXRhPihpdGVtLmdldDxHZXRJbWFnZURhdGE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dElt
YWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQdXRJbWFnZURhdGE+KGl0ZW0uZ2V0PFB1
dEltYWdlRGF0YT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPFBhaW50RnJhbWVGb3JNZWRpYT4oaXRlbS5nZXQ8UGFpbnRG
cmFtZUZvck1lZGlhPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFN0cm9rZVJlY3Q+KGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tl
TGluZT4oaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxTdHJva2VJbmxpbmVQYXRoPihpdGVtLmdldDxTdHJva2VJbmxpbmVQYXRoPigpKTsK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8U3Ryb2tlUGF0aD4oaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VFbGxpcHNl
PihpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xlYXJSZWN0PihpdGVtLmdldDxDbGVhclJlY3Q+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5nZXQ8QmVnaW5UcmFu
c3BhcmVuY3lMYXllcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW0uZ2V0
PEVuZFRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5U3Ryb2tl
UGF0dGVybj4oaXRlbS5nZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5RmlsbFBh
dHRlcm4+KGl0ZW0uZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJ
dGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxB
cHBseURldmljZVNjYWxlRmFjdG9yPihpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigp
KTsKLSAgICB9Ci19Ci0KLWJvb2wgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjphdEVuZCgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpIHx8ICFtX2lzVmFsaWQpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigpOwotICAg
IGF1dG8gZW5kQ3Vyc29yID0gaXRlbXMubV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMubV93
cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOwot
fQotCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQotewot
ICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLQotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvJiBpdGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBpdGVtVHlw
ZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7Ci0gICAgaWYgKGlzRHJhd2lu
Z0l0ZW0oaXRlbVR5cGUpICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzLmlz
RW1wdHkoKSkgewotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJh
d2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07Ci0gICAgICAgIG1fZHJhd2luZ0l0
ZW1JbmRleCsrOwotICAgIH0gZWxzZQotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBhdXRvKiBjbGllbnQgPSBpdGVtcy5tX3JlYWRpbmdDbGllbnQ7Ci0gICAg
YXV0byBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5C
eXRlcyhpdGVtVHlwZSk7Ci0gICAgaWYgKGNsaWVudCkgewotICAgICAgICBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZmZXJG
b3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKLSAg
ICAgICAgaWYgKGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghSXRlbUhhbmRsZSB7IG1fY3Vyc29yIH0uc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJG
b3JJdGVtIH0pKSkKLSAgICAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLQotICAgICAg
ICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVt
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdCo+KG1fY3Vyc29yKVsxXTsKLSAgICAgICAgICAgIGF1dG8qIHN0
YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKLSAgICAgICAgICAg
IGF1dG8gZGVjb2RlZEl0ZW1IYW5kbGUgPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEs
IGRhdGFMZW5ndGgsIGl0ZW1UeXBlLCBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKLSAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSghZGVjb2RlZEl0ZW1IYW5kbGUpKQotICAgICAgICAgICAgICAgIG1f
aXNWYWxpZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtWzBd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwotICAgICAgICAgICAgbV9jdXJyZW50
SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlw
bGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gbV9jdXJzb3I7Ci0gICAgICAg
IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbTsKLSAg
ICB9Ci19Ci0KLXZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjphZHZhbmNlKCkKLXsKLSAgICBp
ZiAoYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jdXJzb3IgKz0gbV9jdXJyZW50
SXRlbVNpemVJbkJ1ZmZlcjsKLQotICAgIGlmIChtX2N1cnNvciA9PSBtX2N1cnJlbnRFbmRPZkJ1
ZmZlciAmJiBtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBpdGVtQnVmZmVyKCktPm1fcmVhZE9ubHlC
dWZmZXJzLnNpemUoKSkgewotICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXgrKzsKLSAgICAg
ICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICB9Ci0KLSAgICB1cGRh
dGVDdXJyZW50SXRlbSgpOwotfQotCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6Y2xlYXJD
dXJyZW50SXRlbSgpCit2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiBpdGVtKQogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKGl0
ZW1zICYmIGl0ZW1zLT5tX3JlYWRpbmdDbGllbnQgJiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSkg
ewotICAgICAgICBpZiAoTElLRUxZKG1faXNWYWxpZCkpCi0gICAgICAgICAgICBJdGVtSGFuZGxl
IHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LmRlc3Ryb3koKTsKLQotICAgICAgICBpZiAoVU5M
SUtFTFkobV9jdXJyZW50QnVmZmVyRm9ySXRlbSAhPSBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0
ZW0pKQotICAgICAgICAgICAgZmFzdEZyZWUobV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAg
fQotCi0gICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDA7Ci0gICAgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSA9IG51bGxwdHI7CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYgaXRl
bSkgeworICAgICAgICBhcHBlbmQoaXRlbSk7CisgICAgfSwgaXRlbSk7CiB9CiAKLXZvaWQgRGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlVG9FbmQoKQorYXV0byBEaXNwbGF5TGlzdDo6YmVnaW4o
KSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIGlmIChhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigp
KSB7Ci0gICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0
ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZl
ciA9IG1fY3Vyc29yOwotICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXggPSBpdGVtcy0+bV9y
ZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOwotICAgIH0KKyAgICByZXR1cm4geyAqdGhpcyB9OwogfQog
Ci12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRC
dWZmZXIoKQorYXV0byBEaXNwbGF5TGlzdDo6ZW5kKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAg
ICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOwotICAgIGlmICghaXRlbXMpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMgPSBpdGVtcy0+bV9yZWFk
T25seUJ1ZmZlcnMuc2l6ZSgpOwotICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1i
ZXJPZlJlYWRPbmx5QnVmZmVycykgewotICAgICAgICBhdXRvJiBuZXh0QnVmZmVySGFuZGxlID0g
aXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07Ci0gICAgICAg
IG1fY3Vyc29yID0gbmV4dEJ1ZmZlckhhbmRsZS5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRP
ZkJ1ZmZlciA9IG1fY3Vyc29yICsgbmV4dEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKLSAgICB9IGVs
c2UgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykg
ewotICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGE7Ci0gICAg
ICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBpdGVtcy0+bV93cml0dGVuTnVt
YmVyT2ZCeXRlczsKLSAgICB9CisgICAgcmV0dXJuIHsgKnRoaXMsIEl0ZXJhdG9yOjpJbW1lZGlh
dGVseU1vdmVUb0VuZDo6WWVzIH07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QK
IAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXgg
ZjE4OWRlZGY2NzQ5YmNjMjAxNDcyYWVkMmE4NzE2YmE2NTc0NjUyZS4uODhiMWJiNmQwMzYxMDI4
NDlmYjc2OTdlOTAyZmNiNDJjNzc5NDMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyAr
NDIsNiBAQCBjbGFzcyBUZXh0U3RyZWFtOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGVudW0gQXNUZXh0RmxhZyB7CkBAIC04OSw3NiArODgs
MTUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaEl0ZW1CdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+JiYpIGNvbnN0OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCBhcHBlbmQoQXJncyYmLi4u
IGFyZ3MpOwotICAgIHZvaWQgYXBwZW5kKEl0ZW1IYW5kbGUpOworICAgIHZvaWQgYXBwZW5kKGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgYm9vbCB0cmFja3NEcmF3aW5nSXRlbUV4dGVu
dHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50czsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wpOwogCi0g
ICAgY2xhc3MgaXRlcmF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBjbGFzcyBJbW1l
ZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKLSAgICAgICAgaXRlcmF0b3IoY29uc3QgRGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0VuZCBpbW1lZGlhdGVseU1v
dmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObykKLSAgICAgICAgICAgIDogbV9kaXNw
bGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGltbWVkaWF0
ZWx5TW92ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpCi0gICAgICAgICAgICAg
ICAgbW92ZVRvRW5kKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtb3Zl
Q3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwotICAgICAgICAgICAgICAgIHVwZGF0ZUN1
cnJlbnRJdGVtKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB+aXRlcmF0
b3IoKQotICAgICAgICB7Ci0gICAgICAgICAgICBjbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSB7IHJl
dHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9
PSBvdGhlci5tX2N1cnNvcjsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0
b3ImIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgICAgICB2b2lkIG9w
ZXJhdG9yKysoKSB7IGFkdmFuY2UoKTsgfQotCi0gICAgICAgIHN0cnVjdCBWYWx1ZSB7Ci0gICAg
ICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBpdGVtOwotICAgICAgICAgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBleHRlbnQ7Ci0gICAgICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7
IDAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICBWYWx1ZSBvcGVyYXRvciooKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIG1faXNWYWxpZCA/
IG1ha2VPcHRpb25hbChJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KSA6IFdU
Rjo6bnVsbG9wdCwKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRFeHRlbnQsCi0gICAgICAgICAg
ICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgICAgIH07Ci0gICAgICAg
IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNpemVP
ZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPSAyNTY7Ci0KLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1vdmVUb0VuZCgpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVD
dXJyZW50SXRlbSgpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsKLSAg
ICAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwotCi0gICAgICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJZkV4aXN0cygpOyB9
Ci0KLSAgICAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgICAgIHVp
bnQ4X3QqIG1fY3Vyc29yIHsgbnVsbHB0ciB9OwotICAgICAgICBzaXplX3QgbV9yZWFkT25seUJ1
ZmZlckluZGV4IHsgMCB9OwotICAgICAgICBzaXplX3QgbV9kcmF3aW5nSXRlbUluZGV4IHsgMCB9
OwotICAgICAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQot
ICAgICAgICB1aW50OF90IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbVtzaXplT2ZGaXhlZEJ1
ZmZlckZvckN1cnJlbnRJdGVtXSB7IDAgfTsKLSAgICAgICAgdWludDhfdCogbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSB7IG51bGxwdHIgfTsKLSAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1
cnJlbnRFeHRlbnQ7Ci0gICAgICAgIHNpemVfdCBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyIHsg
MCB9OwotICAgICAgICBib29sIG1faXNWYWxpZCB7IHRydWUgfTsKLSAgICB9OwotCi0gICAgaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiB7ICp0aGlzIH07IH0KLSAgICBpdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiB7ICp0aGlzLCBpdGVyYXRvcjo6SW1tZWRpYXRlbHlNb3ZlVG9F
bmQ6OlllcyB9OyB9CisgICAgY2xhc3MgSXRlcmF0b3I7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
dGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEl0ZXJhdG9yIGVuZCgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZmZXJJZkV4aXN0cygp
IGNvbnN0IHsgcmV0dXJuIG1faXRlbXMuZ2V0KCk7IH0KQEAgLTE5MSw3ICsxMjksNyBAQCBwcml2
YXRlOgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9y
RmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOworICAgIHN0YXRpYyBib29sIHNob3VsZER1
bXBGb3JGbGFncyhBc1RleHRGbGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBJ
bWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFw
IG1fbmF0aXZlSW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAppbmRleCBiNWMzNzQxOWQ2ZmZhYTE2OGQ0YmI5OWU0MTg4NGZkYWQ0ZDE3Njk3Li5iOGU5
NmI2YjFhNDU0NzRiNjZhZTEwNjdkOTY5ZDlhZWFhYzQ0ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw1NjQgKzMyLDYgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcp
IHx8ICFMT0dfRElTQUJMRUQKLUNTdHJpbmcgSXRlbUhhbmRsZTo6ZGVzY3JpcHRpb24oKSBjb25z
dAotewotICAgIFRleHRTdHJlYW0gdHM7Ci0gICAgdHMgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIHRz
LnJlbGVhc2UoKS51dGY4KCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBJdGVtSGFuZGxlOjphcHBseShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICBnZXQ8U2F2ZT4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIGdl
dDxSZXN0b3JlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICBnZXQ8VHJhbnNsYXRlPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAg
ICBnZXQ8Um90YXRlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIGdldDxTY2FsZT4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAg
ICAgICBnZXQ8Q29uY2F0ZW5hdGVDVE0+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIGdldDxTZXRDVE0+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIGdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsQ29sb3I6Ci0gICAgICAgIGdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkuYXBwbHkoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJv
a2VDb2xvcjoKLSAgICAgICAgZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tu
ZXNzOgotICAgICAgICBnZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0TGluZUNhcDoKLSAgICAgICAgZ2V0PFNldExpbmVDYXA+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAg
Z2V0PFNldExpbmVEYXNoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIGdldDxTZXRMaW5lSm9pbj4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1p
dGVyTGltaXQ6Ci0gICAgICAgIGdldDxTZXRNaXRlckxpbWl0PigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAg
IGdldDxDbGVhclNoYWRvdz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIGdldDxDbGlwPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAg
Z2V0PENsaXBPdXQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgZ2V0PENsaXBUb0ltYWdlQnVm
ZmVyPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgZ2V0PENsaXBPdXRUb1BhdGg+KCkuYXBwbHkoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAg
ICAgICAgZ2V0PENsaXBQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICBnZXQ8RHJhd0ltYWdlQnVmZmVyPigpLmFwcGx5
KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgotICAgICAgICBnZXQ8RHJhd05hdGl2ZUltYWdlPigpLmFwcGx5KGNvbnRleHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAg
IGdldDxEcmF3UGF0dGVybj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICBnZXQ8RHJhd1JlY3Q+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToK
LSAgICAgICAgZ2V0PERyYXdMaW5lPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgZ2V0PERyYXdM
aW5lc0ZvclRleHQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICBnZXQ8RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICBnZXQ8RHJhd0VsbGlwc2U+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0aDoKLSAgICAgICAgZ2V0PERyYXdQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAg
IGdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgZ2V0PERy
YXdGb2N1c1JpbmdSZWN0cz4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICBnZXQ8RmlsbFJlY3Q+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhDb2xvcjoKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGll
bnQ6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoK
LSAgICAgICAgZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAg
Z2V0PEZpbGxSb3VuZGVkUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICBnZXQ8
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
SW5saW5lUGF0aDoKLSAgICAgICAgZ2V0PEZpbGxJbmxpbmVQYXRoPigpLmFwcGx5KGNvbnRleHQp
OwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoK
LSAgICAgICAgZ2V0PEZpbGxQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIGdldDxGaWxsRWxsaXBz
ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6
OkZsdXNoQ29udGV4dDoKLSAgICAgICAgZ2V0PEZsdXNoQ29udGV4dD4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJ
bWFnZURhdGE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICAvLyBT
aG91bGQgYWxyZWFkeSBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIGdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0
OgotICAgICAgICBnZXQ8U3Ryb2tlUmVjdD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIGdldDxTdHJva2VM
aW5lPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAg
ICAgZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIGdldDxT
dHJva2VQYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgZ2V0PFN0cm9rZUVsbGlwc2U+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgICAgIGdldDxDbGVhclJlY3Q+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAg
ICBnZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgICAg
ICBnZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJu
OgotICAgICAgICBnZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAg
ICAgZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
bjsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0g
ICAgICAgIGdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpLmFwcGx5KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQotewot
ICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoK
LSAgICAgICAgZ2V0PENsaXBPdXRUb1BhdGg+KCkufkNsaXBPdXRUb1BhdGgoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICBnZXQ8Q2xpcFBh
dGg+KCkufkNsaXBQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLn5EcmF3
Rm9jdXNSaW5nUGF0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLn5EcmF3
Rm9jdXNSaW5nUmVjdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdHbHlwaHM6Ci0gICAgICAgIGdldDxEcmF3R2x5cGhzPigpLn5EcmF3R2x5cGhzKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAg
ICBnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5+RHJhd0xpbmVzRm9yVGV4dCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIGdldDxEcmF3UGF0
aD4oKS5+RHJhd1BhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKS5+Rmls
bENvbXBvc2l0ZWRSZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUGF0aDoKLSAgICAgICAgZ2V0PEZpbGxQYXRoPigpLn5GaWxsUGF0aCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIGdl
dDxGaWxsUmVjdFdpdGhDb2xvcj4oKS5+RmlsbFJlY3RXaXRoQ29sb3IoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICBn
ZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkufkZpbGxSZWN0V2l0aEdyYWRpZW50KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToK
LSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLn5GaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5k
ZWRSZWN0OgotICAgICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0PigpLn5GaWxsUm91bmRlZFJlY3Qo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8R2V0SW1h
Z2VEYXRhPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0
SW1hZ2VEYXRhOgotICAgICAgICBnZXQ8UHV0SW1hZ2VEYXRhPigpLn5QdXRJbWFnZURhdGEoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAg
ICBnZXQ8U2V0TGluZURhc2g+KCkuflNldExpbmVEYXNoKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgZ2V0PFNldFN0YXRlPigpLn5TZXRT
dGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoK
LSAgICAgICAgZ2V0PFN0cm9rZVBhdGg+KCkuflN0cm9rZVBhdGgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3I+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNpZiBVU0UoQ0cpCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlGaWxsUGF0dGVybj46OnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlT
dHJva2VQYXR0ZXJuPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNl
IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
blRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGVhclJlY3Q+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xlYXJTaGFk
b3c+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDbGlw
Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xp
cE91dD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0ltYWdlQnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxDbGlwVG9JbWFnZUJ1ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDb25jYXRlbmF0ZUNUTT46OnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0VsbGlwc2U+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdJbWFnZUJ1
ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0
cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdQYXR0ZXJuPjo6dmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdMaW5lPjo6dmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdSZWN0Pjo6dmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RW5kVHJhbnNwYXJlbmN5TGF5
ZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxs
aXBzZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RmlsbEVsbGlwc2U+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RmlsbElubGlu
ZVBhdGg+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxGaWxsUmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8Rmx1c2hDb250ZXh0Pjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdl
QnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1C
dWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8UGFpbnRGcmFtZUZvck1lZGlh
Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8UmVz
dG9yZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0
ZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
Um90YXRlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2
ZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
U2F2ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxl
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxT
Y2FsZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENU
TToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
U2V0Q1RNPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
SW5saW5lRmlsbENvbG9yOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxTZXRJbmxpbmVGaWxsQ29sb3I+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldElubGluZUZpbGxH
cmFkaWVudD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxTZXRJbmxpbmVTdHJva2VDb2xvcj46OnZhbHVlKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldExpbmVDYXA+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0TGluZUpv
aW4+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRl
ckxpbWl0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxTZXRNaXRlckxpbWl0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTZXRTdHJva2VUaGlja25lc3M+Ojp2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VFbGxp
cHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U3Ryb2tlSW5saW5lUGF0aD46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlUmVjdDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8U3Ryb2tlUmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFN0cm9rZUxpbmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFRyYW5zbGF0ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5s
aW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQgPSBmYWxzZTsKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0
eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmlzVmFsaWQoKSk+PiA9IHRydWU7Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIEl0ZW0+Ci10eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+
LCBib29sPiBjb3B5SW50byhjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90KiBk
ZXN0aW5hdGlvbldpdGhPZmZzZXQpCi17Ci0gICAgbmV3IChkZXN0aW5hdGlvbldpdGhPZmZzZXQp
IEl0ZW0oaXRlbUhhbmRsZS5nZXQ8SXRlbT4oKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci10eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFs
aWQ8SXRlbT4sIGJvb2w+IGNvcHlJbnRvKGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uV2l0aE9mZnNldCkKLXsKLSAgICBhdXRvKiBuZXdJdGVtID0gbmV3
IChkZXN0aW5hdGlvbldpdGhPZmZzZXQpIEl0ZW0oaXRlbUhhbmRsZS5nZXQ8SXRlbT4oKSk7Ci0g
ICAgcmV0dXJuIG5ld0l0ZW0tPmlzVmFsaWQoKTsKLX0KLQotYm9vbCBJdGVtSGFuZGxlOjpzYWZl
Q29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAotewotICAgIGF1dG8gaXRlbVR5cGUg
PSB0eXBlKCk7Ci0gICAgZGVzdGluYXRpb24uZGF0YVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGl0ZW1UeXBlKTsKLSAgICBhdXRvIGl0ZW1PZmZzZXQgPSBkZXN0aW5hdGlvbi5kYXRhICsgc2l6
ZW9mKHVpbnQ2NF90KTsKLSAgICBzd2l0Y2ggKGl0ZW1UeXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXBPdXRUb1BhdGg+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPENsaXBQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxE
cmF3Rm9jdXNSaW5nUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1c1Jp
bmdSZWN0cz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlw
aHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3R2x5cGhzPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4g
Y29weUludG88RHJhd0ltYWdlQnVmZmVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdM
aW5lc0ZvclRleHQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TmF0aXZlSW1hZ2U+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXR0ZXJuPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UGF0
aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVk
UmVjdDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxDb21wb3NpdGVkUmVjdD4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1
cm4gY29weUludG88RmlsbFBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0
V2l0aENvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdpdGhHcmFk
aWVudD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRl
ZFJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUm91bmRlZFJlY3Q+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxHZXRJbWFnZURhdGE+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxQdXRJbWFn
ZURhdGE+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFz
aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVEYXNoPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxTZXRTdGF0ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZVBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VQYXRoPigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5RmlsbFBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxBcHBseVN0cm9rZVBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNl
bmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAg
ICAgICByZXR1cm4gY29weUludG88QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgot
ICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPENsZWFyUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsZWFyU2hhZG93OgotICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJTaGFkb3c+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICByZXR1
cm4gY29weUludG88Q2xpcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0PigqdGhpcywgaXRlbU9m
ZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxDbGlwVG9JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gY29weUludG88
Q29uY2F0ZW5hdGVDVE0+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0VsbGlwc2U+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UmVjdD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgotICAgICAgICByZXR1cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPEZpbGxFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jaWYgRU5B
QkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6
Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsSW5saW5lUGF0aD4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxGaWxsUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZsdXNoQ29udGV4dD4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFBhaW50RnJhbWVGb3JNZWRpYT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxSZXN0b3Jl
PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAg
ICByZXR1cm4gY29weUludG88Um90YXRlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNhdmU+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPFNjYWxlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RN
OgotICAgICAgICByZXR1cm4gY29weUludG88U2V0Q1RNPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gY29w
eUludG88U2V0SW5saW5lRmlsbENvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICByZXR1cm4gY29weUludG88
U2V0SW5saW5lRmlsbEdyYWRpZW50PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJ
bmxpbmVTdHJva2VDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVDYXA6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRMaW5lQ2FwPigqdGhpcywg
aXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxTZXRMaW5lSm9pbj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRNaXRl
ckxpbWl0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tl
VGhpY2tuZXNzOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0U3Ryb2tlVGhpY2tuZXNzPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZUVsbGlwc2U+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJ
bmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlSW5saW5lUGF0aD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1cm4gY29weUludG88
U3Ryb2tlTGluZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5z
bGF0ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFRyYW5zbGF0ZT4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIEl0ZW1CdWZmZXI6Okl0ZW1CdWZm
ZXIoSXRlbUJ1ZmZlckhhbmRsZXMmJiBoYW5kbGVzKQogICAgIDogbV9yZWFkT25seUJ1ZmZlcnMo
V1RGTW92ZShoYW5kbGVzKSkKIHsKQEAgLTYwNSw3ICs0Nyw2IEBAIEl0ZW1CdWZmZXI6On5JdGVt
QnVmZmVyKCkKIEl0ZW1CdWZmZXI6Okl0ZW1CdWZmZXIoSXRlbUJ1ZmZlciYmIG90aGVyKQogICAg
IDogbV9yZWFkaW5nQ2xpZW50KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZWFkaW5nQ2xpZW50LCBu
dWxscHRyKSkKICAgICAsIG1fd3JpdGluZ0NsaWVudChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fd3Jp
dGluZ0NsaWVudCwgbnVsbHB0cikpCi0gICAgLCBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRC
dWZmZXJzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVm
ZmVycywgeyB9KSkKICAgICAsIG1fYWxsb2NhdGVkQnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fYWxsb2NhdGVkQnVmZmVycywgeyB9KSkKICAgICAsIG1fcmVhZE9ubHlCdWZmZXJzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9yZWFkT25seUJ1ZmZlcnMsIHsgfSkpCiAgICAgLCBtX3dyaXRhYmxl
QnVmZmVyKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV93cml0YWJsZUJ1ZmZlciwgeyB9KSkKQEAgLTYx
Nyw3ICs1OCw2IEBAIEl0ZW1CdWZmZXImIEl0ZW1CdWZmZXI6Om9wZXJhdG9yPShJdGVtQnVmZmVy
JiYgb3RoZXIpCiB7CiAgICAgbV9yZWFkaW5nQ2xpZW50ID0gc3RkOjpleGNoYW5nZShvdGhlci5t
X3JlYWRpbmdDbGllbnQsIG51bGxwdHIpOwogICAgIG1fd3JpdGluZ0NsaWVudCA9IHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV93cml0aW5nQ2xpZW50LCBudWxscHRyKTsKLSAgICBtX2l0ZW1zVG9EZXN0
cm95SW5BbGxvY2F0ZWRCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zVG9EZXN0
cm95SW5BbGxvY2F0ZWRCdWZmZXJzLCB7IH0pOwogICAgIG1fYWxsb2NhdGVkQnVmZmVycyA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hbGxvY2F0ZWRCdWZmZXJzLCB7IH0pOwogICAgIG1fcmVhZE9u
bHlCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3JlYWRPbmx5QnVmZmVycywgeyB9KTsK
ICAgICBtX3dyaXRhYmxlQnVmZmVyID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3dyaXRhYmxlQnVm
ZmVyLCB7IH0pOwpAQCAtNjUxLDkgKzkxLDYgQEAgdm9pZCBJdGVtQnVmZmVyOjpmb3JFYWNoSXRl
bUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4mJiBtYXAKIAog
dm9pZCBJdGVtQnVmZmVyOjpjbGVhcigpCiB7Ci0gICAgZm9yIChhdXRvIGl0ZW0gOiBzdGQ6OmV4
Y2hhbmdlKG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCi0gICAgICAg
IGl0ZW0uZGVzdHJveSgpOwotCiAgICAgZm9yIChhdXRvKiBidWZmZXIgOiBzdGQ6OmV4Y2hhbmdl
KG1fYWxsb2NhdGVkQnVmZmVycywgeyB9KSkKICAgICAgICAgZmFzdEZyZWUoYnVmZmVyKTsKIApA
QCAtNjY0LDcgKzEwMSw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xlYXIoKQogCiBEaWRDaGFuZ2VJ
dGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBu
dW1iZXJPZkJ5dGVzKQogewotICAgIGF1dG8gc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0gPSBwYWRk
ZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcik7CisgICAgYXV0byBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA9IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlczxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7CiAgICAg
aWYgKG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyBudW1iZXJPZkJ5dGVzICsgc2l6ZUZvckJ1ZmZl
clN3aXRjaEl0ZW0gPD0gbV93cml0YWJsZUJ1ZmZlci5jYXBhY2l0eSkKICAgICAgICAgcmV0dXJu
IERpZENoYW5nZUl0ZW1CdWZmZXI6Ok5vOwogCkBAIC02ODAsMjAgKzExNywzMiBAQCBEaWRDaGFu
Z2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVf
dCBudW1iZXJPZkJ5dGVzKQogICAgIHJldHVybiBoYWRQcmV2aW91c0J1ZmZlciA/IERpZENoYW5n
ZUl0ZW1CdWZmZXI6OlllcyA6IERpZENoYW5nZUl0ZW1CdWZmZXI6Ok5vOwogfQogCi12b2lkIEl0
ZW1CdWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCit2b2lkIEl0ZW1CdWZm
ZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiB7Ci0gICAg
YXV0byBkYXRhID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRlbXBvcmFyeUl0ZW0pOwot
ICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVxdWlyZWRTaXplRm9y
SXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVt
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIGlmICghcmVx
dWlyZWRTaXplRm9ySXRlbSkgeworICAgICAgICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xp
ZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRlbXBvcmFyeUl0ZW0pOworICAgICAgICBpZiAoIW91
dE9mTGluZUl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBkYXRh
TGVuZ3RoID0gZGF0YS0+c2l6ZSgpOworICAgIGF1dG8gZGF0YUxlbmd0aCA9IHZhbHVlT3JDb21w
dXRlKHJlcXVpcmVkU2l6ZUZvckl0ZW0sIFsmXSB7CisgICAgICAgIEFTU0VSVChvdXRPZkxpbmVJ
dGVtKTsKKyAgICAgICAgcmV0dXJuIG91dE9mTGluZUl0ZW0tPnNpemUoKTsKKyAgICB9KTsKICAg
ICBhdXRvIGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0gMiAqIHNpemVvZih1aW50
NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3Ro
KTsKIAogICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVk
KGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKIAotICAgIG1fd3JpdGFibGVCdWZm
ZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRl
bXBvcmFyeUl0ZW0udHlwZSgpKTsKKyAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVu
TnVtYmVyT2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSh0ZW1wb3JhcnlJ
dGVtKSk7CiAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fd3JpdGFibGVCdWZmZXIu
ZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMpWzFdID0gZGF0YUxlbmd0aDsKLSAgICBtZW1j
cHkobV93cml0YWJsZUJ1ZmZlci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIDIgKiBz
aXplb2YodWludDY0X3QpLCBkYXRhLT5kYXRhQXNVSW50OFB0cigpLCBkYXRhTGVuZ3RoKTsKKyAg
ICBhdXRvKiBsb2NhdGlvbiA9IG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRlbk51bWJl
ck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKKworICAgIGlmIChyZXF1aXJlZFNpemVG
b3JJdGVtKQorICAgICAgICBtX3dyaXRpbmdDbGllbnQtPmVuY29kZUl0ZW1JbmxpbmUodGVtcG9y
YXJ5SXRlbSwgbG9jYXRpb24pOworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KGxvY2F0aW9uLCBv
dXRPZkxpbmVJdGVtLT5kYXRhQXNVSW50OFB0cigpLCBkYXRhTGVuZ3RoKTsKIAogICAgIGRpZEFw
cGVuZERhdGEoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZlckNoYW5nZWQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IDEzOGQ5
Y2EwYmQ3MzQzZGJiZjVmNTE5MTYwN2MzYjE5MmEzNzdiZWIuLjU3ODljOTU3OTVlNTgwNDhhMDQ1
NDMzOTQ5ZDdkM2E0MWI1NmQxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMTAgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGlz
cGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRl
bVR5cGUuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvT2Jq
ZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM4LDkgKzQxLDYgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAog
Y2xhc3MgRGlzcGxheUxpc3Q7CiAKLWVudW0gSXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsK
LXVzaW5nIEl0ZW1CdWZmZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVy
SWRlbnRpZmllclR5cGU+OwotCiAvLyBBbiBJdGVtQnVmZmVySGFuZGxlIHdyYXBzIGEgcG9pbnRl
ciB0byBhIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuCiBzdHJ1
Y3QgSXRlbUJ1ZmZlckhhbmRsZSB7CiAgICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmll
cjsKQEAgLTUzLDUyICs1Myw0MiBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZSB7CiAKIHVzaW5n
IEl0ZW1CdWZmZXJIYW5kbGVzID0gVmVjdG9yPEl0ZW1CdWZmZXJIYW5kbGUsIDI+OwogCi0vLyBB
biBJdGVtSGFuZGxlIHdyYXBzIGEgcG9pbnRlciB0byBhbiBJdGVtVHlwZSBmb2xsb3dlZCBpbW1l
ZGlhdGVseSBieSBhbiBpdGVtIG9mIHRoYXQgdHlwZS4KLS8vIEVhY2ggaXRlbSBoYW5kbGUgZGF0
YSBwb2ludGVyIGlzIGFsaWduZWQgdG8gOCBieXRlcywgYW5kIHRoZSBpdGVtIGl0c2VsZiBpcyBh
bHNvIGFsaWduZWQKLS8vIHRvIDggYnl0ZXMuIFRvIGVuc3VyZSB0aGlzLCB0aGUgaXRlbSB0eXBl
IGNvbnNpc3RzIG9mIDggYnl0ZXMgKDEgYnl0ZSBmb3IgdGhlIHR5cGUgYW5kIDcKLS8vIGJ5dGVz
IG9mIHBhZGRpbmcpLgotc3RydWN0IEl0ZW1IYW5kbGUgewotICAgIHVpbnQ4X3QqIGRhdGEgeyBu
dWxscHRyIH07Ci0KLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGVzdHJveSgpOwotICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0
IHsgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKHR5cGUoKSk7IH0K
LQotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhISgqdGhpcyk7IH0KLSAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFkYXRhOyB9Ci0KLSNpZiAhZGVmaW5lZChO
REVCVUcpIHx8ICFMT0dfRElTQUJMRUQKLSAgICBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7
Ci0jZW5kaWYKK2VudW0gY2xhc3MgRGlkQ2hhbmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywgWWVz
IH07CiAKLSAgICBJdGVtVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRl
bVR5cGU+KGRhdGFbMF0pOyB9CitjbGFzcyBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQoKSB7IH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXMoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVDo6
aXRlbVR5cGU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUJiBnZXQoKSBjb25zdAorICAg
IHZpcnR1YWwgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChpczxUPigpKTsKLSAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PFQqPigmZGF0YVtzaXplb2YodWludDY0X3QpXSk7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCi0gICAgYm9vbCBzYWZlQ29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdDsK
LX07CisgICAgdmlydHVhbCBPcHRpb25hbDxzdGQ6OnNpemVfdD4gcmVxdWlyZWRTaXplRm9ySXRl
bShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICB9CiAKLWVudW0gY2xhc3MgRGlkQ2hhbmdlSXRlbUJ1ZmZlciA6IGJv
b2wgeyBObywgWWVzIH07CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJ
dGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLWNsYXNzIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5JdGVtQnVmZmVyV3JpdGluZ0NsaWVudCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVJdGVtSW5saW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYs
IHZvaWQqKSBjb25zdAorICAgIHsKKyAgICB9CiAKLSAgICB2aXJ0dWFsIEl0ZW1CdWZmZXJIYW5k
bGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGVuY29kZUl0ZW0oSXRlbUhhbmRsZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QgbnVtYmVy
T2ZCeXRlcywgRGlkQ2hhbmdlSXRlbUJ1ZmZlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRB
cHBlbmREYXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QgbnVtYmVyT2ZCeXRlcywg
RGlkQ2hhbmdlSXRlbUJ1ZmZlcikKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShudW1iZXJP
ZkJ5dGVzKTsKKyAgICB9CiB9OwogCiBjbGFzcyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQoKSB7IH0KIAotICAg
IHZpcnR1YWwgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0
ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlLCB1aW50
OF90KiBoYW5kbGVMb2NhdGlvbikgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8RGlzcGxheUxp
c3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUpID0gMDsKIH07CiAKIC8vIEFuIEl0ZW1CdWZm
ZXIgY29udGFpbnMgZGlzcGxheSBsaXN0IGl0ZW0gZGF0YSwgYW5kIGNvbnNpc3RzIG9mIGEgcmVh
ZHdyaXRlIEl0ZW1CdWZmZXJIYW5kbGUgKHRvIHdoaWNoIGRpc3BsYXkKQEAgLTE0OSwyNiArMTM5
LDE1IEBAIHB1YmxpYzoKICAgICAvLyBkYXRhIGJhY2sgaW50byBhbiBpdGVtIG9mIHR5cGUgVC4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIGFwcGVuZChBcmdz
JiYuLi4gYXJncykKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSB8fCAhVDo6aXNJbmxpbmVJdGVtKTsKLQotICAgICAg
ICBpZiAoIVQ6OmlzSW5saW5lSXRlbSAmJiBtX3dyaXRpbmdDbGllbnQpIHsKLSNpZiBDT01QSUxF
UihNU1ZDKQotICAgICAgICAgICAgX19kZWNsc3BlYyhhbGlnbig4KSkgdHlwZWRlZiB1aW50OF90
IEVuY29kaW5nQnVmZmVyW3NpemVvZih1aW50NjRfdCkgKyBzaXplb2YoVCldOwotI2Vsc2UKLSAg
ICAgICAgICAgIHVzaW5nIEVuY29kaW5nQnVmZmVyIF9fYXR0cmlidXRlX18oKGFsaWduZWQgKDgp
KSkgPSB1aW50OF90W3NpemVvZih1aW50NjRfdCkgKyBzaXplb2YoVCldOwotI2VuZGlmCi0gICAg
ICAgICAgICBzdGF0aWMgRW5jb2RpbmdCdWZmZXIgdGVtcG9yYXJ5SXRlbUJ1ZmZlcjsKLSAgICAg
ICAgICAgIHRlbXBvcmFyeUl0ZW1CdWZmZXJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjpp
dGVtVHlwZSk7Ci0gICAgICAgICAgICBuZXcgKHRlbXBvcmFyeUl0ZW1CdWZmZXIgKyBzaXplb2Yo
dWludDY0X3QpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgICAgICBh
cHBlbmQoeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0pOwotICAgICAgICAgICAgSXRlbUhhbmRsZSB7
IHRlbXBvcmFyeUl0ZW1CdWZmZXIgfS5kZXN0cm95KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSA9PSBUOjppc0lubGluZUl0
ZW0pOworCisgICAgICAgIGlmICghVDo6aXNJbmxpbmVJdGVtKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3dyaXRpbmdDbGllbnQpOworICAgICAgICAgICAgYXBwZW5kKERpc3BsYXlM
aXN0SXRlbShUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0
YWJsZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVt
VHlwZSkpOwotCi0gICAgICAgIGlmICghc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+
Ojp2YWx1ZSkKLSAgICAgICAgICAgIG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMu
YXBwZW5kKHsgJm1fd3JpdGFibGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSB9
KTsKKyAgICAgICAgYXV0byBidWZmZXJDaGFuZ2VkID0gc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVk
ZWQocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPFQ+KCkpOwogCiAgICAgICAgIHVuY2hl
Y2tlZEFwcGVuZDxUPihidWZmZXJDaGFuZ2VkLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OwogICAgIH0KQEAgLTE4MywxOCArMTYyLDE3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRBcHBlbmREYXRhKHNpemVfdCBudW1iZXJPZkJ5dGVzLCBEaWRDaGFuZ2VJdGVt
QnVmZmVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIERpZENoYW5nZUl0ZW1CdWZmZXIgc3dhcFdy
aXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKEl0ZW1IYW5kbGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IGNsYXNzLi4uIEFyZ3M+IHZvaWQgdW5jaGVja2VkQXBwZW5kKERpZENoYW5nZUl0ZW1CdWZmZXIg
ZGlkQ2hhbmdlSXRlbUJ1ZmZlciwgQXJncyYmLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBhdXRv
KiBzdGFydE9mSXRlbSA9ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZC
eXRlc107CiAgICAgICAgIHN0YXJ0T2ZJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVDo6
aXRlbVR5cGUpOwogICAgICAgICBuZXcgKHN0YXJ0T2ZJdGVtICsgc2l6ZW9mKHVpbnQ2NF90KSkg
VChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICBkaWRBcHBlbmREYXRhKHBh
ZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSksIGRpZENoYW5nZUl0ZW1C
dWZmZXIpOworICAgICAgICBkaWRBcHBlbmREYXRhKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5C
eXRlczxUPigpLCBkaWRDaGFuZ2VJdGVtQnVmZmVyKTsKICAgICB9CiAKICAgICBJdGVtQnVmZmVy
UmVhZGluZ0NsaWVudCogbV9yZWFkaW5nQ2xpZW50IHsgbnVsbHB0ciB9OwogICAgIEl0ZW1CdWZm
ZXJXcml0aW5nQ2xpZW50KiBtX3dyaXRpbmdDbGllbnQgeyBudWxscHRyIH07Ci0gICAgVmVjdG9y
PEl0ZW1IYW5kbGU+IG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnM7CiAgICAgVmVj
dG9yPHVpbnQ4X3QqPiBtX2FsbG9jYXRlZEJ1ZmZlcnM7CiAgICAgSXRlbUJ1ZmZlckhhbmRsZXMg
bV9yZWFkT25seUJ1ZmZlcnM7CiAgICAgSXRlbUJ1ZmZlckhhbmRsZSBtX3dyaXRhYmxlQnVmZmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjc3NDk3ZjM5NTA1OGE2NzY4NjQ0OGEyNTU3MTc0MGNmNDAzN2Fh
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwz
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworZW51bSBJdGVtQnVmZmVySWRl
bnRpZmllclR5cGUgeyB9OwordXNpbmcgSXRlbUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPEl0ZW1CdWZmZXJJZGVudGlmaWVyVHlwZT47CisKK30KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGIxZGI5NDdhYjg1NTdmMDBjYWY5ZDAxNzZlNzFiMjVkOTYxNThjNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwzNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgiCi0KLSNpbmNsdWRlICJEaXNwbGF5TGlzdEl0
ZW1zLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7Ci0K
LXN0YXRpYyBzaXplX3Qgc2l6ZU9mSXRlbUluQnl0ZXMoSXRlbVR5cGUgdHlwZSkKLXsKLSAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFNhdmUpOwotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoUmVzdG9yZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKFRyYW5zbGF0ZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKFJvdGF0ZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2NhbGUpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNh
dGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENvbmNhdGVuYXRlQ1RNKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0Q1RNKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoU2V0SW5saW5lRmlsbEdyYWRpZW50KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsQ29sb3I6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lRmlsbENvbG9yKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihTZXRJbmxpbmVTdHJva2VDb2xvcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ry
b2tlVGhpY2tuZXNzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldFN0cm9rZVRoaWNrbmVzcyk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0
U3RhdGUpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoU2V0TGluZUNhcCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAg
ICAgIHJldHVybiBzaXplb2YoU2V0TGluZURhc2gpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVKb2luOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVKb2luKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldE1pdGVyTGlt
aXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICByZXR1cm4gc2l6
ZW9mKENsZWFyU2hhZG93KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKENsaXApOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHJl
dHVybiBzaXplb2YoQ2xpcE91dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZm
ZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ2xpcFRvSW1hZ2VCdWZmZXIpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ2xpcE91dFRv
UGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoQ2xpcFBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJl
dHVybiBzaXplb2YoRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdHbHlwaHMpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3
SW1hZ2VCdWZmZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihEcmF3TmF0aXZlSW1hZ2UpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXR0ZXJuKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3UmVjdCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0xp
bmUpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoRHJhd0xpbmVzRm9yVGV4dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgcmV0
dXJuIHNpemVvZihEcmF3RWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoRHJhd1BhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdG
b2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdGb2N1c1JpbmdQYXRoKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoRHJhd0ZvY3VzUmluZ1JlY3RzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3RXaXRoQ29sb3Ip
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1
cm4gc2l6ZW9mKEZpbGxSZWN0V2l0aEdyYWRpZW50KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
Q29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbENvbXBvc2l0ZWRSZWN0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoRmlsbFJvdW5kZWRSZWN0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bElubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbElubGluZVBhdGgpOwotI2Vu
ZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
RmlsbFBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKEZpbGxFbGxpcHNlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmx1c2hDb250ZXh0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVy
biBzaXplb2YoTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBzaXplb2YoR2V0SW1hZ2VEYXRhKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBzaXplb2YoUHV0
SW1hZ2VEYXRhKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAg
ICAgIHJldHVybiBzaXplb2YoUGFpbnRGcmFtZUZvck1lZGlhKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZVJlY3QpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlTGlu
ZSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VJbmxpbmVQYXRoKTsK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoU3Ryb2tlUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihTdHJva2VFbGxpcHNlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGVhclJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQ2xlYXJSZWN0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5j
eUxheWVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZFRyYW5zcGFyZW5jeUxheWVyKTsKLSNp
ZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKEFwcGx5U3Ryb2tlUGF0dGVybik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihBcHBseUZpbGxQYXR0ZXJu
KTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgfQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIGlzRHJhd2lu
Z0l0ZW0oSXRlbVR5cGUgdHlwZSkKLXsKLSAgICAvKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRv
cCBvZiBEaXNwbGF5TGlzdEl0ZW1zLmggZm9yIHdoYXQgdGhpcyBtZWFucy4KLSAgICAgKiBUaGlz
IG5lZWRzIHRvIG1hdGNoIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJ
dGVtInMgaW5zaWRlIHRoZSBpbmRpdmlkdWFsIGl0ZW0gY2xhc3Nlcy4gKi8KLQotICAgIHN3aXRj
aCAodHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0j
aWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwT3V0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBh
dGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgSXRlbVR5
cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgIGNh
c2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgIGNh
c2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNh
cDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lSm9pbjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldFN0YXRlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVz
czoKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0
SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVn
aW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0dseXBoczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5
TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
R3JhZGllbnQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OlBh
aW50RnJhbWVGb3JNZWRpYToKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0Ogot
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXNp
emVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGUgdHlwZSkKLXsKLSAg
ICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1
aW50NjRfdCksIHNpemVPZkl0ZW1JbkJ5dGVzKHR5cGUpKTsKLX0KLQotYm9vbCBpc0lubGluZUl0
ZW0oSXRlbVR5cGUgdHlwZSkKLXsKLSAgICAvKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBv
ZiBEaXNwbGF5TGlzdEl0ZW1zLmggZm9yIHdoYXQgdGhpcyBtZWFucy4KLSAgICAgKiBUaGlzIG5l
ZWRzIHRvIG1hdGNoICgxKSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjplbmNvZGVJdGVtKCksICgy
KSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKCksCi0gICAgICogYW5kICgzKSBh
bGwgdGhlICJzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBp
bmRpdmlkdWFsIGl0ZW0gY2xhc3Nlcy4gKi8KLQotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29s
b3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFJvdW5kZWRSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBs
eVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFy
ZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpDbGVhclNoYWRvdzoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBPdXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkNv
bmNhdGVuYXRlQ1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0ltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGlu
ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRU
cmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBF
TkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0
aDoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2UgSXRlbVR5
cGU6OkZsdXNoQ29udGV4dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFu
Z2VJdGVtQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgIGNh
c2UgSXRlbVR5cGU6OlNldENUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29s
b3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVDYXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BB
VEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VM
aW5lOgotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpH
ZXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIERpc3Bs
YXlMaXN0Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuaAppbmRleCAwZWZkMGI3MmIwMjlhZmIwMTI4OTEwMzA5Y2ZlMWJiY2RkNmQzOTFl
Li40ZTFmZWJjN2FlZmUxN2U2ODkwMGEwYjBhNDE1ZGU1YzgzMzA4YzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTksOSArOTksNSBAQCBlbnVtIGNsYXNzIEl0ZW1U
eXBlIDogdWludDhfdCB7CiAgICAgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciwKIH07CiAKLVdFQkNP
UkVfRVhQT1JUIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGUp
OwotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUpOwotV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlKTsKLQogfSAvLyBuYW1lc3BhY2UgRGlz
cGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAppbmRleCAwZTQwYTI2YWUwMDk3ZGM4MGU0OGIyNDJlYjE5ZGZmOTZjNDFiM2Zl
Li4zZmQzNTgyYjQ2NDUyYmMyZjZlMDFhN2RmY2Q4YmJmMDhlZTI4NTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgogCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogI2lu
Y2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKQEAgLTIyMCwx
MiArMjIxLDEyIEBAIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAKLXZvaWQgU2V0U3Rh
dGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBh
dHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2b2lkIFNldFN0YXRl
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0
ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBjb25zdAogewogICAgIGlm
IChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0cm9rZVBhdHRlcm5JbWFnZSkKLSAgICAgICAg
bV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFr
ZVJlZigqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOwor
ICAgICAgICBjb25zdF9jYXN0PFNldFN0YXRlKj4odGhpcyktPm1fc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5J
bWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKICAgICBpZiAobV9zdGF0ZUNoYW5n
ZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVy
bkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0
YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKmZpbGxQYXR0ZXJuSW1h
Z2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBjb25zdF9jYXN0PFNldFN0
YXRlKj4odGhpcyktPm1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46
OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0
ZXJzKTsKICAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQpOwogfQogCkBAIC0xMDg1LDE5
NSArMTA4NiwxMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgSXRlbVR5cGUgdHlwZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICB0cyA8PCBpdGVt
LnR5cGUoKTsKLQotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpUcmFuc2xhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxSb3RhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxl
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTY2FsZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRDVE0+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
U2V0SW5saW5lRmlsbENvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5l
U3Ryb2tlQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0
cm9rZVRoaWNrbmVzczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNz
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3RhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVDYXA+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lRGFzaD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExp
bmVKb2luPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxp
bWl0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxD
bGlwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xp
cFRvSW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBPdXRUb1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0dseXBocz4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lPigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RHJhd0VsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0aD4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdG
b2N1c1JpbmdSZWN0cz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0PigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxG
aWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsQ29tcG9z
aXRlZFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3Vu
ZGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCk7Ci0gICAg
ICAgIGJyZWFrOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsSW5saW5lUGF0
aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0
aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxG
aWxsRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hD
b250ZXh0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGbHVzaENvbnRleHQ+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1l
dGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxHZXRJbWFnZURh
dGE+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUmVjdD4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5B
QkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0
aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VFbGxp
cHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFyUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvLyBJ
dGVtcyB3aXRoIG5vIGFkZGl0aW9uYWwgZGF0YS4KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgot
ICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNw
YXJlbmN5TGF5ZXI6Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tl
UGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotI2VuZGlmCi0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgaXRlbSkKK3sKKyAgICBXVEY6OnZpc2l0KFsmXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0
ZW0pIHsKKyAgICAgICAgdHMgPDwgZGlzcGxheUxpc3RJdGVtLml0ZW1UeXBlOworICAgICAgICB0
cyA8PCBkaXNwbGF5TGlzdEl0ZW07CisgICAgfSwgaXRlbSk7CiAgICAgcmV0dXJuIHRzOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBlOTNiMDQ2NDQzYmE0YWM3NjJh
ZTMyMzE1M2NiNGZhMGMzYTY1YTVmLi5lYmY2ZmQyMjFlOWNiMmM4NzdlYmFmMjJhZDYyMzJhZTJm
Nzc4ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI2LDExICsyNiwx
NCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgi
Ci0jaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEZsdXNoSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVk
UmVjdC5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
cklkZW50aWZpZXIuaCIKQEAgLTM4LDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBUZXh0U3RyZWFtOwpAQCAtNTMsMTIgKzU3LDEwIEBAIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiAKIC8qIGlzSW5saW5lSXRlbSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0
IG5lZWRzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIElQQzo6RW5jb2RlciBpbiBvcmRlciB0byBzZXJp
YWxpemUsCiAgKiBvciB3aGV0aGVyIHdlIGNhbiBqdXN0IHVzZSBwbGFjZW1lbnQgbmV3IGFuZCBi
ZSBkb25lLgotICogSXQgbmVlZHMgdG8gbWF0Y2ggKDEpIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6
OmVuY29kZUl0ZW0oKSwgKDIpIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oKSwK
LSAqIGFuZCAoMykgaXNJbmxpbmVJdGVtKCkgaW4gRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAuCiAg
KgogICogaXNEcmF3aW5nSXRlbSBpbmRpY2F0ZXMgaWYgdGhpcyBjb21tYW5kIGNhbiBhZmZlY3Qg
ZGlydHkgcmVjdHMuCiAgKiBXZSBjYW4gZG8gdGhpbmdzIGxpa2Ugc2tpcCBkcmF3aW5nIGl0ZW1z
IHdoZW4gcmVwbGF5aW5nIHRoZW0gaWYgdGhlaXIgZXh0ZW50cyBkb24ndCBpbnRlcnNlY3Qgd2l0
aCB0aGUgY3VycmVudCBjbGlwLgotICogSXQgbmVlZHMgdG8gbWF0Y2ggaXNEcmF3aW5nSXRlbSgp
IGluIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwLiAqLworICovCiAKIGNsYXNzIFNhdmUgewogcHVi
bGljOgpAQCAtMjc3LDcgKzI3OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybklt
YWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFn
ZSogZmlsbFBhdHRlcm5JbWFnZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBhdHRl
cm5EYXRhIHsKQEAgLTkxMSw3ICs5MTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBm
b250SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KKyAgICBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2Zv
bnRJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IoKSBjb25z
dCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBjb25zdCBWZWN0b3I8R2x5cGhC
dWZmZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaHM7IH0KQEAg
LTIyNzQsNyArMjI3Niw5NyBAQCBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBJdGVtSGFuZGxlKTsKK3VzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQ8CisgICAg
U2F2ZSwKKyAgICBSZXN0b3JlLAorICAgIFRyYW5zbGF0ZSwKKyAgICBSb3RhdGUsCisgICAgU2Nh
bGUsCisgICAgU2V0Q1RNLAorICAgIENvbmNhdGVuYXRlQ1RNLAorICAgIFNldElubGluZUZpbGxH
cmFkaWVudCwKKyAgICBTZXRJbmxpbmVGaWxsQ29sb3IsCisgICAgU2V0SW5saW5lU3Ryb2tlQ29s
b3IsCisgICAgU2V0U3Ryb2tlVGhpY2tuZXNzLAorICAgIFNldFN0YXRlLAorICAgIFNldExpbmVD
YXAsCisgICAgU2V0TGluZURhc2gsCisgICAgU2V0TGluZUpvaW4sCisgICAgU2V0TWl0ZXJMaW1p
dCwKKyAgICBDbGVhclNoYWRvdywKKyAgICBDbGlwLAorICAgIENsaXBPdXQsCisgICAgQ2xpcFRv
SW1hZ2VCdWZmZXIsCisgICAgQ2xpcE91dFRvUGF0aCwKKyAgICBDbGlwUGF0aCwKKyAgICBCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcywKKyAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisg
ICAgRHJhd0dseXBocywKKyAgICBEcmF3SW1hZ2VCdWZmZXIsCisgICAgRHJhd05hdGl2ZUltYWdl
LAorICAgIERyYXdQYXR0ZXJuLAorICAgIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIsCisgICAgRW5k
VHJhbnNwYXJlbmN5TGF5ZXIsCisgICAgRHJhd1JlY3QsCisgICAgRHJhd0xpbmUsCisgICAgRHJh
d0xpbmVzRm9yVGV4dCwKKyAgICBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyLAorICAgIERyYXdF
bGxpcHNlLAorICAgIERyYXdQYXRoLAorICAgIERyYXdGb2N1c1JpbmdQYXRoLAorICAgIERyYXdG
b2N1c1JpbmdSZWN0cywKKyAgICBGaWxsUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhDb2xvciwKKyAg
ICBGaWxsUmVjdFdpdGhHcmFkaWVudCwKKyAgICBGaWxsQ29tcG9zaXRlZFJlY3QsCisgICAgRmls
bFJvdW5kZWRSZWN0LAorICAgIEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlLAorI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQorICAgIEZpbGxJbmxpbmVQYXRoLAorI2VuZGlmCisgICAgRmlsbFBh
dGgsCisgICAgRmlsbEVsbGlwc2UsCisgICAgR2V0SW1hZ2VEYXRhLAorICAgIFB1dEltYWdlRGF0
YSwKKyAgICBQYWludEZyYW1lRm9yTWVkaWEsCisgICAgU3Ryb2tlUmVjdCwKKyAgICBTdHJva2VM
aW5lLAorI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorICAgIFN0cm9rZUlubGluZVBhdGgs
CisjZW5kaWYKKyAgICBTdHJva2VQYXRoLAorICAgIFN0cm9rZUVsbGlwc2UsCisgICAgQ2xlYXJS
ZWN0LAorI2lmIFVTRShDRykKKyAgICBBcHBseVN0cm9rZVBhdHRlcm4sCisgICAgQXBwbHlGaWxs
UGF0dGVybiwKKyNlbmRpZgorICAgIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IsCisgICAgRmx1c2hD
b250ZXh0LAorICAgIE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciwKKyAgICBNZXRhQ29tbWFu
ZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+OworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKKworaW5saW5lIGNvbnN0ZXhw
ciBib29sIGlzRHJhd2luZ0l0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0
ZW0pCit7CisgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgZGlzcGxheUxpc3RJ
dGVtKSB7CisgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdEl0ZW0uaXNEcmF3aW5nSXRlbTsKKyAg
ICB9LCBkaXNwbGF5TGlzdEl0ZW0pOworfQorCitpbmxpbmUgY29uc3RleHByIEl0ZW1UeXBlIGl0
ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKQoreworICAgIHJl
dHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkgeworICAgICAg
ICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLml0ZW1UeXBlOworICAgIH0sIGRpc3BsYXlMaXN0SXRl
bSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIHNpemVfdCBwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJldHVybiBzaXplb2YodWludDY0X3Qp
ICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZW9mKFQpKTsKK30K
IAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKQEAg
LTIzMzQsNiArMjQyNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpGbHVzaENvbnRleHQsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIsCisgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRJbWFnZURhdGEsCiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWEsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhZDg2YmRiOTJkOWMxMTg3NGQ5NjE4MGVhYjZmNzEx
Zjk1MDlmMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTAsMCArMSwxOTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVyYXRvci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitEaXNwbGF5TGlzdDo6SXRl
cmF0b3I6Okl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRl
bHlNb3ZlVG9FbmQgaW1tZWRpYXRlbHlNb3ZlVG9FbmQpCisgICAgOiBtX2Rpc3BsYXlMaXN0KGRp
c3BsYXlMaXN0KQoreworICAgIGlmIChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJbW1lZGlhdGVs
eU1vdmVUb0VuZDo6WWVzKSB7CisgICAgICAgIGlmIChhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigp
KSB7CisgICAgICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXggPSBpdGVtcy0+bV9yZWFkT25s
eUJ1ZmZlcnMuc2l6ZSgpOworICAgICAgICAgICAgbV9jdXJzb3IgPSBlbmRPZkN1cnJlbnRCdWZm
ZXIoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9m
Q3VycmVudEJ1ZmZlcigpOworfQorCisjaWYgQVNTRVJUX0VOQUJMRUQKK2Jvb2wgRGlzcGxheUxp
c3Q6Okl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZGlzcGxheUxpc3QuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0IGF1dG8qIGl0ZW1zID0g
aXRlbUJ1ZmZlcigpOworICAgIGlmICghaXRlbXMpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMt
Pm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CisgICAgcmV0dXJuIG1fY3Vyc29yID09IGVuZEN1cnNv
cjsKK30KKyNlbmRpZgorCithdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkg
Y29uc3QgLT4gT3B0aW9uYWw8VmFsdWU+Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBB
U1NFUlQoIW1fY3VycmVudEl0ZW1JbmZvKTsKKworICAgIGF1dG8gY3VycmVudEl0ZW1JbmZvID0g
Y3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtSW5mbykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIG1fY3VycmVudEl0ZW1JbmZvID0ge3sgY3VycmVudEl0ZW1J
bmZvLT5zaXplSW5CdWZmZXIsIGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSB9fTsKKwor
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gY3VycmVudEV4dGVudDsKKyAgICBpZiAoY3VycmVudEl0
ZW1JbmZvLT5pc0RyYXdpbmdJdGVtICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRl
bnRzLmlzRW1wdHkoKSkKKyAgICAgICAgY3VycmVudEV4dGVudCA9IG1fZGlzcGxheUxpc3QubV9k
cmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKKworICAgIHJldHVybiB7eyBX
VEZNb3ZlKGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtKSwgV1RGTW92ZShjdXJyZW50
RXh0ZW50KSwgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIgfX07Cit9CisKK3ZvaWQgRGlz
cGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkp
OworICAgIEFTU0VSVChtX2N1cnJlbnRJdGVtSW5mbyk7CisKKyAgICBpZiAobV9jdXJyZW50SXRl
bUluZm8tPmlzRHJhd2luZ0l0ZW0pCisgICAgICAgICsrbV9kcmF3aW5nSXRlbUluZGV4OworCisg
ICAgbV9jdXJzb3IgKz0gbV9jdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlcjsKKworICAgIGlm
IChtX2N1cnNvciA9PSBlbmRPZkN1cnJlbnRCdWZmZXIoKSAmJiBtX3JlYWRPbmx5QnVmZmVySW5k
ZXggPCBpdGVtQnVmZmVyKCktPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKSkgeworICAgICAgICBt
X3JlYWRPbmx5QnVmZmVySW5kZXgrKzsKKyAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJl
bnRCdWZmZXIoKTsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRJdGVtSW5mbyA9IHsgfTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gc3RhdGljIGlubGluZSBjb25zdGV4
cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
aW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUo
c3RkOjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0gdHJ1ZTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhSGFzSXNW
YWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVtJikKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0
ZW0mIGl0ZW0pCit7CisgICAgcmV0dXJuIGl0ZW0uaXNWYWxpZCgpOworfQorCit0ZW1wbGF0ZSA8
c3RkOjpzaXplX3QgST4KK2lubGluZSBhdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVu
dEl0ZW0oKSBjb25zdCAtPiBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4KK3sKKyAgICAvLyBX
ZSBjYW4ndCB1c2UgZWFybHktcmV0dXJuIHN0eWxlIGhlcmUgYmVjYXVzZSBvZiB0ZW1wbGF0ZSBl
eHBhbnNpb24gaW4gdGhlIGNvbXBpbGVyLgorICAgIC8vIERvaW5nIHNvIHdvdWxkIGVpdGhlciBB
KSBicmVhayB0aGUgV2ViS2l0IHN0eWxlIHJ1bGUgYWJvdXQgZG9pbmcgImlmICgpIHsgcmV0dXJu
OyB9IHJldHVybjsiIGluc3RlYWQgb2YgImlmICgpIHsgcmV0dXJuOyB9IGVsc2UgeyByZXR1cm47
IH0iCisgICAgLy8gb3IgQikgY2F1c2UgdGhlIGNvbXBpbGVyIHRvIGluZmluaXRlbHkgcmVjdXJz
ZSB3aGVuIGdlbmVyYXRpbmcgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIG9mIHRoaXMgZnVuY3Rp
b24uCisgICAgaWYgY29uc3RleHByIChJIDwgV1RGOjp2YXJpYW50X3NpemU8RGlzcGxheUxpc3RJ
dGVtPjo6dmFsdWUpIHsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6
dmFyaWFudF9hbHRlcm5hdGl2ZV90PEksIERpc3BsYXlMaXN0SXRlbT47CisKKyAgICAgICAgY29u
c3QgYXV0byogZW5kT2ZDdXJyZW50QnVmZmVyID0gdGhpcy0+ZW5kT2ZDdXJyZW50QnVmZmVyKCk7
CisKKyAgICAgICAgaWYgKG1fY3Vyc29yICsgMSA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBpdGVtVHlwZSA9IHN0
YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAgICAgIGlmIChpdGVtVHlwZSAh
PSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBjdXJy
ZW50SXRlbTxJICsgMT4oKTsKKworICAgICAgICBpZiAoRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJ
bmxpbmVJdGVtKSB7CisgICAgICAgICAgICBpZiAobV9jdXJzb3IgKyBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbUluQnl0ZXM8RGlzcGxheUxpc3RJdGVtVHlwZT4oKSA+IGVuZE9mQ3VycmVudEJ1ZmZl
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgY29u
c3QgYXV0byYgaXRlbSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IERpc3BsYXlMaXN0SXRlbVR5
cGUqPihtX2N1cnNvciArIHNpemVvZih1aW50NjRfdCkpOworICAgICAgICAgICAgaWYgKCFpc1Zh
bGlkKGl0ZW0pKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICBzdGQ6OnNpemVfdCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHNpemVvZih1aW50NjRf
dCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBzaXplb2YoRGlzcGxh
eUxpc3RJdGVtVHlwZSkpOworICAgICAgICAgICAgcmV0dXJuIHt7IGl0ZW0sIGN1cnJlbnRJdGVt
U2l6ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byogY2xpZW50ID0gaXRlbUJ1ZmZlcigpLT5tX3JlYWRpbmdD
bGllbnQ7CisgICAgICAgIGlmICghY2xpZW50KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBpZiAobV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSA+IGVu
ZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fY3Vy
c29yKVsxXTsKKyAgICAgICAgY29uc3QgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1cnNvciArIDIg
KiBzaXplb2YodWludDY0X3QpOworICAgICAgICBpZiAoc3RhcnRPZkRhdGEgKyBkYXRhTGVuZ3Ro
ID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBhdXRvIGl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRh
dGFMZW5ndGgsIGl0ZW1UeXBlKTsKKyAgICAgICAgaWYgKCFpdGVtIHx8ICFpc1ZhbGlkKGl0ZW0u
dmFsdWUoKSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBzdGQ6
OnNpemVfdCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsg
cm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7CisgICAg
ICAgIHJldHVybiB7eyBXVEZNb3ZlKGl0ZW0udmFsdWUoKSksIGN1cnJlbnRJdGVtU2l6ZUluQnVm
ZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAgIH0KKworICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3ZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpt
b3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCit7CisgICAgYXV0byBpdGVtcyA9IGl0
ZW1CdWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUo
KTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZl
cnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRP
bmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOworICAgICAgICBtX2N1cnNvciA9IGN1
cnJlbnRCdWZmZXJIYW5kbGUuZGF0YTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9y
ZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsKKyAgICAgICAg
bV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhOworICAgIH0KK30KKwordWlu
dDhfdCogRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjplbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdAor
eworICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgQVNTRVJUKGl0ZW1zKTsKKwor
ICAgIGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZl
cnMuc2l6ZSgpOworICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRP
bmx5QnVmZmVycykgeworICAgICAgICBhdXRvJiBjdXJyZW50QnVmZmVySGFuZGxlID0gaXRlbXMt
Pm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07CisgICAgICAgIHJldHVy
biBjdXJyZW50QnVmZmVySGFuZGxlLmRhdGEgKyBjdXJyZW50QnVmZmVySGFuZGxlLmNhcGFjaXR5
OworICAgIH0KKworICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZS
ZWFkT25seUJ1ZmZlcnMpOworICAgIHJldHVybiBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRh
ICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Cit9CisKK30KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4YTI2YWEyZTI1NjE5ZmFmYjM5
MTA5NDVhY2EzMjU0ZjAxY2E4NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0w
LDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlz
cGxheUxpc3RJdGVtcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxh
eUxpc3QgeworCitjbGFzcyBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgeworcHVibGljOgorICAgIGVu
dW0gY2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgeyBObywgWWVzIH07CisgICAgSXRlcmF0b3Io
Y29uc3QgRGlzcGxheUxpc3QmLCBJbW1lZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92
ZVRvRW5kOjpObyk7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVy
KSB7IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1
cnNvciA9PSBvdGhlci5tX2N1cnNvcjsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVy
YXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBvcGVyYXRvcisrKCk7CisKKyAgICBzdHJ1Y3QgVmFsdWUgeworICAgICAgICBE
aXNwbGF5TGlzdEl0ZW0gaXRlbTsKKyAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBleHRlbnQ7
CisgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OworICAgIH07CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IEN1cnJlbnRJdGVtUmVzdWx0IHsKKyAgICAgICAgRGlzcGxheUxpc3RJ
dGVtIGRpc3BsYXlMaXN0SXRlbTsKKyAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVmZmVyOwor
ICAgICAgICBib29sIGlzRHJhd2luZ0l0ZW07CisgICAgfTsKKyAgICB0ZW1wbGF0ZSA8c3RkOjpz
aXplX3QgSSA9IDA+CisgICAgT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1bHQ+IGN1cnJlbnRJdGVt
KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVDdXJzb3JUb1N0YXJ0T2ZD
dXJyZW50QnVmZmVyKCk7CisgICAgdWludDhfdCogZW5kT2ZDdXJyZW50QnVmZmVyKCkgY29uc3Q7
CisKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKKyNlbmRpZgor
CisgICAgSXRlbUJ1ZmZlciogaXRlbUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxp
c3QuaXRlbUJ1ZmZlcklmRXhpc3RzKCk7IH0KKworICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rp
c3BsYXlMaXN0OworICAgIHN0cnVjdCBDdXJyZW50SXRlbUluZm8geworICAgICAgICBzdGQ6OnNp
emVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3aW5nSXRlbTsKKyAgICB9Owor
ICAgIG11dGFibGUgT3B0aW9uYWw8Q3VycmVudEl0ZW1JbmZvPiBtX2N1cnJlbnRJdGVtSW5mbzsK
KyAgICB1aW50OF90KiBtX2N1cnNvciB7IG51bGxwdHIgfTsKKyAgICBzaXplX3QgbV9yZWFkT25s
eUJ1ZmZlckluZGV4IHsgMCB9OworICAgIHNpemVfdCBtX2RyYXdpbmdJdGVtSW5kZXggeyAwIH07
Cit9OworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5k
ZXggODM3ZjBlOTBlMjdmNTk4YzBjYjdlOTEzNjQzZTA1YjhhMDMwMDY5My4uODdmNjY2N2U4YmI4
NjgxOTdhNDI5ZGQ3OThlZjE3ZjkwN2MyMWU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcApAQCAtMTIxLDI2ICsxMjEsMTcgQEAgdm9pZCBSZWNvcmRlcjo6YXBw
ZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFu
Z2VzLAogICAgICAgICBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigqY2hhbmdlcy5tX3N0
YXRlLmZpbGxHcmFkaWVudCwgY2hhbmdlcy5tX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUg
dHlwZSkKLXsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFw
cGVuZEl0ZW1PZlR5cGUodHlwZSk7Ci0KLSAgICBpZiAoaXNEcmF3aW5nSXRlbSh0eXBlKQotI2lm
IFVTRShDRykKLSAgICAgICAgfHwgdHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJu
IHx8IHR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybgotI2VuZGlmCi0gICAgKSB7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZXMgPSBjdXJy
ZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlc0Zyb21MYXN0U3RhdGUgPSBzdGF0ZUNoYW5nZXMuY2hhbmdl
c0Zyb21TdGF0ZShjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKLSAgICAgICAgaWYg
KGNoYW5nZXNGcm9tTGFzdFN0YXRlKSB7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlz
cGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlc0Zyb21M
YXN0U3RhdGUpKTsKLSAgICAgICAgICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZUNoYW5n
ZXMsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKTsKLSAgICAgICAgICAgIHN0YXRlQ2hhbmdlcy5tX2No
YW5nZUZsYWdzID0geyB9OwotICAgICAgICAgICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdT
dGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOwotICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRT
dGF0ZSgpLndhc1VzZWRGb3JEcmF3aW5nID0gdHJ1ZTsKK3ZvaWQgUmVjb3JkZXI6OndpbGxBcHBl
bmREcmF3aW5nSXRlbSgpCit7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRl
Q2hhbmdlcyA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFu
Z2VzLmNoYW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7Cisg
ICAgaWYgKGNoYW5nZXNGcm9tTGFzdFN0YXRlKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShE
aXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VzRnJv
bUxhc3RTdGF0ZSkpOworICAgICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGVDaGFuZ2Vz
LCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7CisgICAgICAgIHN0YXRlQ2hhbmdlcy5tX2NoYW5nZUZs
YWdzID0geyB9OworICAgICAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3Rh
dGVDaGFuZ2VzLm1fc3RhdGU7CiAgICAgfQorICAgIGN1cnJlbnRTdGF0ZSgpLndhc1VzZWRGb3JE
cmF3aW5nID0gdHJ1ZTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4
IDBjZWM0OGQ3MTYzYTYxYzkxODgwZTI2ZjUxNmRhYTJhMDcwOTNjYWEuLmYyMGU2MzY5YTBkMmQx
OTQ0MGNiMzhiY2MwMDdlMWRjYjI3OGUyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KICAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykK
ICAgICB7Ci0gICAgICAgIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKTsKKyAgICAg
ICAgd2lsbEFwcGVuZEl0ZW1PZlR5cGU8VD4oKTsKICAgICAgICAgbV9kaXNwbGF5TGlzdC5hcHBl
bmQ8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKIAogICAgICAgICBpZiBjb25zdGV4
cHIgKFQ6OmlzRHJhd2luZ0l0ZW0pIHsKQEAgLTE3Miw3ICsxNzIsMjEgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEFwcGVuZEl0ZW1P
ZlR5cGUoSXRlbVR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgd2ls
bEFwcGVuZEl0ZW1PZlR5cGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZGVsZWdhdGUpCisgICAg
ICAgICAgICBtX2RlbGVnYXRlLT53aWxsQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlwZSk7CisK
KyAgICAgICAgaWYgKFQ6OmlzRHJhd2luZ0l0ZW0KKyNpZiBVU0UoQ0cpCisgICAgICAgICAgICB8
fCBUOjppdGVtVHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuIHx8IFQ6Oml0ZW1U
eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4KKyNlbmRpZgorICAgICAgICApCisg
ICAgICAgICAgICB3aWxsQXBwZW5kRHJhd2luZ0l0ZW0oKTsKKyAgICB9CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdpbGxBcHBlbmREcmF3aW5nSXRlbSgpOwogCiAgICAgdm9pZCBjYWNoZU5h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcAppbmRleCBkMTczN2EyNzljMzk3ZTA5MDkzZDEzODQzM2RiMzg0N2Q2ZjQ3NDky
Li5lMzJlMDYxOTc3ZWM2YjgwOTVmM2U2NTk2YTY4MjMxNmViZGRhYTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJE
aXNwbGF5TGlzdFJlcGxheWVyLmgiCiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisj
aW5jbHVkZSAiRGlzcGxheUxpc3RJdGVyYXRvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CkBAIC01Miw5ICs1Myw4IEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQo
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMs
IEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBjb25zdCBUJiBpbWFn
ZUJ1ZmZlckl0ZW0pCiB7Ci0gICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4o
KTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1
ZmZlcklkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZl
cnMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFw
cGx5KGNvbnRleHQsICppbWFnZUJ1ZmZlcik7CkBAIC02NCw5ICs2NCw4IEBAIGlubGluZSBzdGF0
aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVy
SXRlbShHcmFwaGljCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUlt
YWdlcywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIGNvbnN0IFQm
IG5hdGl2ZUltYWdlSXRlbSkKIHsKLSAgICBhdXRvJiBuYXRpdmVJbWFnZUl0ZW0gPSBpdGVtLmdl
dDxUPigpOwogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gbmF0aXZlSW1hZ2VJdGVtLmlt
YWdlSWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBpbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQo
cmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29u
dGV4dCwgKmltYWdlKTsKQEAgLTc1LDEwICs3NCw4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGlj
CiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAotaW5saW5lIHN0YXRpYyBPcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFn
ZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBjb25zdCBTZXRTdGF0
ZSYgc2V0U3RhdGVJdGVtKQogewotICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNl
dFN0YXRlPigpOwotCiAgICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSA9IG51bGxw
dHI7CiAgICAgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwogCkBAIC05
OSw5ICs5Niw4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvCiB9CiAKIHRlbXBsYXRlPGNsYXNz
IFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJp
bmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywg
Y29uc3QgVCYgZm9udEl0ZW0pCiB7Ci0gICAgYXV0byYgZm9udEl0ZW0gPSBpdGVtLmdldDxUPigp
OwogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gZm9udEl0ZW0uZm9udElkZW50aWZpZXIo
KTsKICAgICBpZiAoYXV0byogZm9udCA9IGZvbnRzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7
CiAgICAgICAgIGZvbnRJdGVtLmFwcGx5KGNvbnRleHQsICpmb250KTsKQEAgLTExMCw2OCArMTA2
LDY4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRp
ZmllcjsKIH0KIAotc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1I
YW5kbGUgaXRlbSkKK2V4dGVybiBHcmFwaGljc0NvbnRleHQmIHN5bnRoZXNpemVMVmFsdWVHcmFw
aGljc0NvbnRleHQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBzdGF0aWMg
aW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0FwcGx5ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0FwcGx5PFQsIHN0ZDo6dm9pZF90
PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmFwcGx5KHN5bnRoZXNpemVMVmFsdWVHcmFwaGlj
c0NvbnRleHQpKT4+ID0gdHJ1ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBp
bmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhSGFzQXBwbHk8SXRlbT4sIHZvaWQ+IGFw
cGx5KGNvbnN0IEl0ZW0mLCBHcmFwaGljc0NvbnRleHQmKQoreworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0Fw
cGx5PEl0ZW0+LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICByZXR1cm4gaXRlbS5hcHBseShncmFwaGljc0NvbnRl
eHQpOworfQorCithdXRvIFJlcGxheWVyOjphcHBseUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVt
JiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQKIHsKICAgICBpZiAobV9kZWxlZ2F0ZSAmJiBtX2Rl
bGVnYXRlLT5hcHBseShpdGVtLCBjb250ZXh0KCkpKQogICAgICAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogCi0gICAgaWYgKGl0ZW0uaXM8RHJhd0ltYWdlQnVmZmVy
PigpKSB7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgRHJh
d0ltYWdlQnVmZmVyJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAoYXV0
byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08
RHJhd0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwg
V1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1
cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVt
LmlzPENsaXBUb0ltYWdlQnVmZmVyPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IENsaXBUb0ltYWdl
QnVmZmVyJiBpdGVtKSAtPiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IHsKICAgICAgICAgaWYgKGF1dG8g
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENs
aXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwg
V1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1
cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVt
LmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgeworICAgIH0sIFsmXShjb25zdCBEcmF3TmF0aXZlSW1h
Z2UmIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZl
SW1hZ2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd0ds
eXBocz4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0p
KQorICAgIH0sIFsmXShjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0
IHsKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFw
cGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2Vz
LCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdD
YWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9
OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0K
LQotICAgIGlmIChpdGVtLmlzPERyYXdQYXR0ZXJuPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3
UGF0dGVybj4oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgfSwgWyZdKGNv
bnN0IERyYXdHbHlwaHMmIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGlmIChh
dXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdH
bHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBT
dG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxTZXRTdGF0ZT4oKSkg
eworICAgIH0sIFsmXShjb25zdCBTZXRTdGF0ZSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsK
ICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAg
ICAgICBpZiAobV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVw
bGF5UmVhc29uOjpJbnZhbGlkSXRlbSwgV1RGOjpudWxsb3B0IH07Ci0gICAgICAgIGF1dG8mIGNs
aXBJdGVtID0gaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7CiAgICAgICAg
IG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9j
b250ZXh0KTsKICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBXVEY6Om51bGxvcHQgfTsKICAg
ICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAg
ICBpZiAoaXRlbS5pczxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKKyAgICB9LCBbJl0o
Y29uc3QgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBjbGlwSXRlbSkgLT4gQXBwbHlJdGVtUmVz
dWx0IHsKICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
biB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtLCBXVEY6Om51bGxvcHQgfTsKLSAgICAg
ICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7
CiAgICAgICAgIG1fY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9tYXNrSW1hZ2VCdWZmZXIs
IGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0g
ICAgfQotCi0gICAgaXRlbS5hcHBseShjb250ZXh0KCkpOwotICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIC0+IEFw
cGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGFwcGx5KGl0ZW0sIGNvbnRleHQoKSk7CisgICAgICAg
IHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfSk7CisgICAgcmV0
dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFJlcGxheVJlc3VsdCBSZXBsYXll
cjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlM
aXN0KQpAQCAtMTg3LDI4ICsxODMsMzAgQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXko
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKICAgICBz
aXplX3QgaSA9IDA7CiAjZW5kaWYKICAgICBSZXBsYXlSZXN1bHQgcmVzdWx0OwotICAgIGZvciAo
YXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6IG1fZGlzcGxheUxpc3QpIHsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IG1fZGlzcGxheUxpc3QpIHsK
KyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFz
b25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50
LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworCiAgICAgICAg
IGlmICghaW5pdGlhbENsaXAuaXNaZXJvKCkgJiYgZXh0ZW50ICYmICFleHRlbnQtPmludGVyc2Vj
dHMoaW5pdGlhbENsaXApKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxp
c3RzLCBzdHJlYW0gPDwgInNraXBwaW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKICAgICAg
ICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWl0ZW0pIHsKLSAg
ICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246Oklu
dmFsaWRJdGVtOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBMT0df
V0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8
ICIgIiA8PCBpdGVtKTsKIAotICAgICAgICBpZiAoaXRlbS0+aXM8TWV0YUNvbW1hbmRDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKSB7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbSkpIHsK
ICAgICAgICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVy
OwogICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gU3RvcFJlcGxheVJlYXNv
bjo6Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjsKLSAgICAgICAgICAgIHJlc3VsdC5uZXh0
RGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IGl0ZW0tPmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgcmVzdWx0Lm5l
eHREZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gV1RGOjpnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKS5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcl0gPSBhcHBseUl0ZW0oKml0ZW0pOyByZWFzb25G
b3JTdG9wcGluZykgeworICAgICAgICBpZiAoYXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJdID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JT
dG9wcGluZykgewogICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNv
bkZvclN0b3BwaW5nOwogICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yMTcsOSArMjE1LDkgQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVy
OjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxp
c3QKICAgICAgICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7
CiAKICAgICAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpIHsKLSAgICAgICAgICAg
IHJlcGxheUxpc3QtPmFwcGVuZCgqaXRlbSk7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+aXNEcmF3
aW5nSXRlbSgpKQotICAgICAgICAgICAgICAgIHJlcGxheUxpc3QtPmFkZERyYXdpbmdJdGVtRXh0
ZW50KFdURk1vdmUoZXh0ZW50KSk7CisgICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoaXRl
bSk7CisgICAgICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKKyAgICAgICAgICAgICAg
ICByZXBsYXlMaXN0LT5hZGREcmF3aW5nSXRlbUV4dGVudChPcHRpb25hbDxGbG9hdFJlY3Q+KGV4
dGVudCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaAppbmRleCAxODFhMTJiMGU1MThlOGRjMjFkM2I3NDlmMjcxMDFkMmEzZTk2ZjM5Li45
ZTAzOTI1YzZkZjVmZGQyNDU0Y2VhYTczMTgxOGYzYzlkYmMyNmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsMTIgKzY2LDEzIEBAIHB1YmxpYzoKICAgICBjbGFz
cyBEZWxlZ2F0ZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsg
fQotICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoSXRlbUhhbmRsZSwgR3JhcGhpY3NDb250ZXh0
JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
fTsKICAgICAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7
Ci0gICAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CisgICAgdXNp
bmcgQXBwbHlJdGVtUmVzdWx0ID0gc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+
LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PjsKKyAgICBBcHBseUl0ZW1S
ZXN1bHQgYXBwbHlJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0JiBtX2NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX21h
c2tJbWFnZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MzgzMjNjMGUwNjdiMmZkMmZkOTg3NGEzNzhhNTIwMWE0NTJlNWFmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5oIgorCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RJdGVyYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxh
eUxpc3QgeworCitjbGFzcyBXcml0aW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJXcml0aW5n
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3ByaXZhdGU6CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHN0ZDo6c2l6ZV90IHJlcXVpcmVkU2l6ZUZv
ckl0ZW1IZWxwZXIoY29uc3QgVCYpCisgICAgeworICAgICAgICByZXR1cm4gc2l6ZW9mKFQpOwor
ICAgIH0KKworICAgIE9wdGlvbmFsPHN0ZDo6c2l6ZV90PiByZXF1aXJlZFNpemVGb3JJdGVtKGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgICAgIHJldHVy
biByZXF1aXJlZFNpemVGb3JJdGVtSGVscGVyKGl0ZW0pOworICAgICAgICB9LCBpdGVtKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGVJ
dGVtSW5saW5lSGVscGVyKGNvbnN0IFQmIGl0ZW0sIHZvaWQqIGxvY2F0aW9uKQorICAgIHsKKyAg
ICAgICAgbmV3IChsb2NhdGlvbikgVChpdGVtKTsKKyAgICB9CisKKyAgICB2b2lkIGVuY29kZUl0
ZW1JbmxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtLCB2b2lkKiBsb2NhdGlvbikgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFsmXShjb25zdCBhdXRv
JiBpdGVtKSB7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlSXRlbUlubGluZUhlbHBlcihpdGVt
LCBsb2NhdGlvbik7CisgICAgICAgIH0sIGl0ZW0pOworICAgIH0KK307CisKK2NsYXNzIFJlYWRp
bmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSA9
IDA+CisgICAgc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gZGVjb2RlSXRlbUhlbHBl
cihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkK
KyAgICB7CisgICAgICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBi
ZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgICAgIC8v
IERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUgV2ViS2l0IHN0eWxlIHJ1bGUgYWJv
dXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsiIGluc3RlYWQgb2YgImlmICgpIHsg
cmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgICAgIC8vIG9yIEIpIGNhdXNlIHRoZSBj
b21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBnZW5lcmF0aW5nIHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBpZiBjb25zdGV4cHIgKEkg
PCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICAg
ICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90
PEksIERpc3BsYXlMaXN0SXRlbT47CisgICAgICAgICAgICBpZiAodHlwZSAhPSBEaXNwbGF5TGlz
dEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlSXRlbUhl
bHBlcjxJICsgMT4oZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5
cGUpKTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5TGlzdEl0ZW0oKnJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgRGlzcGxheUxpc3RJdGVtVHlwZSo+KGRhdGEpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgT3B0aW9uYWw8RGlzcGxheUxp
c3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBkZWNvZGVJdGVtSGVscGVyKGRhdGEsIGRhdGFMZW5ndGgsIHR5cGUpOworICAgIH0K
K307CisKK2NsYXNzIERlc3Ryb3lpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHJpdmF0ZToKKyAgICB0ZW1w
bGF0ZSA8c3RkOjpzaXplX3QgSSA9IDA+CisgICAgc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0
SXRlbT4gZGVjb2RlSXRlbUhlbHBlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgSXRlbVR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIC8vIFdlIGNhbid0IHVzZSBlYXJs
eS1yZXR1cm4gc3R5bGUgaGVyZSBiZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUg
Y29tcGlsZXIuCisgICAgICAgIC8vIERvaW5nIHNvIHdvdWxkIGVpdGhlciBBKSBicmVhayB0aGUg
V2ViS2l0IHN0eWxlIHJ1bGUgYWJvdXQgZG9pbmcgImlmICgpIHsgcmV0dXJuOyB9IHJldHVybjsi
IGluc3RlYWQgb2YgImlmICgpIHsgcmV0dXJuOyB9IGVsc2UgeyByZXR1cm47IH0iCisgICAgICAg
IC8vIG9yIEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiBn
ZW5lcmF0aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLgorICAg
ICAgICBpZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+
Ojp2YWx1ZSkgeworICAgICAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6
dmFyaWFudF9hbHRlcm5hdGl2ZV90PEksIERpc3BsYXlMaXN0SXRlbT47CisgICAgICAgICAgICBp
ZiAodHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZGVjb2RlSXRlbUhlbHBlcjxJICsgMT4oZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7
CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gc2l6
ZW9mKERpc3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAgICAgICAgIGF1dG8mIG9iamVjdCA9ICpy
ZWludGVycHJldF9jYXN0PGNvbnN0IERpc3BsYXlMaXN0SXRlbVR5cGUqPihkYXRhKTsKKyAgICAg
ICAgICAgIG9iamVjdC5+RGlzcGxheUxpc3RJdGVtVHlwZSgpOworICAgICAgICAgICAgcmV0dXJu
IERpc3BsYXlMaXN0SXRlbShUcmFuc2xhdGUoMCwgMCkpOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0
ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRlY29kZUl0ZW1IZWxwZXIoZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAgfQorfTsK
KworSW5NZW1vcnlEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCisgICAgOiBtX3dy
aXRpbmdDbGllbnQoV1RGOjptYWtlVW5pcXVlPFdyaXRpbmdDbGllbnQ+KCkpCisgICAgLCBtX3Jl
YWRpbmdDbGllbnQoV1RGOjptYWtlVW5pcXVlPFJlYWRpbmdDbGllbnQ+KCkpCit7CisgICAgc2V0
SXRlbUJ1ZmZlckNsaWVudChtX3dyaXRpbmdDbGllbnQuZ2V0KCkpOworICAgIHNldEl0ZW1CdWZm
ZXJDbGllbnQobV9yZWFkaW5nQ2xpZW50LmdldCgpKTsKK30KKworSW5NZW1vcnlEaXNwbGF5TGlz
dDo6fkluTWVtb3J5RGlzcGxheUxpc3QoKQoreworICAgIERlc3Ryb3lpbmdDbGllbnQgZGVzdHJv
eWluZ0NsaWVudDsKKyAgICBzZXRJdGVtQnVmZmVyQ2xpZW50KCZkZXN0cm95aW5nQ2xpZW50KTsK
KyAgICBhdXRvIGVuZCA9IHRoaXMtPmVuZCgpOworICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHRo
aXMtPmJlZ2luKCk7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikKKyAgICAgICAgaXRlcmF0
b3Iub3BlcmF0b3IqKCk7Cit9CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5
TGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBjZDlhMDUxNDdmMGYwMGVlYzdiNjc4YTA1NzQ3YjBiYTMzZDhi
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2NsYXNzIEluTWVtb3J5
RGlzcGxheUxpc3QgOiBwdWJsaWMgRGlzcGxheUxpc3QgeworcHVibGljOgorICAgIFdFQkNPUkVf
RVhQT1JUIEluTWVtb3J5RGlzcGxheUxpc3QoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5Jbk1l
bW9yeURpc3BsYXlMaXN0KCk7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEl0ZW1C
dWZmZXJXcml0aW5nQ2xpZW50PiBtX3dyaXRpbmdDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50PiBtX3JlYWRpbmdDbGllbnQ7Cit9OworCit9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hlLmgKaW5k
ZXggMmIyZjIyM2ExMzUxNjE2MmIxMGQ3MTU0ZGNlYTJhNjg1NjliYjNmYS4uMWEwN2UyMzQ5MTIx
MjVhMGM1YzFjM2YyYzEzNzE0MTBhMzhlNjhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dseXBoRGlzcGxheUxpc3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HbHlwaERpc3BsYXlMaXN0Q2FjaGUuaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKKyNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICB1c2luZyBH
bHlwaFJ1bk1hcCA9IEhhc2hNYXA8Y29uc3QgTGF5b3V0UnVuKiwgc3RkOjp1bmlxdWVfcHRyPERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4+OworICAgIHVzaW5nIEdseXBoUnVuTWFwID0gSGFzaE1h
cDxjb25zdCBMYXlvdXRSdW4qLCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5
RGlzcGxheUxpc3Q+PjsKICAgICBHbHlwaFJ1bk1hcCBtX2dseXBoUnVuTWFwOwogfTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmgKaW5kZXggNmNhMWU2MGRhYWJlNmUwNTgxYzI0YjYxYWQwNGI5OTY4NTM3YWNjNi4u
NjVlMGVlMTJhNjdkOTI3NmI5ODFmYzEwNDM3MWZmYWYwMWQ5ZjM5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQs
MzUgKzc0LDI2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wgYXBwbHko
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byYgZ2V0
SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRJbWFnZURh
dGE+KCk7Ci0gICAgICAgICAgICBVTlVTRURfVkFSSUFCTEUoZ2V0SW1hZ2VEYXRhSXRlbSk7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDY0OSBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjpt
YWtlVmlzaXRvcihbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YSYp
IHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0
ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAg
ICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpQdXRJbWFnZURhdGE+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UHV0SW1hZ2VEYXRhJiBwdXRJbWFnZURhdGFJdGVtKSB7CiAgICAgICAgICAgICBwdXRJ
bWFnZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVt
LmltYWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRl
bS5kZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0JiBmbHVzaENvbnRleHQpIHsKICAgICAg
ICAgICAgIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKTsKLSAgICAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aENvbnRleHQ+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
Zmx1c2hDb250ZXh0LmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5kaWRGbHVzaChpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChp
dGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpLmlkZW50
aWZpZXIoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXImIG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcikgewor
ICAgICAgICAgICAgYXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9IG1ldGFDb21tYW5kQ2hhbmdl
SXRlbUJ1ZmZlci5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIsIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1l
ZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0p
IHsKKyAgICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRp
YUl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gV1RGOjp2
aXNpdCh2aXNpdG9yLCBpdGVtKTsKICAgICB9CiAKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
ZWUxNDJmMmY1OWZkYjZiNGNhYjU4OTM2NzAzZWRjMjZmY2YxOWI5Yi4uMjEzNDQxZGRjNWRlNzUy
NDlkNzFlN2YwNTk2YzRjMWM1NGE5ZTBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQs
MjAgKzExNCwxOCBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjph
cHBseU1lZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVt
KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlm
ICghaXRlbS5pczxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNwbGF5TGlz
dDo6UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxh
eWVyKG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpOwotICAgIGlmICghcGxheWVyKQorICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IERpc3BsYXlMaXN0OjpQYWludEZy
YW1lRm9yTWVkaWEmIG1lZGlhSXRlbSkgeworICAgICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCku
bWVkaWFQbGF5ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBjb250ZXh0
LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBs
YXllciwgbWVkaWFJdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIH0s
IFtdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOwor
ICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTgyLDcgKzE4MCw3IEBAIERpc3BsYXlMaXN0OjpSZXBs
YXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0
OjpEaXNwCiAgICAgZWxzZQogICAgICAgICByZXBsYXllckRlbGVnYXRlID0gc3RhdGljX2Nhc3Q8
VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyKj4oJmRlc3RpbmF0aW9uKTsKIAotICAgIHJl
dHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgeworICAgIHJldHVybiBEaXNwbGF5
TGlzdDo6UmVwbGF5ZXIgewogICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCiAgICAgICAg
IGRpc3BsYXlMaXN0LAogICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVy
cygpLApAQCAtMzExLDEyICszMDksMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKICAgICB9
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1Jl
YWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyKQogewogICAgIG1fcGVuZGluZ1dha2V1cElu
Zm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUo
KSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNp
ZmllZCB9LCBXVEY6Om51bGxvcHQgfX07CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRS
ZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkltYWdl
RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSW50
UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxJbWFnZURhdGE+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0zMjYsNyArMzI0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJ
bWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGltYWdlRGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9u
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzM2LDcgKzMzNCw3IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh1
cmxTdHJpbmcpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9y
SW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0
YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAg
LTM0Niw3ICszNDQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJ
bWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpbwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM1Niw3ICszNTQsNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0YSkpOwog
fQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvcklt
YWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBG
b3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJl
c2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzY1LDE4ICszNjMsMTggQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW5kZXJpbmcKICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBpbWFnZSA9
IGltYWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6
RG9udENvcHlCYWNraW5nU3RvcmUpOworICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXIt
PmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5OjpEb250Q29weUJhY2tpbmdTdG9yZSk7
CiAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8g
YmFja2VuZFNpemUgPSBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsKLSAgICAgICAgYXV0byBy
ZXN1bHRTaXplID0gcHJlc2VydmVSZXNvbHV0aW9uID09IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1
dGlvbjo6WWVzID8gYmFja2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKKyAg
ICAgICAgYXV0byByZXN1bHRTaXplID0gcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzID8gYmFja2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsK
ICAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShy
ZXN1bHRTaXplLCB7IH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKICAgICAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBj
b250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7
IH0sIHJlc3VsdFNpemUgfSwgRmxvYXRSZWN0IHsgeyB9LCBiYWNrZW5kU2l6ZSB9LCB7IFdlYkNv
cmU6OkNvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOworICAgICAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoKmltYWdlLCByZXN1bHRTaXplLCBGbG9hdFJlY3QgeyB7IH0sIHJlc3VsdFNpemUg
fSwgRmxvYXRSZWN0IHsgeyB9LCBiYWNrZW5kU2l6ZSB9LCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpD
b3B5IH0pOwogICAgICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogICAgIH0oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZSkpOwpAQCAtNDM0LDEwNiArNDMy
LDMzIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlz
cGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQp
LT5hcmd1bWVudHMpOwogfQogCi1PcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FS
Tl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUs
IHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEkgPSAwPgor
c3RhdGljIGlubGluZSBPcHRpb25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBkZWNv
ZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZSB0eXBlKQogewotICAgIC8qIFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlzSW5saW5l
SXRlbSgpIGluIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwLCAoMikgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6ZW5jb2RlSXRlbSgpLAotICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0
ZXhwciBib29sIGlzSW5saW5lSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNz
ZXMuCi0gICAgICogU2VlIHRoZSBjb21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVt
cy5oIGZvciB3aHkuICovCi0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdGb2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3Rz
PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6RHJhd0dseXBocz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6
RHJhd1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0YSwgbGVuZ3Ro
LCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQ
YXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUGF0
aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3Jl
YXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVM
b2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxs
UmVjdFdpdGhHcmFkaWVudD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6U2V0TGluZURhc2g+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0U3RhdGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxl
TG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTdHJva2VQYXRoPihk
YXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpSb3RhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNhdmU6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGlu
ZUZpbGxDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmls
bEdyYWRpZW50OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJv
a2VDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpUcmFuc2xhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkdldEltYWdl
RGF0YTogewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQorICAgIC8vIFdlIGNhbid0IHVzZSBlYXJseS1yZXR1cm4gc3R5bGUgaGVyZSBiZWNhdXNl
IG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0aGUgY29tcGlsZXIuCisgICAgLy8gRG9pbmcgc28g
d291bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBkb2luZyAi
aWYgKCkgeyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1cm47IH0g
ZWxzZSB7IHJldHVybjsgfSIKKyAgICAvLyBvciBCKSBjYXVzZSB0aGUgY29tcGlsZXIgdG8gaW5m
aW5pdGVseSByZWN1cnNlIHdoZW4gZ2VuZXJhdGluZyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMg
b2YgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiBjb25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6
ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjo6dmFsdWUpIHsKKyAgICAgICAgdXNpbmcg
RGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEksIERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIGlmICh0eXBlICE9IERpc3BsYXlM
aXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZUl0ZW08SSAr
IDE+KGRhdGEsIGxlbmd0aCwgdHlwZSk7CisKKyAgICAgICAgQVNTRVJUKCFEaXNwbGF5TGlzdEl0
ZW1UeXBlOjppc0lubGluZUl0ZW0pOworICAgICAgICBpZiBjb25zdGV4cHIgKCFEaXNwbGF5TGlz
dEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9
IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2luZ2xlT2JqZWN0PERpc3BsYXlMaXN0SXRlbVR5cGU+KGRh
dGEsIGxlbmd0aCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQudmFs
dWUoKSkgfTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQog
CitPcHRpb25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkKK3sKKyAgICByZXR1
cm4gV2ViS2l0OjpkZWNvZGVJdGVtKGRhdGEsIGxlbmd0aCwgdHlwZSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKaW5kZXggMzk0M2Q1MjFkMzY5M2ZiZDJjZWYzNmI0N2QzNDk2YjFjMmRmMzY1OS4u
YzljYzdjMDg0ZmFkY2RiZjNiYjRhYzI5Y2E5NTlkOGYxYTllMzczZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUmIHJl
bW90ZVJlc291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGU7IH0KIAog
ICAgIC8vIFJlbmRlcmluZyBvcGVyYXRpb25zLgotICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYp
OworICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVz
c2FnZXMgdG8gYmUgc2VudC4KICAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CkBAIC04NiwxOSArODYsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLCBJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgb3ZlcnJpZGU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2Rl
QW5kQ3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhh
bmRsZUxvY2F0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IElQQzo6RGVjb2Rl
cjo6ZGVjb2RlU2luZ2xlT2JqZWN0PFQ+KGRhdGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBXZWJLaXQyIHNob3VsZCBub3QgbmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDgg
Ynl0ZXMgYXQgdGhlIGhhbmRsZSBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSB0eXBlLgotICAgICAgICAg
ICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0
aGluIGRpc3BsYXkgbGlzdCBjb2RlIGluIFdlYkNvcmUuCi0gICAgICAgICAgICBuZXcgKGhhbmRs
ZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7Ci0gICAgICAg
ICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQg
c3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6
OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxP
ZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDViYmYyNTYzMDYyOTBlNDlhYzhkYjMx
YjVkMDFhYzk2YjU2YWFjNDIuLjU1ZjgxZjQ3ZDEwMTBhNDUxMmNkMTJmODM2ZjU1NGM1MDU1YTFk
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yODAsNyArMjgwLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndpbGxB
cHBlbmRJdGVtKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICB2
b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJI
YW5kbGUmIGhhbmRsZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaWRDaGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIpIG92ZXJyaWRlCisgICAg
dm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SGFuZGxlJiBoYW5kbGUsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlkQ2hhbmdlSXRlbUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVmZmVyKSBvdmVycmlkZSBmaW5h
bAogICAgIHsKICAgICAgICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkpCiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+ZGlkQXBwZW5k
RGF0YShoYW5kbGUsIG51bWJlck9mQnl0ZXMsIGRpZENoYW5nZUl0ZW1CdWZmZXIsIG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KCkuY2FjaGVGb250KGZvbnQpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5
KSBvdmVycmlkZQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNy
ZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBvdmVycmlkZSBmaW5hbAogICAgIHsKICAg
ICAgICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAg
ICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmNyZWF0ZUl0ZW1CdWZm
ZXIoY2FwYWNpdHksIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTMwMSwxMDMg
KzMwMSwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUhhbmRsZSBpdGVtKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgLyog
VGhpcyBuZWVkcyB0byBtYXRjaCAoMSkgaXNJbmxpbmVJdGVtKCkgaW4gRGlzcGxheUxpc3RJdGVt
VHlwZS5jcHAsICgyKSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKCksCi0gICAg
ICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMuCi0gICAgICAgICAqIFNlZSB0
aGUgY29tbWVudCBhdCB0aGUgdG9wIG9mIERpc3BsYXlMaXN0SXRlbXMuaCBmb3Igd2h5LiAqLwot
Ci0gICAgICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgICAgICByZXR1cm4g
SVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNs
aXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRo
PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQ
YXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkNsaXBQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5j
b2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNS
aW5nUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRo
PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdG
b2N1c1JpbmdSZWN0czoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNp
bmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPihpdGVt
LmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPigpKTsKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAg
ICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3R2x5cGhzPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjpl
bmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+
KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PigpKTsKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgotICAg
ICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVu
Y29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0
PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoOgot
ICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpGaWxsUGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZpbGxQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6
ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xv
cj4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yPigpKTsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0
aEdyYWRpZW50OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xl
T2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oaXRlbS5n
ZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2Jq
ZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oaXRlbS5n
ZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpKTsKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVj
dDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihpdGVtLmdldDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgICAgIHJldHVybiBJ
UEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0
SW1hZ2VEYXRhPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigp
KTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVE
YXNoOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlNldExpbmVEYXNoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rl
cjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oaXRl
bS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlPigpKTsKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgICAgICBy
ZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlN0cm9rZVBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJva2VQYXRo
PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5
RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENHKQotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5UcmFuc3Bh
cmVuY3lMYXllcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsZWFyUmVjdDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsZWFyU2hhZG93OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6Q2xpcDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXBPdXQ6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlw
VG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd0VsbGlwc2U6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVf
UEFUSF9EQVRBKQotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRD
aGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTY2FsZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlNldENUTToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNl
dElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlw
c2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgICAg
IGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lSGVscGVyKGNvbnN0IFQmIGl0ZW0pCisgICAgewor
ICAgICAgICBpZiBjb25zdGV4cHIgKCFUOjppc0lubGluZUl0ZW0pCisgICAgICAgICAgICByZXR1
cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8VD4oaXRlbSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxp
bmUoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSkgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8m
IGRpc3BsYXlMaXN0SXRlbSkgLT4gUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4geworICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZUl0ZW1PdXRPZkxpbmVIZWxwZXIoZGlzcGxheUxpc3RJdGVt
KTsKKyAgICAgICAgfSwgaXRlbSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlk
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIz
YTQ2YWZlZjMxZTUyNDYwOWUwNDZiOGYwMTU5NjkzYjg5MjIwZmMuLjMwYzgwYzRmODQwYTcwZjMw
Zjk3YWE5ZTQzNGU3NDU3MmU5MGQzNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMy0yMiAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWlncmF0ZSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgdG8gdXNlIGEgVmFyaWFudCBpbnN0ZWFkIG9m
IEl0ZW1IYW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzU2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IE5vdyB0aGF0IGEgSXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQgYW5kIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGFyZQorICAgICAgICAgICAgICAg
IG5lY2Vzc2FyeSBmb3IgdXNpbmcgbm9uLWlubGluZSBkaXNwbGF5IGxpc3QgaXRlbXMsIHNwZWNp
ZnkgdGhlbSBoZXJlIGluIHRoZSB0ZXN0LgorICAgICAgICAgICAgICAgIEFsc28sIG1pZ3JhdGUg
ZnJvbSBJdGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbSBsaW5lLWJ5LWxpbmUuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6
IE1pZ3JhdGUgZnJvbSBJdGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbSBsaW5lLWJ5LWxpbmUu
CisKIDIwMjEtMDMtMjIgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFt3ZWJraXRzY21weV0gQmFzZSBHaXRIdWIgbW9jayBsaW5rcyBvbiBwcm92aWRlZCBy
ZW1vdGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNw
bGF5TGlzdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNw
bGF5TGlzdFRlc3RzLmNwcAppbmRleCAxY2UxNDYyOGNlZDVlMDA2NDI1ZDJlYzI5ZjFkZTBlYjcx
ZmUxMzc0Li43OTE1NGQwZWFjNDkzNmQ1MTA5MTE1MWM3YzgzNTU1Mjg1YjE2ZDlhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI3LDcgKzI3LDkgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Jbk1lbW9yeURpc3BsYXlMaXN0Lmg+CiAKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTgsNyArNjAsMTEgQEAg
c3RhdGljIFBhdGggY3JlYXRlQ29tcGxleFBhdGgoKQogCiBURVNUKERpc3BsYXlMaXN0VGVzdHMs
IEFwcGVuZEl0ZW1zKQogewotICAgIERpc3BsYXlMaXN0IGxpc3Q7CisgICAgVmVjdG9yPEZpbGxQ
YXRoPiBmaWxsUGF0aFN0b3JhZ2U7CisgICAgVmVjdG9yPEZpbGxSZWN0V2l0aEdyYWRpZW50PiBm
aWxsUmVjdFdpdGhHcmFkaWVudFN0b3JhZ2U7CisgICAgVmVjdG9yPEZpbGxSZWN0V2l0aENvbG9y
PiBmaWxsUmVjdFdpdGhDb2xvclN0b3JhZ2U7CisKKyAgICBJbk1lbW9yeURpc3BsYXlMaXN0IGxp
c3Q7CiAKICAgICBFWFBFQ1RfVFJVRShsaXN0LmlzRW1wdHkoKSk7CiAKQEAgLTc4LDU2ICs4NCwz
NSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQogICAgIEVYUEVDVF9GQUxT
RShsaXN0LmlzRW1wdHkoKSk7CiAKICAgICBib29sIG9ic2VydmVkVW5leHBlY3RlZEl0ZW0gPSBm
YWxzZTsKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IGxpc3QpIHsKLSAg
ICAgICAgc3dpdGNoIChoYW5kbGUtPnR5cGUoKSkgewotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUtPmlz
RHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPFNldFN0
cm9rZVRoaWNrbmVzcz4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8
U2V0U3Ryb2tlVGhpY2tuZXNzPigpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJ
dGVtIDogbGlzdCkgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50LCBzaXplXSA9
IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworICAgICAgICAKKyAgICAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBpdGVtKSB7
CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAg
ICAgIEVYUEVDVF9FUShpdGVtLnRoaWNrbmVzcygpLCAxLjUpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHsKLSAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVY
UEVDVF9UUlVFKGhhbmRsZS0+aXM8RmlsbFBhdGg+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRl
bSA9IGhhbmRsZS0+Z2V0PEZpbGxQYXRoPigpOworICAgICAgICB9LCBbJl0oY29uc3QgRmlsbFBh
dGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7
CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5wYXRoKCkucGxhdGZvcm1QYXRoKCksIHBhdGgu
cGxhdGZvcm1QYXRoKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsKLSAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGhhbmRsZS0+aXM8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAgICAgICAgICAgYXV0byYg
aXRlbSA9IGhhbmRsZS0+Z2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpOworICAgICAgICB9LCBb
Jl0oY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5y
ZWN0KCksIEZsb2F0UmVjdCgxLiwgMS4sIDEwLiwgMTAuKSk7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEoJml0ZW0uZ3JhZGllbnQoKSwgZ3JhZGllbnQucHRyKCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOiB7
Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLT5pc0RyYXdpbmdJdGVtKCkpOwotICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwot
ICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PFNldElubGluZUZpbGxDb2xvcj4o
KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgaXRlbSkgeworICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBF
WFBFQ1RfRVEoaXRlbS5jb2xvcigpLCBDb2xvcjo6cmVkKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRs
ZS0+aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8
U3Ryb2tlSW5saW5lUGF0aD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5n
ZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFN0cm9rZUlubGlu
ZVBhdGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRl
bSk7CiAgICAgICAgICAgICBjb25zdCBhdXRvIHBhdGggPSBpdGVtLnBhdGgoKTsKICAgICAgICAg
ICAgIGF1dG8mIGxpbmUgPSBwYXRoLmlubGluZURhdGE8TGluZURhdGE+KCk7CiAgICAgICAgICAg
ICBFWFBFQ1RfRVEobGluZS5zdGFydCwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICBF
WFBFQ1RfRVEobGluZS5lbmQsIEZsb2F0UG9pbnQoMTAuLCAxNS4pKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1h
bmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6
IHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciYpIHsK
KyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mKSB7CiAgICAgICAgICAgICBvYnNlcnZlZFVuZXhw
ZWN0ZWRJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiAgICAg
fQogCiAgICAgRVhQRUNUX0ZBTFNFKG9ic2VydmVkVW5leHBlY3RlZEl0ZW0pOwpAQCAtMTQ3LDEx
ICsxMzIsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKIAogICAgIGxp
c3QuYXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihGbG9hdFJlY3QgeyAwLCAwLCAxMDAsIDEwMCB9
LCBDb2xvcjo6YmxhY2spOwogCi0gICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudCwgc2l6ZV0g
OiBsaXN0KSB7Ci0gICAgICAgIEVYUEVDVF9FUShoYW5kbGUtPnR5cGUoKSwgSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxGaWxsUmVj
dFdpdGhDb2xvcj4oKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBs
aXN0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsbFJl
Y3RXaXRoQ29sb3I+KGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkpOworICAgICAgICBjb25zdCBhdXRv
JiBpdGVtID0gV1RGOjpnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KGRpc3BsYXlMaXN0SXRlbS0+aXRl
bSk7CisgICAgICAgIEVYUEVDVF9FUShpdGVtLml0ZW1UeXBlLCBJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoQ29sb3IpOwogCi0gICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxGaWxsUmVjdFdp
dGhDb2xvcj4oKTsKICAgICAgICAgRVhQRUNUX0VRKCppdGVtLmNvbG9yKCkudHJ5R2V0QXNTUkdC
QUJ5dGVzKCksIENvbG9yOjpibGFjayk7CiAgICAgICAgIEVYUEVDVF9FUShpdGVtLnJlY3QoKSwg
RmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAgfQpAQCAtMTczLDEyICsxNTgsMTEgQEAg
VEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRl
bVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIGZpbmFsCisgICAgICAgIE9wdGlv
bmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUpIGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6U3Ryb2tlUGF0
aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aCwgc2l6ZW9mKHNpemVfdCkpOwot
ICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFN0cm9r
ZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pOwot
ICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19OworICAgICAgICAgICAgcmV0
dXJuIHsgRGlzcGxheUxpc3RJdGVtKFN0cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBzaXplX3QqPihkYXRhKV0pKSB9OwogICAgICAgICB9CiAKICAgICAgICAgY29uc3Qg
VmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1zOwpAQCAtMTk0LDE5ICsxNzgsMTcgQEAgVEVTVChE
aXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgIHByaXZhdGU6CiAgICAgICAg
IEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIGZpbmFs
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9MVChjYXBhY2l0eSwgZ2xvYmFsSXRlbUJ1
ZmZlckNhcGFjaXR5KTsKKyAgICAgICAgICAgIEVYUEVDVF9MRShjYXBhY2l0eSwgZ2xvYmFsSXRl
bUJ1ZmZlckNhcGFjaXR5KTsKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50
aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbShJdGVtSGFu
ZGxlIGhhbmRsZSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5j
b2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIGNvbnN0IGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKLSAg
ICAgICAgICAgIG1faXRlbXMuYXBwZW5kKGhhbmRsZS5nZXQ8U3Ryb2tlUGF0aD4oKSk7CisgICAg
ICAgICAgICBtX2l0ZW1zLmFwcGVuZChXVEY6OmdldDxTdHJva2VQYXRoPihpdGVtKSk7CiAgICAg
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oJmluZGV4KSwgc2l6ZW9mKHNpemVfdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBkaWRBcHBlbmREYXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QsIERpZENoYW5n
ZUl0ZW1CdWZmZXIpIGZpbmFsIHsgfQotCiAgICAgICAgIFZlY3RvcjxTdHJva2VQYXRoPiYgbV9p
dGVtczsKICAgICB9OwogCkBAIC0yMjUsOCArMjA3LDggQEAgVEVTVChEaXNwbGF5TGlzdFRlc3Rz
LCBJdGVtQnVmZmVyQ2xpZW50KQogICAgIHNoYWxsb3dDb3B5LnNldEl0ZW1CdWZmZXJDbGllbnQo
JnJlYWRlcik7CiAKICAgICBWZWN0b3I8SXRlbVR5cGU+IGl0ZW1UeXBlczsKLSAgICBmb3IgKGF1
dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IHNoYWxsb3dDb3B5KQotICAgICAgICBpdGVtVHlw
ZXMuYXBwZW5kKGhhbmRsZS0+dHlwZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlM
aXN0SXRlbSA6IHNoYWxsb3dDb3B5KQorICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGl0ZW1UeXBl
KGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHNoYWxsb3dDb3B5
LmlzRW1wdHkoKSk7CiAgICAgRVhQRUNUX0VRKGl0ZW1UeXBlcy5zaXplKCksIDRVKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRl
c3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlM
aXN0VGVzdHNDRy5jcHAKaW5kZXggYjU2OWYzNDA3ZTA3NTE1ZjYyZTE5MDFlZTAyMmQ0MTk0N2Zm
Mzg5YS4uNDQ5MTQ1ZDkzYjdmOGE1YzIyMzQxODA4ZmY0ZmM5MWI1OTgzOWQyZCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHND
Ry5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlM
aXN0VGVzdHNDRy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgSXRlbUJ1ZmZlcklkZW50aWZpZXIg
Z2xvYmFsQnVmZmVySWRlbnRpZmllciA9IEl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcgogCiBj
bGFzcyBSZWFkaW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29k
ZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCopIGZp
bmFsCisgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVj
b2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlKSBmaW5hbAogICAg
IHsKICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpGaWxsUGF0aCk7CiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMDAsOCArMTAwLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGds
b2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW0oSXRlbUhhbmRsZSkgY29uc3QgZmluYWwgeyByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQotICAgIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVtQnVmZmVy
SGFuZGxlJiwgc2l6ZV90LCBEaWRDaGFuZ2VJdGVtQnVmZmVyKSBmaW5hbCB7IH0KKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICB9CiB9OwogCiBURVNUKERpc3BsYXlMaXN0VGVzdHMsIE91dE9mTGluZUl0ZW1E
ZWNvZGluZ0ZhaWx1cmUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424161</attachid>
            <date>2021-03-24 11:24:00 -0700</date>
            <delta_ts>2021-04-12 16:35:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223560-20210324112357.patch</filename>
            <type>text/plain</type>
            <size>182868</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmYWRjMDBlMGM3YThl
YTRkM2FhNzYxNDZlMTVmNjY0NDg3MTFkZi4uOTE5OGI1ZGEzNzllZDI5ZjMxN2QwYmE2NTBhNjI3
ZDAxNTc3YTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAyMS0wMy0yMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gUmVwbGFjZSBJdGVtSGFuZGxlIHdpdGggYSBjb25zdCBWYXJpYW50JgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gs
IHdlIHdlcmUgcmVwcmVzZW50aW5nIHRoZSBjb25jZXB0IG9mICJhbiB1bmtub3duIERpc3BsYXlM
aXN0SXRlbSIgd2l0aCBJdGVtSGFuZGxlLAorICAgICAgICB3aGljaCB3YXMgYSBwb2ludGVyIHRv
IGEgYnl0ZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIERpc3BsYXlMaXN0OjpJdGVyYXRvci4gVGhl
IGZpcnN0IGJ5dGUgd2FzIGFuCisgICAgICAgIGVudW0gdmFsdWUgd2hpY2ggdG9sZCB5b3UgaG93
IHRvIGludGVycHJldCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkYXRhLiBUaGUgcmVtYWluZGVyIG9m
IHRoZSBieXRlcworICAgICAgICB3ZXJlIGp1c3QgYW4gb2JqZWN0LCBwbGFjZWQgdGhlcmUgYnkg
cGxhY2VtZW50IG5ldy4KKworICAgICAgICBUaGlzIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBh
cyBhIFZhcmlhbnQuIFVzaW5nIGEgcmVhbCB2YXJpYW50IGhhcyBhIGZldyBiZW5lZml0cyBvdmVy
IHRoaXMgY3VzdG9tCisgICAgICAgIHNvbHV0aW9uLCB0aG91Z2g6CisgICAgICAgIDEuIEJldHRl
ciB0eXBlIHNhZmV0eS4gV2UgZG9uJ3QgaGF2ZSB0byByZWFkIGluZGl2aWR1YWwgYnl0ZXMgYW5k
IGludGVycHJldCBvdGhlciBieXRlcyBvdXJzZWx2ZXMuCisgICAgICAgICAgICAgICBJbnN0ZWFk
LCB3ZSBjYW4gcmVseSBvbiB0aGUgVmFyaWFudCBpbmZyYXN0cnVjdHVyZSB0byBkbyB0aGlzLCB3
aGljaCBpcyB2ZXJ5IHdlbGwtdGVzdGVkLgorICAgICAgICAyLiBJdCdzIGxlc3MgZXJyb3ItcHJv
bmUsIGJlY2F1c2Ugd2UgY2FuIHVzZSB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmcgdG8gY2F1c2Ug
dGhlIGNvbXBpbGVyIHRvCisgICAgICAgICAgICAgICBnZW5lcmF0ZSBmdW5jdGlvbnMgZm9yIHVz
LiBGb3IgZXhhbXBsZSwgd2UgY2FuIGRvIHNvbWV0aGluZyBsaWtlCisKKyAgICAgICAgcmV0dXJu
IFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtKSAtPiBib29sIHsKKyAg
ICAgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdEl0ZW0uaXNEcmF3aW5nSXRlbTsKKyAgICAgICAg
fSwgZGlzcGxheUxpc3RJdGVtKTsKKworICAgICAgICBpbnN0ZWFkIG9mCisKKyAgICAgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgorICAgICAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0Ogor
ICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xlYXJSZWN0OgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKKyAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CisgICAgICAgIC4uLgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgVGhpcyBwYXRjaCBhY3R1YWxseSBkZWxl
dGVzIGFsbCBvZiB0aGUgcGxhY2VzIHdoZXJlIHdlIGhhdmUgYmlnIHN3aWNoIHN0YXRlbWVudHMg
b2YgZHJhd2luZyBjb21tYW5kcywKKyAgICAgICAgYW5kIHJlcGxhY2VzIHRoZW0gYWxsIHdpdGgg
c2ltaWxhciB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmcuIEFzIHN1Y2gsIHRoaXMgcGF0Y2ggZGVs
ZXRlcyBtb3JlIHRoYW4KKyAgICAgICAgMTIwMCBsaW5lcyB0aGFuIGl0IGFkZHMuCisKKyAgICAg
ICAgTW9zdCBvZiB0aGlzIHBhdGNoIGlzIGp1c3QgYSBkaXJlY3QgdHJhbnNsYXRpb24gZnJvbSBJ
dGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbSAod2hpY2ggaXMgYSB0eXBlZGVmCisgICAgICAg
IHRvIGEgVmFyaWFudCksIGxpbmUtYnktbGluZS4gSG93ZXZlciwgdGhlcmUgYXJlIHRocmVlIG5v
bi10cml2aWFsIGNoYW5nZXM6CisKKyAgICAgICAgMS4gVGhlIGNvbXBsZXhpdHkgaW5zaWRlIERp
c3BsYXlMaXN0OjpJdGVyYXRvciBpcyBzaWduaWZpY2FudGx5IHJlZHVjZWQgYmVjYXVzZSBpdCBu
byBsb25nZXIgaGFzIHRvCisgICAgICAgICAgICAgICBhbGxvY2F0ZSB0aGUgYmFja2luZyBzdG9y
YWdlIGZvciB0aGUgSXRlbUhhbmRsZS4gSSd2ZSBhbHNvIHNpbXBsaWZpZWQgdGhlIHJldHVybiB0
eXBlIG9mCisgICAgICAgICAgICAgICBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigp
IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBjbGVhciB3aGF0IHRoZSBmaWVsZHMgbWVhbi4KKyAg
ICAgICAgMi4gSSd2ZSBtYWRlIHVzaW5nIGEgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgYW5kIEl0
ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHJlcXVpcmVkIGZvciB1c2luZyBub24taW5saW5lCisgICAg
ICAgICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbXMuIFRoZXNlIGNsaWVudHMgd2VyZSBhbHdheXMg
c3BlY2lmaWVkIGluIFdlYktpdCAtIHRoZXkgd2VyZSBvbmx5IG9wdGlvbmFsIGZvcgorICAgICAg
ICAgICAgICAgdGVzdGluZy4gSG93ZXZlciwgdGhlIGNvZGUgY291bGQgYmUgc2lnbmlmaWNhbnRs
eSBzaW1wbGlmaWVkIGlmIHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlIHRoZQorICAgICAgICAgICAg
ICAgY2FzZSBvZiBub24taW5saW5lIGl0ZW1zIHdpdGhvdXQgdGhlc2UgY2xpZW50cy4gQW5kLCBw
aGlsb3NvcGhpY2FsbHksIHRoZXNlIGNsaWVudHMgKnNob3VsZCogYmUKKyAgICAgICAgICAgICAg
IHJlcXVpcmVkIHRvIGRvIGVuY29kaW5nL2RlY29kaW5nLCB3aGljaCBpcyBuZWNlc3NhcnkgZm9y
IG5vbi1pbmxpbmUgaXRlbXMuCisgICAgICAgIDMuIFRoZSBhZGRpdGlvbiBvZiB0aGUgSW5NZW1v
cnlEaXNwbGF5TGlzdC4gVGhpcyBpcyBhIHJlZ3VsYXIgZGlzcGxheSBsaXN0LCBleGNlcHQgaXQg
ZG9lc24ndCBzZXJpYWxpemUKKyAgICAgICAgICAgICAgIGl0cyBpdGVtcyBpbnRvIHRoZSBidWZm
ZXIuIEluc3RlYWQsIGl0IHVzZXMgcGxhY2VtZW50IG5ldyB0byBwbGFjZSBpdHMgaXRlbXMgaW4g
dGhlIGJ1ZmZlci4KKyAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciB0aGlzIHBsYWNlbWVudCBu
ZXcgdHJpY2sgdG8gd29yaywgdGhlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGludGVyZmFjZSBo
YWQgdG8gYmUKKyAgICAgICAgICAgICAgIGV4cGFuZGVkIHRvIGFsbG93IGZvciBlbmNvZGluZyBp
dGVtcyBkaXJlY3RseSBpbmxpbmUgdGhlIGJ1ZmZlciwgcmF0aGVyIHRoYW4gZW5jb2RpbmcgdGhl
bSBpbnRvCisgICAgICAgICAgICAgICBhIFNoYXJlZEJ1ZmZlciBhbmQgaGF2aW5nIHRoZSBEaXNw
bGF5TGlzdCBtZW1jcHkoKSB0aGUgYnl0ZXMgaW50byB0aGUgYnVmZmVyLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6IExpbmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0
ZW1IYW5kbGUgdG8KKyAgICAgICAgICAgICAgRGlzcGxheUxpc3RJdGVtLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojphc1RleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBwZW5kKTogV2Ug
Y2FuIG1ha2UgdGhlIGNvbXBpbGVyIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24hCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmJlZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6ZW5kIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OmF0RW5kIGNvbnN0
KTogRGVsZXRlZC4gTW92ZWQgdG8gRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJ
dGVtKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjphZHZhbmNlKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpjbGVhckN1cnJlbnRJ
dGVtKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjptb3ZlVG9FbmQpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVDdXJzb3JU
b1N0YXJ0T2ZDdXJyZW50QnVmZmVyKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjppdGVyYXRvcik6IERlbGV0ZWQu
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVy
YXRvcjo6fml0ZXJhdG9yKTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4gRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9y
OjpvcGVyYXRvciE9KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4gRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpv
cGVyYXRvciogY29uc3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Oml0ZW1CdWZmZXIgY29uc3QpOiBEZWxldGVk
LiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YmVn
aW4gY29uc3QpOiBEZWxldGVkLiBNb3ZlZCB0byB0aGUgLmNwcCBmaWxlLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjplbmQgY29uc3QpOiBEZWxldGVkLiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
OjpJdGVtQnVmZmVyKTogQmVjYXVzZSB0aGlzIHBhdGNoIHN0YXJ0cyByZXF1aXJpbmcgYQorICAg
ICAgICAgICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgZm9yIGFueSBub24taW5saW5lIGl0ZW1z
LCB3aGljaCBpcyBubyBwcm9ibGVtIGJlY2FzdWUgd2Ugd2VyZSBhbHdheXMKKyAgICAgICAgICAg
IHNwZWNpZnlpbmcgb25lIGluIFdlYktpdCBhbnl3YXksIHdlIG5vIGxvbmdlciBuZWVkIG1faXRl
bXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcjo6b3BlcmF0b3I9KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6Y2xlYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXNjcmlwdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBw
bHkpOiBEZWxldGVkLiBXZSBjYW4gbWFrZSB0aGUgY29tcGlsZXIgZ2VuZXJhdGUgdGhpcyBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95
KTogRGVsZXRlZC4gVGhlcmUgd2VyZSB0d28gcGxhY2VzIHdoZXJlIHRoaXMgd2FzIHVzZWQ6Cisg
ICAgICAgICAgICAxLiBXZSByb3VuZC10cmlwcGVkIHRocm91Z2ggSXRlbUhhbmRsZSB3aGVuZXZl
ciBhcHBlbmRpbmcgYW4gaXRlbSwganVzdCBzbyB3ZSBjb3VsZCBwYXNzIGRhdGEgdG8KKyAgICAg
ICAgICAgICAgICAgICBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudC4gVGhpcyBpcyB1bm5lY2Vzc2Fy
eSBub3cgdGhhdCB3ZSBjYW4ganVzdCBwYXNzIERpc3BsYXlMaXN0SXRlbQorICAgICAgICAgICAg
ICAgICAgIGluc3RlYWQuCisgICAgICAgICAgICAyLiBEZXN0cm95aW5nIG5vbi1pbmxpbmUgaXRl
bXMgd2hpY2ggd2VyZSBhcHBlbmRlZCB3aXRob3V0IGEgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQu
IEFib3ZlIEkKKyAgICAgICAgICAgICAgICAgICBkZXNjcmliZSB0aGF0IHRoaXMgcGF0Y2ggc3Rh
cnRzIHJlcXVpcmluZyBhIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZvciBhbnkgbm9uLWlubGlu
ZSBpdGVtcywKKyAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBubyBwcm9ibGVtIGJlY2F1c2Ug
d2Ugd2VyZSBhbHdheXMgc3BlY2lmeWluZyBvbmUgaW4gV2ViS2l0IGFueXdheS4KKyAgICAgICAg
ICAgIFNvLCBuZWl0aGVyIG9mIHRoZXNlIHNpdHVhdGlvbnMgc3Vydml2ZWQgdGhpcyBwYXRjaCwg
c28gdGhpcyBlbnRpcmUgZnVuY3Rpb24gaXMgZGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0Ojpjb3B5SW50byk6IERlbGV0ZWQuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhpcyBu
b3cgdGhhdCB0aGUgaXRlcmF0b3IgZG9lc24ndAorICAgICAgICAgICAgYWxsb2NhdGUgc3RvcmFn
ZSBmb3IgdGhlIEl0ZW1IYW5kbGUuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZTo6c2FmZUNvcHkgY29uc3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjptX2FsbG9jYXRlZEJ1ZmZlcnMpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOiBNaWdy
YXRlIGZyb20gSXRlbUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjppc0RyYXdpbmdJdGVtIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpvcGVyYXRv
ciBib29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlOjpvcGVyYXRvciEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmlzIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpnZXQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg6IEFkZGVkLiBNb3ZlZCBmcm9tCisgICAgICAgICAgICAg
IERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOiBSZW1vdmVkLiBUaGUgY29tcGlsZXIg
Y2FuIGdlbmVyYXRlIGFsbCBvZgorICAgICAgICAgICAgICB0aGVzZSBmdW5jdGlvbnMhISEKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlw
ZS5oOiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KTogYXBwbHkoKSBuZWVkcyB0byBi
ZSBjb25zdCBmb3IgdGhlIHRlbXBsYXRlCisgICAgICAgICAgICAgIG1ldGFwcm9ncmFtbWluZyB0
byB3b3JrLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOiBUaGUg
Y29tcGlsZXIgY2FuIGdlbmVyYXRlIHRoaXMgZnVuY3Rpb24hCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KTogTmVl
ZHMgdG8gYmUgY29uc3QgZm9yIHRoZSB0ZW1wbGF0ZQorICAgICAgICAgICAgICBtZXRhcHJvZ3Jh
bW1pbmcgdG8gd29yay4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJ
dGVtKTogTW92ZWQgZnJvbSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjppdGVtVHlwZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlm
aWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5jcHA6IEFkZGVkLiBUaGUgc2ltcGxpZmllZCBpbXBsZW1lbnRh
dGlvbiBvZgorICAgICAgICAgICAgICB0aGUgaXRlcmF0b3IuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphdEVuZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpv
cGVyYXRvciogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSBjb25zdCk6IFRoaXMgaXMgdGhlIG1hZ2ljLiBXZSBjYW4g
YWN0dWFsbHkKKyAgICAgICAgICAgICAgcmVjdXJzZSBvdmVyIHRoZSBzZXQgb2YgdHlwZXMgaW4g
dGhlIHZhcmlhbnQuIFdlIGRvIHRoaXMgd2l0aCBhIHRlbXBsYXRlIHBhcmFtZXRlciB0aGF0IGlz
IG9mIHR5cGUKKyAgICAgICAgICAgICAgc2l6ZV90LiBXZSB1c2UgImlmIGNvbnN0ZXhwciIgdG8g
aGFuZGxlIHRoZSBiYXNlIGNhc2UsIGFuZCB3ZSBwdWxsIG91dCB0aGUgdHlwZSBieSB1c2luZwor
ICAgICAgICAgICAgICBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdCB3aXRoIHRoZSBJIHRlbXBs
YXRlIHBhcmFtZXRlci4gT25jZSB3ZSBoYXZlIHRoZSBwYXJ0aWN1bGFyIHR5cGUgaW4gdGhlCisg
ICAgICAgICAgICAgIFZhcmlhbnQsIHdlIHB1bGwgb3V0IGl0cyBpdGVtVHlwZSBhbmQgY29tcGFy
ZSBhZ2FpbnN0IHRoZSBpdGVtVHlwZSBpbiB0aGUgYnVmZmVyLiBJZiBpdCBkb2Vzbid0CisgICAg
ICAgICAgICAgIG1hdGNoLCB3ZSByZWN1cnNlIHdpdGggSSArIDEsIGFuZCBpdCBkb2VzIG1hdGNo
LCB3ZSBydW4gdGhlIHNhbWUgcGFyc2luZyByb3V0aW5lcyB0aGF0IHdlcmUgaW4gdGhlCisgICAg
ICAgICAgICAgIG9sZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaXRlcmF0b3IgYmVmb3JlIHRoaXMg
cGF0Y2guCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJh
dG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjplbmRPZkN1cnJlbnRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZXJhdG9yLmg6IEFkZGVkLiBUaGlzIGlzIHNpZ25pZmljYW50bHkgc2ltcGxpZmllZCBm
cm9tIHRoZQorICAgICAgICAgICAgICB3YXkgaXQgd29ya2VkIGJlZm9yZSB0aGlzIHBhdGNoLiBX
ZSBubyBsb25nZXIgaGF2ZSB0byBhbGxvY2F0ZSBzdG9yYWdlIGZvciB0aGUgSXRlbUhhbmRsZXMu
IFdlIGhhdmUKKyAgICAgICAgICAgICAgc2lnbmlmaWNhbnRseSBmZXdlciBtZW1iZXIgdmFyaWFi
bGVzLCB0b28uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6aXRlbUJ1ZmZlciBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kRHJh
d2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxs
QXBwZW5kSXRlbU9mVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW1PZlR5cGUpOiBNb3ZlZCBmcm9tIHRoZSAuY3Bw
IGZpbGUuIEJlY2F1c2UgaXQncyBhIHRlbXBsYXRlLAorICAgICAgICAgICAgICBpdCBoYXMgdG8g
YmUgaGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlJ
bWFnZUJ1ZmZlckl0ZW0pOiBMaW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJvbSBJdGVtSGFuZGxl
IHRvIERpc3BsYXlMaXN0SXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBs
eU5hdGl2ZUltYWdlSXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmFwcGx5U2V0U3RhdGVJdGVtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6YXBwbHlGb250SXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmFwcGx5KTogSGVscGVyLiBPbmx5IGNhbGwgdGhlIGFwcGx5IGZ1bmN0aW9uIGluIHRoZSBEaXNw
bGF5TGlzdCBpdGVtIGlmIGl0IGV4aXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZXBsYXllcjo6YXBwbHlJdGVtKTogTGluZS1ieS1saW5lIHRyYW5zbGF0aW9uIGZyb20gSXRl
bUhhbmRsZSB0byBEaXNwbGF5TGlzdEl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OnJlcGxheSk6IFVwZGF0ZSBmb3IgdGhlIG5ldyByZXR1cm4gdHlwZSBvZgor
ICAgICAgICAgICAgICBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlOjphcHBs
eSk6IExpbmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9tIEl0ZW1IYW5kbGUgdG8KKyAgICAgICAg
ICAgICAgRGlzcGxheUxpc3RJdGVtLgorCiAyMDIxLTAzLTI0ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgQ1NTIENvbG9yIDUgY29sb3ItbWl4KCkgaW1w
bGVtZW50YXRpb24gdG8gbWF0Y2ggdGhlIGxhdGVzdCBkcmFmdCBzcGVjCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5
MzQ2MzlkNDExY2E0YjRjY2UzYmU0Y2NhYWU3ZmJjNmZjMDg0ZDEuLjJkMGM4MzQ4NGRjZjhiM2E2
OTRiZmQyZWFkZDhhYzJiYjZlMTIwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEt
MDMtMjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBbR1BVIFByb2Nlc3NdIFJlcGxhY2UgSXRlbUhhbmRsZSB3aXRoIGEgY29uc3QgVmFyaWFudCYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzU2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOiBMaW5lLWJ5LWxpbmUgdHJhbnNsYXRp
b24gZnJvbSBJdGVtSGFuZGxlIHRvIERpc3BsYXlMaXN0SXRlbS4KKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbSk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQpOiBUaGlzIGZpbGUgaGFz
ICJ1c2luZyBuYW1lc3BhY2UgV2ViQ29yZSIgc28gd2UgZG9uJ3QgbmVlZCB0bworICAgICAgICAg
ICAgICBxdWFsaWZ5IG5hbWVzLiBEcm9wIHRoZSBXZWJDb3JlOjouCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRh
VVJMRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVh
YmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6ZGVjb2Rl
SXRlbSk6IFRoZSBjb21waWxlciBjYW4gZ2VuZXJhdGUgdGhpcyBmdW5jdGlvbiBmb3IgdXMsIGlu
IG11Y2ggdGhlIHNhbWUgd2F5IHRoYXQgaXQgZGlkCisgICAgICAgICAgICAgIGZvciBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkZWNvZGVBbmRDcmVhdGUpOiBEZWxldGVkLiBObyBsb25nZXIgbmVjZXNz
YXJ5IG5vdyB0aGF0IHRoZSBjb21waWxlcgorICAgICAgICAgICAgICBpcyBnZW5lcmF0aW5nIG91
ciBmdW5jdGlvbnMgZm9yIHVzLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6ZW5jb2RlSXRlbUhlbHBlcik6IFRoZSBjb21waWxlciBjYW4gZ2VuZXJhdGUgdGhp
cyBmdW5jdGlvbiBmb3IgdXMuCisKIDIwMjEtMDMtMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSZXZpc2UgbG9hZFNpbXVsYXRlZFJlcXVl
c3QgQVBJIHdpdGggZmluYWwgcmV2aWV3IGNvbW1lbnRzICgyMjM2NTcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCAxYzljOWI2NmZjNjY5NWNlZWI1NWVlODE2N2FkNjlmYjQzYjdmMjZjLi43Mzk5ZDRj
MjUxNDRiOGFkNDg5ZmUwMGEzMTA5NzI1ZTYwMGI1MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTEzMTUsMTAgKzEzMTUsMTMgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRl
bnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDRiNDE1ZTlm
Y2JkNGI4ZDg2N2RmNWRhN2U3YzYxMzNmOWIxOTQwZWMuLjNkMzFmNWI3NzIyOTdjMjNiYzMxMWMz
NGU2ZTdkY2JkNjI4MzIyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDE5LDkgKzIwMTksMTAgQEAg
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCi1wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKK3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggODdiZWJlMjEyZmY5NjRhNWRjOTY4MDE3NjcyNWQ5MDNlYTJhY2Q2My4uY2Jj
ZjExNjg3OTIzNzNlNDQ5NWI2MWJjNDZjOTZiYTgzMzAwNjZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjI2LDYgKzYyNiw5
IEBACiAJCTFDNzNBNzE1MjE4NTc1ODcwMDRDQ0VBNSAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVz
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCNkI0
RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM4MUI5NUEwRTk3MzMw
ODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNw
ZWN0b3JDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTgw
RTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDOTNDQkNGMjYwNUJENDMwMDhGREVGOSAv
KiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzkzQ0JDRDI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTFDOTNDQkQzMjYwNkY4RTcwMDhGREVGOSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzkz
Q0JEMjI2MDZGM0UzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDOTND
QkVCMjYwOUFGMkUwMDhGREVGOSAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzkzQ0JFNzI2MDlBNkUzMDA4RkRF
RjkgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYzNDgxMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3Jp
cHRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0FGMzQ4MjBBNkM0MDUy
MDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlw
dE9iamVjdC5tbSAqLzsgfTsKIAkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlw
dE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY4
NzYsNiArNjg3OSwxMSBAQAogCQkxQzhEMjZDRTIyQzA5NTEzMDBEMTI1RjMgLyogV0hMU0xTdGFu
ZGFyZExpYnJhcnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFuZGFy
ZExpYnJhcnlVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhE
MjZEMDIyQzA5Q0RFMDBEMTI1RjMgLyogbGliY29tcHJlc3Npb24udGJkICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNl
ZC1keWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYmNvbXByZXNzaW9uLnRiZDsgcGF0aCA9IHVz
ci9saWIvbGliY29tcHJlc3Npb24udGJkOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJMUM5
MDRERjkwQkE5RDJDODAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM5M0NCQ0MyNjA1QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNDQkNEMjYwNUJENDMwMDhGREVGOSAvKiBEaXNwbGF5
TGlzdEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5M0NCRDIyNjA2RjNFMzAwOEZERUY5IC8qIERp
c3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxp
c3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzkzQ0JFNjI2MDlBNkUzMDA4RkRFRjkgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM5M0NCRTcyNjA5QTZFMzAwOEZERUY5IC8qIEluTWVtb3J5RGlzcGxheUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5NZW1vcnlEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9t
YmllRmluZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOUFFNUNCMjFFRDlERjUwMDY5RDVG
MiAvKiBXSExTTEhpZ2hab21iaWVGaW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xIaWdoWm9t
YmllRmluZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQTBDMkRFMjFFRUI1
RjQwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xSZWN1cnNpb25DaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjY3
Nyw3ICsxNjY4NSw2IEBACiAJCUY0MzNFOTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0
ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9h
cmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYw
RDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFz
dGVib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Mzc3RDU1MjU1MUM5
QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3Bs
YXlMaXN0SXRlbVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQzNzdENTYy
NTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGlzcGxheUxpc3RJdGVtVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0NDBFNzZFMjMzRDk0RDMwMDYzRjlBQiAvKiBDbGlwYm9hcmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpcGJvYXJkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQ0MEU3NkYyMzNEOTREMzAwNjNGOUFCIC8qIE5hdmlnYXRvckNsaXBi
b2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JDbGlwYm9h
cmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MEU3NzAyMzNEOTRENDAwNjNG
OUFCIC8qIENsaXBib2FyZEl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2xpcGJvYXJkSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwMzcsMTQg
KzE4MDQ0LDE4IEBACiAJCQkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0
SW1hZ2VCdWZmZXIuaCAqLywKIAkJCQlGNDIyQjhCNjI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcCAqLywKIAkJCQlGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyog
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmggKi8sCisJCQkJMUM5M0NCRDIyNjA2RjNFMzAwOEZERUY5
IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLywKIAkJCQkwRkU1RkJDQzFD
M0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5jcHAgKi8sCiAJCQkJMEZFNUZCQ0Qx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCAqLywKLQkJCQlGNDM3N0Q1NjI1
NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgKi8sCiAJCQkJRjQzNzdE
NTUyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLywKKwkJCQkxQzkz
Q0JDQzI2MDVCRDQzMDA4RkRFRjkgLyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8sCisJCQkJ
MUM5M0NCQ0QyNjA1QkQ0MzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLywKIAkJ
CQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8s
CiAJCQkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAq
LywKIAkJCQkwRkU1RkJEMDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5j
cHAgKi8sCiAJCQkJMEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5
ZXIuaCAqLywKKwkJCQkxQzkzQ0JFNjI2MDlBNkUzMDA4RkRFRjkgLyogSW5NZW1vcnlEaXNwbGF5
TGlzdC5jcHAgKi8sCisJCQkJMUM5M0NCRTcyNjA5QTZFMzAwOEZERUY5IC8qIEluTWVtb3J5RGlz
cGxheUxpc3QuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZGlzcGxheWxpc3RzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMyMDY3LDggKzMyMDc4LDEwIEBACiAJCQkJNzI0MkFDOTcy
NTc1OEZFMTAwNUE5Q0YxIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NUFEMDkzRTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENDBCQzkyNTU0NjNCRjAwNzIxMzQ5IC8qIERp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM5M0NCRDMyNjA2RjhF
NzAwOEZERUY5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxp
c3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM5M0NCQ0YyNjA1QkQ0MzAwOEZERUY5
IC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjc4OSw2ICszMjgwMiw3IEBACiAJCQkJQkNF
QTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTZGMUNDMURFMjI1RjhCNDkwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRl
bS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM5M0NCRUIyNjA5QUYyRTAwOEZERUY5IC8qIEluTWVt
b3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjc2NzU3MURBMTlCREYwMDNF
MjNCNSAvKiBJbnB1dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTJFRkRGNDIxMTI4NzVB
MDBBRDI4MkEgLyogSW5wdXRNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0UzNTI0RDEyNDUw
QzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA1Y2VhNzQ1MmQ1
ZmYyZTZjYjVmM2UxMTY2NTk3Yjc5ZmQ4ZjczZDdkLi5mZDZkZDc3NmQ3NzRlNTY2ZGU3NjE2Yzlj
MzcyZWY0OGViNzkzMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRm9udENhY2hl
LmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgogI2luY2x1ZGUgIlN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIlRleHRSdW4uaCIKQEAgLTIxMCw3ICsyMTEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
bgogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBoQnVmZmVyLCBtYXJrLCBzdGFy
dFBvaW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4g
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+
IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBj
b25zdAorc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBG
b250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4g
dG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSk7CiAgICAgdW5z
aWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CkBAIC0yMjUsOCAr
MjI2LDggQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENh
c2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxh
eUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNw
bGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4oKTsKICAgICBHcmFwaGljc0NvbnRleHQgcmVj
b3JkaW5nQ29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5
TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwg
QWZmaW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4
IDY2YjZmMTNhZDMzMDJkNjJkYmM5NTAyMzAzOGRiZjQ2ZTI4YzE5MjAuLjFlZjllNzZmZjE2ZDQw
OGY1Nzc4OGZmYmNmZDg2ZDU3NTU1YWJlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBUZXh0TGF5
b3V0OwogY2xhc3MgVGV4dFJ1bjsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKLWNsYXNzIERp
c3BsYXlMaXN0OworY2xhc3MgSW5NZW1vcnlEaXNwbGF5TGlzdDsKIH0KICAgICAKIHN0cnVjdCBH
bHlwaERhdGE7CkBAIC0xOTksNyArMTk5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGZsb2F0
IHN5bnRoZXRpY09ibGlxdWVBbmdsZSgpIHsgcmV0dXJuIDE0OyB9CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclRleHRSdW4oR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25h
bDx1bnNpZ25lZD4gdG8gPSB7IH0sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEN1c3RvbUZv
bnROb3RSZWFkeUFjdGlvbjo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IGRpc3BsYXlM
aXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQg
ZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHsgfSwgQ3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uID0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uOjpEb05vdFBhaW50SWZGb250Tm90UmVh
ZHkpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpCiAgICAgc3RhdGljIHZv
aWQgc2V0Rm9udFNtb290aGluZ0xldmVsKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGRiY2VmYjIyZDJhZmZjOTYw
MmZkYmI3YzQwNzJjMTlkOTAzNDU4YzYuLjlkMzdhYmE0NmI4NzI2NjZmODFkODM1Yzg5ZGFiNjli
YjBhZjU5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCkBAIC0xNjAsMTAgKzE2MCwxMCBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUgewogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0
U3RhdGUmJik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oR3JhcGhpY3NDb250ZXh0
U3RhdGUmJik7CiAKICAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCmluZGV4IDViNTViZWM4YzBhZTIxYTkyOTg0NWE0MTVkMTM1NzljMzY5YmQ1NDcu
Ljc5ODFlNjYzZTQ5MGRjYzExZTJhMjgwNTYzYTExYmJhM2JkZTIyMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTg0LDEyICs4NSwx
MCBAQCB2b2lkIERpc3BsYXlMaXN0OjpjbGVhcigpCiAgICAgbV9uYXRpdmVJbWFnZXMuY2xlYXIo
KTsKIH0KIAotYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdz
IGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCitib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9y
RmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsK
LSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6
CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3RhdGUm
IHN0YXRlSXRlbSkgLT4gYm9vbCB7CiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6
SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBz
dGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBm
b3Igbm93LCBvbmx5IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdz
IGFyZSBwbGF0Zm9ybS1zcGVjaWZpYy4KICAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVD
aGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTcsMzAgKzk2LDMwIEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhB
c1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICAgICAgaWYgKHN0YXRl
SXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0cnVl
OwogI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAg
IGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgaWYgKCEoZmxhZ3Mg
JiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGJyZWFrOworICAgIH0sIFsmXShjb25zdCBBcHBseUZpbGxQ
YXR0ZXJuJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBmbGFncyAmIEFzVGV4dEZsYWc6Oklu
Y2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zOworICAgIH0sIFsmXShjb25zdCBBcHBseVN0cm9rZVBh
dHRlcm4mKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5j
bHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnM7CiAjZW5kaWYKLSAgICBkZWZhdWx0OgotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgfSwgW10oY29uc3QgYXV0byYpIC0+
IGJvb2wgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2
aXNpdCh2aXNpdG9yLCBpdGVtKTsKIH0KIAogU3RyaW5nIERpc3BsYXlMaXN0Ojphc1RleHQoQXNU
ZXh0RmxhZ3MgZmxhZ3MpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW0oVGV4dFN0cmVh
bTo6TGluZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVhbTo6Rm9ybWF0dGluZzo6U1ZHU3R5
bGVSZWN0KTsKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0g
OiAqdGhpcykgewotICAgICAgICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgKml0ZW0p
KQorICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKKyAgICAg
ICAgY29uc3QgYXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5
TGlzdEl0ZW0udmFsdWUoKTsKKyAgICAgICAgaWYgKCFzaG91bGREdW1wRm9yRmxhZ3MoZmxhZ3Ms
IGl0ZW0pKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgVGV4dFN0cmVhbTo6R3Jv
dXBTY29wZSBncm91cChzdHJlYW0pOwogICAgICAgICBzdHJlYW0gPDwgaXRlbTsKLSAgICAgICAg
aWYgKGl0ZW0tPmlzRHJhd2luZ0l0ZW0oKSkKKyAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRl
bSkpCiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBleHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQog
ICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOwpAQCAtMTMxLDEwICsxMzAsMTEgQEAgdm9pZCBE
aXNwbGF5TGlzdDo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICBUZXh0U3RyZWFtOjpH
cm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICB0cyA8PCAiZGlzcGxheSBsaXN0IjsKIAotICAgIGZv
ciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgeworICAgICAgICBjb25z
dCBhdXRvJiBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRl
bS52YWx1ZSgpOwogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAg
ICAgICAgdHMgPDwgaXRlbTsKLSAgICAgICAgaWYgKGl0ZW0tPmlzRHJhd2luZ0l0ZW0oKSkKKyAg
ICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAgICAgICB0cyA8PCAiIGV4dGVu
dCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgdHMuc3RhcnRHcm91cCgpOwpAQCAtMTg2LDI0OSAr
MTg2LDIzIEBAIHZvaWQgRGlzcGxheUxpc3Q6OnNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhi
b29sIHZhbHVlKQogICAgIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzID0gdmFsdWU7CiB9CiAK
LXZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCi17Ci0gICAgc3dpdGNo
IChpdGVtLnR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8U2F2ZT4oaXRlbS5nZXQ8U2F2ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVz
dG9yZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxSZXN0b3JlPihpdGVtLmdldDxSZXN0b3JlPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
VHJhbnNsYXRlPihpdGVtLmdldDxUcmFuc2xhdGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlJv
dGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxSb3RhdGU+KGl0ZW0uZ2V0PFJvdGF0ZT4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2NhbGU+
KGl0ZW0uZ2V0PFNjYWxlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxDb25jYXRlbmF0ZUNUTT4oaXRlbS5nZXQ8Q29uY2F0ZW5h
dGVDVE0+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxTZXRDVE0+KGl0ZW0uZ2V0PFNldENUTT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldElubGluZUZpbGxH
cmFkaWVudD4oaXRlbS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5s
aW5lRmlsbENvbG9yPihpdGVtLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNl
dElubGluZVN0cm9rZUNvbG9yPihpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFNldFN0cm9rZVRoaWNrbmVzcz4oaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRT
dGF0ZT4oaXRlbS5nZXQ8U2V0U3RhdGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVD
YXA6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TGluZUNhcD4oaXRlbS5nZXQ8U2V0TGluZUNh
cD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8U2V0TGluZURhc2g+KGl0ZW0uZ2V0PFNldExpbmVEYXNoPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lSm9pbj4o
aXRlbS5nZXQ8U2V0TGluZUpvaW4+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGlt
aXQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TWl0ZXJMaW1pdD4oaXRlbS5nZXQ8U2V0TWl0
ZXJMaW1pdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8Q2xlYXJTaGFkb3c+KGl0ZW0uZ2V0PENsZWFyU2hhZG93PigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXA+KGl0ZW0uZ2V0
PENsaXA+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8Q2xpcE91dD4oaXRlbS5nZXQ8Q2xpcE91dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZm
ZXI+KGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBPdXRUb1BhdGg+KGl0ZW0u
Z2V0PENsaXBPdXRUb1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPENsaXBQYXRoPihpdGVtLmdldDxDbGlwUGF0aD4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PihpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0dseXBocz4oaXRlbS5n
ZXQ8RHJhd0dseXBocz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8RHJhd0ltYWdl
QnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPERyYXdQYXR0ZXJuPihpdGVtLmdldDxEcmF3UGF0dGVybj4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1JlY3Q+KGl0ZW0uZ2V0
PERyYXdSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxEcmF3TGluZT4oaXRlbS5nZXQ8RHJhd0xpbmU+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0xpbmVz
Rm9yVGV4dD4oaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
RG90c0ZvckRvY3VtZW50TWFya2VyPihpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxEcmF3RWxsaXBzZT4oaXRlbS5nZXQ8RHJhd0VsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdQYXRoPihpdGVtLmdl
dDxEcmF3UGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PERyYXdGb2N1
c1JpbmdQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihpdGVtLmdldDxEcmF3Rm9j
dXNSaW5nUmVjdHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPEZpbGxSZWN0PihpdGVtLmdldDxGaWxsUmVjdD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJl
Y3RXaXRoQ29sb3I+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxs
UmVjdFdpdGhHcmFkaWVudD4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxGaWxsQ29tcG9zaXRlZFJlY3Q+KGl0ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5k
PEZpbGxSb3VuZGVkUmVjdD4oaXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhv
bGU+KCkpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxJbmxpbmVQYXRoPihp
dGVtLmdldDxGaWxsSW5saW5lUGF0aD4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUGF0aD4oaXRlbS5nZXQ8RmlsbFBh
dGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICByZXR1cm4g
YXBwZW5kPEZpbGxFbGxpcHNlPihpdGVtLmdldDxGaWxsRWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZsdXNoQ29udGV4
dD4oaXRlbS5nZXQ8Rmx1c2hDb250ZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29t
bWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtLmdldDxNZXRhQ29t
bWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICByZXR1
cm4gYXBwZW5kPEdldEltYWdlRGF0YT4oaXRlbS5nZXQ8R2V0SW1hZ2VEYXRhPigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UHV0SW1h
Z2VEYXRhPihpdGVtLmdldDxQdXRJbWFnZURhdGE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlBh
aW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQYWludEZyYW1lRm9yTWVk
aWE+KGl0ZW0uZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VSZWN0PihpdGVtLmdldDxT
dHJva2VSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPFN0cm9rZUxpbmU+KGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCkpOwotI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBh
dGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlSW5saW5lUGF0aD4oaXRlbS5nZXQ8U3Ry
b2tlSW5saW5lUGF0aD4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRo
OgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZVBhdGg+KGl0ZW0uZ2V0PFN0cm9rZVBhdGg+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8U3Ryb2tlRWxsaXBzZT4oaXRlbS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPENsZWFyUmVjdD4o
aXRlbS5nZXQ8Q2xlYXJSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFy
ZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+
KGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZFRyYW5zcGFy
ZW5jeUxheWVyPihpdGVtLmdldDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKSk7Ci0jaWYgVVNFKENH
KQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxBcHBseVN0cm9rZVBhdHRlcm4+KGl0ZW0uZ2V0PEFwcGx5U3Ryb2tlUGF0dGVybj4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxBcHBseUZpbGxQYXR0ZXJuPihpdGVtLmdldDxBcHBseUZpbGxQYXR0ZXJuPigpKTsK
LSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oaXRlbS5nZXQ8QXBwbHlE
ZXZpY2VTY2FsZUZhY3Rvcj4oKSk7Ci0gICAgfQotfQotCi1ib29sIERpc3BsYXlMaXN0OjppdGVy
YXRvcjo6YXRFbmQoKSBjb25zdAotewotICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSB8
fCAhbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8mIGl0ZW1zID0g
Kml0ZW1CdWZmZXIoKTsKLSAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLm1fd3JpdGFibGVCdWZm
ZXIuZGF0YSArIGl0ZW1zLm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgcmV0dXJuIG1fY3Vy
c29yID09IGVuZEN1cnNvcjsKLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OnVwZGF0
ZUN1cnJlbnRJdGVtKCkKLXsKLSAgICBjbGVhckN1cnJlbnRJdGVtKCk7Ci0KLSAgICBpZiAoYXRF
bmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigp
OwotICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0p
OwotICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW1UeXBlKSAmJiAhbV9kaXNwbGF5TGlzdC5tX2Ry
YXdpbmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0g
bV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwot
ICAgICAgICBtX2RyYXdpbmdJdGVtSW5kZXgrKzsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9jdXJy
ZW50RXh0ZW50ID0gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byogY2xpZW50ID0gaXRlbXMubV9y
ZWFkaW5nQ2xpZW50OwotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoaXRlbVR5cGUpOwotICAgIGlmIChjbGllbnQpIHsKLSAg
ICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9
IHNpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVu
dEl0ZW0gOiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtKSk7Ci0gICAgICAgIGlmIChpc0lubGluZUl0ZW0oaXRlbVR5cGUpKSB7Ci0g
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoIUl0ZW1IYW5kbGUgeyBtX2N1cnNvciB9LnNhZmVDb3B5
KHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KSkpCi0gICAgICAgICAgICAgICAgbV9pc1ZhbGlk
ID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRk
ZWRTaXplT2ZUeXBlQW5kSXRlbTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8g
ZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07Ci0g
ICAgICAgICAgICBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50
NjRfdCk7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZWRJdGVtSGFuZGxlID0gY2xpZW50LT5kZWNv
ZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSwgbV9jdXJyZW50QnVmZmVy
Rm9ySXRlbSk7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZWRJdGVtSGFuZGxlKSkK
LSAgICAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgbV9jdXJy
ZW50QnVmZmVyRm9ySXRlbVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAg
ICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90
KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9
IG1fY3Vyc29yOwotICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW07Ci0gICAgfQotfQotCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6
YWR2YW5jZSgpCi17Ci0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
Y3Vyc29yICs9IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXI7Ci0KLSAgICBpZiAobV9jdXJzb3Ig
PT0gbV9jdXJyZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1
ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKLSAgICAgICAgbV9yZWFkT25seUJ1
ZmZlckluZGV4Kys7Ci0gICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7
Ci0gICAgfQotCi0gICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLX0KLQotdm9pZCBEaXNwbGF5TGlz
dDo6aXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0oKQordm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5k
KGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1
ZmZlcigpOwotICAgIGlmIChpdGVtcyAmJiBpdGVtcy0+bV9yZWFkaW5nQ2xpZW50ICYmIG1fY3Vy
cmVudEJ1ZmZlckZvckl0ZW0pIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2lzVmFsaWQpKQotICAg
ICAgICAgICAgSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfS5kZXN0cm95KCk7
Ci0KLSAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gIT0gbV9maXhl
ZEJ1ZmZlckZvckN1cnJlbnRJdGVtKSkKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0pOwotICAgIH0KLQotICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAw
OwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBudWxscHRyOworICAgIFdURjo6dmlzaXQo
WyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgYXBwZW5kKGl0ZW0pOworICAgIH0sIGl0
ZW0pOwogfQogCi12b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6bW92ZVRvRW5kKCkKK2F1dG8g
RGlzcGxheUxpc3Q6OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICBpZiAoYXV0byBp
dGVtcyA9IGl0ZW1CdWZmZXIoKSkgewotICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRh
YmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICAgICAg
bV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvcjsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZl
ckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICB9CisgICAgcmV0
dXJuIHsgKnRoaXMgfTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om1vdmVDdXJz
b3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCkKK2F1dG8gRGlzcGxheUxpc3Q6OmVuZCgpIGNvbnN0
IC0+IEl0ZXJhdG9yCiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKLSAgICBpZiAo
IWl0ZW1zKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZm
ZXJzID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICBpZiAobV9yZWFkT25s
eUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKLSAgICAgICAgYXV0byYg
bmV4dEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVm
ZmVySW5kZXhdOwotICAgICAgICBtX2N1cnNvciA9IG5leHRCdWZmZXJIYW5kbGUuZGF0YTsKLSAg
ICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvciArIG5leHRCdWZmZXJIYW5kbGUu
Y2FwYWNpdHk7Ci0gICAgfSBlbHNlIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVy
T2ZSZWFkT25seUJ1ZmZlcnMpIHsKLSAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJs
ZUJ1ZmZlci5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsg
aXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgfQorICAgIHJldHVybiB7ICp0aGlz
LCBJdGVyYXRvcjo6SW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcyB9OwogfQogCi0KIH0gLy8gbmFt
ZXNwYWNlIERpc3BsYXlMaXN0CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCmluZGV4IGYxODlkZWRmNjc0OWJjYzIwMTQ3MmFlZDJhODcxNmJhNjU3NDY1
MmUuLjg4YjFiYjZkMDM2MTAyODQ5ZmI3Njk3ZTkwMmZjYjQyYzc3OTQzMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiBlbnVtIEFzVGV4dEZs
YWcgewpAQCAtODksNzYgKzg4LDE1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYp
PiYmKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZv
aWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKTsKLSAgICB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsK
KyAgICB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogICAgIGJvb2wgdHJh
Y2tzRHJhd2luZ0l0ZW1FeHRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja3NEcmF3aW5nSXRl
bUV4dGVudHM7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNrc0RyYXdpbmdJdGVt
RXh0ZW50cyhib29sKTsKIAotICAgIGNsYXNzIGl0ZXJhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGVudW0gY2xhc3MgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgeyBObywgWWVzIH07Ci0gICAgICAg
IGl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRlbHlNb3Zl
VG9FbmQgaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6Tm8pCi0g
ICAgICAgICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6
WWVzKQotICAgICAgICAgICAgICAgIG1vdmVUb0VuZCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICAg
ICAgICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgfml0ZXJhdG9yKCkKLSAgICAgICAgewotICAgICAgICAgICAgY2xlYXJDdXJy
ZW50SXRlbSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0
ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVyLm1fZGlzcGxh
eUxpc3QgJiYgbV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KLSAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KLSAgICAgICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0KLQotICAgICAgICBz
dHJ1Y3QgVmFsdWUgewotICAgICAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gaXRlbTsKLSAg
ICAgICAgICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwotICAgICAgICAgICAgc2l6ZV90
IGl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgVmFsdWUgb3Bl
cmF0b3IqKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICBtX2lzVmFsaWQgPyBtYWtlT3B0aW9uYWwoSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0gfSkgOiBXVEY6Om51bGxvcHQsCi0gICAgICAgICAgICAgICAgbV9jdXJyZW50
RXh0ZW50LAotICAgICAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsCi0gICAg
ICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID0gMjU2OwotCi0g
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIoKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG9FbmQoKTsKLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZHZhbmNlKCk7Ci0gICAgICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKLQotICAgICAgICBJ
dGVtQnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVt
QnVmZmVySWZFeGlzdHMoKTsgfQotCi0gICAgICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3Bs
YXlMaXN0OwotICAgICAgICB1aW50OF90KiBtX2N1cnNvciB7IG51bGxwdHIgfTsKLSAgICAgICAg
c2l6ZV90IG1fcmVhZE9ubHlCdWZmZXJJbmRleCB7IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fZHJh
d2luZ0l0ZW1JbmRleCB7IDAgfTsKLSAgICAgICAgdWludDhfdCogbV9jdXJyZW50RW5kT2ZCdWZm
ZXIgeyBudWxscHRyIH07Ci0KLSAgICAgICAgdWludDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVu
dEl0ZW1bc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07Ci0gICAgICAgIHVp
bnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0gICAgICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbV9jdXJyZW50RXh0ZW50OwotICAgICAgICBzaXplX3QgbV9jdXJyZW50
SXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKLSAgICAgICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07
Ci0gICAgfTsKLQotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4geyAqdGhpcyB9
OyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyAqdGhpcywgaXRlcmF0b3I6
OkltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMgfTsgfQorICAgIGNsYXNzIEl0ZXJhdG9yOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBJdGVyYXRvciBlbmQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBJdGVtQnVmZmVyKiBp
dGVtQnVmZmVySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zLmdldCgpOyB9CkBAIC0x
OTEsNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFuZGxlKTsKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAg
IE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYjVjMzc0MTlkNmZmYWExNjhkNGJiOTllNDE4
ODRmZGFkNGQxNzY5Ny4uYjhlOTZiNmIxYTQ1NDc0YjY2YWUxMDY3ZDk2OWQ5YWVhYWM0NGYyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNTY0ICsz
Miw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi0j
aWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi1DU3RyaW5nIEl0ZW1IYW5kbGU6
OmRlc2NyaXB0aW9uKCkgY29uc3QKLXsKLSAgICBUZXh0U3RyZWFtIHRzOwotICAgIHRzIDw8ICp0
aGlzOwotICAgIHJldHVybiB0cy5yZWxlYXNlKCkudXRmOCgpOwotfQotI2VuZGlmCi0KLXZvaWQg
SXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIHN3aXRj
aCAodHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgZ2V0PFNhdmU+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpS
ZXN0b3JlOgotICAgICAgICBnZXQ8UmVzdG9yZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgZ2V0PFRyYW5z
bGF0ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OlJvdGF0ZToKLSAgICAgICAgZ2V0PFJvdGF0ZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICBnZXQ8U2NhbGU+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
b25jYXRlbmF0ZUNUTToKLSAgICAgICAgZ2V0PENvbmNhdGVuYXRlQ1RNPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAg
ICBnZXQ8U2V0Q1RNPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICBnZXQ8U2V0SW5saW5l
RmlsbEdyYWRpZW50PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICBnZXQ8U2V0SW5saW5lRmls
bENvbG9yPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIGdldDxTZXRJbmxpbmVTdHJva2VD
b2xvcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4o
KS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dFN0YXRlOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIGdldDxTZXRMaW5lQ2FwPigp
LmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
TGluZURhc2g6Ci0gICAgICAgIGdldDxTZXRMaW5lRGFzaD4oKS5hcHBseShjb250ZXh0KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICBn
ZXQ8U2V0TGluZUpvaW4+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICBnZXQ8U2V0TWl0ZXJMaW1pdD4o
KS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNs
ZWFyU2hhZG93OgotICAgICAgICBnZXQ8Q2xlYXJTaGFkb3c+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICBnZXQ8Q2xp
cD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXQ6Ci0gICAgICAgIGdldDxDbGlwT3V0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAg
IGdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIGdldDxDbGlwT3V0
VG9QYXRoPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIGdldDxDbGlwUGF0aD4oKS5hcHBseShjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3R2x5cGhzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgZ2V0PERyYXdJ
bWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4o
KS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgotICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgZ2V0
PERyYXdSZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIGdldDxEcmF3TGluZT4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6
Ci0gICAgICAgIGdldDxEcmF3TGluZXNGb3JUZXh0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoK
LSAgICAgICAgZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAg
ICAgZ2V0PERyYXdFbGxpcHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIGdldDxEcmF3UGF0aD4oKS5hcHBs
eShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1
c1JpbmdQYXRoOgotICAgICAgICBnZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkuYXBwbHkoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVj
dHM6Ci0gICAgICAgIGdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCkuYXBwbHkoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgZ2V0
PEZpbGxSZWN0PigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhDb2xv
cj4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+
KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIGdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkuYXBw
bHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91
bmRlZFJlY3Q6Ci0gICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCkuYXBwbHkoY29udGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZToKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAgIGdldDxGaWxsSW5saW5lUGF0
aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIGdldDxGaWxsUGF0aD4oKS5hcHBseShjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAg
ICAgICBnZXQ8RmlsbEVsbGlwc2U+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIGdldDxGbHVzaENvbnRl
eHQ+KCkuYXBwbHkoY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdl
RGF0YToKLSAgICAgICAgLy8gU2hvdWxkIGFscmVhZHkgYmUgaGFuZGxlZCBieSB0aGUgZGVsZWdh
dGUuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICBnZXQ8UGFpbnRGcmFt
ZUZvck1lZGlhPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgZ2V0PFN0cm9rZVJlY3Q+KCkuYXBwbHkoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgot
ICAgICAgICBnZXQ8U3Ryb2tlTGluZT4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
OwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUlubGluZVBhdGg6Ci0gICAgICAgIGdldDxTdHJva2VJbmxpbmVQYXRoPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQ
YXRoOgotICAgICAgICBnZXQ8U3Ryb2tlUGF0aD4oKS5hcHBseShjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIGdldDxT
dHJva2VFbGxpcHNlPigpLmFwcGx5KGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICBnZXQ8Q2xlYXJSZWN0PigpLmFwcGx5KGNv
bnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3Bh
cmVuY3lMYXllcjoKLSAgICAgICAgZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCkuYXBwbHko
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3Bh
cmVuY3lMYXllcjoKLSAgICAgICAgZ2V0PEVuZFRyYW5zcGFyZW5jeUxheWVyPigpLmFwcGx5KGNv
bnRleHQpOwotICAgICAgICByZXR1cm47Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6
OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgZ2V0PEFwcGx5U3Ryb2tlUGF0dGVybj4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5
RmlsbFBhdHRlcm46Ci0gICAgICAgIGdldDxBcHBseUZpbGxQYXR0ZXJuPigpLmFwcGx5KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURl
dmljZVNjYWxlRmFjdG9yOgotICAgICAgICBnZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKS5h
cHBseShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBJdGVtSGFu
ZGxlOjpkZXN0cm95KCkKLXsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIGdldDxDbGlwT3V0VG9QYXRoPigpLn5DbGlwT3V0
VG9QYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoK
LSAgICAgICAgZ2V0PENsaXBQYXRoPigpLn5DbGlwUGF0aCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIGdldDxEcmF3Rm9j
dXNSaW5nUGF0aD4oKS5+RHJhd0ZvY3VzUmluZ1BhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgZ2V0PERyYXdGb2N1
c1JpbmdSZWN0cz4oKS5+RHJhd0ZvY3VzUmluZ1JlY3RzKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBnZXQ8RHJhd0dseXBocz4oKS5+
RHJhd0dseXBocygpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmVzRm9yVGV4dDoKLSAgICAgICAgZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkufkRyYXdMaW5lc0Zv
clRleHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgot
ICAgICAgICBnZXQ8RHJhd1BhdGg+KCkufkRyYXdQYXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIGdldDxGaWxsQ29t
cG9zaXRlZFJlY3Q+KCkufkZpbGxDb21wb3NpdGVkUmVjdCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIGdldDxGaWxsUGF0aD4oKS5+Rmls
bFBhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aENvbG9yOgotICAgICAgICBnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkufkZpbGxSZWN0V2l0aENv
bG9yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhH
cmFkaWVudDoKLSAgICAgICAgZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpLn5GaWxsUmVjdFdp
dGhHcmFkaWVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIGdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4o
KS5+RmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgZ2V0PEZpbGxSb3VuZGVkUmVjdD4o
KS5+RmlsbFJvdW5kZWRSZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPEdldEltYWdlRGF0YT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgZ2V0PFB1dEltYWdlRGF0YT4o
KS5+UHV0SW1hZ2VEYXRhKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lRGFzaDoKLSAgICAgICAgZ2V0PFNldExpbmVEYXNoPigpLn5TZXRMaW5lRGFzaCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIGdl
dDxTZXRTdGF0ZT4oKS5+U2V0U3RhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIGdldDxTdHJva2VQYXRoPigpLn5TdHJva2VQYXRo
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxl
RmFjdG9yOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxBcHBseURldmljZVNjYWxlRmFjdG9yPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0j
aWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEFwcGx5RmlsbFBh
dHRlcm4+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBs
eVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPEFwcGx5U3Ryb2tlUGF0dGVybj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXll
cj46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVj
dDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
Q2xlYXJSZWN0Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPENsZWFyU2hhZG93Pjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8Q2xpcD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPENsaXBPdXQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q2xpcFRvSW1hZ2VCdWZmZXI+Ojp2YWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Q29uY2F0
ZW5hdGVDVE0+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPjo6dmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdFbGxp
cHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxEcmF3SW1hZ2VCdWZmZXI+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdOYXRpdmVJbWFnZT46OnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3UGF0dGVybj46
OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3
TGluZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdS
ZWN0OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxEcmF3UmVjdD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6
OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PEVuZFRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEZpbGxFbGxpcHNlPjo6dmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bElubGluZVBhdGg6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEZpbGxJbmxpbmVQYXRoPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0jZW5k
aWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RmlsbFJlY3Q+Ojp2YWx1ZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEZsdXNoQ29udGV4dD46OnZh
bHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdl
QnVmZmVyPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+Ojp2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVk
aWE6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFBhaW50RnJhbWVGb3JNZWRpYT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFJlc3RvcmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPFJvdGF0ZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPFNhdmU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8U2NhbGU+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPFNldENUTT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0SW5saW5lRmlsbENvbG9yPjo6dmFs
dWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdy
YWRpZW50OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0SW5saW5lU3Ryb2tlQ29sb3I+
Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2Fw
OgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxT
ZXRMaW5lQ2FwPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0TGluZUpvaW46Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPFNldExpbmVKb2luPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0TWl0ZXJMaW1pdD46OnZhbHVlKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2V0U3Ryb2tlVGhp
Y2tuZXNzPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlRWxsaXBzZToKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0
cnVjdGlibGU8U3Ryb2tlRWxsaXBzZT46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBh
dGg6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFN0cm9rZUlubGluZVBhdGg+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFN0cm9rZVJlY3Q+Ojp2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTdHJva2VMaW5lPjo6dmFsdWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUcmFuc2xhdGU+Ojp2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lLCB0
eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxU
LCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0
cnVlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotdHlwZW5hbWUgc3RkOjplbmFibGVfaWZf
dDwhSGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gY29weUludG8oY29uc3QgSXRlbUhhbmRsZSYgaXRl
bUhhbmRsZSwgdWludDhfdCogZGVzdGluYXRpb25XaXRoT2Zmc2V0KQotewotICAgIG5ldyAoZGVz
dGluYXRpb25XaXRoT2Zmc2V0KSBJdGVtKGl0ZW1IYW5kbGUuZ2V0PEl0ZW0+KCkpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhjb25zdCBJdGVtSGFu
ZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQpCi17Ci0gICAg
YXV0byogbmV3SXRlbSA9IG5ldyAoZGVzdGluYXRpb25XaXRoT2Zmc2V0KSBJdGVtKGl0ZW1IYW5k
bGUuZ2V0PEl0ZW0+KCkpOwotICAgIHJldHVybiBuZXdJdGVtLT5pc1ZhbGlkKCk7Ci19Ci0KLWJv
b2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKLXsK
LSAgICBhdXRvIGl0ZW1UeXBlID0gdHlwZSgpOwotICAgIGRlc3RpbmF0aW9uLmRhdGFbMF0gPSBz
dGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAgYXV0byBpdGVtT2Zmc2V0ID0gZGVz
dGluYXRpb24uZGF0YSArIHNpemVvZih1aW50NjRfdCk7Ci0gICAgc3dpdGNoIChpdGVtVHlwZSkg
ewotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxDbGlwT3V0VG9QYXRoPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwUGF0aD4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAg
ICByZXR1cm4gY29weUludG88RHJhd0ZvY3VzUmluZ1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3Rm9jdXNSaW5nUmVjdHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gY29weUludG88RHJhd0dseXBo
cz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZl
cjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJl
dHVybiBjb3B5SW50bzxEcmF3TGluZXNGb3JUZXh0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICByZXR1cm4gY29weUludG88
RHJhd05hdGl2ZUltYWdlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UGF0dGVybj4oKnRoaXMs
IGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1
cm4gY29weUludG88RHJhd1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsQ29t
cG9zaXRlZFJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxQYXRoPigqdGhpcywgaXRlbU9mZnNl
dCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxGaWxsUmVjdFdpdGhDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gY29weUlu
dG88RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJv
dW5kZWRSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0SW1h
Z2VEYXRhOgotICAgICAgICByZXR1cm4gY29weUludG88R2V0SW1hZ2VEYXRhPigqdGhpcywgaXRl
bU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1
cm4gY29weUludG88UHV0SW1hZ2VEYXRhPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRMaW5lRGFz
aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAg
ICAgICByZXR1cm4gY29weUludG88U2V0U3RhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tl
UGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNl
U2NhbGVGYWN0b3I6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBseURldmljZVNjYWxlRmFj
dG9yPigqdGhpcywgaXRlbU9mZnNldCk7Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6
OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBseUZpbGxQYXR0
ZXJuPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQ
YXR0ZXJuOgotICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlTdHJva2VQYXR0ZXJuPigqdGhp
cywgaXRlbU9mZnNldCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5U
cmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxDbGVhclJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPENsZWFyU2hhZG93PigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICByZXR1cm4gY29weUludG88Q2xp
cE91dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdl
QnVmZmVyOgotICAgICAgICByZXR1cm4gY29weUludG88Q2xpcFRvSW1hZ2VCdWZmZXI+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPENvbmNhdGVuYXRlQ1RNPigqdGhpcywgaXRlbU9mZnNldCk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPERyYXdFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0xpbmU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TGluZT4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd1JlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZFRyYW5z
cGFyZW5jeUxheWVyPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bEVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsRWxsaXBzZT4oKnRoaXMsIGl0
ZW1PZmZzZXQpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbElubGluZVBh
dGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxS
ZWN0OgotICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHJldHVybiBjb3B5
SW50bzxGbHVzaENvbnRleHQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVy
biBjb3B5SW50bzxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1C
dWZmZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9y
TWVkaWE6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxQYWludEZyYW1lRm9yTWVkaWE+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICByZXR1
cm4gY29weUludG88UmVzdG9yZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFJvdGF0ZT4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50
bzxTYXZlPigqdGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0g
ICAgICAgIHJldHVybiBjb3B5SW50bzxTY2FsZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldENUTT4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoK
LSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZUZpbGxDb2xvcj4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZUZpbGxHcmFkaWVudD4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICBy
ZXR1cm4gY29weUludG88U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICByZXR1cm4gY29weUludG88
U2V0TGluZUNhcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVKb2luOgotICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZUpvaW4+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICByZXR1
cm4gY29weUludG88U2V0TWl0ZXJMaW1pdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNl
dFN0cm9rZVRoaWNrbmVzcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VFbGxpcHNlPigq
dGhpcywgaXRlbU9mZnNldCk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0
cm9rZUlubGluZVBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSNlbmRpZgotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VSZWN0Pigq
dGhpcywgaXRlbU9mZnNldCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZUxpbmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxUcmFuc2xh
dGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBJ
dGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1CdWZmZXJIYW5kbGVzJiYgaGFuZGxlcykKICAgICA6
IG1fcmVhZE9ubHlCdWZmZXJzKFdURk1vdmUoaGFuZGxlcykpCiB7CkBAIC02MDUsNyArNDcsNiBA
QCBJdGVtQnVmZmVyOjp+SXRlbUJ1ZmZlcigpCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1C
dWZmZXImJiBvdGhlcikKICAgICA6IG1fcmVhZGluZ0NsaWVudChzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fcmVhZGluZ0NsaWVudCwgbnVsbHB0cikpCiAgICAgLCBtX3dyaXRpbmdDbGllbnQoc3RkOjpl
eGNoYW5nZShvdGhlci5tX3dyaXRpbmdDbGllbnQsIG51bGxwdHIpKQotICAgICwgbV9pdGVtc1Rv
RGVzdHJveUluQWxsb2NhdGVkQnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faXRlbXNUb0Rl
c3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCiAgICAgLCBtX2FsbG9jYXRlZEJ1ZmZlcnMo
c3RkOjpleGNoYW5nZShvdGhlci5tX2FsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCiAgICAgLCBtX3Jl
YWRPbmx5QnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVhZE9ubHlCdWZmZXJzLCB7IH0p
KQogICAgICwgbV93cml0YWJsZUJ1ZmZlcihzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fd3JpdGFibGVC
dWZmZXIsIHsgfSkpCkBAIC02MTcsNyArNTgsNiBAQCBJdGVtQnVmZmVyJiBJdGVtQnVmZmVyOjpv
cGVyYXRvcj0oSXRlbUJ1ZmZlciYmIG90aGVyKQogewogICAgIG1fcmVhZGluZ0NsaWVudCA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZWFkaW5nQ2xpZW50LCBudWxscHRyKTsKICAgICBtX3dyaXRp
bmdDbGllbnQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fd3JpdGluZ0NsaWVudCwgbnVsbHB0cik7
Ci0gICAgbV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycyA9IHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9pdGVtc1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycywgeyB9KTsKICAgICBtX2Fs
bG9jYXRlZEJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fYWxsb2NhdGVkQnVmZmVycywg
eyB9KTsKICAgICBtX3JlYWRPbmx5QnVmZmVycyA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZWFk
T25seUJ1ZmZlcnMsIHsgfSk7CiAgICAgbV93cml0YWJsZUJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV93cml0YWJsZUJ1ZmZlciwgeyB9KTsKQEAgLTY1MSw5ICs5MSw2IEBAIHZvaWQgSXRl
bUJ1ZmZlcjo6Zm9yRWFjaEl0ZW1CdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVy
SGFuZGxlJik+JiYgbWFwCiAKIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xlYXIoKQogewotICAgIGZvciAo
YXV0byBpdGVtIDogc3RkOjpleGNoYW5nZShtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0ZWRCdWZm
ZXJzLCB7IH0pKQotICAgICAgICBpdGVtLmRlc3Ryb3koKTsKLQogICAgIGZvciAoYXV0byogYnVm
ZmVyIDogc3RkOjpleGNoYW5nZShtX2FsbG9jYXRlZEJ1ZmZlcnMsIHsgfSkpCiAgICAgICAgIGZh
c3RGcmVlKGJ1ZmZlcik7CiAKQEAgLTY2NCw3ICsxMDEsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmNs
ZWFyKCkKIAogRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZm
ZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHsKLSAgICBhdXRvIHNpemVGb3JCdWZm
ZXJTd2l0Y2hJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIpOworICAgIGF1dG8gc2l6ZUZvckJ1ZmZlclN3aXRj
aEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyPigpOwogICAgIGlmIChtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICsgbnVtYmVyT2ZC
eXRlcyArIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVtIDw9IG1fd3JpdGFibGVCdWZmZXIuY2FwYWNp
dHkpCiAgICAgICAgIHJldHVybiBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpObzsKIApAQCAtNjgwLDIw
ICsxMTcsMzIgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVC
dWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKICAgICByZXR1cm4gaGFkUHJldmlv
dXNCdWZmZXIgPyBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpZZXMgOiBEaWRDaGFuZ2VJdGVtQnVmZmVy
OjpObzsKIH0KIAotdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJ
dGVtKQordm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1w
b3JhcnlJdGVtKQogewotICAgIGF1dG8gZGF0YSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRl
bSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKKyAgICBh
dXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZv
ckl0ZW0odGVtcG9yYXJ5SXRlbSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5l
SXRlbTsKKyAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0pIHsKKyAgICAgICAgb3V0T2ZMaW5l
SXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJdGVt
KTsKKyAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIGF1dG8gZGF0YUxlbmd0aCA9IGRhdGEtPnNpemUoKTsKKyAgICBhdXRvIGRhdGFM
ZW5ndGggPSB2YWx1ZU9yQ29tcHV0ZShyZXF1aXJlZFNpemVGb3JJdGVtLCBbJl0geworICAgICAg
ICBBU1NFUlQob3V0T2ZMaW5lSXRlbSk7CisgICAgICAgIHJldHVybiBvdXRPZkxpbmVJdGVtLT5z
aXplKCk7CisgICAgfSk7CiAgICAgYXV0byBhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRl
bSA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVp
bnQ2NF90KSwgZGF0YUxlbmd0aCk7CiAKICAgICBhdXRvIGJ1ZmZlckNoYW5nZWQgPSBzd2FwV3Jp
dGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSk7CiAK
LSAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc10gPSBzdGF0
aWNfY2FzdDx1aW50OF90Pih0ZW1wb3JhcnlJdGVtLnR5cGUoKSk7CisgICAgbV93cml0YWJsZUJ1
ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
aXRlbVR5cGUodGVtcG9yYXJ5SXRlbSkpOwogICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Qq
PihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzKVsxXSA9IGRh
dGFMZW5ndGg7Ci0gICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRlbk51
bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0YS0+ZGF0YUFzVUludDhQdHIo
KSwgZGF0YUxlbmd0aCk7CisgICAgYXV0byogbG9jYXRpb24gPSBtX3dyaXRhYmxlQnVmZmVyLmRh
dGEgKyBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICsgMiAqIHNpemVvZih1aW50NjRfdCk7CisKKyAg
ICBpZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKKyAgICAgICAgbV93cml0aW5nQ2xpZW50LT5lbmNv
ZGVJdGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0aW9uKTsKKyAgICBlbHNlCisgICAgICAg
IG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxl
bmd0aCk7CiAKICAgICBkaWRBcHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJ
dGVtLCBidWZmZXJDaGFuZ2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaAppbmRleCAxMzhkOWNhMGJkNzM0M2RiYmY1ZjUxOTE2MDdjM2IxOTJhMzc3YmViLi41
Nzg5Yzk1Nzk1ZTU4MDQ4YTA0NTQzMzk0OWQ3ZDNhNDFiNTZkMTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDEwICsyNSwxMyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw5ICs0MSw2IEBAIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0OwogCi1lbnVtIEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJdGVtQnVmZmVySWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8SXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKLQogLy8gQW4gSXRlbUJ1ZmZlckhh
bmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCBjb250YWlucyBkaXNwbGF5IGxp
c3QgaXRlbSBkYXRhLgogc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGUgewogICAgIEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXI7CkBAIC01Myw1MiArNTMsNDIgQEAgc3RydWN0IEl0ZW1CdWZm
ZXJIYW5kbGUgewogCiB1c2luZyBJdGVtQnVmZmVySGFuZGxlcyA9IFZlY3RvcjxJdGVtQnVmZmVy
SGFuZGxlLCAyPjsKIAotLy8gQW4gSXRlbUhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYW4gSXRl
bVR5cGUgZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkgYW4gaXRlbSBvZiB0aGF0IHR5cGUuCi0vLyBF
YWNoIGl0ZW0gaGFuZGxlIGRhdGEgcG9pbnRlciBpcyBhbGlnbmVkIHRvIDggYnl0ZXMsIGFuZCB0
aGUgaXRlbSBpdHNlbGYgaXMgYWxzbyBhbGlnbmVkCi0vLyB0byA4IGJ5dGVzLiBUbyBlbnN1cmUg
dGhpcywgdGhlIGl0ZW0gdHlwZSBjb25zaXN0cyBvZiA4IGJ5dGVzICgxIGJ5dGUgZm9yIHRoZSB0
eXBlIGFuZCA3Ci0vLyBieXRlcyBvZiBwYWRkaW5nKS4KLXN0cnVjdCBJdGVtSGFuZGxlIHsKLSAg
ICB1aW50OF90KiBkYXRhIHsgbnVsbHB0ciB9OwotCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKLSAgICBib29sIGlz
RHJhd2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3
aW5nSXRlbSh0eXBlKCkpOyB9Ci0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISEoKnRoaXMpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZGF0YTsg
fQotCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi0gICAgQ1N0cmluZyBk
ZXNjcmlwdGlvbigpIGNvbnN0OwotI2VuZGlmCitlbnVtIGNsYXNzIERpZENoYW5nZUl0ZW1CdWZm
ZXIgOiBib29sIHsgTm8sIFllcyB9OwogCi0gICAgSXRlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEl0ZW1UeXBlPihkYXRhWzBdKTsgfQorY2xhc3MgSXRlbUJ1ZmZlcldy
aXRpbmdDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkl0ZW1CdWZmZXJXcml0aW5nQ2xp
ZW50KCkgeyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IFQ6Oml0ZW1UeXBlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCYgZ2V0KCkgY29uc3QKKyAgICB2aXJ0dWFsIEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1
ZmZlcihzaXplX3QpCiAgICAgewotICAgICAgICBBU1NFUlQoaXM8VD4oKSk7Ci0gICAgICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxUKj4oJmRhdGFbc2l6ZW9mKHVpbnQ2NF90KV0pOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGJvb2wgc2FmZUNvcHkoSXRlbUhhbmRsZSBk
ZXN0aW5hdGlvbikgY29uc3Q7Ci19OworICAgIHZpcnR1YWwgT3B0aW9uYWw8c3RkOjpzaXplX3Q+
IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQogCi1lbnVtIGNsYXNzIERpZENo
YW5nZUl0ZW1CdWZmZXIgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi1jbGFzcyBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SXRlbUJ1ZmZlcldy
aXRpbmdDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlSXRlbUlubGluZShjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mLCB2b2lkKikgY29uc3QKKyAgICB7CisgICAgfQogCi0gICAgdmly
dHVhbCBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KSA9IDA7Ci0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5kbGUpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVtQnVmZmVySGFu
ZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5nZUl0ZW1CdWZmZXIpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6
ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5nZUl0ZW1CdWZmZXIpCisgICAgeworICAgICAgICBV
TlVTRURfUEFSQU0obnVtYmVyT2ZCeXRlcyk7CisgICAgfQogfTsKIAogY2xhc3MgSXRlbUJ1ZmZl
clJlYWRpbmdDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkl0ZW1CdWZmZXJSZWFkaW5n
Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5V
U0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoLCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFs
IE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7CiB9
OwogCiAvLyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEsIGFu
ZCBjb25zaXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFuZGxlICh0byB3aGljaCBkaXNw
bGF5CkBAIC0xNDksMjYgKzEzOSwxNSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YSBiYWNrIGludG8g
YW4gaXRlbSBvZiB0eXBlIFQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJn
cz4gdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUgfHwgIVQ6OmlzSW5s
aW5lSXRlbSk7Ci0KLSAgICAgICAgaWYgKCFUOjppc0lubGluZUl0ZW0gJiYgbV93cml0aW5nQ2xp
ZW50KSB7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgICAgIF9fZGVjbHNwZWMoYWxpZ24o
OCkpIHR5cGVkZWYgdWludDhfdCBFbmNvZGluZ0J1ZmZlcltzaXplb2YodWludDY0X3QpICsgc2l6
ZW9mKFQpXTsKLSNlbHNlCi0gICAgICAgICAgICB1c2luZyBFbmNvZGluZ0J1ZmZlciBfX2F0dHJp
YnV0ZV9fKChhbGlnbmVkICg4KSkpID0gdWludDhfdFtzaXplb2YodWludDY0X3QpICsgc2l6ZW9m
KFQpXTsKLSNlbmRpZgotICAgICAgICAgICAgc3RhdGljIEVuY29kaW5nQnVmZmVyIHRlbXBvcmFy
eUl0ZW1CdWZmZXI7Ci0gICAgICAgICAgICB0ZW1wb3JhcnlJdGVtQnVmZmVyWzBdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwotICAgICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJ
dGVtQnVmZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOwotICAgICAgICAgICAgYXBwZW5kKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKLSAgICAg
ICAgICAgIEl0ZW1IYW5kbGUgeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0uZGVzdHJveSgpOworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFs
dWUgPT0gVDo6aXNJbmxpbmVJdGVtKTsKKworICAgICAgICBpZiAoIVQ6OmlzSW5saW5lSXRlbSkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93cml0aW5nQ2xpZW50KTsKKyAgICAgICAg
ICAgIGFwcGVuZChEaXNwbGF5TGlzdEl0ZW0oVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZl
ckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChwYWRkZWRTaXplT2ZUeXBlQW5k
SXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpKTsKLQotICAgICAgICBpZiAoIXN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpCi0gICAgICAgICAgICBtX2l0ZW1zVG9EZXN0cm95
SW5BbGxvY2F0ZWRCdWZmZXJzLmFwcGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0
dGVuTnVtYmVyT2ZCeXRlc10gfSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBX
cml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlczxUPigp
KTsKIAogICAgICAgICB1bmNoZWNrZWRBcHBlbmQ8VD4oYnVmZmVyQ2hhbmdlZCwgc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICB9CkBAIC0xODMsMTggKzE2MiwxNyBAQCBwcml2YXRl
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZC
eXRlcywgRGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBEaWRDaGFu
Z2VJdGVtQnVmZmVyIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5
dGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChE
aWRDaGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIsIEFyZ3MmJi4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0gPSAmbV93cml0YWJsZUJ1ZmZlci5kYXRh
W21fd3JpdHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAgICBzdGFydE9mSXRlbVswXSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgbmV3IChzdGFydE9mSXRlbSAr
IHNpemVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAg
ICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5
cGUpLCBkaWRDaGFuZ2VJdGVtQnVmZmVyKTsKKyAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8VD4oKSwgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAg
fQogCiAgICAgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqIG1fcmVhZGluZ0NsaWVudCB7IG51bGxw
dHIgfTsKICAgICBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCogbV93cml0aW5nQ2xpZW50IHsgbnVs
bHB0ciB9OwotICAgIFZlY3RvcjxJdGVtSGFuZGxlPiBtX2l0ZW1zVG9EZXN0cm95SW5BbGxvY2F0
ZWRCdWZmZXJzOwogICAgIFZlY3Rvcjx1aW50OF90Kj4gbV9hbGxvY2F0ZWRCdWZmZXJzOwogICAg
IEl0ZW1CdWZmZXJIYW5kbGVzIG1fcmVhZE9ubHlCdWZmZXJzOwogICAgIEl0ZW1CdWZmZXJIYW5k
bGUgbV93cml0YWJsZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzQ5N2YzOTUwNThhNjc2ODY0
NDhhMjU1NzE3NDBjZjQwMzdhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRp
Zmllci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisK
K2VudW0gSXRlbUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEl0ZW1CdWZmZXJJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJdGVtQnVmZmVySWRlbnRpZmllclR5cGU+OworCit9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRiMWRiOTQ3YWI4NTU3ZjAwY2FmOWQwMTc2ZTcxYjI1ZDk2MTU4
YzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgotCi0jaW5j
bHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgewotCi1zdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1U
eXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2
ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihTYXZlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0
b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFJlc3RvcmUpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihUcmFuc2xhdGUpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihSb3RhdGUpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNjYWxlKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIHNpemVvZihDb25j
YXRlbmF0ZUNUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKFNldENUTSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldElubGluZUZpbGxHcmFkaWVudCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNl
dElubGluZUZpbGxDb2xvcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29s
b3I6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU2V0SW5saW5lU3Ryb2tlQ29sb3IpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihT
ZXRTdHJva2VUaGlja25lc3MpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKFNldFN0YXRlKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2Fw
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVDYXApOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFNldExpbmVEYXNoKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihTZXRMaW5l
Sm9pbik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJu
IHNpemVvZihTZXRNaXRlckxpbWl0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihDbGVhclNoYWRvdyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXQpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBUb0ltYWdl
QnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKENsaXBPdXRUb1BhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihE
cmF3R2x5cGhzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAg
IHJldHVybiBzaXplb2YoRHJhd0ltYWdlQnVmZmVyKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd05hdGl2ZUltYWdlKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3
UGF0dGVybik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAgIHJldHVybiBz
aXplb2YoRHJhd1JlY3QpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKERyYXdMaW5lKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JU
ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdMaW5lc0ZvclRleHQpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Vs
bGlwc2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0VsbGlwc2UpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXRoKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihE
cmF3Rm9jdXNSaW5nUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3Rz
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdGb2N1c1JpbmdSZWN0cyk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmlsbFJlY3QpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9m
KEZpbGxSZWN0V2l0aENvbG9yKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFk
aWVudDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsUmVjdFdpdGhHcmFkaWVudCk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9m
KEZpbGxDb21wb3NpdGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZpbGxSb3VuZGVkUmVjdCk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZp
bGxJbmxpbmVQYXRoKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAg
ICAgICByZXR1cm4gc2l6ZW9mKEZpbGxQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxs
aXBzZToKLSAgICAgICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNoQ29udGV4dCk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcik7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyOgotICAgICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gc2l6ZW9m
KEdldEltYWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAg
ICByZXR1cm4gc2l6ZW9mKFB1dEltYWdlRGF0YSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRG
cmFtZUZvck1lZGlhOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFBhaW50RnJhbWVGb3JNZWRpYSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihT
dHJva2VSZWN0KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKFN0cm9rZUxpbmUpOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBzaXplb2Yo
U3Ryb2tlSW5saW5lUGF0aCk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRo
OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFN0cm9rZVBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBzaXplb2YoU3Ryb2tlRWxsaXBzZSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gc2l6ZW9mKENsZWFy
UmVjdCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAg
ICAgcmV0dXJuIHNpemVvZihCZWdpblRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmRUcmFu
c3BhcmVuY3lMYXllcik7Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ry
b2tlUGF0dGVybjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihBcHBseVN0cm9rZVBhdHRlcm4pOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoQXBwbHlGaWxsUGF0dGVybik7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURl
dmljZVNjYWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgLyogU2VlIHRo
ZSBjb21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aGF0IHRoaXMg
bWVhbnMuCi0gICAgICogVGhpcyBuZWVkcyB0byBtYXRjaCBhbGwgdGhlICJzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNEcmF3aW5nSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNz
ZXMuICovCi0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURl
dmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZp
bGxQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRp
ZgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
VG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5k
czoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
SXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgSXRlbVR5
cGU6OlJvdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6
OlNjYWxlOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRp
ZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0
ZXJMaW1pdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAg
IGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3Rz
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5
cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3Np
dGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRp
ZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxS
ZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
UHV0SW1hZ2VEYXRhOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5B
QkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0
aDoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1zaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0
ZW1UeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9N
dWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7Ci19
Ci0KLWJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCi17Ci0gICAgLyogU2VlIHRoZSBj
b21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aGF0IHRoaXMgbWVh
bnMuCi0gICAgICogVGhpcyBuZWVkcyB0byBtYXRjaCAoMSkgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6ZW5jb2RlSXRlbSgpLCAoMikgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSgp
LAotICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5l
SXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMuICovCi0KLSAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRo
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBv
c2l0ZWRSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJ
bWFnZURhdGE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0U3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6
Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVt
VHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBUb0ltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbEVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5
cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0
ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTY2FsZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxH
cmFkaWVudDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2lu
OgotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0j
aWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5s
aW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19
IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggMGVmZDBiNzJiMDI5YWZiMDEyODkx
MDMwOWNmZTFiYmNkZDZkMzkxZS4uNGUxZmViYzdhZWZlMTdlNjg5MDBhMGIwYTQxNWRlNWM4MzMw
OGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk5LDkgKzk5LDUg
QEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IsCiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0
ZW1JbkJ5dGVzKEl0ZW1UeXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbmxpbmVJdGVtKEl0
ZW1UeXBlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSk7Ci0K
IH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMGU0MGEyNmFlMDA5N2RjODBlNDhi
MjQyZWIxOWRmZjk2YzQxYjNmZS4uM2ZkMzU4MmI0NjQ1MmJjMmY2ZTAxYTdkZmNkOGJiZjA4ZWUy
ODU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIK
IAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlM
aXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCkBAIC0yMjAsMTIgKzIyMSwxMiBAQCBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRAog
ewogfQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5h
dGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybklt
YWdlKQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRp
dmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFn
ZSkgY29uc3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0
ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0g
UGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0
dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5t
X3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtl
UmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAg
ICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAg
IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtl
UmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAg
ICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmls
bFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1f
ZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0
KTsKIH0KIApAQCAtMTA4NSwxOTUgKzEwODYsMTIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0p
Ci17Ci0gICAgdHMgPDwgaXRlbS50eXBlKCk7Ci0KLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxU
cmFuc2xhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Um90YXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2NhbGU+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8U2V0Q1RNPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
b25jYXRlbmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVu
dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0U3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTZXRMaW5lQ2FwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRMaW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZURhc2g+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TWl0ZXJM
aW1pdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcE91dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxD
bGlwT3V0VG9QYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PERyYXdHbHlwaHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVy
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PERyYXdQYXR0ZXJuPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1JlY3Q+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3TGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmVzRm9yVGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRo
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVj
dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29s
b3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxS
b3VuZGVkUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RmlsbElubGluZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmx1c2hD
b250ZXh0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFu
ZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8R2V0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFN0cm9rZVJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZUxpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCk7Ci0gICAg
ICAgIGJyZWFrOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5
cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUlubGlu
ZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGVhclJlY3Q+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCk7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgLy8gSXRlbXMgd2l0aCBubyBhZGRpdGlvbmFsIGRhdGEuCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0
ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxs
UGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAg
ICBicmVhazsKLSAgICB9CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCit7CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3Qg
YXV0byYgZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgIHRzIDw8IGRpc3BsYXlMaXN0SXRlbS5p
dGVtVHlwZTsKKyAgICAgICAgdHMgPDwgZGlzcGxheUxpc3RJdGVtOworICAgIH0sIGl0ZW0pOwog
ICAgIHJldHVybiB0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXgg
MWI5ZmUzNzk4ZTJkMTg1MDNhZDI5Yzk0ZTk4OTM5NjFkZDY0NzU4YS4uZWJmNmZkMjIxZTljYjJj
ODc3ZWJhZjIyYWQ2MjMyYWUyZjc3OGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCkBAIC0yNiwxMSArMjYsMTQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAi
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1C
dWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgogI2lu
Y2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAi
R2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmgiCkBAIC0zOCw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGV4dFN0cmVhbTsKQEAgLTUzLDEyICs1Nywx
MCBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiAvKiBpc0lubGluZUl0ZW0gaW5kaWNhdGVz
IHdoZXRoZXIgdGhlIG9iamVjdCBuZWVkcyB0byBiZSBwYXNzZWQgdGhyb3VnaCBJUEM6OkVuY29k
ZXIgaW4gb3JkZXIgdG8gc2VyaWFsaXplLAogICogb3Igd2hldGhlciB3ZSBjYW4ganVzdCB1c2Ug
cGxhY2VtZW50IG5ldyBhbmQgYmUgZG9uZS4KLSAqIEl0IG5lZWRzIHRvIG1hdGNoICgxKSBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5OjplbmNvZGVJdGVtKCksICgyKSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpkZWNvZGVJdGVtKCksCi0gKiBhbmQgKDMpIGlzSW5saW5lSXRlbSgpIGluIERpc3BsYXlM
aXN0SXRlbVR5cGUuY3BwLgogICoKICAqIGlzRHJhd2luZ0l0ZW0gaW5kaWNhdGVzIGlmIHRoaXMg
Y29tbWFuZCBjYW4gYWZmZWN0IGRpcnR5IHJlY3RzLgogICogV2UgY2FuIGRvIHRoaW5ncyBsaWtl
IHNraXAgZHJhd2luZyBpdGVtcyB3aGVuIHJlcGxheWluZyB0aGVtIGlmIHRoZWlyIGV4dGVudHMg
ZG9uJ3QgaW50ZXJzZWN0IHdpdGggdGhlIGN1cnJlbnQgY2xpcC4KLSAqIEl0IG5lZWRzIHRvIG1h
dGNoIGlzRHJhd2luZ0l0ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcC4gKi8KKyAqLwog
CiBjbGFzcyBTYXZlIHsKIHB1YmxpYzoKQEAgLTI3Nyw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2Rl
KERlY29kZXImKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1h
Z2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOwor
ICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRl
cm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIHN0cnVjdCBQYXR0ZXJuRGF0YSB7CkBAIC05MTEsNyArOTEzLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSB7IHJldHVybiBtX2ZvbnRJZGVudGlm
aWVyOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIEZsb2F0
UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAg
Y29uc3QgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mIGdseXBocygpIGNvbnN0IHsgcmV0
dXJuIG1fZ2x5cGhzOyB9CkBAIC0yMjc0LDcgKzIyNzYsOTcgQEAgcHJpdmF0ZToKICAgICBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7Cit1c2luZyBEaXNwbGF5TGlzdEl0
ZW0gPSBWYXJpYW50PAorICAgIFNhdmUsCisgICAgUmVzdG9yZSwKKyAgICBUcmFuc2xhdGUsCisg
ICAgUm90YXRlLAorICAgIFNjYWxlLAorICAgIFNldENUTSwKKyAgICBDb25jYXRlbmF0ZUNUTSwK
KyAgICBTZXRJbmxpbmVGaWxsR3JhZGllbnQsCisgICAgU2V0SW5saW5lRmlsbENvbG9yLAorICAg
IFNldElubGluZVN0cm9rZUNvbG9yLAorICAgIFNldFN0cm9rZVRoaWNrbmVzcywKKyAgICBTZXRT
dGF0ZSwKKyAgICBTZXRMaW5lQ2FwLAorICAgIFNldExpbmVEYXNoLAorICAgIFNldExpbmVKb2lu
LAorICAgIFNldE1pdGVyTGltaXQsCisgICAgQ2xlYXJTaGFkb3csCisgICAgQ2xpcCwKKyAgICBD
bGlwT3V0LAorICAgIENsaXBUb0ltYWdlQnVmZmVyLAorICAgIENsaXBPdXRUb1BhdGgsCisgICAg
Q2xpcFBhdGgsCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAgRW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzLAorICAgIERyYXdHbHlwaHMsCisgICAgRHJhd0ltYWdlQnVmZmVyLAor
ICAgIERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGF0dGVybiwKKyAgICBCZWdpblRyYW5zcGFy
ZW5jeUxheWVyLAorICAgIEVuZFRyYW5zcGFyZW5jeUxheWVyLAorICAgIERyYXdSZWN0LAorICAg
IERyYXdMaW5lLAorICAgIERyYXdMaW5lc0ZvclRleHQsCisgICAgRHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlciwKKyAgICBEcmF3RWxsaXBzZSwKKyAgICBEcmF3UGF0aCwKKyAgICBEcmF3Rm9jdXNS
aW5nUGF0aCwKKyAgICBEcmF3Rm9jdXNSaW5nUmVjdHMsCisgICAgRmlsbFJlY3QsCisgICAgRmls
bFJlY3RXaXRoQ29sb3IsCisgICAgRmlsbFJlY3RXaXRoR3JhZGllbnQsCisgICAgRmlsbENvbXBv
c2l0ZWRSZWN0LAorICAgIEZpbGxSb3VuZGVkUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSwKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICBGaWxsSW5saW5lUGF0aCwK
KyNlbmRpZgorICAgIEZpbGxQYXRoLAorICAgIEZpbGxFbGxpcHNlLAorICAgIEdldEltYWdlRGF0
YSwKKyAgICBQdXRJbWFnZURhdGEsCisgICAgUGFpbnRGcmFtZUZvck1lZGlhLAorICAgIFN0cm9r
ZVJlY3QsCisgICAgU3Ryb2tlTGluZSwKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKyAg
ICBTdHJva2VJbmxpbmVQYXRoLAorI2VuZGlmCisgICAgU3Ryb2tlUGF0aCwKKyAgICBTdHJva2VF
bGxpcHNlLAorICAgIENsZWFyUmVjdCwKKyNpZiBVU0UoQ0cpCisgICAgQXBwbHlTdHJva2VQYXR0
ZXJuLAorICAgIEFwcGx5RmlsbFBhdHRlcm4sCisjZW5kaWYKKyAgICBBcHBseURldmljZVNjYWxl
RmFjdG9yLAorICAgIEZsdXNoQ29udGV4dCwKKyAgICBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXIsCisgICAgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPjsKKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7
CisKK2lubGluZSBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtKGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgZGlzcGxheUxpc3RJdGVtKQoreworICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0
IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkgeworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVt
LmlzRHJhd2luZ0l0ZW07CisgICAgfSwgZGlzcGxheUxpc3RJdGVtKTsKK30KKworaW5saW5lIGNv
bnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlM
aXN0SXRlbSkKK3sKKyAgICByZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBkaXNwbGF5
TGlzdEl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlMaXN0SXRlbS5pdGVtVHlwZTsKKyAg
ICB9LCBkaXNwbGF5TGlzdEl0ZW0pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0
ZXhwciBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKCkKK3sKKyAgICByZXR1
cm4gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRf
dCksIHNpemVvZihUKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWFkODZiZGI5MmQ5YzExODc0ZDk2MTgwZWFiNmY3MTFmOTUwOWYzMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK0Rpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0
b3IoY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0VuZCBp
bW1lZGlhdGVseU1vdmVUb0VuZCkKKyAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCit7
CisgICAgaWYgKGltbWVkaWF0ZWx5TW92ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZ
ZXMpIHsKKyAgICAgICAgaWYgKGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsKKyAgICAgICAg
ICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXpl
KCk7CisgICAgICAgICAgICBtX2N1cnNvciA9IGVuZE9mQ3VycmVudEJ1ZmZlcigpOworICAgICAg
ICB9CisgICAgfSBlbHNlCisgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVy
KCk7Cit9CisKKyNpZiBBU1NFUlRfRU5BQkxFRAorYm9vbCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6
OmF0RW5kKCkgY29uc3QKK3sKKyAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgY29uc3QgYXV0byogaXRlbXMgPSBpdGVtQnVmZmVyKCk7
CisgICAgaWYgKCFpdGVtcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGVuZEN1
cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVt
YmVyT2ZCeXRlczsKKyAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOworfQorI2VuZGlm
CisKK2F1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdCAtPiBPcHRp
b25hbDxWYWx1ZT4KK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIEFTU0VSVCghbV9jdXJy
ZW50SXRlbUluZm8pOworCisgICAgYXV0byBjdXJyZW50SXRlbUluZm8gPSBjdXJyZW50SXRlbSgp
OworICAgIGlmICghY3VycmVudEl0ZW1JbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgbV9jdXJyZW50SXRlbUluZm8gPSB7eyBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1
ZmZlciwgY3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtIH19OworCisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBjdXJyZW50RXh0ZW50OworICAgIGlmIChjdXJyZW50SXRlbUluZm8tPmlzRHJh
d2luZ0l0ZW0gJiYgIW1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHMuaXNFbXB0eSgp
KQorICAgICAgICBjdXJyZW50RXh0ZW50ID0gbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0
ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhdOworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoY3VycmVu
dEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0ZW0pLCBXVEZNb3ZlKGN1cnJlbnRFeHRlbnQpLCBjdXJy
ZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciB9fTsKK30KKwordm9pZCBEaXNwbGF5TGlzdDo6SXRl
cmF0b3I6Om9wZXJhdG9yKysoKQoreworICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgQVNTRVJU
KG1fY3VycmVudEl0ZW1JbmZvKTsKKworICAgIGlmIChtX2N1cnJlbnRJdGVtSW5mby0+aXNEcmF3
aW5nSXRlbSkKKyAgICAgICAgKyttX2RyYXdpbmdJdGVtSW5kZXg7CisKKyAgICBtX2N1cnNvciAr
PSBtX2N1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyOworCisgICAgaWYgKG1fY3Vyc29yID09
IGVuZE9mQ3VycmVudEJ1ZmZlcigpICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZm
ZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CisgICAgICAgIG1fcmVhZE9ubHlCdWZm
ZXJJbmRleCsrOworICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwor
ICAgIH0KKworICAgIG1fY3VycmVudEl0ZW1JbmZvID0geyB9OworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lz
VmFsaWQgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgY29uc3Rl
eHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8
VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3Rh
dGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBi
b29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQoreworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
Zl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sK
KyAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Cit9CisKK3RlbXBsYXRlIDxzdGQ6OnNpemVfdCBJ
PgoraW5saW5lIGF1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpIGNvbnN0
IC0+IE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PgoreworICAgIC8vIFdlIGNhbid0IHVzZSBl
YXJseS1yZXR1cm4gc3R5bGUgaGVyZSBiZWNhdXNlIG9mIHRlbXBsYXRlIGV4cGFuc2lvbiBpbiB0
aGUgY29tcGlsZXIuCisgICAgLy8gRG9pbmcgc28gd291bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBX
ZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBkb2luZyAiaWYgKCkgeyByZXR1cm47IH0gcmV0dXJuOyIg
aW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1cm47IH0gZWxzZSB7IHJldHVybjsgfSIKKyAgICAvLyBv
ciBCKSBjYXVzZSB0aGUgY29tcGlsZXIgdG8gaW5maW5pdGVseSByZWN1cnNlIHdoZW4gZ2VuZXJh
dGluZyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiBj
b25zdGV4cHIgKEkgPCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZSkg
eworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVy
bmF0aXZlX3Q8SSwgRGlzcGxheUxpc3RJdGVtPjsKKworICAgICAgICBjb25zdCBhdXRvKiBlbmRP
ZkN1cnJlbnRCdWZmZXIgPSB0aGlzLT5lbmRPZkN1cnJlbnRCdWZmZXIoKTsKKworICAgICAgICBp
ZiAobV9jdXJzb3IgKyAxID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRl
bVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAgICAgaWYgKGl0ZW1UeXBlICE9IERpc3BsYXlMaXN0
SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRJdGVtPEkgKyAx
PigpOworCisgICAgICAgIGlmIChEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsK
KyAgICAgICAgICAgIGlmIChtX2N1cnNvciArIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRl
czxEaXNwbGF5TGlzdEl0ZW1UeXBlPigpID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpdGVt
ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3RJdGVtVHlwZSo+KG1fY3Vyc29y
ICsgc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWQoaXRlbSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHN0ZDo6c2l6
ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBU
b011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIHNpemVvZihEaXNwbGF5TGlzdEl0ZW1UeXBl
KSk7CisgICAgICAgICAgICByZXR1cm4ge3sgaXRlbSwgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIs
IERpc3BsYXlMaXN0SXRlbVR5cGU6OmlzRHJhd2luZ0l0ZW0gfX07CisgICAgICAgIH0KKworICAg
ICAgICBhdXRvKiBjbGllbnQgPSBpdGVtQnVmZmVyKCktPm1fcmVhZGluZ0NsaWVudDsKKyAgICAg
ICAgaWYgKCFjbGllbnQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIGlmIChtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3QpID4gZW5kT2ZDdXJyZW50QnVm
ZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRh
dGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOworICAg
ICAgICBjb25zdCBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50
NjRfdCk7CisgICAgICAgIGlmIChzdGFydE9mRGF0YSArIGRhdGFMZW5ndGggPiBlbmRPZkN1cnJl
bnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1
dG8gaXRlbSA9IGNsaWVudC0+ZGVjb2RlSXRlbShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRl
bVR5cGUpOworICAgICAgICBpZiAoIWl0ZW0gfHwgIWlzVmFsaWQoaXRlbS52YWx1ZSgpKSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6c2l6ZV90IGN1cnJl
bnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0
aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHt7
IFdURk1vdmUoaXRlbS52YWx1ZSgpKSwgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsIERpc3BsYXlM
aXN0SXRlbVR5cGU6OmlzRHJhd2luZ0l0ZW0gfX07CisgICAgfQorCisgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKK30KKwordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0
YXJ0T2ZDdXJyZW50QnVmZmVyKCkKK3sKKyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOwor
ICAgIGlmICghaXRlbXMpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbnVtYmVyT2ZSZWFk
T25seUJ1ZmZlcnMgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpOworICAgIGlmICht
X3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAgICAg
ICBhdXRvJiBjdXJyZW50QnVmZmVySGFuZGxlID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21f
cmVhZE9ubHlCdWZmZXJJbmRleF07CisgICAgICAgIG1fY3Vyc29yID0gY3VycmVudEJ1ZmZlckhh
bmRsZS5kYXRhOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVy
SW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOworICAgICAgICBtX2N1cnNvciA9IGl0
ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGE7CisgICAgfQorfQorCit1aW50OF90KiBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmVuZE9mQ3VycmVudEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgYXV0byBp
dGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBBU1NFUlQoaXRlbXMpOworCisgICAgYXV0byBudW1i
ZXJPZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7Cisg
ICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7
CisgICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25seUJ1
ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRCdWZm
ZXJIYW5kbGUuZGF0YSArIGN1cnJlbnRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7CisgICAgfQorCisg
ICAgQVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVy
cyk7CisgICAgcmV0dXJuIGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93
cml0dGVuTnVtYmVyT2ZCeXRlczsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhhMjZhYTJlMjU2MTlmYWZiMzkxMDk0NWFjYTMyNTRm
MDFjYTg2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKQEAgLTAsMCArMSw4MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1z
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2Ns
YXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBJbW1l
ZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKKyAgICBJdGVyYXRvcihjb25zdCBEaXNwbGF5
TGlzdCYsIEltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKTsK
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICZt
X2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVy
Lm1fY3Vyc29yOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9w
ZXJhdG9yKysoKTsKKworICAgIHN0cnVjdCBWYWx1ZSB7CisgICAgICAgIERpc3BsYXlMaXN0SXRl
bSBpdGVtOworICAgICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGV4dGVudDsKKyAgICAgICAgc2l6
ZV90IGl0ZW1TaXplSW5CdWZmZXIgeyAwIH07CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdHJ1
Y3QgQ3VycmVudEl0ZW1SZXN1bHQgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gZGlzcGxheUxp
c3RJdGVtOworICAgICAgICBzdGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wg
aXNEcmF3aW5nSXRlbTsKKyAgICB9OworICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBJID0gMD4K
KyAgICBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4gY3VycmVudEl0ZW0oKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIo
KTsKKyAgICB1aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKKworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCisKKyAgICBJdGVtQnVm
ZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVy
SWZFeGlzdHMoKTsgfQorCisgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Cisg
ICAgc3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CisgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1
ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAgbXV0YWJsZSBP
cHRpb25hbDxDdXJyZW50SXRlbUluZm8+IG1fY3VycmVudEl0ZW1JbmZvOworICAgIHVpbnQ4X3Qq
IG1fY3Vyc29yIHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3JlYWRPbmx5QnVmZmVySW5kZXgg
eyAwIH07CisgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAgfTsKK307CisKK30KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA4MzdmMGU5MGUy
N2Y1OThjMGNiN2U5MTM2NDNlMDViOGEwMzAwNjkzLi44N2Y2NjY3ZThiYjg2ODE5N2E0MjlkZDc5
OGVmMTdmOTA3YzIxZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCkBAIC0xMjEsMjYgKzEyMSwxNyBAQCB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsCiAgICAgICAg
IGFwcGVuZDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCpjaGFuZ2VzLm1fc3RhdGUuZmlsbEdyYWRp
ZW50LCBjaGFuZ2VzLm1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogfQogCi12
b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSB0eXBlKQotewotICAg
IGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT53aWxsQXBwZW5kSXRlbU9mVHlw
ZSh0eXBlKTsKLQotICAgIGlmIChpc0RyYXdpbmdJdGVtKHR5cGUpCi0jaWYgVVNFKENHKQotICAg
ICAgICB8fCB0eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4gfHwgdHlwZSA9PSBJ
dGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlcyA9IGN1cnJlbnRTdGF0ZSgpLnN0
YXRlQ2hhbmdlOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5jaGFuZ2VzRnJvbVN0YXRlKGN1
cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwotICAgICAgICBpZiAoY2hhbmdlc0Zyb21M
YXN0U3RhdGUpIHsKLSAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0
cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkpOwot
ICAgICAgICAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0YXRlQ2hhbmdlcywgY2hhbmdlc0Zy
b21MYXN0U3RhdGUpOwotICAgICAgICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7
IH07Ci0gICAgICAgICAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGVD
aGFuZ2VzLm1fc3RhdGU7Ci0gICAgICAgIH0KLSAgICAgICAgY3VycmVudFN0YXRlKCkud2FzVXNl
ZEZvckRyYXdpbmcgPSB0cnVlOwordm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZERyYXdpbmdJdGVt
KCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2VzID0gY3Vy
cmVudFN0YXRlKCkuc3RhdGVDaGFuZ2U7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MgY2hhbmdlc0Zyb21MYXN0U3RhdGUgPSBzdGF0ZUNoYW5nZXMuY2hhbmdlc0Zy
b21TdGF0ZShjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKKyAgICBpZiAoY2hhbmdl
c0Zyb21MYXN0U3RhdGUpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywg
c3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKSk7
CisgICAgICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZUNoYW5nZXMsIGNoYW5nZXNGcm9t
TGFzdFN0YXRlKTsKKyAgICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07Cisg
ICAgICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9z
dGF0ZTsKICAgICB9CisgICAgY3VycmVudFN0YXRlKCkud2FzVXNlZEZvckRyYXdpbmcgPSB0cnVl
OwogfQogCiB2b2lkIFJlY29yZGVyOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMGNlYzQ4ZDcxNjNh
NjFjOTE4ODBlMjZmNTE2ZGFhMmEwNzA5M2NhYS4uZjIwZTYzNjlhMGQyZDE5NDQwY2IzOGJjYzAw
N2UxZGNiMjc4ZTJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBA
IC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFz
cy4uLiBBcmdzPgogICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAgICAg
ICAgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoVDo6aXRlbVR5cGUpOworICAgICAgICB3aWxsQXBwZW5k
SXRlbU9mVHlwZTxUPigpOwogICAgICAgICBtX2Rpc3BsYXlMaXN0LmFwcGVuZDxUPihzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pOwogCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoVDo6aXNEcmF3
aW5nSXRlbSkgewpAQCAtMTcyLDcgKzE3MiwyMSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlw
ZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCB3aWxsQXBwZW5kSXRlbU9m
VHlwZSgpCisgICAgeworICAgICAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgICAgIG1fZGVs
ZWdhdGUtPndpbGxBcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKTsKKworICAgICAgICBpZiAo
VDo6aXNEcmF3aW5nSXRlbQorI2lmIFVTRShDRykKKyAgICAgICAgICAgIHx8IFQ6Oml0ZW1UeXBl
ID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4gfHwgVDo6aXRlbVR5cGUgPT0gSXRlbVR5
cGU6OkFwcGx5U3Ryb2tlUGF0dGVybgorI2VuZGlmCisgICAgICAgICkKKyAgICAgICAgICAgIHdp
bGxBcHBlbmREcmF3aW5nSXRlbSgpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2lsbEFwcGVuZERyYXdpbmdJdGVtKCk7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0
aXZlSW1hZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmlu
ZGV4IGQxNzM3YTI3OWMzOTdlMDkwOTNkMTM4NDMzZGIzODQ3ZDZmNDc0OTIuLmUzMmUwNjE5Nzdl
YzZiODA5NWYzZTY1OTZhNjgyMzE2ZWJkZGFhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVw
bGF5ZXIuaCIKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlICJEaXNw
bGF5TGlzdEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTUyLDkg
KzUzLDggQEAgR3JhcGhpY3NDb250ZXh0JiBSZXBsYXllcjo6Y29udGV4dCgpIGNvbnN0CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRsZSBp
dGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1h
Z2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IFQmIGltYWdlQnVmZmVySXRlbSkK
IHsKLSAgICBhdXRvJiBpbWFnZUJ1ZmZlckl0ZW0gPSBpdGVtLmdldDxUPigpOwogICAgIGF1dG8g
cmVzb3VyY2VJZGVudGlmaWVyID0gaW1hZ2VCdWZmZXJJdGVtLmltYWdlQnVmZmVySWRlbnRpZmll
cigpOwogICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGltYWdlQnVmZmVycy5nZXQocmVzb3Vy
Y2VJZGVudGlmaWVyKSkgewogICAgICAgICBpbWFnZUJ1ZmZlckl0ZW0uYXBwbHkoY29udGV4dCwg
KmltYWdlQnVmZmVyKTsKQEAgLTY0LDkgKzY0LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWMK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFu
ZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgY29uc3QgVCYgbmF0aXZlSW1hZ2VJ
dGVtKQogewotICAgIGF1dG8mIG5hdGl2ZUltYWdlSXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAg
YXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBuYXRpdmVJbWFnZUl0ZW0uaW1hZ2VJZGVudGlmaWVy
KCk7CiAgICAgaWYgKGF1dG8qIGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50
aWZpZXIpKSB7CiAgICAgICAgIG5hdGl2ZUltYWdlSXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2Up
OwpAQCAtNzUsMTAgKzc0LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWMKICAgICByZXR1cm4g
cmVzb3VyY2VJZGVudGlmaWVyOwogfQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRs
ZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0
aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIGNvbnN0IFNldFN0YXRlJiBzZXRTdGF0ZUl0
ZW0pCiB7Ci0gICAgYXV0byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7Ci0K
ICAgICBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlID0gbnVsbHB0cjsKICAgICBOYXRp
dmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CiAKQEAgLTk5LDkgKzk2LDggQEAg
aW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5
U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBz
dGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVt
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFw
JiBmb250cywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBjb25zdCBUJiBmb250
SXRlbSkKIHsKLSAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byBy
ZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwogICAgIGlmIChh
dXRvKiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgZm9u
dEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwpAQCAtMTEwLDY4ICsxMDYsNjggQEAgaW5saW5l
IHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0
ZW0oR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCi1z
dGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQor
ZXh0ZXJuIEdyYXBoaWNzQ29udGV4dCYgc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dDsK
K3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0YXRpYyBpbmxpbmUgY29uc3Rl
eHByIGJvb2wgSGFzQXBwbHkgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBp
bmxpbmUgY29uc3RleHByIGJvb2wgSGFzQXBwbHk8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPFQ+KCkuYXBwbHkoc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dCkpPj4g
PSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHkoY29uc3QgSXRl
bSYsIEdyYXBoaWNzQ29udGV4dCYpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Citz
dGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQXBwbHk8SXRlbT4sIHZv
aWQ+IGFwcGx5KGNvbnN0IEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0KQoreworICAgIHJldHVybiBpdGVtLmFwcGx5KGdyYXBoaWNzQ29udGV4dCk7Cit9CisKK2F1
dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIC0+IEFw
cGx5SXRlbVJlc3VsdAogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5
KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0IH07CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKKyAgICBh
dXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBEcmF3SW1hZ2VCdWZmZXIm
IGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZm
ZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1h
Z2VCdWZmZXI+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0ZW0p
IC0+IHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZm
ZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2
ZUltYWdlPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkgLT4g
QXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4oY29udGV4
dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVw
bGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZv
bnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCisgICAgfSwgWyZd
KGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBp
ZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFn
ZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAg
ICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNl
LCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJl
dHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0
ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250
ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd0dseXBo
cyYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4
dCgpLCBtX2ZvbnRzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFz
b246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7CisgICAgfSwgWyZd
KGNvbnN0IFNldFN0YXRlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAo
YXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0o
Y29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBT
dG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChtX21h
c2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Oklu
dmFsaWRJdGVtLCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVt
LmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAgbV9tYXNrSW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlwSXRlbS5kZXN0
aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRleHQpOwogICAg
ICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIFdURjo6bnVsbG9wdCB9OwogICAgICAgICByZXR1cm4g
eyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlz
PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAg
ICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxh
eVJlYXNvbjo6SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBjbGlw
SXRlbSA9IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAgbV9j
b250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0uZGVz
dGluYXRpb24oKSk7CiAgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBp
dGVtLmFwcGx5KGNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfTsKKyAgICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0
IHsKKyAgICAgICAgYXBwbHkoaXRlbSwgY29udGV4dCgpKTsKKyAgICAgICAgcmV0dXJuIHsgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNp
dCh2aXNpdG9yLCBpdGVtKTsKIH0KIAogUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29u
c3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QpCkBAIC0xODcs
MjggKzE4MywzMCBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgIHNpemVfdCBpID0gMDsK
ICNlbmRpZgogICAgIFJlcGxheVJlc3VsdCByZXN1bHQ7Ci0gICAgZm9yIChhdXRvIFtpdGVtLCBl
eHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogbV9kaXNwbGF5TGlzdCkgeworICAgIGZvciAoY29u
c3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogbV9kaXNwbGF5TGlzdCkgeworICAgICAgICBpZiAo
IWRpc3BsYXlMaXN0SXRlbSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5n
ID0gU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW07CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5C
dWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisKICAgICAgICAgaWYgKCFpbml0aWFs
Q2xpcC5pc1plcm8oKSAmJiBleHRlbnQgJiYgIWV4dGVudC0+aW50ZXJzZWN0cyhpbml0aWFsQ2xp
cCkpIHsKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8
PCAic2tpcHBpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwogICAgICAgICAgICAgcmVzdWx0
Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghaXRlbSkgewotICAgICAgICAgICAgcmVz
dWx0LnJlYXNvbkZvclN0b3BwaW5nID0gU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW07Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShE
aXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0p
OwogCi0gICAgICAgIGlmIChpdGVtLT5pczxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1h
Z2VCdWZmZXI+KCkpIHsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWV0YUNv
bW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKSkgewogICAgICAgICAgICAg
cmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAg
ICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyOwotICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlvbklt
YWdlQnVmZmVyID0gaXRlbS0+Z2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcj4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgICAgICByZXN1bHQubmV4dERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXIgPSBXVEY6OmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXI+KGl0ZW0pLmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGF1dG8gW3JlYXNvbkZvclN0b3BwaW5nLCBtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyXSA9IGFwcGx5SXRlbSgqaXRlbSk7IHJlYXNvbkZvclN0b3BwaW5nKSB7
CisgICAgICAgIGlmIChhdXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcl0gPSBhcHBseUl0ZW0oaXRlbSk7IHJlYXNvbkZvclN0b3BwaW5nKSB7CiAg
ICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqcmVhc29uRm9yU3RvcHBpbmc7
CiAgICAgICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IFdU
Rk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTIxNyw5ICsyMTUsOSBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25z
dCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAgICBy
ZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKIAogICAgICAgICBp
ZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewotICAgICAgICAgICAgcmVwbGF5TGlzdC0+
YXBwZW5kKCppdGVtKTsKLSAgICAgICAgICAgIGlmIChpdGVtLT5pc0RyYXdpbmdJdGVtKCkpCi0g
ICAgICAgICAgICAgICAgcmVwbGF5TGlzdC0+YWRkRHJhd2luZ0l0ZW1FeHRlbnQoV1RGTW92ZShl
eHRlbnQpKTsKKyAgICAgICAgICAgIHJlcGxheUxpc3QtPmFwcGVuZChpdGVtKTsKKyAgICAgICAg
ICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQorICAgICAgICAgICAgICAgIHJlcGxheUxpc3Qt
PmFkZERyYXdpbmdJdGVtRXh0ZW50KE9wdGlvbmFsPEZsb2F0UmVjdD4oZXh0ZW50KSk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4
IDE4MWExMmIwZTUxOGU4ZGMyMWQzYjc0OWYyNzEwMWQyYTNlOTZmMzkuLjllMDM5MjVjNmRmNWZk
ZDI0NTRjZWFhNzMxODE4ZjNjOWRiYzI2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC02NiwxMiArNjYsMTMgQEAgcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBhcHBseShJdGVtSGFuZGxlLCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoY29uc3QgRGlzcGxheUxpc3RJdGVt
JiwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogICAgIAogcHJp
dmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKLSAgICBzdGQ6OnBh
aXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAgICB1c2luZyBBcHBseUl0ZW1S
ZXN1bHQgPSBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0
ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29u
dGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcz
ODMyM2MwZTA2N2IyZmQyZmQ5ODc0YTM3OGE1MjAxYTQ1MmU1YWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlE
aXNwbGF5TGlzdC5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCisKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9y
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2Ns
YXNzIFdyaXRpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgICBzdGF0aWMgc3RkOjpzaXplX3QgcmVxdWlyZWRTaXplRm9ySXRlbUhlbHBlcihj
b25zdCBUJikKKyAgICB7CisgICAgICAgIHJldHVybiBzaXplb2YoVCk7CisgICAgfQorCisgICAg
T3B0aW9uYWw8c3RkOjpzaXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxp
c3RJdGVtJiBpdGVtKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlz
aXQoW10oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmVkU2l6
ZUZvckl0ZW1IZWxwZXIoaXRlbSk7CisgICAgICAgIH0sIGl0ZW0pOworICAgIH0KKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2b2lkIGVuY29kZUl0ZW1JbmxpbmVIZWxw
ZXIoY29uc3QgVCYgaXRlbSwgdm9pZCogbG9jYXRpb24pCisgICAgeworICAgICAgICBuZXcgKGxv
Y2F0aW9uKSBUKGl0ZW0pOworICAgIH0KKworICAgIHZvaWQgZW5jb2RlSXRlbUlubGluZShjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0sIHZvaWQqIGxvY2F0aW9uKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVJdGVtSW5saW5lSGVscGVyKGl0ZW0sIGxvY2F0aW9uKTsK
KyAgICAgICAgfSwgaXRlbSk7CisgICAgfQorfTsKKworY2xhc3MgUmVhZGluZ0NsaWVudCA6IHB1
YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Citwcml2YXRlOgorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBJID0gMD4KKyAgICBzdGF0
aWMgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBkZWNvZGVJdGVtSGVscGVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKQorICAgIHsKKyAgICAg
ICAgLy8gV2UgY2FuJ3QgdXNlIGVhcmx5LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1c2Ugb2YgdGVt
cGxhdGUgZXhwYW5zaW9uIGluIHRoZSBjb21waWxlci4KKyAgICAgICAgLy8gRG9pbmcgc28gd291
bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUgcnVsZSBhYm91dCBkb2luZyAiaWYg
KCkgeyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAiaWYgKCkgeyByZXR1cm47IH0gZWxz
ZSB7IHJldHVybjsgfSIKKyAgICAgICAgLy8gb3IgQikgY2F1c2UgdGhlIGNvbXBpbGVyIHRvIGlu
ZmluaXRlbHkgcmVjdXJzZSB3aGVuIGdlbmVyYXRpbmcgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25z
IG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIGlmIGNvbnN0ZXhwciAoSSA8IFdURjo6dmFyaWFu
dF9zaXplPERpc3BsYXlMaXN0SXRlbT46OnZhbHVlKSB7CisgICAgICAgICAgICB1c2luZyBEaXNw
bGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8SSwgRGlzcGxheUxp
c3RJdGVtPjsKKyAgICAgICAgICAgIGlmICh0eXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0
ZW1UeXBlKQorICAgICAgICAgICAgICAgIHJldHVybiBkZWNvZGVJdGVtSGVscGVyPEkgKyAxPihk
YXRhLCBkYXRhTGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZGF0YUxl
bmd0aCwgZGF0YUxlbmd0aCA+PSBzaXplb2YoRGlzcGxheUxpc3RJdGVtVHlwZSkpOworICAgICAg
ICAgICAgcmV0dXJuIERpc3BsYXlMaXN0SXRlbSgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBEaXNw
bGF5TGlzdEl0ZW1UeXBlKj4oZGF0YSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoLCBJdGVtVHlwZSB0eXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIGRlY29k
ZUl0ZW1IZWxwZXIoZGF0YSwgZGF0YUxlbmd0aCwgdHlwZSk7CisgICAgfQorfTsKKworY2xhc3Mg
RGVzdHJveWluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citwcml2YXRlOgorICAgIHRlbXBsYXRlIDxzdGQ6OnNp
emVfdCBJID0gMD4KKyAgICBzdGF0aWMgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBkZWNvZGVJ
dGVtSGVscGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlw
ZSB0eXBlKQorICAgIHsKKyAgICAgICAgLy8gV2UgY2FuJ3QgdXNlIGVhcmx5LXJldHVybiBzdHls
ZSBoZXJlIGJlY2F1c2Ugb2YgdGVtcGxhdGUgZXhwYW5zaW9uIGluIHRoZSBjb21waWxlci4KKyAg
ICAgICAgLy8gRG9pbmcgc28gd291bGQgZWl0aGVyIEEpIGJyZWFrIHRoZSBXZWJLaXQgc3R5bGUg
cnVsZSBhYm91dCBkb2luZyAiaWYgKCkgeyByZXR1cm47IH0gcmV0dXJuOyIgaW5zdGVhZCBvZiAi
aWYgKCkgeyByZXR1cm47IH0gZWxzZSB7IHJldHVybjsgfSIKKyAgICAgICAgLy8gb3IgQikgY2F1
c2UgdGhlIGNvbXBpbGVyIHRvIGluZmluaXRlbHkgcmVjdXJzZSB3aGVuIGdlbmVyYXRpbmcgdGVt
cGxhdGUgc3BlY2lhbGl6YXRpb25zIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIGlmIGNvbnN0
ZXhwciAoSSA8IFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0SXRlbT46OnZhbHVlKSB7Cisg
ICAgICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVy
bmF0aXZlX3Q8SSwgRGlzcGxheUxpc3RJdGVtPjsKKyAgICAgICAgICAgIGlmICh0eXBlICE9IERp
c3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgICAgIHJldHVybiBkZWNv
ZGVJdGVtSGVscGVyPEkgKyAxPihkYXRhLCBkYXRhTGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQoZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCA+PSBzaXplb2YoRGlzcGxheUxp
c3RJdGVtVHlwZSkpOworICAgICAgICAgICAgYXV0byYgb2JqZWN0ID0gKnJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgRGlzcGxheUxpc3RJdGVtVHlwZSo+KGRhdGEpOworICAgICAgICAgICAgb2JqZWN0
Ln5EaXNwbGF5TGlzdEl0ZW1UeXBlKCk7CisgICAgICAgICAgICByZXR1cm4gRGlzcGxheUxpc3RJ
dGVtKFRyYW5zbGF0ZSgwLCAwKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIH0KKworICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVT
RURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIEl0ZW1UeXBlIHR5cGUpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gZGVjb2RlSXRl
bUhlbHBlcihkYXRhLCBkYXRhTGVuZ3RoLCB0eXBlKTsKKyAgICB9Cit9OworCitJbk1lbW9yeURp
c3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0KCkKKyAgICA6IG1fd3JpdGluZ0NsaWVudChX
VEY6Om1ha2VVbmlxdWU8V3JpdGluZ0NsaWVudD4oKSkKKyAgICAsIG1fcmVhZGluZ0NsaWVudChX
VEY6Om1ha2VVbmlxdWU8UmVhZGluZ0NsaWVudD4oKSkKK3sKKyAgICBzZXRJdGVtQnVmZmVyQ2xp
ZW50KG1fd3JpdGluZ0NsaWVudC5nZXQoKSk7CisgICAgc2V0SXRlbUJ1ZmZlckNsaWVudChtX3Jl
YWRpbmdDbGllbnQuZ2V0KCkpOworfQorCitJbk1lbW9yeURpc3BsYXlMaXN0Ojp+SW5NZW1vcnlE
aXNwbGF5TGlzdCgpCit7CisgICAgRGVzdHJveWluZ0NsaWVudCBkZXN0cm95aW5nQ2xpZW50Owor
ICAgIHNldEl0ZW1CdWZmZXJDbGllbnQoJmRlc3Ryb3lpbmdDbGllbnQpOworICAgIGF1dG8gZW5k
ID0gdGhpcy0+ZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gdGhpcy0+YmVnaW4oKTsg
aXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKQorICAgICAgICBpdGVyYXRvci5vcGVyYXRvcioo
KTsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGNkOWEwNTE0N2YwZjAwZWVjN2I2NzhhMDU3NDdiMGJhMzNkOGI5YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9J
bk1lbW9yeURpc3BsYXlMaXN0LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJEaXNwbGF5TGlzdC5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworY2xhc3MgSW5NZW1vcnlEaXNwbGF5TGlzdCA6
IHB1YmxpYyBEaXNwbGF5TGlzdCB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgSW5NZW1v
cnlEaXNwbGF5TGlzdCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgfkluTWVtb3J5RGlzcGxheUxp
c3QoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcldyaXRpbmdD
bGllbnQ+IG1fd3JpdGluZ0NsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQ+IG1fcmVhZGluZ0NsaWVudDsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3BsYXlMaXN0Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3BsYXlMaXN0Q2FjaGUuaAppbmRleCAyYjJmMjIzYTEz
NTE2MTYyYjEwZDcxNTRkY2VhMmE2ODU2OWJiM2ZhLi4xYTA3ZTIzNDkxMjEyNWEwYzVjMWMzZjJj
MTM3MTQxMGEzOGU2OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5
cGhEaXNwbGF5TGlzdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dseXBo
RGlzcGxheUxpc3RDYWNoZS5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1
ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC04OSw3ICs4OSw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIHVzaW5nIEdseXBoUnVuTWFwID0g
SGFzaE1hcDxjb25zdCBMYXlvdXRSdW4qLCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0Pj47CisgICAgdXNpbmcgR2x5cGhSdW5NYXAgPSBIYXNoTWFwPGNvbnN0IExheW91
dFJ1biosIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4+
OwogICAgIEdseXBoUnVuTWFwIG1fZ2x5cGhSdW5NYXA7CiB9OwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRl
eCA2Y2ExZTYwZGFhYmU2ZTA1ODFjMjRiNjFhZDA0Yjk5Njg1MzdhY2M2Li42NWUwZWUxMmE2N2Q5
Mjc2Yjk4MWZjMTA0MzcxZmZhZjAxZDlmMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCwzNSArNzQsMjYgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3RJdGVtJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6R2V0SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvJiBnZXRJbWFnZURhdGFJdGVt
ID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YT4oKTsKLSAgICAg
ICAgICAgIFVOVVNFRF9WQVJJQUJMRShnZXRJbWFnZURhdGFJdGVtKTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNjQ5IElt
cGxlbWVudCB0aGlzLgorICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsm
XShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0SW1hZ2VEYXRhJikgewogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwdXRJ
bWFnZURhdGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0
YT4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFn
ZURhdGEmIHB1dEltYWdlRGF0YUl0ZW0pIHsKICAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJ
bWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCks
IHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVjdCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgp
LCBwdXRJbWFnZURhdGFJdGVtLmRlc3RGb3JtYXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGbHVzaENvbnRleHQ+KCkpIHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGbHVzaENvbnRleHQmIGZsdXNoQ29udGV4dCkgewogICAgICAgICAgICAgQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpOwotICAgICAgICAgICAgYXV0byBpZGVu
dGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKS5p
ZGVudGlmaWVyKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBmbHVzaENvbnRleHQu
aWRlbnRpZmllcigpOwogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZEZs
dXNoKGlkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSkgewotICAgICAg
ICAgICAgYXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAg
ICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdl
SXRlbUJ1ZmZlciYgbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKSB7CisgICAgICAgICAgICBh
dXRvIG5leHRCdWZmZXJJZGVudGlmaWVyID0gbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLmlk
ZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5zZXROZXh0
SXRlbUJ1ZmZlclRvUmVhZChuZXh0QnVmZmVySWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0s
IGNvbnRleHQpOworICAgICAgICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICAg
ICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBj
b250ZXh0KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3Is
IGl0ZW0pOwogICAgIH0KIAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBlZTE0MmYyZjU5ZmRi
NmI0Y2FiNTg5MzY3MDNlZGMyNmZjZjE5YjliLi4yMTM0NDFkZGM1ZGU3NTI0OWQ3MWU3ZjA1OTZj
NGMxYzU0YTllMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNCwyMCArMTE0LDE4IEBA
IHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJ
bnQ2NCgpOwogfQogCi1ib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVt
KERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
K2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oY29uc3QgRGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFpdGVtLmlzPERp
c3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGF1dG8mIG1lZGlhSXRlbSA9IGl0ZW0uZ2V0PERpc3BsYXlMaXN0OjpQYWludEZyYW1l
Rm9yTWVkaWE+KCk7Ci0gICAgYXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobWVkaWFJdGVt
LmlkZW50aWZpZXIoKSk7Ci0gICAgaWYgKCFwbGF5ZXIpCisgICAgYXV0byB2aXNpdG9yID0gV1RG
OjptYWtlVmlzaXRvcihbJl0oY29uc3QgRGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSYg
bWVkaWFJdGVtKSB7CisgICAgICAgIGlmIChhdXRvIHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllciht
ZWRpYUl0ZW0uaWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGNvbnRleHQucGFpbnRGcmFtZUZv
ck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0
ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgfSwgW10oY29uc3QgYXV0
byYgaXRlbSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CisgICAgcmV0dXJuIFdU
Rjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCkBAIC0xODIsNyArMTgwLDcgQEAgRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICBl
bHNlCiAgICAgICAgIHJlcGxheWVyRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXIqPigmZGVzdGluYXRpb24pOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllciB7CisgICAgcmV0dXJuIERpc3BsYXlMaXN0OjpSZXBsYXll
ciB7CiAgICAgICAgIGRlc3RpbmF0aW9uLmNvbnRleHQoKSwKICAgICAgICAgZGlzcGxheUxpc3Qs
CiAgICAgICAgICZyZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCksCkBAIC0zMTEs
MTIgKzMwOSwxMiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5
RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lcwogICAgIH0KIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0
aW5hdGlvbklkZW50aWZpZXIpCiB7CiAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVu
dGlmaWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIEdQVVByb2Nlc3NXYWtldXBSZWFzb246OlVuc3BlY2lmaWVkIH0sIFdURjo6
bnVsbG9wdCB9fTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0IHNyY1JlY3Qs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEltYWdlRGF0YT4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMyNiw3
ICszMjQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSQogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoaW1hZ2VEYXRhKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVz
b2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxG
b3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zMzYsNyArMzM0LDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3AKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybFN0cmluZykpOwog
fQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzQ2LDcgKzM0NCw3
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShkYXRhKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFG
b3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50
OF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMzU2LDcgKzM1NCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkYXRhKSk7CiB9CiAKLXZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVy
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcmVzZXJ2ZVJlc29sdXRp
b24gcHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0zNjUsMTggKzM2MywxOCBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJl
bmRlcmluZwogICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
LmNhY2hlZEltYWdlQnVmZmVyKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXIt
PmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpEb250Q29weUJhY2tp
bmdTdG9yZSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHk6OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBiYWNrZW5kU2l6ZSA9
IGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwotICAgICAgICBhdXRvIHJlc3VsdFNpemUgPSBw
cmVzZXJ2ZVJlc29sdXRpb24gPT0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMgPyBi
YWNrZW5kU2l6ZSA6IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpOworICAgICAgICBhdXRvIHJl
c3VsdFNpemUgPSBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMg
PyBiYWNrZW5kU2l6ZSA6IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpOwogICAgICAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFNpemUsIHsg
fSk7CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBh
dXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvbnRleHQtPmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIHJlc3VsdFNpemUsIEZsb2F0UmVjdCB7IHsgfSwgcmVzdWx0U2l6
ZSB9LCBGbG9hdFJlY3QgeyB7IH0sIGJhY2tlbmRTaXplIH0sIHsgV2ViQ29yZTo6Q29tcG9zaXRl
T3BlcmF0b3I6OkNvcHkgfSk7CisgICAgICAgIGNvbnRleHQtPmRyYXdOYXRpdmVJbWFnZSgqaW1h
Z2UsIHJlc3VsdFNpemUsIEZsb2F0UmVjdCB7IHsgfSwgcmVzdWx0U2l6ZSB9LCBGbG9hdFJlY3Qg
eyB7IH0sIGJhY2tlbmRTaXplIH0sIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CiAgICAg
ICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CiAgICAgfSgpOwogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoaGFuZGxlKSk7CkBAIC00MzQsMTA2ICs0MzIsMzMgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShE
aXNwbGF5TGlzdDo6SXRlbUIKICAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6
OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7
CiB9CiAKLU9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFu
ZGxlTG9jYXRpb24pCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSA9IDA+CitzdGF0aWMgaW5saW5l
IE9wdGlvbmFsPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IGRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUp
CiB7Ci0gICAgLyogVGhpcyBuZWVkcyB0byBtYXRjaCAoMSkgaXNJbmxpbmVJdGVtKCkgaW4gRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHAsICgyKSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjplbmNvZGVJ
dGVtKCksCi0gICAgICogYW5kICgzKSBhbGwgdGhlICJzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
bmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRpdmlkdWFsIGl0ZW0gY2xhc3Nlcy4KLSAgICAgKiBT
ZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiBEaXNwbGF5TGlzdEl0ZW1zLmggZm9yIHdoeS4g
Ki8KLQotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpDbGlwT3V0VG9QYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1Bh
dGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1
c1JpbmdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUmVjdHM+KGRhdGEsIGxlbmd0
aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
R2x5cGhzOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3
R2x5cGhzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFu
ZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oZGF0YSwgbGVuZ3RoLCBoYW5k
bGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0
aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAg
IHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxQYXRoPihkYXRhLCBsZW5n
dGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmls
bFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OkZpbGxSZWN0V2l0aENvbG9yPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAg
ICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRp
ZW50PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihkYXRhLCBs
ZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVy
biBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oZGF0YSwgbGVuZ3Ro
LCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExp
bmVEYXNoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTZXRM
aW5lRGFzaD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVy
biBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlN0cm9rZVBhdGg+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseURl
dmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsZWFyUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJTaGFk
b3c6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1
ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFu
c3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlw
c2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVz
aENvbnRleHQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJvdGF0ZToKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldENU
TToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0
U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VF
bGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlN0cm9rZUxpbmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0
ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOiB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgLy8g
V2UgY2FuJ3QgdXNlIGVhcmx5LXJldHVybiBzdHlsZSBoZXJlIGJlY2F1c2Ugb2YgdGVtcGxhdGUg
ZXhwYW5zaW9uIGluIHRoZSBjb21waWxlci4KKyAgICAvLyBEb2luZyBzbyB3b3VsZCBlaXRoZXIg
QSkgYnJlYWsgdGhlIFdlYktpdCBzdHlsZSBydWxlIGFib3V0IGRvaW5nICJpZiAoKSB7IHJldHVy
bjsgfSByZXR1cm47IiBpbnN0ZWFkIG9mICJpZiAoKSB7IHJldHVybjsgfSBlbHNlIHsgcmV0dXJu
OyB9IgorICAgIC8vIG9yIEIpIGNhdXNlIHRoZSBjb21waWxlciB0byBpbmZpbml0ZWx5IHJlY3Vy
c2Ugd2hlbiBnZW5lcmF0aW5nIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGlzIGZ1bmN0
aW9uLgorICAgIGlmIGNvbnN0ZXhwciAoSSA8IFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZSkgeworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0
ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8SSwgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0SXRlbT47CisKKyAgICAgICAgaWYgKHR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6
aXRlbVR5cGUpCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlSXRlbTxJICsgMT4oZGF0YSwgbGVu
Z3RoLCB0eXBlKTsKKworICAgICAgICBBU1NFUlQoIURpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5s
aW5lSXRlbSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIURpc3BsYXlMaXN0SXRlbVR5cGU6Omlz
SW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gSVBDOjpEZWNvZGVy
OjpkZWNvZGVTaW5nbGVPYmplY3Q8RGlzcGxheUxpc3RJdGVtVHlwZT4oZGF0YSwgbGVuZ3RoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSB9OworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK09wdGlvbmFsPERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKQoreworICAgIHJldHVybiBXZWJLaXQ6OmRl
Y29kZUl0ZW0oZGF0YSwgbGVuZ3RoLCB0eXBlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRl
eCAzOTQzZDUyMWQzNjkzZmJkMmNlZjM2YjQ3ZDM0OTZiMWMyZGYzNjU5Li5jOWNjN2MwODRmYWRj
ZGJmM2JiNGFjMjljYTk1OWQ4ZjFhOWUzNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VD
YWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQogCiAgICAgLy8gUmVuZGVy
aW5nIG9wZXJhdGlvbnMuCi0gICAgYm9vbCBhcHBseU1lZGlhSXRlbShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUhhbmRsZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisgICAgYm9vbCBh
cHBseU1lZGlhSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVt
JiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBz
ZW50LgogICAgIHZvaWQgZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTg2
LDE5ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2Vt
YXBob3JlJiYpOwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4g
ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsK
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRpb24p
Ci0gICAgewotICAgICAgICBpZiAoYXV0byBpdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5n
bGVPYmplY3Q8VD4oZGF0YSwgbGVuZ3RoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlYktp
dDIgc2hvdWxkIG5vdCBuZWVkIHRvIGtub3cgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhdCB0aGUg
aGFuZGxlIGFyZSByZXNlcnZlZCBmb3IgdGhlIHR5cGUuCi0gICAgICAgICAgICAvLyBOZWVkIHRv
IGZpZ3VyZSBvdXQgYSB3YXkgdG8ga2VlcCB0aGlzIGtub3dsZWRnZSB3aXRoaW4gZGlzcGxheSBs
aXN0IGNvZGUgaW4gV2ViQ29yZS4KLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBz
aXplb2YodWludDY0X3QpKSBUKFdURk1vdmUoKml0ZW0pKTsKLSAgICAgICAgICAgIHJldHVybiB7
eyBoYW5kbGVMb2NhdGlvbiB9fTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpIG92ZXJyaWRl
OwogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXQoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
IGRlc3RpbmF0aW9uKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGUmLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKaW5kZXggNWJiZjI1NjMwNjI5MGU0OWFjOGRiMzFiNWQwMWFjOTZiNTZh
YWM0Mi4uNTVmODFmNDdkMTAxMGE0NTEyY2QxMmY4MzZmNTU0YzUwNTVhMWQxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTI4MCw3ICsyODAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2lsbEFwcGVuZEl0ZW0obV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIHZvaWQgZGlkQXBwZW5k
RGF0YShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSYgaGFuZGxl
LCBzaXplX3QgbnVtYmVyT2ZCeXRlcywgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpZENoYW5nZUl0
ZW1CdWZmZXIgZGlkQ2hhbmdlSXRlbUJ1ZmZlcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEFwcGVu
ZERhdGEoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUmIGhhbmRs
ZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJ
dGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIpIG92ZXJyaWRlIGZpbmFsCiAgICAgewogICAg
ICAgICBpZiAoTElLRUxZKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5kaWRBcHBlbmREYXRhKGhhbmRsZSwg
bnVtYmVyT2ZCeXRlcywgZGlkQ2hhbmdlSXRlbUJ1ZmZlciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5j
YWNoZUZvbnQoZm9udCk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCisg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZl
cihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoTElL
RUxZKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Y3JlYXRlSXRlbUJ1ZmZlcihjYXBhY2l0eSwg
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtMzAxLDEwMyArMzAxLDIwIEBAIHBy
b3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlIGl0ZW0pIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICAvKiBUaGlzIG5lZWRzIHRv
IG1hdGNoICgxKSBpc0lubGluZUl0ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCwgKDIp
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oKSwKLSAgICAgICAgICogYW5kICgz
KSBhbGwgdGhlICJzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRo
ZSBpbmRpdmlkdWFsIGl0ZW0gY2xhc3Nlcy4KLSAgICAgICAgICogU2VlIHRoZSBjb21tZW50IGF0
IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aHkuICovCi0KLSAgICAgICAgc3dp
dGNoIChpdGVtLnR5cGUoKSkgewotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6
OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4o
aXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KCkpOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAg
ICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkNsaXBQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFBh
dGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVT
aW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPihpdGVt
LmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3Rz
OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUmVjdHM+KCkpOwotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgICAgIHJldHVy
biBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0dseXBocz4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KCkp
OwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVz
Rm9yVGV4dDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9i
amVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oaXRlbS5nZXQ8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgICAgICByZXR1
cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KCkpOwot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0
ZWRSZWN0OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2Jq
ZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KGl0ZW0uZ2V0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwotICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgICAgICBy
ZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZpbGxQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBhdGg+KCkp
OwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoQ29sb3I6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVP
YmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yPihpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwotICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRpZW50PihpdGVtLmdldDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAg
ICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihpdGVtLmdldDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkpOwotICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICAg
ICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
aWxsUm91bmRlZFJlY3Q+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6
ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KGl0
ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KCkpOwotICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAg
ICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlNldExpbmVEYXNoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0
TGluZURhc2g+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U2V0U3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5n
bGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlPihpdGVtLmdldDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVu
Y29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ryb2tlUGF0
aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlN0cm9rZVBhdGg+KCkpOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJSZWN0Ogot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVy
OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1
ZmZlcjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0xpbmU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3UmVjdDoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0
aDoKLSNlbmRpZgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RmlsbFJlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
bHVzaENvbnRleHQ6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZy
YW1lRm9yTWVkaWE6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpSZXN0b3JlOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
Um90YXRlOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2
ZToKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgot
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RNOgotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENv
bG9yOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5s
aW5lRmlsbEdyYWRpZW50OgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICBjYXNlIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29k
ZUl0ZW1PdXRPZkxpbmVIZWxwZXIoY29uc3QgVCYgaXRlbSkKKyAgICB7CisgICAgICAgIGlmIGNv
bnN0ZXhwciAoIVQ6OmlzSW5saW5lSXRlbSkKKyAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29k
ZXI6OmVuY29kZVNpbmdsZU9iamVjdDxUPihpdGVtKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVtKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgZGlzcGxheUxpc3RJ
dGVtKSAtPiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB7CisgICAgICAgICAgICByZXR1
cm4gZW5jb2RlSXRlbU91dE9mTGluZUhlbHBlcihkaXNwbGF5TGlzdEl0ZW0pOworICAgICAgICB9
LCBpdGVtKTsKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2Fm
ZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigpIG92ZXJyaWRlCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzI4NzA0NDI4OGRkMzg3
YWE1Y2FmNjFmYWYyZTA4NDg0MDU2MzQ2Zi4uMzNhODI0NThkMTc5Y2Q4ZTAxMGEzZjNiYzQwNmI5
ODJiM2JkOTkxZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAzLTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNaWdyYXRlIERpc3Bs
YXlMaXN0OjpJdGVyYXRvciB0byB1c2UgYSBWYXJpYW50IGluc3RlYWQgb2YgSXRlbUhhbmRsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKTogTm93IHRoYXQgYSBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCBhbmQg
SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgYXJlCisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZv
ciB1c2luZyBub24taW5saW5lIGRpc3BsYXkgbGlzdCBpdGVtcywgc3BlY2lmeSB0aGVtIGhlcmUg
aW4gdGhlIHRlc3QuCisgICAgICAgICAgICAgICAgQWxzbywgbWlncmF0ZSBmcm9tIEl0ZW1IYW5k
bGUgdG8gRGlzcGxheUxpc3RJdGVtIGxpbmUtYnktbGluZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDogTWlncmF0ZSBmcm9t
IEl0ZW1IYW5kbGUgdG8gRGlzcGxheUxpc3RJdGVtIGxpbmUtYnktbGluZS4KKwogMjAyMS0wMy0y
NCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBG
b2xsb3d1cCB0byBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjc0OTI4L3dlYmtp
dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwCmluZGV4IDFjZTE0NjI4Y2VkNWUwMDY0MjVkMmVjMjlmMWRlMGViNzFmZTEz
NzQuLjc5MTU0ZDBlYWM0OTM2ZDUxMDkxMTUxYzdjODM1NTUyODViMTZkOWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjcsNyArMjcsOSBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3RJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0luTWVtb3J5RGlzcGxheUxpc3QuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01OCw3ICs2MCwxMSBAQCBzdGF0
aWMgUGF0aCBjcmVhdGVDb21wbGV4UGF0aCgpCiAKIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBw
ZW5kSXRlbXMpCiB7Ci0gICAgRGlzcGxheUxpc3QgbGlzdDsKKyAgICBWZWN0b3I8RmlsbFBhdGg+
IGZpbGxQYXRoU3RvcmFnZTsKKyAgICBWZWN0b3I8RmlsbFJlY3RXaXRoR3JhZGllbnQ+IGZpbGxS
ZWN0V2l0aEdyYWRpZW50U3RvcmFnZTsKKyAgICBWZWN0b3I8RmlsbFJlY3RXaXRoQ29sb3I+IGZp
bGxSZWN0V2l0aENvbG9yU3RvcmFnZTsKKworICAgIEluTWVtb3J5RGlzcGxheUxpc3QgbGlzdDsK
IAogICAgIEVYUEVDVF9UUlVFKGxpc3QuaXNFbXB0eSgpKTsKIApAQCAtNzgsNTYgKzg0LDM1IEBA
IFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMpCiAgICAgRVhQRUNUX0ZBTFNFKGxp
c3QuaXNFbXB0eSgpKTsKIAogICAgIGJvb2wgb2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSA9IGZhbHNl
OwotICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnQsIHNpemVdIDogbGlzdCkgewotICAgICAg
ICBzd2l0Y2ggKGhhbmRsZS0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0
cm9rZVRoaWNrbmVzczogewotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS0+aXNEcmF3
aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8U2V0U3Ryb2tl
VGhpY2tuZXNzPigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxTZXRT
dHJva2VUaGlja25lc3M+KCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0g
OiBsaXN0KSB7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIHNpemVdID0gZGlz
cGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAgIAorICAgICAgICBhdXRvIHZpc2l0b3IgPSBX
VEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdHJva2VUaGlja25lc3MmIGl0ZW0pIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAg
RVhQRUNUX0VRKGl0ZW0udGhpY2tuZXNzKCksIDEuNSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDogewotICAgICAgICAgICAg
RVhQRUNUX1RSVUUoaGFuZGxlLT5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNU
X1RSVUUoaGFuZGxlLT5pczxGaWxsUGF0aD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0g
aGFuZGxlLT5nZXQ8RmlsbFBhdGg+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBGaWxsUGF0aCYg
aXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAg
ICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnBhdGgoKS5wbGF0Zm9ybVBhdGgoKSwgcGF0aC5wbGF0
Zm9ybVBhdGgoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDogewotICAgICAgICAgICAgRVhQRUNUX1RS
VUUoaGFuZGxlLT5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFu
ZGxlLT5pczxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVt
ID0gaGFuZGxlLT5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7CisgICAgICAgIH0sIFsmXShj
b25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX1RS
VUUoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnJlY3Qo
KSwgRmxvYXRSZWN0KDEuLCAxLiwgMTAuLCAxMC4pKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgm
aXRlbS5ncmFkaWVudCgpLCBncmFkaWVudC5wdHIoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6IHsKLSAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAg
ICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAg
ICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpOwor
ICAgICAgICB9LCBbJl0oY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBpdGVtKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAgICAgIEVYUEVD
VF9FUShpdGVtLmNvbG9yKCksIENvbG9yOjpyZWQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICAgICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlSW5saW5lUGF0aDogewotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5p
c0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxTdHJv
a2VJbmxpbmVQYXRoPigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxT
dHJva2VJbmxpbmVQYXRoPigpOworICAgICAgICB9LCBbJl0oY29uc3QgU3Ryb2tlSW5saW5lUGF0
aCYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXRlbS5pc0RyYXdpbmdJdGVtKTsK
ICAgICAgICAgICAgIGNvbnN0IGF1dG8gcGF0aCA9IGl0ZW0ucGF0aCgpOwogICAgICAgICAgICAg
YXV0byYgbGluZSA9IHBhdGguaW5saW5lRGF0YTxMaW5lRGF0YT4oKTsKICAgICAgICAgICAgIEVY
UEVDVF9FUShsaW5lLnN0YXJ0LCBGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgICAgIEVYUEVD
VF9FUShsaW5lLmVuZCwgRmxvYXRQb2ludCgxMC4sIDE1LikpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KICNlbmRpZgotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDogewor
ICAgICAgICB9LCBbJl0oY29uc3QgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyJikgeworICAg
ICAgICB9LCBbJl0oY29uc3QgYXV0byYpIHsKICAgICAgICAgICAgIG9ic2VydmVkVW5leHBlY3Rl
ZEl0ZW0gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQor
ICAgICAgICB9KTsKKyAgICAgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBpdGVtKTsKICAgICB9CiAK
ICAgICBFWFBFQ1RfRkFMU0Uob2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSk7CkBAIC0xNDcsMTEgKzEz
MiwxMSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQogCiAgICAgbGlzdC5h
cHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7IDAsIDAsIDEwMCwgMTAwIH0sIENv
bG9yOjpibGFjayk7CiAKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IGxp
c3QpIHsKLSAgICAgICAgRVhQRUNUX0VRKGhhbmRsZS0+dHlwZSgpLCBJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoQ29sb3IpOwotICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPEZpbGxSZWN0V2l0
aENvbG9yPigpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IGxpc3Qp
IHsKKyAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxsUmVjdFdp
dGhDb2xvcj4oZGlzcGxheUxpc3RJdGVtLT5pdGVtKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0
ZW0gPSBXVEY6OmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oZGlzcGxheUxpc3RJdGVtLT5pdGVtKTsK
KyAgICAgICAgRVhQRUNUX0VRKGl0ZW0uaXRlbVR5cGUsIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhD
b2xvcik7CiAKLSAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS0+Z2V0PEZpbGxSZWN0V2l0aENv
bG9yPigpOwogICAgICAgICBFWFBFQ1RfRVEoKml0ZW0uY29sb3IoKS50cnlHZXRBc1NSR0JBQnl0
ZXMoKSwgQ29sb3I6OmJsYWNrKTsKICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVjdCgpLCBGbG9h
dFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKICAgICB9CkBAIC0xNzMsMTIgKzE1OCwxMSBAQCBURVNU
KERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBk
ZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlw
ZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWwKKyAgICAgICAgT3B0aW9uYWw8
RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKICAgICAg
ICAgewogICAgICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsK
ICAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7Ci0gICAg
ICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkgU3Ryb2tlUGF0
aChtX2l0ZW1zWypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSk7Ci0gICAg
ICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07CisgICAgICAgICAgICByZXR1cm4g
eyBEaXNwbGF5TGlzdEl0ZW0oU3Ryb2tlUGF0aChtX2l0ZW1zWypyZWludGVycHJldF9jYXN0PGNv
bnN0IHNpemVfdCo+KGRhdGEpXSkpIH07CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBWZWN0
b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CkBAIC0xOTQsMTkgKzE3OCwxNyBAQCBURVNUKERpc3Bs
YXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXRl
bUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgZmluYWwKICAg
ICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0xUKGNhcGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVy
Q2FwYWNpdHkpOworICAgICAgICAgICAgRVhQRUNUX0xFKGNhcGFjaXR5LCBnbG9iYWxJdGVtQnVm
ZmVyQ2FwYWNpdHkpOwogICAgICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmll
ciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgICAg
IH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5kbGUg
aGFuZGxlKSBjb25zdCBmaW5hbAorICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJ
dGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkgY29uc3QgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6ZSgpOwotICAgICAg
ICAgICAgbV9pdGVtcy5hcHBlbmQoaGFuZGxlLmdldDxTdHJva2VQYXRoPigpKTsKKyAgICAgICAg
ICAgIG1faXRlbXMuYXBwZW5kKFdURjo6Z2V0PFN0cm9rZVBhdGg+KGl0ZW0pKTsKICAgICAgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PigmaW5kZXgpLCBzaXplb2Yoc2l6ZV90KSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZEFwcGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCwgRGlkQ2hhbmdlSXRl
bUJ1ZmZlcikgZmluYWwgeyB9Ci0KICAgICAgICAgVmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1z
OwogICAgIH07CiAKQEAgLTIyNSw4ICsyMDcsOCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0
ZW1CdWZmZXJDbGllbnQpCiAgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlckNsaWVudCgmcmVh
ZGVyKTsKIAogICAgIFZlY3RvcjxJdGVtVHlwZT4gaXRlbVR5cGVzOwotICAgIGZvciAoYXV0byBb
aGFuZGxlLCBleHRlbnQsIHNpemVdIDogc2hhbGxvd0NvcHkpCi0gICAgICAgIGl0ZW1UeXBlcy5h
cHBlbmQoaGFuZGxlLT50eXBlKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJ
dGVtIDogc2hhbGxvd0NvcHkpCisgICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoaXRlbVR5cGUoZGlz
cGxheUxpc3RJdGVtLT5pdGVtKSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uoc2hhbGxvd0NvcHkuaXNF
bXB0eSgpKTsKICAgICBFWFBFQ1RfRVEoaXRlbVR5cGVzLnNpemUoKSwgNFUpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHND
Ry5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RU
ZXN0c0NHLmNwcAppbmRleCBiNTY5ZjM0MDdlMDc1MTVmNjJlMTkwMWVlMDIyZDQxOTQ3ZmYzODlh
Li40NDkxNDVkOTNiN2Y4YTVjMjIzNDE4MDhmZjRmYzkxYjU5ODM5ZDJkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RU
ZXN0c0NHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBJdGVtQnVmZmVySWRlbnRpZmllciBnbG9i
YWxCdWZmZXJJZGVudGlmaWVyID0gSXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyCiAKIGNsYXNz
IFJlYWRpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHJpdmF0
ZToKLSAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRl
bShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KikgZmluYWwK
KyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJ
dGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUpIGZpbmFsCiAgICAgewog
ICAgICAgICBFWFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6OkZpbGxQYXRoKTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKQEAgLTEwMCw4ICsxMDAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFs
SXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25zdCBmaW5hbCB7IHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOyB9Ci0gICAgdm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5k
bGUmLCBzaXplX3QsIERpZENoYW5nZUl0ZW1CdWZmZXIpIGZpbmFsIHsgfQorICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIH0KIH07CiAKIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgT3V0T2ZMaW5lSXRlbURlY29k
aW5nRmFpbHVyZSkK
</data>
<flag name="commit-queue"
          id="443765"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>