<?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>196037</bug_id>
          
          <creation_ts>2019-03-20 15:27:53 -0700</creation_ts>
          <short_desc>Remove the SVG property tear off objects for SVGAnimatedNumber</short_desc>
          <delta_ts>2019-03-21 00:38:11 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>196025</dependson>
          <blocked>191237</blocked>
    
    <blocked>196065</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1519235</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-20 15:27:53 -0700</bug_when>
    <thetext>We need to remove the tear off objects for SVGAnimatedNumber like what was done for SVGAnimatedInteger in https://trac.webkit.org/changeset/243036&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519258</commentid>
    <comment_count>1</comment_count>
      <attachid>365419</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-20 15:54:16 -0700</bug_when>
    <thetext>Created attachment 365419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519261</commentid>
    <comment_count>2</comment_count>
      <attachid>365421</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-20 15:56:02 -0700</bug_when>
    <thetext>Created attachment 365421
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519349</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-20 17:26:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/49087067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519358</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-20 17:36:11 -0700</bug_when>
    <thetext>Committed r243266: &lt;https://trac.webkit.org/changeset/243266&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365419</attachid>
            <date>2019-03-20 15:54:16 -0700</date>
            <delta_ts>2019-03-20 15:54:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196037-20190320155415.patch</filename>
            <type>text/plain</type>
            <size>202034</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg0MWI5YjQxMGQ3YjE4
Y2ZjOGZkMDBjOTNmYTE2YWM5MjY3NzlkYy4uODk3NGFjMjM0NjRmNmY1M2FjMDIyOTkzNTFmZjVk
MzQ5MmJhNTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MyBAQAorMjAxOS0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgU1ZHIHByb3BlcnR5IHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR0FuaW1hdGVkTnVtYmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYwMzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtLSBEZWZp
bmUgU1ZHQW5pbWF0ZWROdW1iZXIgdG8gYmUgU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eTxm
bG9hdD4uCisKKyAgICAgICAgLS0gQWRkIFNWR0FuaW1hdGVkTnVtYmVyQWNjZXNzb3IgdG8gYXNz
b2NpYXRlIGFuIGF0dHJpYnV0ZSBuYW1lIHdpdGggYSAKKyAgICAgICAgICAgcG9pbnRlciB0byBh
biBTVkdBbmltYXRlZE51bWJlci4gR2l2ZW4gYSBwb2ludGVyIHRvIGFuIFNWR0VsZW1lbnQsCisg
ICAgICAgICAgIHRoaXMgYWNjZXNzb3Igd2lsbCBhbmQgY3JlYXRlIGFuIGFuaW1hdG9yIGZvciB0
aGUgYW5pbWF0ZWQgcHJvcGVydHkuCisKKyAgICAgICAgLS0gQWRkIFNWR0FuaW1hdGVkTnVtYmVy
UGFpckFjY2Vzc29yIHRvIGFzc29jaWF0ZSBhbiBhdHRyaWJ1dGUgbmFtZQorICAgICAgICAgICB3
aXRoIGEgcGFpciBvZiBwb2ludGVycyB0byBTVkdBbmltYXRlZE51bWJlcnMuIEdpdmVuIGEgcG9p
bnRlciB0byBhbgorICAgICAgICAgICBTVkdFbGVtZW50LCB0aGlzIGFjY2Vzc29yIHdpbGwgYW5k
IGNyZWF0ZSBhbiBhbmltYXRvciBmb3IgdGhlc2UKKyAgICAgICAgICAgYW5pbWF0ZWQgcHJvcGVy
dGllcy4KKworICAgICAgICAtLSBBZGQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvciB0byBhbmlt
YXRlZCBhbiBTVkdBbmltYXRlZE51bWJlci4KKworICAgICAgICAtLSBBZGQgU1ZHQW5pbWF0ZWRO
dW1iZXJQYWlyQW5pbWF0b3IgdG8gYW5pbWF0ZWQgYSBwYWlyIG9mIFNWR0FuaW1hdGVkTnVtYmVy
cy4KKworICAgICAgICAtLSBBZGQgU1ZHQW5pbWF0aW9uTnVtYmVyRnVuY3Rpb24gd2hpY2ggd2ls
bCBiZSByZXNwb25zaWJsZSBmb3IgcHJvZ3Jlc3NpbmcKKyAgICAgICAgICAgYSBmbG9hdCBvdmVy
IGEgcGVyaW9kIG9mIHRpbWUuCisKKyAgICAgICAgLS0gRGVmaW5lIFNWR051bWJlckFuaW1hdG9y
IHRvIGJlIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I8ZmxvYXQsCisgICAgICAgICAgIFNW
R0FuaW1hdGlvbk51bWJlckZ1bmN0aW9uPi4gU1ZHTnVtYmVyQW5pbWF0b3Igd2lsbCBiZSByZXNw
b25zaWJsZSAKKyAgICAgICAgICAgZm9yIGFuaW1hdGluZyBhdHRyaWJ1dGVzIHdpdGggbm8gcmVm
bGVjdGluZyBhbmltYXRlZCBwcm9wZXJ0aWVzLCBlLmcuCisgICAgICAgICAgICJmaWxsLW9wYWNp
dHkiLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHA6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHA6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcDoK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c2xvcGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmludGVy
Y2VwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudDo6YW1wbGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpleHBvbmVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6b2Zmc2V0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjpzbG9wZUFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50OjppbnRlcmNlcHRBbmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6YW1wbGl0dWRlQW5pbWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmV4
cG9uZW50QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQ6Om9mZnNldEFuaW1hdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVu
dDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29tcG9zaXRlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0
TGVuZ3RoWElkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0
aFlJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxl
bWVudDo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURy
b3BTaGFkb3dFbGVtZW50OjpzZXRTdGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEcm9wU2hhZG93RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN0ZERldmlhdGlvblhJZGVudGlmaWVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN0ZERl
dmlhdGlvbllJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpzZXRTdGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN0ZERldmlhdGlvblhJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3RkRGV2aWF0
aW9uWUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OlNWR0ZFTGlnaHRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50OjphemltdXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFTGlnaHRFbGVtZW50OjplbGV2YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVMaWdodEVsZW1lbnQ6OnggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdo
dEVsZW1lbnQ6OnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6
OnogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnBvaW50c0F0
WCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6cG9pbnRzQXRZ
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojpwb2ludHNBdFog
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnNwZWN1bGFyRXhw
b25lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmxpbWl0
aW5nQ29uZUFuZ2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50
OjphemltdXRoQW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6
OmVsZXZhdGlvbkFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50
Ojp4QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnlBbmlt
YXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6ekFuaW1hdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojpwb2ludHNBdFhBbmltYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6cG9pbnRzQXRZQW5pbWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnBvaW50c0F0WkFuaW1hdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpzcGVjdWxhckV4cG9uZW50
QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmxpbWl0aW5n
Q29uZUFuZ2xlQW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6
OmF0dHJpYnV0ZVJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGln
aHRFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU1vcnBob2xvZ3lFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmFkaXVzWElkZW50aWZpZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmFkaXVzWUlkZW50
aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVPZmZzZXRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6a2Vy
bmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpiYXNlRnJl
cXVlbmN5WElkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHZW9t
ZXRyeUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2VvbWV0cnlFbGVtZW50OjpT
VkdHZW9tZXRyeUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2VvbWV0cnlFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6
OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2VvbWV0cnlFbGVtZW50OjpwYXRoTGVu
Z3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6cGF0aExl
bmd0aEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6YXR0
cmlidXRlUmVnaXN0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2VvbWV0cnlF
bGVtZW50Ojppc0tub3duQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0
aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OlNWR1N0b3BFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1N0b3BFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTdG9wRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dmcvU1ZHU3RvcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5QWNjZXNzb3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbk51bWJlckZ1bmN0aW9uOjpwcm9ncmVzcyk6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcjo6Y3JlYXRlTnVtYmVyQW5pbWF0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3I6OmF0dHJp
YnV0ZUFuaW1hdG9yQ3JlYXRvcik6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHkpOgorCisyMDE5LTAzLTIwICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBTVkcgdGVh
ciBvZmYgb2JqZWN0cyBmb3IgU1ZHQ29sb3JBbmltYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU1ZHIGF0dHJpYnV0ZXMgbGlrZSAiZmlsbCIgYW5k
ICJzdHJva2UiIGRvIG5vdCBoYXZlIHJlZmxlY3RpbmcgcHJvcGVydGllcworICAgICAgICBpbiBT
VkdFbGVtZW50IGJ1dCB0aGV5IGFyZSBhbmltYXRhYmxlIGJ5IFNNSUwuIEFuaW1hdGluZyBzdWNo
IGF0dHJpYnV0ZXMKKyAgICAgICAgaXMgZGlmZmVyZW50IGZyb20gYW5pbWF0aW5nIHRoZSBTVkcg
YW5pbWF0ZWQgcHJvcGVydGllcy4gVGhlc2UgbmV3IGNsYXNzZXMKKyAgICAgICAgd2lsbCBiZSBh
ZGRlZCB0byBoYW5kbGUgdGhlIGZpcnN0IHR5cGUgb2YgdGhpcyBraW5kIG9mIGF0dHJpYnV0ZTog
dGhlIENvbG9yOgorCisgICAgICAgIC0tIFNWR1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yIGlzIGFk
ZGVkIHRvIFNWR0VsZW1lbnQuIEl0IGlzIHJlc3BvbnNpYmxlIAorICAgICAgICAgICBmb3IgY3Jl
YXRpbmcgU1ZHUHJvcGVydHlBbmltYXRvcnMgZm9yIHRoZSBhdHRyaWJ1dGUgd2hpY2ggZG8gbm90
IGhhdmUKKyAgICAgICAgICAgcmVmbGVjdGluZyBhbmltYXRlZCBwcm9wZXJ0aWVzIHN0b3JlZCBi
eSBTVkdFbGVtZW50LiBJdCB3aWxsIG1haW50YWluCisgICAgICAgICAgIGEgSGFzaE1hcCBmb3Ig
dGhlIGFuaW1hdGVkIHZhbHVlcyBmb3IgdGhlc2UgYXR0cmlidXRlcyB3aGljaCBpcyBpbmRleGVk
CisgICAgICAgICAgIGJ5IHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhlIGFuaW1hdGVkIHZhbHVlcyBo
YXMgdG8gYmUgUmVmQ291bnRlZCBiZWNhdXNlCisgICAgICAgICAgIHRoZSBzYW1lIGF0dHJpYnV0
ZSBjYW4gYmUgYW5pbWF0ZWQgYnkgbXVsdGlwbGUgYW5pbWF0b3JzLiBTbyB0aGUgdmFsdWVzCisg
ICAgICAgICAgIG9mIHRoaXMgSGFzaE1hcCB3aWxsIGJlIG9mIHR5cGUgUmVmPFNWR1Byb3BlcnR5
PiwgZS5nLgorICAgICAgICAgICAgPGNpcmNsZSBjeD0iODAiIGN5PSIxMjAiIHI9IjM1Ij4KKyAg
ICAgICAgICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiB2YWx1ZXM9IiMwODAi
IGJlZ2luPSIycyIgLz4KKyAgICAgICAgICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJm
aWxsIiB2YWx1ZXM9IiM2MDI7IzAwNCIgYmVnaW49IjRzIiBkdXI9IjVzIi8+CisgICAgICAgICAg
ICA8L2NpcmNsZT4KKworICAgICAgICAtLSBTVkdQcm9wZXJ0eUFuaW1hdG9yIGlzIHRoZSBhIG5l
dyB0eXBlIHdoaWNoIGFuaW1hdGVzIGFuIGF0dHJpYnV0ZSB3aXRoCisgICAgICAgICAgIG5vIHJl
ZmxlY3RpbmcgYW5pbWF0ZWQgcHJvcGVydHkuCisKKyAgICAgICAgLS0gU1ZHUHJpbWl0aXZlUHJv
cGVydHlBbmltYXRvciBpcyBhIHRlbXBsYXRlIGNsYXNzIHdoaWNoIGlzIHJlc3BvbnNpYmxlCisg
ICAgICAgICAgIGZvciBhbmltYXRpbmcgYXR0cmlidXRlcyB3aXRoIHByaW1pdGl2ZSB0eXBlcywg
ZS5nLiBDb2xvciwgc3RyaW5nIGFuZCAKKyAgICAgICAgICAgZmxvYXQuIEl0IGlzIGRlcml2ZWQg
Zm9ybSBTVkdQcm9wZXJ0eUFuaW1hdG9yIGFuZCBpdCBpcyBpbml0aWFsaXplZCAKKyAgICAgICAg
ICAgd2l0aCBhIFJlZjxTVkdWYWx1ZVByb3BlcnR5PFByb3BlcnR5VHlwZT4+IHdoaWNoIGlzIGNy
ZWF0ZWQgYW5kIG1haW50YWluZWQKKyAgICAgICAgICAgYnkgU1ZHUHJvcGVydHlBbmltYXRvckNy
ZWF0b3IuCisKKyAgICAgICAgLS0gU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbiBpcyB0aGUgYW5p
bWF0aW9uIGZ1bmN0aW9uIHRoYXQgYW5pbWF0ZXMgdGhlCisgICAgICAgICAgIGF0dHJpYnV0ZXMg
d2hvc2UgdHlwZSBhcmUgQ29sb3IuIE5vdGUgdGhlIGNvbnZlcnNpb24gZm9ybSBTdHJpbmcgdG8g
CisgICAgICAgICAgIENvbG9yIGluIHRoaXMgY2xhc3MgaGFzIHRvIGhhbmRsZSB0aGUgY2FzZSB3
aGVuIGl0cyB2YWx1ZSBpcyAiYXR0cmlidXRlTmFtZT0iCisgICAgICAgICAgIGUuZy4gPGFuaW1h
dGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0iYXR0cmlidXRlTmFtZT0iciIvPgorCisgICAg
ICAgIC0tIFNWR0NvbG9yQW5pbWF0b3Igd2lsbCBiZSBkZWZpbmVkIHRvIGJlCisgICAgICAgICAg
IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I8Q29sb3IsIFNWR0FuaW1hdGlvbkNvbG9yRnVu
Y3Rpb24+LgorCisgICAgICAgIFRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBSZWZDb3VudGVkIHByb3Bl
cnRpZXMgY2FuIGJlIGV4cGxhaW5lZCBhcyBmb2xsb3dzOgorCisgICAgICAgIC0tIFNWR1Byb3Bl
cnR5QW5pbWF0b3JDcmVhdG9yIGNoZWNrcyBpdHMgSGFzaE1hcCBpdCBoYXMgYW4gZW50cnkgZm9y
IHRoZQorICAgICAgICAgICBnaXZlbiBhdHRyaWJ1dGUgbmFtZS4gSWYgaXQgZG9lcyBub3QgaGF2
ZSwgaXQgd2lsbCBjcmVhdGUgYSBuZXcgdmFsdWUKKyAgICAgICAgICAgdGhyb3VnaCB0aGUgdmFs
dWUgY3JlYXRpb24gbWV0aG9kIGZvciB0aGlzIGF0dHJpYnV0ZS4KKworICAgICAgICAtLSBTVkdQ
cm9wZXJ0eUFuaW1hdG9yQ3JlYXRvciBwYXNzZXMgdGhlIHNoYXJlZCBhbmltYXRlZCB2YWx1ZSB0
byB0aGUKKyAgICAgICAgICAgYW5pbWF0b3IgY3JlYXRpb24gbWV0aG9kLiBTbyBtdWx0aXBsZSBh
bmltYXRvcnMgd2lsbCBiZSBhY2Nlc3NpbmcgdGhlCisgICAgICAgICAgIHNhbWUgdmFsdWUgdGhy
b3VnaCB0aGVpciBSZWZDb3VudGVkIHBvaW50ZXJzLgorCisgICAgICAgIC0tIFdoZW4gdGhlIGFu
aW1hdG9yIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQsIGl0IHdpbGwgbm90aWZ5IHRoZSB0YXJnZXQK
KyAgICAgICAgICAgU1ZHRWxlbWVudCBhYm91dCB0aGF0IHdoaWNoIHdpbGwgbm90aWZ5IGl0cyBT
VkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvci4KKyAgICAgICAgICAgU1ZHUHJvcGVydHlBbmltYXRv
ckNyZWF0b3Igd2lsbCBjaGVjayBpdHMgSGFzaE1hcCBhbmQgcmV0cmlldmVzIHRoZQorICAgICAg
ICAgICBlbnRyeSBmb3IgdGhlIGdpdmVuIGF0dHJpYnV0ZSBuYW1lLiBJZiB0aGUgcmVmQ291bnQg
aXMgMiwgaXQgaXMgZ29pbmcKKyAgICAgICAgICAgdG8gcmVtb3ZlIHRoZSBlbnRyeSBmb3JtIHRo
ZSBIYXNoTWFwLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlQ29sb3JF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0ZVZhbHVlSXNDdXJyZW50Q29s
b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudDo6
ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZUNvbG9yRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjphdHRyaWJ1
dGVBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQ29sb3IuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL1NWR0F0dHJpYnV0ZUFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlQW5p
bWF0aW9uQ29udHJvbGxlcjo6flNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAg
ICAgICAqIHN2Zy9TVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICog
c3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojppc0FuaW1hdGVkQXR0cmlidXRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNyZWF0ZUFuaW1hdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFuaW1hdG9yV2lsbEJlRGVsZXRlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6
OnByb3BlcnR5QW5pbWF0b3JDcmVhdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHRml0VG9WaWV3Qm94
Lmg6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGlvbkNvbG9yRnVuY3Rpb246OmNvbG9yRnJvbVN0cmluZyk6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9u
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbjo6cHJv
Z3Jlc3MpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkZ1bmN0aW9uLmg6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRTdHlsZVBy
b3BlcnR5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjpy
ZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZUFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0
aXZlUHJvcGVydHlBbmltYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1ByaW1p
dGl2ZVByb3BlcnR5QW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmlt
aXRpdmVQcm9wZXJ0eUFuaW1hdG9yOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yKToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5o
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlBbmltYXRvcjo6U1ZHUHJvcGVy
dHlBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1hdG9yOjphZGp1
c3RGb3JJbmhlcml0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFu
aW1hdG9yOjpjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQcm9wZXJ0eUFuaW1hdG9yOjpjb21wdXRlSW5oZXJpdGVkQ1NTUHJvcGVydHlWYWx1ZSBj
b25zdCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0
b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRv
cjo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1h
dG9yQ3JlYXRvcjo6Y3JlYXRlQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlBbmltYXRvckNyZWF0b3I6OmFuaW1hdG9yV2lsbEJlRGVsZXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcjo6Y3JlYXRlQ29sb3JBbmltYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcjo6YXR0cmlidXRlQW5p
bWF0b3JDcmVhdG9yKToKKwogMjAxOS0wMy0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBhcHBlbmRDaGlsZCBzaG91bGQgdGhyb3cgd2hlbiBpbnNlcnRpbmcg
YW4gYW5jZXN0b3Igb2YgYSB0ZW1wbGF0ZSBpbnRvIGl0cyBjb250ZW50IGFkb3B0ZWQgdG8gYW5v
dGhlciBkb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmOGE3OTlmMmM3NzViZWJlZTA2MjhiOTE4
NzQ0Y2EyOTkwZWY3ZDViLi42ZWRjNDYxNzg3NTZhMTE4MmIxNWNjZjBlZGZjMGU0MjJlZjY0M2Nj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjI3MCwxMyArMjI3MCwxMCBAQCBzdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcAogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAogc3ZnL1NWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAogc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCi1zdmcv
U1ZHQW5pbWF0ZWRDb2xvci5jcHAKIHN2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAogc3Zn
L1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKLXN2
Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKIHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCi1z
dmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAKIHN2Zy9TVkdBbmltYXRlZFBh
dGguY3BwCiBzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRTdHJp
bmcuY3BwCkBAIC0yNDIyLDYgKzI0MTksNyBAQCBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmNwcAogCiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmLmNwcAogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAK
K3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3Bw
CiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKIHN2Zy9wcm9wZXJ0aWVz
L1NWR0F0dHJpYnV0ZU93bmVyUHJveHkuY3BwCiBzdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmlt
YXRlZFByb3BlcnR5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNhMjBjMGY2M2U4Nzg4MGQ1YjJjY2NhNWQ5ODU4OGYxODYx
ZGZkNDIuLmFiMGNlOWM0NzU4N2RiZjI0ZThlNWY2NjQwNDZiNGQ1ZGY0MWUxNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4
MCw3ICsyODAsNiBAQAogCQkwODk1ODI1NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OTU4MjU0
MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4OUE4RTA3MTI4RDhCM0QwMEU3QTUzNCAvKiBT
VkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODlBOEUwNjEyOEQ4QjNEMDBFN0E1MzQgLyog
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwOEE0ODQ3
ODBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhBNDg0NzYwRTUyNzJDNTAwQzNGRTc2IC8qIFNj
cmlwdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkwOEIzNUIxMzEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QjM1QjEyMTI3
QjZBN0MwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlci5oICovOyB9OwogCQkwOEIzNUIxNzEy
N0I2QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEIzNUIxNjEyN0I2QTg4MDA1MzE0REQg
LyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggKi87IH07CiAJCTA4QzdBMkM3MTBEQzc0NjIwMDJE
MzY4QiAvKiBTVkdOYW1lcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTkwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR05h
bWVzLmggKi87IH07CiAJCTA4QzkyNTFBMEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QzkyNTE4
MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE3NSw3ICsxMTc0LDYgQEAKIAkJNDI3REE3
MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjdEQTcxQjEzNzM1REZB
MDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCAqLzsgfTsKIAkJNDI3REE3
MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI3REE3MUMxMzczNURGQTAw
N0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oICovOyB9OwogCQk0MzEwN0JFMjE4
Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzEwN0JFMTE4Q0MxOURFMDBDQzE4RTgg
LyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi87IH07Ci0JCTQzMUEyRjlDMTNCNkYyQjAwMDc3
OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzFBMkY5QTEzQjZGMkIwMDA3NzkxRTQg
LyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oICovOyB9OwogCQk0MzJEM0ZFODE4
QTg2NTg0MDBEN0RDMDMgLyogU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMyRDNGRTcxOEE4NjU4NDAw
RDdEQzAzIC8qIFNlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaCAqLzsgfTsKIAkJNDM1OEU4
N0QxMzYwQTJFRTAwRTQ3NDhDIC8qIEpTU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM1OEU4N0IxMzYwQTJFRTAw
RTQ3NDhDIC8qIEpTU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oICovOyB9OwogCQk0MzU4RTg4MTEz
NjBBMzE3MDBFNDc0OEMgLyogRkVEcm9wU2hhZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzU4RTg3RjEzNjBBMzE3MDBFNDc0OEMgLyogRkVEcm9w
U2hhZG93LmggKi87IH07CkBAIC0xMjIzLDcgKzEyMjEsNiBAQAogCQk0MzlEMzM0MzEzQTY5MTFD
MDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0
ZWRUeXBlLmggKi87IH07CiAJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRl
ZFR5cGVBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM5RDMzNDExM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
LmggKi87IH07CiAJCTQzOUQzMzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3Rv
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQz
MzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsgfTsKLQkJNDNB
NjI1RjgxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQTYyNUY2MTNCMzMwNDAwMEFDOTRC
OCAvKiBTVkdBbmltYXRlZENvbG9yLmggKi87IH07CiAJCTQzQjg1RUQ0MThDQkVDNTIwMEUzMUFG
NCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNCODVFRDIxOENC
RUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVu
dE1hcC5jcHAgKi87IH07CiAJCTQzQjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRl
ZFBvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDNCOTMzNjcxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggKi87
IH07CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0MwOTJC
QTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICovOyB9OwpAQCAt
NTY2MCw3ICs1NjU3LDYgQEAKIAkJMDg5QThFMDYxMjhEOEIzRDAwRTdBNTM0IC8qIFNWR0FuaW1h
dGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwOEE0ODQ3NTBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhBNDg0NzYwRTUyNzJD
NTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwOEIz
NUIxMjEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWROdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDhCMzVCMTYxMjdCNkE4ODAwNTMxNEREIC8qIFNWR0FuaW1hdGVkTnVt
YmVyTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZE51
bWJlckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhDOTI1MTcwRkNDN0M0
QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGaWx0ZXJFZmZlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwOEM5MjUxODBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzU3NCw4ICs3NTcwLDYgQEAKIAkJNDI3REE3MUIxMzczNURGQTAwN0M1N0ZC
IC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MjdEQTcxQzEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2Vydmlj
ZVdvcmtlckludGVybmFscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzEwN0JF
MTE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MzFBMkY5QTEzQjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5pbWF0
ZWROdW1iZXJPcHRpb25hbE51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQzMUEyRjlCMTNCNkYyQjAwMDc3OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9w
dGlvbmFsTnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzFBMkZENjEzQjc3MDdBMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzMkQzRkU3MThBODY1
ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMzMUFDNzcxM0I2ODcwMDAwQTlFNUFFIC8qIFNW
R0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdBbmltYXRlZE51bWJlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzY3MCw5ICs3NjY0LDYgQEAKIAkJNDM5RDMzNDAxM0E2OTExQzAwQzIwRjRGIC8qIFNW
R0FuaW1hdGVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmlt
YXRlZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5RDMzNDExM0E2OTEx
QzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZh
Y3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0b3JGYWN0
b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzQTBGMEIwMTNBQzdENkQwMEE1
RjBBNyAvKiBTVkdBbmltYXRlZE51bWJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdBbmltYXRlZE51bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQzQTYyNUY2MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkQ29sb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDNBNjI1RjcxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0Fu
aW1hdGVkQ29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
QW5pbWF0ZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQTYyNjY2
MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFN0cmluZy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQzQjg1RUQwMThDQkVBQ0UwMEUzMUFGNCAvKiBtYWtlU2VsZWN0
b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRp
YmlsaXR5RWxlbWVudE1hcC5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNCODVF
RDIxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5
RWxlbWVudE1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTZWxl
Y3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9TZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVs
ZW1lbnRNYXAuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtOTUy
Nyw2ICs5NTE4LDExIEBACiAJCTcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5k
TWluTWF4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxlbmRNaW5N
YXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUU1NEUxREM3RjI1QjAwQTkx
RkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWN0aXZpdHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RjFE
QzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyog
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzI2NkYwMTUyMjQxQzA5ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY2RjAxNjIyNDFDMEZFMDA4MzM5NzUgLyogU1ZH
UHJvcGVydHlBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjZGMDE4MjI0MjlDRkQwMDgzMzk3NSAv
KiBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjY2RjAyMDIyNDJFNTg1MDA4MzM5NzUgLyogU1ZHUHJv
cGVydHlBbmltYXRvckNyZWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTYyMzUsNiArMTYyMzEsNyBAQAogCQkJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBT
VkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCAqLywKIAkJCQk1NUJFMDI1RjIyM0IyOUM1MDAzMkYw
OEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVGdW5jdGlvbi5oICovLAogCQkJCTU1RUU1MzVFMjIz
QjJBMEUwMEZCQTk0NCAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaCAqLywK
KwkJCQk3MjY2RjAxODIyNDI5Q0ZEMDA4MzM5NzUgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1
ZUZ1bmN0aW9uSW1wbC5jcHAgKi8sCiAJCQkJNTVCRTAyNTkyMjNCMjlDMTAwMzJGMDhBIC8qIFNW
R0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaCAqLywKIAkJCQk1NURDQzUxRDIy
NDA2MTU1MDBDMjZFMzIgLyogU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbi5oICovLAogCQkJ
CTU1RENDNTFDMjI0MDYwNUUwMEMyNkUzMiAvKiBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9u
SW1wbC5oICovLApAQCAtMTYyNTcsOSArMTYyNTQsMTMgQEAKIAkJCQk1NUVFNTM1NDIyM0IyOUU5
MDBGQkE5NDQgLyogU1ZHTWVtYmVyQWNjZXNzb3IuaCAqLywKIAkJCQk1NUJFMDI1QTIyM0IyOUMy
MDAzMkYwOEEgLyogU1ZHUG9pbnRlck1lbWJlckFjY2Vzc29yLmggKi8sCiAJCQkJNTVEQ0M1MjUy
MjQwNzQ5RTAwQzI2RTMyIC8qIFNWR1ByaW1pdGl2ZUxpc3QuaCAqLywKKwkJCQk3MjY2RjAxNTIy
NDFDMDk4MDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oICovLAorCQkJ
CTcyNjZGMDE0MjI0MUJGQjIwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oICovLAogCQkJCTU1RUU1MzYzMjIzQjJBMjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5o
ICovLAogCQkJCTU1RENDNTI2MjI0MDc0RkEwMEMyNkUzMiAvKiBTVkdQcm9wZXJ0eUFjY2Vzc29y
LmggKi8sCiAJCQkJNTVEQ0M1MjcyMjQwNzUwQjAwQzI2RTMyIC8qIFNWR1Byb3BlcnR5QWNjZXNz
b3JJbXBsLmggKi8sCisJCQkJNzI2NkYwMTYyMjQxQzBGRTAwODMzOTc1IC8qIFNWR1Byb3BlcnR5
QW5pbWF0b3IuaCAqLywKKwkJCQk3MjY2RjAyMDIyNDJFNTg1MDA4MzM5NzUgLyogU1ZHUHJvcGVy
dHlBbmltYXRvckNyZWF0b3IuaCAqLywKIAkJCQk1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyog
U1ZHUHJvcGVydHlPd25lci5oICovLAogCQkJCTU1QkUwMjVDMjIzQjI5QzMwMDMyRjA4QSAvKiBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaCAqLywKIAkJCQk1NUJFMDI1NzIyM0IyOUMwMDAzMkYw
OEEgLyogU1ZHUHJvcGVydHlSZWdpc3RyeS5oICovLApAQCAtMjQxMjksOCArMjQxMzAsNiBAQAog
CQkJCTA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggKi8sCiAJ
CQkJQjIyMjc3RTYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkQW5nbGUuaWRsICovLAog
CQkJCUIyMjI3N0U3MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEJvb2xlYW4uaWRsICov
LAotCQkJCTQzQTYyNUY3MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmNwcCAq
LywKLQkJCQk0M0E2MjVGNjEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oICov
LAogCQkJCTcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9u
LmNwcCAqLywKIAkJCQkwOEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbi5oICovLAogCQkJCUIyMjI3N0U4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uLmlkbCAqLywKQEAgLTI0MTQxLDE0ICsyNDE0MCwxMCBAQAogCQkJCTQzMUEy
RkQ2MTNCNzcwN0EwMDc3OTFFNCAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuY3BwICovLAogCQkJ
CTA4OTAyMUFDMTI2RUY1RTkwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuaCAqLywK
IAkJCQlCMjIyNzdFQjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0Lmlk
bCAqLywKLQkJCQk0M0EwRjBCMDEzQUM3RDZEMDBBNUYwQTcgLyogU1ZHQW5pbWF0ZWROdW1iZXIu
Y3BwICovLAotCQkJCTA4QjM1QjEyMTI3QjZBN0MwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJl
ci5oICovLAogCQkJCUIyMjI3N0VDMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZE51bWJl
ci5pZGwgKi8sCiAJCQkJNDMzMUFDNzcxM0I2ODcwMDAwQTlFNUFFIC8qIFNWR0FuaW1hdGVkTnVt
YmVyTGlzdC5jcHAgKi8sCiAJCQkJMDhCMzVCMTYxMjdCNkE4ODAwNTMxNEREIC8qIFNWR0FuaW1h
dGVkTnVtYmVyTGlzdC5oICovLAogCQkJCUIyMjI3N0VEMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdB
bmltYXRlZE51bWJlckxpc3QuaWRsICovLAotCQkJCTQzMUEyRjlCMTNCNkYyQjAwMDc3OTFFNCAv
KiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcCAqLywKLQkJCQk0MzFBMkY5QTEz
QjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oICovLAog
CQkJCTA4NjM5NTEzMTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovLAog
CQkJCTA4NjM5NTE0MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCAqLywKIAkJ
CQk0M0I5MzM2ODEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICov
LApAQCAtMzE5MjEsMTUgKzMxOTE2LDEyIEBACiAJCQkJQjIyMjc5NzcwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0FuZ2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk3QTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3Qjg0
OTYxMjcyQ0VDODAwQTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQzQTYyNUY4MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwOEQ0NkNFMzEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFGQjk2N0IxMzgzRDY0NjAwQUM4QTRDIC8q
IFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4OTAyMUE5MTI2RUY1REUwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDg5MDIxQUQxMjZFRjVFOTAwOTJENUVBIC8qIFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDQxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDhC
MzVCMTMxMjdCNkE3QzAwNTMxNEREIC8qIFNWR0FuaW1hdGVkTnVtYmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwOEIzNUIxNzEyN0I2QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MzFBMkY5QzEzQjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2Mzk1MTYx
M0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg5QThFMDcxMjhEOEIzRDAwRTdBNTM0IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzQjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAv
KiBTVkdBbmltYXRlZFBvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAKaW5kZXggMGI4MmMxYWI5YzAyMzg2ZWM3
N2M1YjcxMWYxMTAxNGNlMDhhM2FmZS4uOWNjYzY0ZDIzMDQ2NWFkYjIxMGJjYjczNjcxZTQ0ZGM1
NDcyMGI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50
LmNwcApAQCAtNDAsMTkgKzQwLDQgQEAgUmVmPFNWR0FuaW1hdGVDb2xvckVsZW1lbnQ+IFNWR0Fu
aW1hdGVDb2xvckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVDb2xvckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAotc3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcihjb25zdCBT
dHJpbmcmIHZhbHVlKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IGN1cnJlbnRDb2xvcigiY3VycmVudENvbG9yIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHZhbHVlID09IGN1cnJlbnRDb2xvcjsKLX0KLQot
dm9pZCBTVkdBbmltYXRlQ29sb3JFbGVtZW50OjpkZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMo
Y29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKQotewotICAgIFNWR0FuaW1hdGVF
bGVtZW50QmFzZTo6ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb20sIHRvKTsKLSAgICBp
ZiAoYXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcihmcm9tKSkKLSAgICAgICAgbV9mcm9tUHJv
cGVydHlWYWx1ZVR5cGUgPSBDdXJyZW50Q29sb3JWYWx1ZTsKLSAgICBpZiAoYXR0cmlidXRlVmFs
dWVJc0N1cnJlbnRDb2xvcih0bykpCi0gICAgICAgIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSA9IEN1
cnJlbnRDb2xvclZhbHVlOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVD
b2xvckVsZW1lbnQuaAppbmRleCA4N2JhOTZjODRiMzM2NTExODUzMjIxMjAzZWNlZDIwMDNkMjAx
MWM4Li5lMzhhYTc0M2YyZDgwZmUzNjg4MDgxN2MzZjA1ZDVhNDcyYWRhM2JiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDYgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Ci0gICAgdm9pZCBkZXRlcm1pbmVQcm9wZXJ0eVZhbHVl
VHlwZXMoY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBvdmVycmlkZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50QmFzZS5jcHAKaW5kZXggNmIwOWE3ZmYxOThiZGVmYjFmOTkzZWE1NjNiZDFhYzAy
NGVkNGU1Yi4uOGEzNDcwNGQ0ZTJlMGNlZDJjNWY1NWRhNTE0NGI0ZDA0NWM2M2RhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlckJhc2UmIFNWR0FuaW1hdGVFbGVt
ZW50QmFzZTo6YXR0cmlidXRlQW5pbWF0aW9uQ28KICAgICBBU1NFUlQoIWhhc0ludmFsaWRDU1NB
dHRyaWJ1dGVUeXBlKCkpOwogCiAgICAgaWYgKCFtX2F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xs
ZXIpIHsKLSAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQoKS0+aXNBbmltYXRlZFByb3BlcnR5QXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSkpCisgICAgICAgIGlmICh0YXJnZXRFbGVtZW50KCktPmlz
QW5pbWF0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpKSkKICAgICAgICAgICAgIG1fYXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQXR0cmlidXRlQW5p
bWF0aW9uQ29udHJvbGxlcj4oKnRoaXMsICp0YXJnZXRFbGVtZW50KCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBtX2F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXI+KCp0aGlzLCAqdGFy
Z2V0RWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZENvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ2YTc3NWU5MTUwOWFhODEzYWM5YjI0MGM3YmFj
YTVhNGExOGZiOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCi0KLSNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNp
bmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpT
VkdBbmltYXRlZENvbG9yQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCYgYW5pbWF0aW9uRWxl
bWVudCwgU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpCi0gICAgOiBTVkdBbmltYXRlZFR5cGVB
bmltYXRvcihBbmltYXRlZENvbG9yLCAmYW5pbWF0aW9uRWxlbWVudCwgJmNvbnRleHRFbGVtZW50
KQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZENv
bG9yQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17
Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlKFNWR1Byb3BlcnR5VHJhaXRzPENv
bG9yPjo6ZnJvbVN0cmluZyhzdHJpbmcpKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZENvbG9yQW5p
bWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRl
ZFR5cGUqIHRvKQotewotICAgIEFTU0VSVChmcm9tKTsKLSAgICBBU1NFUlQodG8pOwotICAgIEFT
U0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRDb2xvcik7Ci0gICAgQVNTRVJUKHRvLT50eXBl
KCkgPT0gQW5pbWF0ZWRDb2xvcik7Ci0KLSAgICAvLyBJZ25vcmVzIGFueSBhbHBoYSBhbmQgc2V0
cyBhbHBoYSBvbiByZXN1bHQgdG8gMTAwJSBvcGFxdWUuCi0gICAgY29uc3QgYXV0byYgZnJvbUNv
bG9yID0gZnJvbS0+YXM8Q29sb3I+KCk7Ci0gICAgYXV0byYgdG9Db2xvciA9IHRvLT5hczxDb2xv
cj4oKTsKLSAgICB0b0NvbG9yID0geyByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKHRvQ29sb3Iu
cmVkKCkgKyBmcm9tQ29sb3IucmVkKCkpLAotICAgICAgICByb3VuZEFuZENsYW1wQ29sb3JDaGFu
bmVsKHRvQ29sb3IuZ3JlZW4oKSArIGZyb21Db2xvci5ncmVlbigpKSwKLSAgICAgICAgcm91bmRB
bmRDbGFtcENvbG9yQ2hhbm5lbCh0b0NvbG9yLmJsdWUoKSArIGZyb21Db2xvci5ibHVlKCkpIH07
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgQ29sb3IgY3VycmVudENvbG9yKFNWR0VsZW1lbnQmIHRhcmdl
dEVsZW1lbnQpCi17Ci0gICAgUmVuZGVyRWxlbWVudCogdGFyZ2V0UmVuZGVyZXIgPSB0YXJnZXRF
bGVtZW50LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCF0YXJnZXRSZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICByZXR1cm4gdGFyZ2V0UmVuZGVyZXItPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwotfQotCi1zdGF0aWMgQ29sb3IgcGFyc2VDb2xv
ckZyb21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxlbWVudCosIGNvbnN0IFN0cmluZyYgc3RyaW5nKQot
ewotICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RyaW5nLnN0cmlwV2hpdGVTcGFj
ZSgpKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1h
dGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0
RW5kT2ZEdXJhdGlvbiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKLXsKLSAgICBBU1NFUlQo
bV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7Ci0KLSAg
ICBhdXRvIGZyb21Db2xvciA9IChtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9
PSBBbmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDogZnJvbSktPmFzPENvbG9yPigpOwotICAg
IGF1dG8gdG9Db2xvciA9IHRvLT5hczxDb2xvcj4oKTsKLQotICAgIC8vIEFwcGx5IENTUyBpbmhl
cml0YW5jZSBydWxlcy4KLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRh
bmNlPENvbG9yPihwYXJzZUNvbG9yRnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT5mcm9t
UHJvcGVydHlWYWx1ZVR5cGUoKSwgZnJvbUNvbG9yLCBtX2NvbnRleHRFbGVtZW50KTsKLSAgICBt
X2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlPENvbG9yPihwYXJzZUNvbG9y
RnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBlKCksIHRv
Q29sb3IsIG1fY29udGV4dEVsZW1lbnQpOwotCi0gICAgLy8gQXBwbHkgPGFuaW1hdGVDb2xvcj4g
cnVsZXMuCi0gICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBl
KCkgPT0gQ3VycmVudENvbG9yVmFsdWUpCi0gICAgICAgIGZyb21Db2xvciA9IGN1cnJlbnRDb2xv
cigqbV9jb250ZXh0RWxlbWVudCk7Ci0gICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+dG9Qcm9w
ZXJ0eVZhbHVlVHlwZSgpID09IEN1cnJlbnRDb2xvclZhbHVlKQotICAgICAgICB0b0NvbG9yID0g
Y3VycmVudENvbG9yKCptX2NvbnRleHRFbGVtZW50KTsKLQotICAgIGNvbnN0IGF1dG8mIHRvQXRF
bmRPZkR1cmF0aW9uQ29sb3IgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+YXM8Q29sb3I+KCk7Ci0gICAg
YXV0byYgYW5pbWF0ZWRDb2xvciA9IGFuaW1hdGVkLT5hczxDb2xvcj4oKTsKLQotICAgIC8vIEZJ
WE1FOiBFeHRlbmRlZENvbG9yIC0gdGhpcyB3aWxsIG5lZWQgdG8gaGFuZGxlIGJsZW5kaW5nIGJl
dHdlZW4gY29sb3JzIGluIGRpZmZlcmVudCBjb2xvciBzcGFjZXMsCi0gICAgLy8gYXMgd2VsbCBh
cyB3b3JrIHdpdGggbm9uIFswLTI1NV0gQ29sb3JzLgotICAgIGZsb2F0IHJlZCA9IGFuaW1hdGVk
Q29sb3IucmVkKCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1i
ZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21Db2xvci5yZWQoKSwgdG9Db2xvci5yZWQo
KSwgdG9BdEVuZE9mRHVyYXRpb25Db2xvci5yZWQoKSwgcmVkKTsKLQotICAgIGZsb2F0IGdyZWVu
ID0gYW5pbWF0ZWRDb2xvci5ncmVlbigpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tQ29sb3IuZ3JlZW4o
KSwgdG9Db2xvci5ncmVlbigpLCB0b0F0RW5kT2ZEdXJhdGlvbkNvbG9yLmdyZWVuKCksIGdyZWVu
KTsKLQotICAgIGZsb2F0IGJsdWUgPSBhbmltYXRlZENvbG9yLmJsdWUoKTsKLSAgICBtX2FuaW1h
dGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3Vu
dCwgZnJvbUNvbG9yLmJsdWUoKSwgdG9Db2xvci5ibHVlKCksIHRvQXRFbmRPZkR1cmF0aW9uQ29s
b3IuYmx1ZSgpLCBibHVlKTsKLQotICAgIGZsb2F0IGFscGhhID0gYW5pbWF0ZWRDb2xvci5hbHBo
YSgpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNl
bnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tQ29sb3IuYWxwaGEoKSwgdG9Db2xvci5hbHBoYSgpLCB0
b0F0RW5kT2ZEdXJhdGlvbkNvbG9yLmFscGhhKCksIGFscGhhKTsKLQotICAgIGFuaW1hdGVkQ29s
b3IgPSB7IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwocmVkKSwgcm91bmRBbmRDbGFtcENvbG9y
Q2hhbm5lbChncmVlbiksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYmx1ZSksIHJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWwoYWxwaGEpIH07Ci19Ci0KLWZsb2F0IFNWR0FuaW1hdGVkQ29sb3JB
bmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKQotewotICAgIENvbG9yIGZyb20gPSBDU1NQYXJzZXI6OnBhcnNl
Q29sb3IoZnJvbVN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKSk7Ci0gICAgaWYgKCFmcm9tLmlzVmFs
aWQoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIENvbG9yIHRvID0gQ1NTUGFyc2VyOjpwYXJz
ZUNvbG9yKHRvU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpKTsKLSAgICBpZiAoIXRvLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGZsb2F0IHJlZCA9IGZyb20ucmVkKCkgLSB0by5y
ZWQoKTsKLSAgICBmbG9hdCBncmVlbiA9IGZyb20uZ3JlZW4oKSAtIHRvLmdyZWVuKCk7Ci0gICAg
ZmxvYXQgYmx1ZSA9IGZyb20uYmx1ZSgpIC0gdG8uYmx1ZSgpOwotICAgIHJldHVybiBzcXJ0Zihy
ZWQgKiByZWQgKyBncmVlbiAqIGdyZWVuICsgYmx1ZSAqIGJsdWUpOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWU0MDQxYmFlOGM2MzAzNTM0NTk1YjA0MjE5YjE1YzU5ZmMwM2ZlMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRDb2xvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7Ci1wdWJsaWM6Ci0gICAg
U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQmLCBTVkdFbGVtZW50
Jik7Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29u
c3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JikgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZv
aWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0JikgZmluYWwgeyB9Ci0gICAgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlJikgZmluYWwgeyB9
Ci0gICAgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgZmluYWwgeyB9Ci0gICAgdm9pZCBhZGRBbmlt
YXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIGZpbmFsOwotICAg
IHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0
ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgZmluYWw7Ci0gICAgZmxvYXQgY2FsY3VsYXRlRGlz
dGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBm
aW5hbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRMZW5ndGguY3BwCmluZGV4IGEyZTBmMWUwMDhiNTRkMTMyOWYyZjU3NWUyM2E1YjYw
NzU4NTRiY2QuLjU4ZjEwMDMzMjlmNDkyNTIzOWFkZTc3ZGUxOWFiNzIzOTlmZjMyOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcApAQCAtMjIsNyArMjIsNiBAQAog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAKICNpbmNsdWRlICJTVkdBbmltYXRlRWxl
bWVudEJhc2UuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExl
bmd0aExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5j
cHAKaW5kZXggYzQyY2EzZTE3N2E5NTI3OTIzNjBmOTlkODJiN2ZmYWJjMDdlZjI2OS4uM2E3ZGRm
ZjIzNjM5Njc2YTIxNTRkYjExNmJkNmUwMmE3N2EzZWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRl
ICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50
QmFzZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExY2ZmYTQ4N2IwZTI5NGM4MDU2N2FkYjQ4MDk1MGYzZTc3
YTY3MTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJh
c2UuaCIKLSNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1TVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpTVkdBbmltYXRlZE51bWJlckFuaW1h
dG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KQotICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWROdW1i
ZXIsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQotewotfQotCi1zdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25zdHJ1
Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVybiBTVkdBbmlt
YXRlZFR5cGU6OmNyZWF0ZShTVkdQcm9wZXJ0eVRyYWl0czxmbG9hdD46OmZyb21TdHJpbmcoc3Ry
aW5nKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVk
TnVtYmVyQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgcmV0dXJuIGNvbnN0cnVj
dEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWROdW1iZXI+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12
b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBz
dG9wQW5pbVZhbEFuaW1hdGlvbkZvclR5cGU8U1ZHQW5pbWF0ZWROdW1iZXI+KGFuaW1hdGVkVHlw
ZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRv
QmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlw
ZXMsIFNWR0FuaW1hdGVkVHlwZSYgdHlwZSkKLXsKLSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZH
QW5pbWF0ZWROdW1iZXI+KGFuaW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3I6OmFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsV2lsbENoYW5n
ZUZvclR5cGU8U1ZHQW5pbWF0ZWROdW1iZXI+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNW
R0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxEaWRD
aGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkTnVtYmVyPihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9p
ZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVk
VHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKLXsKLSAgICBBU1NFUlQoZnJvbS0+dHlw
ZSgpID09IEFuaW1hdGVkTnVtYmVyKTsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50
eXBlKCkpOwotCi0gICAgdG8tPmFzPGZsb2F0PigpICs9IGZyb20tPmFzPGZsb2F0PigpOwotfQot
Ci1zdGF0aWMgZmxvYXQgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKFNWR0FuaW1hdGlvbkVsZW1lbnQq
LCBjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8
ZmxvYXQ+Ojpmcm9tU3RyaW5nKHN0cmluZyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRv
LCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFu
aW1hdGVkKQotewotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIEFTU0VSVCht
X2NvbnRleHRFbGVtZW50KTsKLQotICAgIGF1dG8gZnJvbU51bWJlciA9IChtX2FuaW1hdGlvbkVs
ZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDog
ZnJvbSktPmFzPGZsb2F0PigpOwotICAgIGF1dG8gdG9OdW1iZXIgPSB0by0+YXM8ZmxvYXQ+KCk7
Ci0gICAgY29uc3QgYXV0byB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlciA9IHRvQXRFbmRPZkR1cmF0
aW9uLT5hczxmbG9hdD4oKTsKLSAgICBhdXRvJiBhbmltYXRlZE51bWJlciA9IGFuaW1hdGVkLT5h
czxmbG9hdD4oKTsKLQotICAgIC8vIEFwcGx5IENTUyBpbmhlcml0YW5jZSBydWxlcy4KLSAgICBt
X2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlPGZsb2F0PihwYXJzZU51bWJl
ckZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBlKCks
IGZyb21OdW1iZXIsIG1fY29udGV4dEVsZW1lbnQpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+
YWRqdXN0Rm9ySW5oZXJpdGFuY2U8ZmxvYXQ+KHBhcnNlTnVtYmVyRnJvbVN0cmluZywgbV9hbmlt
YXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBlKCksIHRvTnVtYmVyLCBtX2NvbnRleHRF
bGVtZW50KTsKLQotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVy
KHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tTnVtYmVyLCB0b051bWJlciwgdG9BdEVuZE9m
RHVyYXRpb25OdW1iZXIsIGFuaW1hdGVkTnVtYmVyKTsKLX0KLQotZmxvYXQgU1ZHQW5pbWF0ZWRO
dW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQotewotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50
KTsKLSAgICBmbG9hdCBmcm9tID0gMDsKLSAgICBmbG9hdCB0byA9IDA7Ci0gICAgcGFyc2VOdW1i
ZXJGcm9tU3RyaW5nKGZyb21TdHJpbmcsIGZyb20pOwotICAgIHBhcnNlTnVtYmVyRnJvbVN0cmlu
Zyh0b1N0cmluZywgdG8pOwotICAgIHJldHVybiBmYWJzZih0byAtIGZyb20pOwotfQotCi19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkYTNkOTZiNDAzNDA1YmYyYmI0YmQzZDZiMTczMDM1N2ZiZTVkNWE0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZE51bWJlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdGF0aWNQ
cm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgot
I2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKLQotdXNpbmcgU1ZHQW5pbWF0ZWROdW1iZXIg
PSBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjxmbG9hdD47Ci11c2luZyBTVkdBbmlt
YXRlZE51bWJlckF0dHJpYnV0ZSA9IFNWR0FuaW1hdGVkQXR0cmlidXRlPFNWR0FuaW1hdGVkTnVt
YmVyPjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgotdXNpbmcgU1ZHQW5pbWF0ZWRO
dW1iZXJBdHRyaWJ1dGVBY2Nlc3NvciA9IFNWR0FuaW1hdGVkQXR0cmlidXRlQWNjZXNzb3I8T3du
ZXJUeXBlLCBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSwgQW5pbWF0ZWROdW1iZXI+OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdBbmltYXRlZE9wdGlvbmFsTnVt
YmVyQXR0cmlidXRlQWNjZXNzb3IgPSBTVkdBbmltYXRlZE9wdGlvbmFsQXR0cmlidXRlQWNjZXNz
b3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSwgQW5pbWF0ZWROdW1iZXJP
cHRpb25hbE51bWJlcj47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewotcHVibGljOgotICAgIFNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKLQot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3Qg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNl
dEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jiwg
U1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsV2lsbENoYW5nZShj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUq
KSBvdmVycmlkZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJM
aXN0LmNwcAppbmRleCBmNTY5ODNjYmQxOWRiYWRmZjJjMmU0MTZiYWI0YmYwZmM5NGYwOWE4Li4w
MmUwMTA4N2I4ODUyNzYwM2FkNTVkYWE5MjM0ZWEzYWM5NjZjYjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIgogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1
MjY2OTRlOWQxYmMxMzA2OGMzMWU5MWI5Y2E1NTcyZDE3ZmJiODkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaCIKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVt
ZW50QmFzZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCi0jaW5jbHVkZSAiU1ZH
UGFyc2VyVXRpbGl0aWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQpCi0gICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLCBhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVu
dCkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQotewotICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZShTVkdQ
cm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj46OmZyb21TdHJpbmcoc3RyaW5n
KSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVt
YmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICByZXR1
cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZXM8U1ZHQW5pbWF0ZWROdW1iZXIsIFNWR0FuaW1hdGVk
TnVtYmVyPihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlv
bmFsTnVtYmVyQW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFu
aW1hdGlvbkZvclR5cGVzPFNWR0FuaW1hdGVkTnVtYmVyLCBTVkdBbmltYXRlZE51bWJlcj4oYW5p
bWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFu
aW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0JiBhbmltYXRlZFR5cGVzLCBTVkdBbmltYXRlZFR5cGUmIHR5cGUpCi17Ci0gICAg
cmVzZXRGcm9tQmFzZVZhbHVlczxTVkdBbmltYXRlZE51bWJlciwgU1ZHQW5pbWF0ZWROdW1iZXI+
KGFuaW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXJBbmltYXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdl
Rm9yVHlwZXM8U1ZHQW5pbWF0ZWROdW1iZXIsIFNWR0FuaW1hdGVkTnVtYmVyPihhbmltYXRlZFR5
cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6
OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBh
bmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlczxTVkdBbmltYXRl
ZE51bWJlciwgU1ZHQW5pbWF0ZWROdW1iZXI+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNW
R0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhT
VkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8pCi17Ci0gICAgQVNTRVJU
KGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICBBU1NF
UlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwotCi0gICAgY29uc3QgYXV0byYgZnJvbU51
bWJlclBhaXIgPSBmcm9tLT5hczxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4oKTsKLSAgICBhdXRv
JiB0b051bWJlclBhaXIgPSB0by0+YXM8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+KCk7Ci0KLSAg
ICB0b051bWJlclBhaXIuZmlyc3QgKz0gZnJvbU51bWJlclBhaXIuZmlyc3Q7Ci0gICAgdG9OdW1i
ZXJQYWlyLnNlY29uZCArPSBmcm9tTnVtYmVyUGFpci5zZWNvbmQ7Ci19Ci0KLXZvaWQgU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUq
IGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9mRHVy
YXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCi17Ci0gICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotCi0gICAgY29uc3Qg
YXV0byYgZnJvbU51bWJlclBhaXIgPSAobV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2Rl
KCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IGZyb20pLT5hczxzdGQ6OnBhaXI8
ZmxvYXQsIGZsb2F0Pj4oKTsKLSAgICBjb25zdCBhdXRvJiB0b051bWJlclBhaXIgPSB0by0+YXM8
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+KCk7Ci0gICAgY29uc3QgYXV0byYgdG9BdEVuZE9mRHVy
YXRpb25OdW1iZXJQYWlyID0gdG9BdEVuZE9mRHVyYXRpb24tPmFzPHN0ZDo6cGFpcjxmbG9hdCwg
ZmxvYXQ+PigpOwotICAgIGF1dG8mIGFuaW1hdGVkTnVtYmVyUGFpciA9IGFuaW1hdGVkLT5hczxz
dGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4oKTsKLQotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5p
bWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tTnVtYmVyUGFp
ci5maXJzdCwgdG9OdW1iZXJQYWlyLmZpcnN0LCB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlclBhaXIu
Zmlyc3QsIGFuaW1hdGVkTnVtYmVyUGFpci5maXJzdCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50
LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21OdW1i
ZXJQYWlyLnNlY29uZCwgdG9OdW1iZXJQYWlyLnNlY29uZCwgdG9BdEVuZE9mRHVyYXRpb25OdW1i
ZXJQYWlyLnNlY29uZCwgYW5pbWF0ZWROdW1iZXJQYWlyLnNlY29uZCk7Ci19Ci0KLWZsb2F0IFNW
R0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogRGlzdGFuY2Ug
Y2FsY3VsYXRpb24gaXMgbm90IHBvc3NpYmxlIGZvciBTVkdOdW1iZXJPcHRpb25hbE51bWJlciBy
aWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIGZvciBldmVyeSBzaW5nbGUgdmFsdWUuCi0g
ICAgcmV0dXJuIC0xOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjZjNGZjMGU4ZDJjMjNhNGNjNDU1NWI0NmZmNjE1N2EyZDcyM2VhOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmlt
YXRlZFR5cGVBbmltYXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ7Ci0KLWNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7Ci1wdWJsaWM6
Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yKFNWR0FuaW1hdGlv
bkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBhZGRBbmlt
YXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwot
ICAgIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5p
bWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgY2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKSBvdmVycmlkZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKaW5kZXggOGMzYzA4NzRj
M2M2MjM2ZmUwMWY2MjIwODQxYjg0YTlkNGU1YWVkOS4uMDQ4NjExYjkzNWFlOThkNGQxMDcyZjVm
MDNiN2I2ZjkzNGY1NDNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QuaCIKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybURpc3RhbmNlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRvckZhY3RvcnkuaAppbmRleCA1MTFhMjJjOTQ5MDczZThkZmU2ZTI0ZGUzZTk0MjA5
YzM4MWM1YTlmLi44MGU1MGJkMDQ1ZjY4ZTk1YzE5OTQ0MjM0NjcxMDA3NDg4ZmZmYzc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCkBAIC0yMCwxMyArMjAsMTAgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUg
IlNWR0FuaW1hdGVkQ29sb3IuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExl
bmd0aExpc3QuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTnVtYmVyTGlzdC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGguaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCkBAIC00
NCwzNiArNDEsMzAgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwog
CiAgICAgICAgIHN3aXRjaCAoYXR0cmlidXRlVHlwZSkgewotICAgICAgICBjYXNlIEFuaW1hdGVk
QW5nbGU6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFu
Z2xlQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAg
Y2FzZSBBbmltYXRlZEJvb2xlYW46Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgY2FzZSBBbmltYXRlZENvbG9yOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yPigqYW5pbWF0aW9uRWxlbWVudCwgKmNvbnRleHRF
bGVtZW50KTsKLSAgICAgICAgY2FzZSBBbmltYXRlZEVudW1lcmF0aW9uOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPihh
bmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRJ
bnRlZ2VyOgotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGNhc2UgQW5pbWF0
ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOgorICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgor
ICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXI6CisgICAgICAgIGNhc2Ug
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOgorICAgICAgICBjYXNlIEFuaW1hdGVkUmVjdDoK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGNhc2UgQW5pbWF0ZWRBbmds
ZToKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVB
bmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOworICAgICAgICBjYXNl
IEFuaW1hdGVkRW51bWVyYXRpb246CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGFuaW1hdGlv
bkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZExlbmd0aExp
c3Q6CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0
aExpc3RBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwotICAgICAg
ICBjYXNlIEFuaW1hdGVkTnVtYmVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVs
ZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwg
Y29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkUGF0aDoKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yPihhbmltYXRp
b25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIGNh
c2UgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOgotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhbmltYXRpb25FbGVtZW50
LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IDRjYTM2MmQ3NTJjYThkYzA2YmM4M2ViZGE5YmE5OTVmM2I4ZjAyZTku
LmY5Y2NiNjc4ODA1MmQwNDFjYmZhZDFjNjQxZTg4YzY3MGRjZDFjNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTM3LDYgKzM3LDEyIEBAIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXI6OlNWR0F0
dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoU1ZHQW5pbWF0aW9uRWxlCiAgICAgOiBTVkdBdHRy
aWJ1dGVBbmltYXRpb25Db250cm9sbGVyQmFzZShhbmltYXRpb25FbGVtZW50LCB0YXJnZXRFbGVt
ZW50KQogewogfQorICAgIAorU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6flNWR0F0
dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoKQoreworICAgIGlmIChtX2FuaW1hdG9yKQorICAg
ICAgICBtX3RhcmdldEVsZW1lbnQuYW5pbWF0b3JXaWxsQmVEZWxldGVkKG1fYW5pbWF0aW9uRWxl
bWVudC5hdHRyaWJ1dGVOYW1lKCkpOworfQogCiBTVkdBdHRyaWJ1dGVBbmltYXRvciogU1ZHQXR0
cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0b3IoKSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmgKaW5k
ZXggMzJiY2E1ZDdlZjkwMzY2YTY3NGM2MGU4NjNkNThmZWRlM2I5OTc0My4uMWVjMDJkM2VjYzlk
ZWU4ZmE1ZTc4MDg1ZDE2ZjdlOWZiODlmODczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC0zNyw2ICszNyw3IEBA
IGNsYXNzIFNWR1NNSUxFbGVtZW50OwogY2xhc3MgU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJv
bGxlciA6IHB1YmxpYyBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyQmFzZSB7CiBwdWJs
aWM6CiAgICAgU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcihTVkdBbmltYXRpb25FbGVt
ZW50JiwgU1ZHRWxlbWVudCYpOworICAgIH5TVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVy
KCk7CiAgICAgCiBwcml2YXRlOgogICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKiBhbmltYXRvcigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKaW5kZXggNGUyMDMyYmIyMTcyNGY4YmY2N2M0NWFi
MmU0OGM5ZWI0ZWNhMDFlMy4uMTQwNTE5YzI5ZWM4ZTBlOGM2MDk5YTZhNDQ3NWIzNTdhZWU2OTIx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsNiArMzYsMTUgQEAgU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50KGNvbnN0IFEKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFBy
b3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNsb3BlQXR0ciwgJlNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjptX3Nsb3BlPigpOworICAgICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjppbnRlcmNlcHRBdHRy
LCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1faW50ZXJjZXB0PigpOwor
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjphbXBs
aXR1ZGVBdHRyLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1fYW1wbGl0
dWRlPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjpleHBvbmVudEF0dHIsICZTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6
bV9leHBvbmVudD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6b2Zmc2V0QXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50OjptX29mZnNldD4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKQEAgLTQ1LDExICs1NCw2IEBA
IHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmli
dXRlcygpCiAgICAgICAgIHJldHVybjsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxT
VkdOYW1lczo6dHlwZUF0dHIsIENvbXBvbmVudFRyYW5zZmVyVHlwZSwgJlNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50OjptX3R5cGU+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJB
dHRyaWJ1dGU8U1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50OjptX3RhYmxlVmFsdWVzPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjpzbG9wZUF0dHIsICZTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudDo6bV9zbG9wZT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxT
VkdOYW1lczo6aW50ZXJjZXB0QXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50OjptX2ludGVyY2VwdD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdO
YW1lczo6YW1wbGl0dWRlQXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjptX2FtcGxpdHVkZT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6ZXhwb25lbnRBdHRyLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1f
ZXhwb25lbnQ+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Om9m
ZnNldEF0dHIsICZTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6bV9vZmZzZXQ+
KCk7CiB9CiAKIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCkBAIC03MCwyNyArNzQsMjcgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKICAgICB9
CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c2xvcGVBdHRyKSB7Ci0gICAgICAgIG1fc2xv
cGUuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9zbG9wZS0+c2V0QmFzZVZh
bEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6aW50ZXJjZXB0QXR0cikgewotICAgICAgICBtX2ludGVy
Y2VwdC5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX2ludGVyY2VwdC0+c2V0
QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6YW1wbGl0dWRlQXR0cikgewotICAgICAgICBt
X2FtcGxpdHVkZS5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX2FtcGxpdHVk
ZS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZXhwb25lbnRBdHRyKSB7Ci0gICAg
ICAgIG1fZXhwb25lbnQuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9leHBv
bmVudC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0cikgewotICAg
ICAgICBtX29mZnNldC5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX29mZnNl
dC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKaW5kZXggOWQyYjZkZTZmZmE2NjZjOGM0MzM5YzhmNDgz
ZDFhMmQ4M2VkM2VkYi4uODllNmQwYzNkZmU1MzZjNzc1ZTQ4NTY3ZjUyOThiZWIxZjEwODE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIkZFQ29tcG9u
ZW50VHJhbnNmZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCi0jaW5j
bHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlckxp
c3QuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAKQEAgLTc3LDE5ICs3NiwxOSBAQCBwdWJs
aWM6CiAKICAgICBDb21wb25lbnRUcmFuc2ZlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGNvbnN0IFNW
R051bWJlckxpc3RWYWx1ZXMmIHRhYmxlVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV90YWJsZVZh
bHVlcy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IHNs
b3BlKCkgY29uc3QgeyByZXR1cm4gbV9zbG9wZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIGZsb2F0IGludGVyY2VwdCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJj
ZXB0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgYW1w
bGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9hbXBsaXR1ZGUuY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBleHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXhwb25lbnQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9h
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldC5jdXJyZW50VmFsdWUoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQorICAgIGZsb2F0IHNsb3BlKCkgY29uc3QgeyByZXR1cm4gbV9zbG9w
ZS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBpbnRlcmNlcHQoKSBjb25zdCB7IHJldHVy
biBtX2ludGVyY2VwdC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBhbXBsaXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2FtcGxpdHVkZS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBl
eHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb25lbnQtPmN1cnJlbnRWYWx1ZSgpOyB9Cisg
ICAgZmxvYXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQtPmN1cnJlbnRWYWx1ZSgp
OyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gdHlwZUFuaW1hdGVkKCkg
eyByZXR1cm4gbV90eXBlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQogICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlckxpc3Q+IHRhYmxlVmFsdWVzQW5pbWF0ZWQo
KSB7IHJldHVybiBtX3RhYmxlVmFsdWVzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gc2xvcGVBbmltYXRlZCgp
IHsgcmV0dXJuIG1fc2xvcGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBpbnRlcmNlcHRBbmltYXRlZCgpIHsg
cmV0dXJuIG1faW50ZXJjZXB0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gYW1wbGl0dWRlQW5pbWF0ZWQoKSB7
IHJldHVybiBtX2FtcGxpdHVkZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGV4cG9uZW50QW5pbWF0ZWQoKSB7
IHJldHVybiBtX2V4cG9uZW50LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gb2Zmc2V0QW5pbWF0ZWQoKSB7IHJl
dHVybiBtX29mZnNldC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
KyAgICBTVkdBbmltYXRlZE51bWJlciYgc2xvcGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fc2xvcGU7
IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgaW50ZXJjZXB0QW5pbWF0ZWQoKSB7IHJldHVybiBt
X2ludGVyY2VwdDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBhbXBsaXR1ZGVBbmltYXRlZCgp
IHsgcmV0dXJuIG1fYW1wbGl0dWRlOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGV4cG9uZW50
QW5pbWF0ZWQoKSB7IHJldHVybiBtX2V4cG9uZW50OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXIm
IG9mZnNldEFuaW1hdGVkKCkgeyByZXR1cm4gbV9vZmZzZXQ7IH0KIAogcHJvdGVjdGVkOgogICAg
IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwpAQCAtMTE3LDExICsxMTYsMTEgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxDb21wb25lbnRUcmFuc2ZlclR5cGU+IG1fdHlwZSB7IEZFQ09N
UE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyTGlz
dEF0dHJpYnV0ZSBtX3RhYmxlVmFsdWVzOwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRl
IG1fc2xvcGUgeyAxIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9pbnRlcmNl
cHQ7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9hbXBsaXR1ZGUgeyAxIH07Ci0g
ICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9leHBvbmVudCB7IDEgfTsKLSAgICBTVkdB
bmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX29mZnNldDsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1i
ZXI+IG1fc2xvcGUgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMsIDEpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2ludGVyY2VwdCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpj
cmVhdGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fYW1wbGl0dWRlIHsg
U1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzLCAxKSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZE51bWJlcj4gbV9leHBvbmVudCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcywgMSkg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fb2Zmc2V0IHsgU1ZHQW5pbWF0ZWROdW1i
ZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDBjODY1OTg4MjFiOTNmYWE3YWRmY2Q0MjBiZDc1Mzk5
YjJjNDAwMTUuLjQ4NDA0ODBhMzM5ZjE2M2ZiNmU0YWUwODYxMTNmNTE0OWNjZDZkY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJTVkdH
cmFwaGljc0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yLmgiCiAj
aW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0Lmgi
CiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgpAQCAtMjc1LDYgKzI3Niw3IEBAIHN0YXRpYyBp
bmxpbmUgY29uc3QgSGFzaE1hcDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIEFu
aW1hdGVkUHJvcGVydHlUCiBTVkdFbGVtZW50OjpTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFN0eWxlZEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIENyZWF0ZVNWR0VsZW1lbnQpCiAgICAgLCBTVkdMYW5nU3BhY2UodGhp
cykKKyAgICAsIG1fcHJvcGVydHlBbmltYXRvckNyZWF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTVkdQ
cm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcj4oKSkKIHsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsK
IH0KQEAgLTc1NiwxMSArNzU4LDE2IEBAIGJvb2wgU1ZHRWxlbWVudDo6aXNBbmltYXRlZFByb3Bl
cnR5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAKIGJvb2wg
U1ZHRWxlbWVudDo6aXNBbmltYXRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKSBjb25zdAogewotICAgIHJldHVybiBpc0FuaW1hdGVkUHJvcGVydHlBdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIFNWR1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9y
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IGlzQW5pbWF0ZWRQcm9wZXJ0eUF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0
ZUFuaW1hdG9yPiBTVkdFbGVtZW50OjpjcmVhdGVBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNh
bGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKIHsKKyAgICAvLyBQ
cm9wZXJ0eSBhbmltYXRvciwgZS5nLgorICAgIGlmIChhdXRvIGFuaW1hdG9yID0gcHJvcGVydHlB
bmltYXRvckNyZWF0b3IoKS5jcmVhdGVBbmltYXRvcihhdHRyaWJ1dGVOYW1lLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSkpCisgICAgICAgIHJldHVy
biBhbmltYXRvcjsKKyAgICAKKyAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBhbmltYXRvci4KICAg
ICBhdXRvIGFuaW1hdG9yID0gcHJvcGVydHlSZWdpc3RyeSgpLmNyZWF0ZUFuaW1hdG9yKGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKICAgICBpZiAoIWFuaW1hdG9yKQogICAgICAgICByZXR1cm4gYW5pbWF0b3I7CkBAIC03
NjgsNiArNzc1LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gU1ZH
RWxlbWVudDo6Y3JlYXRlQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkCiAgICAgICAgIGluc3RhbmNl
LT5wcm9wZXJ0eVJlZ2lzdHJ5KCkuYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShhdHRyaWJ1dGVOYW1l
LCAqYW5pbWF0b3IpOwogICAgIHJldHVybiBhbmltYXRvcjsKIH0KKyAgICAKK3ZvaWQgU1ZHRWxl
bWVudDo6YW5pbWF0b3JXaWxsQmVEZWxldGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpCit7CisgICAgcHJvcGVydHlBbmltYXRvckNyZWF0b3IoKS5hbmltYXRvcldpbGxCZURl
bGV0ZWQoYXR0cmlidXRlTmFtZSk7Cit9CiAKIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gU1ZHRWxl
bWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUqKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggZmYwM2Rk
MzQ0MDJjNTU4OTk0Y2M5NWRiOWZhZjA0ZDdmZTNlN2VlMS4uNzE1NmUzYzBkMTdkMjYzYjlmNWJm
MTIwNGVhMzY0NDk4YzM3Nzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC00Miw2ICs0
Miw3IEBAIGNsYXNzIERlcHJlY2F0ZWRDU1NPTVZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBTVkdEb2N1bWVudEV4dGVuc2lvbnM7CiBjbGFzcyBTVkdFbGVtZW50UmFyZURhdGE7CitjbGFz
cyBTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcjsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiBjbGFz
cyBTVkdVc2VFbGVtZW50OwogCkBAIC0xNjEsNyArMTYyLDkgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpOwogCiAgICAgY29uc3Qg
U1ZHRWxlbWVudCogYXR0cmlidXRlQ29udGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0aGlzOyB9CisgICAgU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3ImIHByb3BlcnR5QW5p
bWF0b3JDcmVhdG9yKCkgeyByZXR1cm4gKm1fcHJvcGVydHlBbmltYXRvckNyZWF0b3I7IH0KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBBbmltYXRpb25Nb2RlLCBDYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpOworICAgIHZvaWQgYW5pbWF0b3JXaWxsQmVEZWxldGVk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHRo
ZSBSZW5kZXJUcmVlLCBhbmltYXRpb24gYW5kIERPTS4KICAgICBjb25zdCBhdXRvJiBjbGFzc05h
bWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzTmFtZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQpAQCAtMjE1LDYgKzIxOCw4IEBAIHByaXZhdGU6CiAKICAgICBIYXNoU2V0
PFNWR0VsZW1lbnQqPiBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3RoczsKIAorICAgIHN0ZDo6
dW5pcXVlX3B0cjxTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcj4gbV9wcm9wZXJ0eUFuaW1hdG9y
Q3JlYXRvcjsKKwogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5
IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0
aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9jbGFzc05hbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IDM3NDA4M2M2
YWRhZmEzNjIxOGYwOWYzNWYyMTg3MzQ5YjU2ZjgyODIuLjI2NTdhZTk5NzkwMDcxZjc3YmVjNWIz
ODQ5MjNjMGFkMWE4ODIzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsNiArMzYsMTQgQEAgaW5saW5lIFNWR0ZFQ29tcG9zaXRl
RWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWcpKTsK
ICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKyAgICAKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6azFBdHRyLCAmU1ZH
RkVDb21wb3NpdGVFbGVtZW50OjptX2sxPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5Ojpy
ZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjprMkF0dHIsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
Om1fazI+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OmszQXR0ciwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9rMz4oKTsKKyAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6azRBdHRyLCAmU1ZH
RkVDb21wb3NpdGVFbGVtZW50OjptX2s0PigpOworICAgIH0pOwogfQogCiBSZWY8U1ZHRkVDb21w
b3NpdGVFbGVtZW50PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC01MSwxMCArNTksNiBAQCB2
b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKICAgICByZWdp
c3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVDb21wb3NpdGVF
bGVtZW50OjptX2luMT4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6aW4yQXR0ciwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9pbjI+KCk7CiAgICAgcmVnaXN0
cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgQ29tcG9zaXRlT3Bl
cmF0aW9uVHlwZSwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9zdmdPcGVyYXRvcj4oKTsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6azFBdHRyLCAmU1ZHRkVDb21w
b3NpdGVFbGVtZW50OjptX2sxPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNW
R05hbWVzOjprMkF0dHIsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1fazI+KCk7Ci0gICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmszQXR0ciwgJlNWR0ZFQ29tcG9zaXRl
RWxlbWVudDo6bV9rMz4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6azRBdHRyLCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50OjptX2s0PigpOwogfQogCiB2b2lkIFNW
R0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTc3LDIyICs4MSwyMiBAQCB2b2lk
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbQogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpr
MUF0dHIpIHsKLSAgICAgICAgbV9rMS5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAg
ICBtX2sxLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjprMkF0dHIpIHsKLSAgICAg
ICAgbV9rMi5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX2syLT5zZXRCYXNl
VmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjprM0F0dHIpIHsKLSAgICAgICAgbV9rMy5zZXRWYWx1
ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX2szLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFs
dWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjprNEF0dHIpIHsKLSAgICAgICAgbV9rNC5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0
KCkpOworICAgICAgICBtX2s0LT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5oCmluZGV4IDU1YmE4ZmFjMzE3MWViMzM5YjRlZjI1YjZkZmMzZWQwODVmMDA2
MWIuLjAzYTdkYmViNTVlNDk1ODQxZjg0MmVlZDA4OWFiMTljY2Y1ZjFlNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAog
I2luY2x1ZGUgIkZFQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTg4LDE4ICs4NywxOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0dXJu
IG1faW4xLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgU3RyaW5n
IGluMigpIGNvbnN0IHsgcmV0dXJuIG1faW4yLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CiAgICAgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBzdmdPcGVyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3ZnT3BlcmF0b3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBmbG9hdCBrMSgpIGNvbnN0IHsgcmV0dXJuIG1fazEuY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBrMigpIGNvbnN0IHsgcmV0dXJuIG1f
azIuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBrMygp
IGNvbnN0IHsgcmV0dXJuIG1fazMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBmbG9hdCBrNCgpIGNvbnN0IHsgcmV0dXJuIG1fazQuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBmbG9hdCBrMSgpIGNvbnN0IHsgcmV0dXJuIG1fazEt
PmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQgazIoKSBjb25zdCB7IHJldHVybiBtX2syLT5j
dXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGszKCkgY29uc3QgeyByZXR1cm4gbV9rMy0+Y3Vy
cmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBrNCgpIGNvbnN0IHsgcmV0dXJuIG1fazQtPmN1cnJl
bnRWYWx1ZSgpOyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IGluMUFuaW1hdGVk
KCkgeyByZXR1cm4gbV9pbjEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBpbjJBbmltYXRlZCgpIHsgcmV0dXJu
IG1faW4yLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJl
ZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBzdmdPcGVyYXRvckFuaW1hdGVkKCkgeyByZXR1
cm4gbV9zdmdPcGVyYXRvci5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGsxQW5pbWF0ZWQoKSB7IHJldHVybiBt
X2sxLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0
cjxTVkdBbmltYXRlZE51bWJlcj4gazJBbmltYXRlZCgpIHsgcmV0dXJuIG1fazIuYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVk
TnVtYmVyPiBrM0FuaW1hdGVkKCkgeyByZXR1cm4gbV9rMy5hbmltYXRlZFByb3BlcnR5KGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGs0QW5p
bWF0ZWQoKSB7IHJldHVybiBtX2s0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrMUFuaW1hdGVkKCkgeyByZXR1cm4gbV9r
MTsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrMkFuaW1hdGVkKCkgeyByZXR1cm4gbV9rMjsg
fQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrM0FuaW1hdGVkKCkgeyByZXR1cm4gbV9rMzsgfQor
ICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrNEFuaW1hdGVkKCkgeyByZXR1cm4gbV9rNDsgfQogCiBw
cml2YXRlOgogICAgIFNWR0ZFQ29tcG9zaXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKQEAgLTEyOCwxMCArMTI3LDEwIEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0
ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUg
bV9pbjI7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxDb21wb3NpdGVPcGVy
YXRpb25UeXBlPiBtX3N2Z09wZXJhdG9yIHsgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiB9Owot
ICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fazE7Ci0gICAgU1ZHQW5pbWF0ZWROdW1i
ZXJBdHRyaWJ1dGUgbV9rMjsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2szOwot
ICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fazQ7CisgICAgUmVmPFNWR0FuaW1hdGVk
TnVtYmVyPiBtX2sxIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZE51bWJlcj4gbV9rMiB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhp
cykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fazMgeyBTVkdBbmltYXRlZE51bWJl
cjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2s0IHsgU1ZH
QW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHAKaW5kZXggNTJlMmU2NThjY2Y4ZTU0ZjM4ZTZhYmMyZjM1OTFiNjIzMmE4YTBmMS4uZTIw
OTY2MTljMDFmMmU3MzBhZDNiYmNkYzg4NGEyZWYxZWYwYjAyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC00NCw4ICs0NCwx
MSBAQCBpbmxpbmUgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewogICAgICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpvcmRlckF0dHIsICZTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9vcmRlclgsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6bV9vcmRlclk+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OmRpdmlzb3JBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6
Om1fZGl2aXNvcj4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6Ymlhc0F0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9iaWFz
PigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVz
Ojp0YXJnZXRYQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX3RhcmdldFg+KCk7
CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnRh
cmdldFlBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0WT4oKTsKKyAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6a2VybmVs
VW5pdExlbmd0aEF0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9rZXJuZWxVbml0
TGVuZ3RoWCwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX2tlcm5lbFVuaXRMZW5ndGhZ
PigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVz
OjpwcmVzZXJ2ZUFscGhhQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX3ByZXNl
cnZlQWxwaGE+KCk7CiAgICAgfSk7CiB9CkBAIC01NSwxOCArNTgsNiBAQCBSZWY8U1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJT
VkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIHJldHVybiBzX2lkZW50aWZpZXI7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJT
VkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIHJldHVybiBzX2lkZW50aWZpZXI7Ci19Ci0KIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCiB7CiAgICAgYXV0byYgcmVnaXN0cnkgPSBh
dHRyaWJ1dGVSZWdpc3RyeSgpOwpAQCAtNzQsMTIgKzY1LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKICAgICAgICAgcmV0dXJuOwogICAg
IHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjppbkF0dHIsICZTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6bV9pbjE+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6bV9rZXJuZWxNYXRyaXg+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZH
TmFtZXM6OmRpdmlzb3JBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fZGl2aXNv
cj4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6Ymlhc0F0dHIs
ICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9iaWFzPigpOwogICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjplZGdlTW9kZUF0dHIsIEVkZ2VNb2RlVHlwZSwgJlNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX2VkZ2VNb2RlPigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwKLSAgICAgICAg
JlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIs
ICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9rZXJuZWxVbml0TGVuZ3RoWCwKLSAgICAg
ICAgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZp
ZXIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9rZXJuZWxVbml0TGVuZ3RoWT4oKTsK
IH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTEx
OSwxNCArMTA1LDE0IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0CiAgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OmRpdmlzb3JBdHRyKSB7CiAgICAgICAgIGZsb2F0IGRpdmlzb3IgPSB2YWx1ZS50
b0Zsb2F0KCk7CiAgICAgICAgIGlmIChkaXZpc29yKQotICAgICAgICAgICAgbV9kaXZpc29yLnNl
dFZhbHVlKGRpdmlzb3IpOworICAgICAgICAgICAgbV9kaXZpc29yLT5zZXRCYXNlVmFsSW50ZXJu
YWwoZGl2aXNvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNz
U1ZHRXh0ZW5zaW9ucygpLnJlcG9ydFdhcm5pbmcoImZlQ29udm9sdmVNYXRyaXg6IHByb2JsZW0g
cGFyc2luZyBkaXZpc29yPVwiIiArIHZhbHVlICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwg
bm90IGJlIGRpc3BsYXllZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6Ymlhc0F0dHIpIHsKLSAgICAgICAgbV9iaWFzLnNldFZhbHVl
KHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fYmlhcy0+c2V0QmFzZVZhbEludGVybmFsKHZh
bHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0Myw4ICsxMjks
OCBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpr
ZXJuZWxVbml0TGVuZ3RoQXR0cikgewogICAgICAgICBmbG9hdCB4LCB5OwogICAgICAgICBpZiAo
cGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcih2YWx1ZSwgeCwgeSkgJiYgeCA+IDAgJiYgeSA+IDAp
IHsKLSAgICAgICAgICAgIG1fa2VybmVsVW5pdExlbmd0aFguc2V0VmFsdWUoeCk7Ci0gICAgICAg
ICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZLnNldFZhbHVlKHkpOworICAgICAgICAgICAgbV9rZXJu
ZWxVbml0TGVuZ3RoWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOworICAgICAgICAgICAgbV9rZXJu
ZWxVbml0TGVuZ3RoWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydFdhcm5pbmco
ImZlQ29udm9sdmVNYXRyaXg6IHByb2JsZW0gcGFyc2luZyBrZXJuZWxVbml0TGVuZ3RoPVwiIiAr
IHZhbHVlICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTk0LDggKzE4MCw4IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQ6OnNldE9yZGVyKGZsb2F0IHgsIGZsb2F0IHkpCiAKIHZvaWQgU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgoZmxvYXQgeCwgZmxvYXQgeSkK
IHsKLSAgICBtX2tlcm5lbFVuaXRMZW5ndGhYLnNldFZhbHVlKHgpOwotICAgIG1fa2VybmVsVW5p
dExlbmd0aFkuc2V0VmFsdWUoeSk7CisgICAgbV9rZXJuZWxVbml0TGVuZ3RoWC0+c2V0QmFzZVZh
bEludGVybmFsKHgpOworICAgIG1fa2VybmVsVW5pdExlbmd0aFktPnNldEJhc2VWYWxJbnRlcm5h
bCh5KTsKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKaW5kZXggYzczZmM5Y2Q2NGQ3MDgyODk3ODRkNjVm
NjYyN2I2NGYxMTExMWM0Mi4uNDUyZGM3M2Y2NWE3YTIyN2U2ZDViNTQ5YjAwMzliMGU2MmRiMDdl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmgKQEAgLTcxLDI2ICs3MSwyNiBAQCBwdWJsaWM6CiAgICAgaW50IG9yZGVyWCgpIGNvbnN0IHsg
cmV0dXJuIG1fb3JkZXJYLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGludCBvcmRlclkoKSBjb25z
dCB7IHJldHVybiBtX29yZGVyWS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBjb25zdCBTVkdOdW1i
ZXJMaXN0VmFsdWVzJiBrZXJuZWxNYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX2tlcm5lbE1hdHJp
eC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IGRpdmlz
b3IoKSBjb25zdCB7IHJldHVybiBtX2Rpdmlzb3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KLSAgICBmbG9hdCBiaWFzKCkgY29uc3QgeyByZXR1cm4gbV9iaWFzLmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgZmxvYXQgZGl2aXNvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGl2aXNvci0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBiaWFz
KCkgY29uc3QgeyByZXR1cm4gbV9iaWFzLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGludCB0YXJn
ZXRYKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRYLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGlu
dCB0YXJnZXRZKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRZLT5jdXJyZW50VmFsdWUoKTsgfQog
ICAgIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZU1vZGUuY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBrZXJuZWxVbml0
TGVuZ3RoWCgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFguY3VycmVudFZhbHVl
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFkuY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KKyAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFgtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdCB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZLT5j
dXJyZW50VmFsdWUoKTsgfQogICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlc2VydmVBbHBoYS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmlt
YXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRlZFByb3BlcnR5
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBTVkdBbmltYXRlZEludGVnZXImIG9yZGVy
WEFuaW1hdGVkKCkgeyByZXR1cm4gbV9vcmRlclg7IH0KICAgICBTVkdBbmltYXRlZEludGVnZXIm
IG9yZGVyWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9vcmRlclk7IH0KICAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWROdW1iZXJMaXN0PiBrZXJuZWxNYXRyaXhBbmltYXRlZCgpIHsgcmV0dXJuIG1fa2VybmVs
TWF0cml4LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJl
ZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gZGl2aXNvckFuaW1hdGVkKCkgeyByZXR1cm4gbV9kaXZp
c29yLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0
cjxTVkdBbmltYXRlZE51bWJlcj4gYmlhc0FuaW1hdGVkKCkgeyByZXR1cm4gbV9iaWFzLmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTnVt
YmVyJiBkaXZpc29yQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Rpdmlzb3I7IH0KKyAgICBTVkdBbmlt
YXRlZE51bWJlciYgYmlhc0FuaW1hdGVkKCkgeyByZXR1cm4gbV9iaWFzOyB9CiAgICAgU1ZHQW5p
bWF0ZWRJbnRlZ2VyJiB0YXJnZXRYQW5pbWF0ZWQoKSB7IHJldHVybiBtX3RhcmdldFg7IH0KICAg
ICBTVkdBbmltYXRlZEludGVnZXImIHRhcmdldFlBbmltYXRlZCgpIHsgcmV0dXJuIG1fdGFyZ2V0
WTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBlZGdlTW9kZUFuaW1hdGVk
KCkgeyByZXR1cm4gbV9lZGdlTW9kZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGtlcm5lbFVuaXRMZW5ndGhY
QW5pbWF0ZWQoKSB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhYLmFuaW1hdGVkUHJvcGVydHko
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4g
a2VybmVsVW5pdExlbmd0aFlBbmltYXRlZCgpIHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFku
YW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0
ZWROdW1iZXImIGtlcm5lbFVuaXRMZW5ndGhYQW5pbWF0ZWQoKSB7IHJldHVybiBtX2tlcm5lbFVu
aXRMZW5ndGhYOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGtlcm5lbFVuaXRMZW5ndGhZQW5p
bWF0ZWQoKSB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZOyB9CiAgICAgU1ZHQW5pbWF0ZWRC
b29sZWFuJiBwcmVzZXJ2ZUFscGhhQW5pbWF0ZWQoKSB7IHJldHVybiBtX3ByZXNlcnZlQWxwaGE7
IH0KIAogcHJpdmF0ZToKQEAgLTExNSwyMiArMTE1LDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwotICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpOwotCiAgICAgQXR0
cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFBy
b3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmlt
YXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBt
X29yZGVyWCB7IFNWR0FuaW1hdGVkSW50ZWdlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNW
R0FuaW1hdGVkSW50ZWdlcj4gbV9vcmRlclkgeyBTVkdBbmltYXRlZEludGVnZXI6OmNyZWF0ZSh0
aGlzKSB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEF0dHJpYnV0ZSBtX2tlcm5lbE1hdHJp
eDsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2Rpdmlzb3I7Ci0gICAgU1ZHQW5p
bWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9iaWFzOworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4g
bV9kaXZpc29yIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZE51bWJlcj4gbV9iaWFzIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlz
KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IG1fdGFyZ2V0WCB7IFNWR0FuaW1hdGVk
SW50ZWdlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gbV90
YXJnZXRZIHsgU1ZHQW5pbWF0ZWRJbnRlZ2VyOjpjcmVhdGUodGhpcykgfTsKICAgICBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPEVkZ2VNb2RlVHlwZT4gbV9lZGdlTW9kZSB7IEVER0VN
T0RFX0RVUExJQ0FURSB9OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fa2VybmVs
VW5pdExlbmd0aFg7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9rZXJuZWxVbml0
TGVuZ3RoWTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fa2VybmVsVW5pdExlbmd0aFgg
eyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TnVtYmVyPiBtX2tlcm5lbFVuaXRMZW5ndGhZIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0
aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+IG1fcHJlc2VydmVBbHBoYSB7IFNW
R0FuaW1hdGVkQm9vbGVhbjo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDhiMjNmMjRi
MWYzM2Q5ODRiYjY5ZGRhOTZkYzYyNjBlZGQ4NGJiNDEuLmI1NzBjOGIxMmMxYTQ3Y2VkNzljNWEw
M2EyNDI3Mjk3ZDUzNTE1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0zOSw2ICszOSwxMyBAQCBpbmxpbmUgU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTgogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpZmZ1c2VM
aWdodGluZ1RhZykpOwogICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmRp
ZmZ1c2VDb25zdGFudEF0dHIsICZTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Om1fZGlmZnVz
ZUNvbnN0YW50PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5
PFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjptX3N1cmZhY2VTY2FsZT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQ
cm9wZXJ0eTxTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsICZTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6Om1fa2VybmVsVW5pdExlbmd0aFgsICZTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQ6Om1fa2VybmVsVW5pdExlbmd0aFk+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQ+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ2
LDI5ICs1MywxMiBAQCBSZWY8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PiBTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwog
fQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6a2Vy
bmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmllcjsK
LX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtl
cm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBzX2lkZW50aWZpZXI7
Ci19Ci0KIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0
ZXMoKQogewogICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKICAgICBp
ZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjppbkF0dHIsICZTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQ6Om1faW4xPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjpkaWZmdXNlQ29uc3RhbnRBdHRyLCAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjptX2Rp
ZmZ1c2VDb25zdGFudD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6c3VyZmFjZVNjYWxlQXR0ciwgJlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bV9zdXJm
YWNlU2NhbGU+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Omtl
cm5lbFVuaXRMZW5ndGhBdHRyLAotICAgICAgICAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIsICZTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6Om1fa2VybmVsVW5pdExlbmd0aFgsCi0gICAgICAgICZTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgJlNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6bV9rZXJuZWxVbml0TGVuZ3RoWT4oKTsKIH0KIAogdm9pZCBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC03OSwyMCArNjksMjAgQEAgdm9pZCBTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnMKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3VyZmFj
ZVNjYWxlQXR0cikgewotICAgICAgICBtX3N1cmZhY2VTY2FsZS5zZXRWYWx1ZSh2YWx1ZS50b0Zs
b2F0KCkpOworICAgICAgICBtX3N1cmZhY2VTY2FsZS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVl
LnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBT
VkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0cikgewotICAgICAgICBtX2RpZmZ1c2VDb25zdGFu
dC5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX2RpZmZ1c2VDb25zdGFudC0+
c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsK
ICAgICAgICAgZmxvYXQgeCwgeTsKICAgICAgICAgaWYgKHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1i
ZXIodmFsdWUsIHgsIHkpKSB7Ci0gICAgICAgICAgICBtX2tlcm5lbFVuaXRMZW5ndGhYLnNldFZh
bHVlKHgpOwotICAgICAgICAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWS5zZXRWYWx1ZSh5KTsKKyAg
ICAgICAgICAgIG1fa2VybmVsVW5pdExlbmd0aFgtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKKyAg
ICAgICAgICAgIG1fa2VybmVsVW5pdExlbmd0aFktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCmluZGV4IDNiZTZkYTg4YmQ2OTY5ZWI4OTUx
NzY5ZGRkNDZmMGM5OWE4ZmQ3YmYuLjc2MTQwNzhlMWJhMThlYjlhYzJiOWJkMmQ3YTU2ZTcyMGQ4
YjY5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmgKQEAgLTM3LDE2ICszNywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsaWdodEVsZW1l
bnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZFTGlnaHRFbGVtZW50KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1faW4xLmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgZGlmZnVzZUNvbnN0
YW50KCkgY29uc3QgeyByZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX3N1cmZhY2VTY2FsZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxV
bml0TGVuZ3RoWC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3Ro
WS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGZsb2F0IGRpZmZ1
c2VDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlmZnVzZUNvbnN0YW50LT5jdXJyZW50VmFs
dWUoKTsgfQorICAgIGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFj
ZVNjYWxlLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkg
Y29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWC0+Y3VycmVudFZhbHVlKCk7IH0KKyAg
ICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsVW5pdExl
bmd0aFktPmN1cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJpbmc+
IGluMUFuaW1hdGVkKCkgeyByZXR1cm4gbV9pbjEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBkaWZmdXNlQ29u
c3RhbnRBbmltYXRlZCgpIHsgcmV0dXJuIG1fZGlmZnVzZUNvbnN0YW50LmFuaW1hdGVkUHJvcGVy
dHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJl
cj4gc3VyZmFjZVNjYWxlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N1cmZhY2VTY2FsZS5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWROdW1iZXI+IGtlcm5lbFVuaXRMZW5ndGhYQW5pbWF0ZWQoKSB7IHJldHVybiBtX2tlcm5lbFVu
aXRMZW5ndGhYLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4ga2VybmVsVW5pdExlbmd0aFlBbmltYXRlZCgpIHsg
cmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGRpZmZ1c2VDb25zdGFudEFuaW1h
dGVkKCkgeyByZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQ7IH0KKyAgICBTVkdBbmltYXRlZE51bWJl
ciYgc3VyZmFjZVNjYWxlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N1cmZhY2VTY2FsZTsgfQorICAg
IFNWR0FuaW1hdGVkTnVtYmVyJiBrZXJuZWxVbml0TGVuZ3RoWEFuaW1hdGVkKCkgeyByZXR1cm4g
bV9rZXJuZWxVbml0TGVuZ3RoWDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrZXJuZWxVbml0
TGVuZ3RoWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWTsgfQogCiBwcml2
YXRlOgogICAgIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKQEAgLTcwLDE2ICs3MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKLSAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKLQogICAgIEF0dHJp
YnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0
ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUg
bV9kaWZmdXNlQ29uc3RhbnQgeyAxIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUg
bV9zdXJmYWNlU2NhbGUgeyAxIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9r
ZXJuZWxVbml0TGVuZ3RoWDsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2tlcm5l
bFVuaXRMZW5ndGhZOworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9kaWZmdXNlQ29uc3Rh
bnQgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMsIDEpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTnVtYmVyPiBtX3N1cmZhY2VTY2FsZSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUo
dGhpcywgMSkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fa2VybmVsVW5pdExlbmd0
aFggeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTnVtYmVyPiBtX2tlcm5lbFVuaXRMZW5ndGhZIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0
ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCAyODA5ZTQ3
ZWQwZjA2YTQ2NDYxY2ViMjRhMzE2YjIwMmI3NTA1NjY4Li5iMmEyNmFjOGRkMTFmZWY5YTZjMDI1
MDQyZmQwNzc1MWZhNTU1OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMzUsNiArMzUsMTEgQEAgaW5saW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE4KIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaXNwbGFjZW1lbnRNYXBUYWcpKTsKICAg
ICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKyAgICAKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJv
cGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c2NhbGVBdHRyLCAmU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjptX3NjYWxlPigpOworICAgIH0pOwogfQogCiBSZWY8
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQp
CkBAIC01MSw3ICs1Niw2IEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpyZWdp
c3RlckF0dHJpYnV0ZXMoKQogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjppbjJBdHRyLCAmU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjptX2luMj4oKTsKICAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIs
IENoYW5uZWxTZWxlY3RvclR5cGUsICZTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6Om1feENo
YW5uZWxTZWxlY3Rvcj4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIENoYW5uZWxTZWxlY3RvclR5cGUsICZTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6Om1feUNoYW5uZWxTZWxlY3Rvcj4oKTsKLSAgICByZWdpc3RyeS5y
ZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6c2NhbGVBdHRyLCAmU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjptX3NjYWxlPigpOwogfQogCiB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKQEAgLTgxLDcgKzg1LDcgQEAgdm9pZCBTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnMKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKSB7Ci0gICAg
ICAgIG1fc2NhbGUuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9zY2FsZS0+
c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuaAppbmRleCAyNDQ4YWQwODk1NDE0MzRmZGRiYjg0Y2I2MDUxMjFmMGQzOWQ2ODQxLi5mNDll
ZTBjMzNmMjc0NTRhOTIyNjRmZTE5YmZjNDUzY2JiMDNlZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCkBAIC0yMiw3ICsyMiw2IEBA
CiAKICNpbmNsdWRlICJGRURpc3BsYWNlbWVudE1hcC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
RW51bWVyYXRpb24uaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUg
IlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03NSwxMyArNzQsMTMgQEAgcHVibGljOgogICAgIFN0cmluZyBpbjIoKSBjb25z
dCB7IHJldHVybiBtX2luMi5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1feENoYW5uZWxTZWxlY3Rvci5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQogICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1feUNoYW5uZWxTZWxlY3Rvci5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZS5jdXJyZW50VmFs
dWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY2FsZS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRl
ZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IGlu
MkFuaW1hdGVkKCkgeyByZXR1cm4gbV9pbjIuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHhDaGFubmVs
U2VsZWN0b3JBbmltYXRlZCgpIHsgcmV0dXJuIG1feENoYW5uZWxTZWxlY3Rvci5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4geUNoYW5uZWxTZWxlY3RvckFuaW1hdGVkKCkgeyByZXR1cm4gbV95Q2hhbm5l
bFNlbGVjdG9yLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gc2NhbGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fc2Nh
bGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5p
bWF0ZWROdW1iZXImIHNjYWxlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3NjYWxlOyB9CiAKIHByaXZh
dGU6CiAgICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50Jik7CkBAIC0xMTEsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICBT
VkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMjsKICAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uQXR0cmlidXRlPENoYW5uZWxTZWxlY3RvclR5cGU+IG1feENoYW5uZWxTZWxlY3RvciB7IENI
QU5ORUxfQSB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q2hhbm5lbFNl
bGVjdG9yVHlwZT4gbV95Q2hhbm5lbFNlbGVjdG9yIHsgQ0hBTk5FTF9BIH07Ci0gICAgU1ZHQW5p
bWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zY2FsZTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+
IG1fc2NhbGUgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
cm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5jcHAKaW5kZXggOTYwZWM0NGFlNjJhMzgyZGU0YWVmZWUwMGNlMjViYzkyOWU4Zjkx
NC4uNGI4NTAyYjNkYjFjZjI0NTM3MjRiZGVkYzU4ZmNmNGZmNGZkNDk2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNyw2ICszNywxMyBA
QCBpbmxpbmUgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpmZURyb3BTaGFkb3dUYWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKyAgICAK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6ZHhBdHRyLCAmU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6bV9keD4oKTsKKyAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZHlBdHRy
LCAmU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6bV9keT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgJlNWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQ6Om1fc3RkRGV2aWF0aW9uWCwgJlNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6Om1fc3RkRGV2aWF0aW9uWT4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC00NCwyMiArNTEsMTAgQEAgUmVm
PFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5n
JiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdT
dGREZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIHNfaWRlbnRpZmllcjsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURyb3BT
aGFkb3dFbGVtZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25Z
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKLX0KLQogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzZXRTdGREZXZpYXRp
b24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKLSAgICBtX3N0ZERldmlhdGlvblguc2V0VmFsdWUoeCk7
Ci0gICAgbV9zdGREZXZpYXRpb25ZLnNldFZhbHVlKHkpOworICAgIG1fc3RkRGV2aWF0aW9uWC0+
c2V0QmFzZVZhbEludGVybmFsKHgpOworICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0QmFzZVZhbElu
dGVybmFsKHkpOwogICAgIGludmFsaWRhdGUoKTsKIH0KIApAQCAtNjksMTEgKzY0LDYgQEAgdm9p
ZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQogICAgIGlmICgh
cmVnaXN0cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgcmVnaXN0cnkucmVnaXN0
ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmluQXR0ciwgJlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6Om1f
aW4xPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpkeEF0dHIs
ICZTVkdGRURyb3BTaGFkb3dFbGVtZW50OjptX2R4PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjpkeUF0dHIsICZTVkdGRURyb3BTaGFkb3dFbGVtZW50OjptX2R5
PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpzdGREZXZpYXRp
b25BdHRyLAotICAgICAgICAmU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElk
ZW50aWZpZXIsICZTVkdGRURyb3BTaGFkb3dFbGVtZW50OjptX3N0ZERldmlhdGlvblgsCi0gICAg
ICAgICZTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllciwgJlNW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQ6Om1fc3RkRGV2aWF0aW9uWT4oKTsKIH0KIAogdm9pZCBTVkdG
RURyb3BTaGFkb3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtODEsOCArNzEsOCBAQCB2b2lkIFNW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0bwogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25B
dHRyKSB7CiAgICAgICAgIGZsb2F0IHgsIHk7CiAgICAgICAgIGlmIChwYXJzZU51bWJlck9wdGlv
bmFsTnVtYmVyKHZhbHVlLCB4LCB5KSkgewotICAgICAgICAgICAgbV9zdGREZXZpYXRpb25YLnNl
dFZhbHVlKHgpOwotICAgICAgICAgICAgbV9zdGREZXZpYXRpb25ZLnNldFZhbHVlKHkpOworICAg
ICAgICAgICAgbV9zdGREZXZpYXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CisgICAgICAg
ICAgICBtX3N0ZERldmlhdGlvblktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTMsMTIgKzgzLDEyIEBAIHZvaWQgU1ZHRkVEcm9w
U2hhZG93RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvCiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewot
ICAgICAgICBtX2R4LnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fZHgtPnNl
dEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBtX2R5LnNl
dFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fZHktPnNldEJhc2VWYWxJbnRlcm5h
bCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAppbmRleCA4ZTI5YzBkMmI0N2RmNzgz
MmQwMGU1OTYxNjE0NjgxNzNmYWU3OWM0Li5hMGU2NWMyZTM2OWUyN2QzMzcwOTgzNjc5ZTkzMTZi
NmRlODFkMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmgKQEAgLTIxLDcgKzIxLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRkVEcm9wU2hh
ZG93LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzQsMTYgKzMzLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0ZERldmlhdGlvbihmbG9h
dCBzdGREZXZpYXRpb25YLCBmbG9hdCBzdGREZXZpYXRpb25ZKTsKIAogICAgIFN0cmluZyBpbjEo
KSBjb25zdCB7IHJldHVybiBtX2luMS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIGZsb2F0IGR4KCkgY29uc3QgeyByZXR1cm4gbV9keC5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IGR5KCkgY29uc3QgeyByZXR1cm4gbV9k
eS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IHN0ZERl
dmlhdGlvblgoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvblguY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGREZXZpYXRpb25ZLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9CisgICAgZmxvYXQgZHgoKSBjb25zdCB7IHJldHVybiBtX2R4LT5jdXJyZW50VmFsdWUo
KTsgfQorICAgIGZsb2F0IGR5KCkgY29uc3QgeyByZXR1cm4gbV9keS0+Y3VycmVudFZhbHVlKCk7
IH0KKyAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRp
b25YLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdCB7
IHJldHVybiBtX3N0ZERldmlhdGlvblktPmN1cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRTdHJpbmc+IGluMUFuaW1hdGVkKCkgeyByZXR1cm4gbV9pbjEuYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVk
TnVtYmVyPiBkeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9keC5hbmltYXRlZFByb3BlcnR5KGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGR5QW5p
bWF0ZWQoKSB7IHJldHVybiBtX2R5LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gc3RkRGV2aWF0aW9uWEFuaW1h
dGVkKCkgeyByZXR1cm4gbV9zdGREZXZpYXRpb25YLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gc3RkRGV2aWF0
aW9uWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdGREZXZpYXRpb25ZLmFuaW1hdGVkUHJvcGVydHko
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBkeEFuaW1h
dGVkKCkgeyByZXR1cm4gbV9keDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBkeUFuaW1hdGVk
KCkgeyByZXR1cm4gbV9keTsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBzdGREZXZpYXRpb25Y
QW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0ZERldmlhdGlvblg7IH0KKyAgICBTVkdBbmltYXRlZE51
bWJlciYgc3RkRGV2aWF0aW9uWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdGREZXZpYXRpb25ZOyB9
CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVEcm9wU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKQEAgLTY2LDE2ICs2NSwxMyBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9u
WElkZW50aWZpZXIoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRp
b25ZSWRlbnRpZmllcigpOwotCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93
bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKLSAg
ICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2R4IHsgMiB9OwotICAgIFNWR0FuaW1hdGVk
TnVtYmVyQXR0cmlidXRlIG1fZHkgeyAyIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1
dGUgbV9zdGREZXZpYXRpb25YIHsgMiB9OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRl
IG1fc3RkRGV2aWF0aW9uWSB7IDIgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fZHgg
eyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMsIDIpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTnVtYmVyPiBtX2R5IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzLCAyKSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9zdGREZXZpYXRpb25YIHsgU1ZHQW5pbWF0ZWRO
dW1iZXI6OmNyZWF0ZSh0aGlzLCAyKSB9OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9z
dGREZXZpYXRpb25ZIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzLCAyKSB9OwogfTsK
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggMTJhOTI3MGRhMWJiYzdlNGIyZDQyNTBh
NzMzYzdlODQ3ZWU3NzBkZi4uMGE5MjdmZWE3ZGZhYzJiYTMwYjA1Yzk4Y2QwNDBiNGNjODI2YWI2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zNyw2ICszNywxMSBAQCBpbmxpbmUgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdAogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZykpOwogICAgIHJl
Z2lzdGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsICZTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om1fc3RkRGV2aWF0aW9uWCwgJlNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6bV9zdGREZXZpYXRpb25ZPigpOworICAgIH0pOwogfQogCiBSZWY8U1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC00NCwyMiArNDks
MTAgQEAgUmVmPFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotY29uc3Qg
QXRvbWljU3RyaW5nJiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN0ZERldmlhdGlvblhJZGVu
dGlmaWVyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lk
ZW50aWZpZXIoIlNWR1N0ZERldmlhdGlvblgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICByZXR1cm4gc19pZGVudGlmaWVyOwotfQotCi1jb25zdCBBdG9taWNTdHJp
bmcmIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKQot
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigi
U1ZHU3RkRGV2aWF0aW9uWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgIHJldHVybiBzX2lkZW50aWZpZXI7Ci19Ci0KIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpzZXRTdGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKLSAgICBtX3N0ZERldmlh
dGlvblguc2V0VmFsdWUoeCk7Ci0gICAgbV9zdGREZXZpYXRpb25ZLnNldFZhbHVlKHkpOworICAg
IG1fc3RkRGV2aWF0aW9uWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOworICAgIG1fc3RkRGV2aWF0
aW9uWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwogICAgIGludmFsaWRhdGUoKTsKIH0KIApAQCAt
NjksOSArNjIsNiBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cmVnaXN0ZXJBdHRy
aWJ1dGVzKCkKICAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjppbkF0dHIsICZTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQ6Om1faW4xPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLAotICAgICAgICAmU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllciwgJlNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6bV9zdGREZXZpYXRpb25YLAotICAgICAgICAmU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllciwgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6bV9z
dGREZXZpYXRpb25ZPigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjplZGdlTW9kZUF0dHIsIEVkZ2VNb2RlVHlwZSwgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
bV9lZGdlTW9kZT4oKTsKIH0KIApAQCAtODAsOCArNzAsOCBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyKSB7CiAgICAg
ICAgIGZsb2F0IHgsIHk7CiAgICAgICAgIGlmIChwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHZh
bHVlLCB4LCB5KSkgewotICAgICAgICAgICAgbV9zdGREZXZpYXRpb25YLnNldFZhbHVlKHgpOwot
ICAgICAgICAgICAgbV9zdGREZXZpYXRpb25ZLnNldFZhbHVlKHkpOworICAgICAgICAgICAgbV9z
dGREZXZpYXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CisgICAgICAgICAgICBtX3N0ZERl
dmlhdGlvblktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5oCmluZGV4IGUzMzg3YmMzYjllNzcyZjY3MjVhYjk3NWY0NDYzMTlmZTU3MWNjMjUuLmIwNDUw
MjgxNDgwYjRhMjZjNzY3YzVmNDBiYTJkNTliMGUxMTUyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2lu
Y2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKIApAQCAtMzcsMTMgKzM2LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFN0ZERldmlhdGlvbihmbG9hdCBzdGREZXZpYXRpb25YLCBmbG9hdCBzdGREZXZpYXRpb25ZKTsK
IAogICAgIFN0cmluZyBpbjEoKSBjb25zdCB7IHJldHVybiBtX2luMS5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdCB7
IHJldHVybiBtX3N0ZERldmlhdGlvblguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZp
YXRpb25ZLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgZmxvYXQg
c3RkRGV2aWF0aW9uWCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWC0+Y3VycmVudFZh
bHVlKCk7IH0KKyAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGRE
ZXZpYXRpb25ZLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZWRnZU1vZGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7
IHJldHVybiBtX2luMS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
LSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IHN0ZERldmlhdGlvblhBbmltYXRlZCgpIHsg
cmV0dXJuIG1fc3RkRGV2aWF0aW9uWC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IHN0ZERldmlhdGlvbllBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgc3RkRGV2aWF0aW9uWEFu
aW1hdGVkKCkgeyByZXR1cm4gbV9zdGREZXZpYXRpb25YOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1i
ZXImIHN0ZERldmlhdGlvbllBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWTsgfQog
ICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBlZGdlTW9kZUFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9lZGdlTW9kZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KIAogcHJpdmF0ZToKQEAgLTY3LDE0ICs2NiwxMSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWElk
ZW50aWZpZXIoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25Z
SWRlbnRpZmllcigpOwotCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVy
UHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKLSAgICBT
VkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3N0ZERldmlhdGlvblg7Ci0gICAgU1ZHQW5pbWF0
ZWROdW1iZXJBdHRyaWJ1dGUgbV9zdGREZXZpYXRpb25ZOworICAgIFJlZjxTVkdBbmltYXRlZE51
bWJlcj4gbV9zdGREZXZpYXRpb25YIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9
OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9zdGREZXZpYXRpb25ZIHsgU1ZHQW5pbWF0
ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8RWRnZU1vZGVUeXBlPiBtX2VkZ2VNb2RlIHsgRURHRU1PREVfTk9ORSB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggODkxZmVkZDk4ZDVm
ZDM4YTkxNjlhNWQ5ZDc4MGRkNDI3YTg1M2FhZC4uMmU2YjBlYzI2YTgwOTExY2M0MTVmYTM4ZmQ2
ZmQ2ZTQ4Y2VlMjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3Bw
CkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDUgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNDMsNyArNDMsMTkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNWR0ZFTGlnaHRF
bGVtZW50KTsKIFNWR0ZFTGlnaHRFbGVtZW50OjpTVkdGRUxpZ2h0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjphemltdXRoQXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX2F6aW11dGg+KCk7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmVsZXZhdGlv
bkF0dHIsICZTVkdGRUxpZ2h0RWxlbWVudDo6bV9lbGV2YXRpb24+KCk7CisgICAgICAgIFByb3Bl
cnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnhBdHRyLCAmU1ZHRkVMaWdo
dEVsZW1lbnQ6Om1feD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6eUF0dHIsICZTVkdGRUxpZ2h0RWxlbWVudDo6bV95PigpOworICAgICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp6QXR0ciwgJlNW
R0ZFTGlnaHRFbGVtZW50OjptX3o+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsICZTVkdGRUxpZ2h0RWxlbWVudDo6
bV9wb2ludHNBdFg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsICZTVkdGRUxpZ2h0RWxlbWVudDo6bV9wb2ludHNB
dFk+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OnBvaW50c0F0WkF0dHIsICZTVkdGRUxpZ2h0RWxlbWVudDo6bV9wb2ludHNBdFo+KCk7Cisg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNwZWN1
bGFyRXhwb25lbnRBdHRyLCAmU1ZHRkVMaWdodEVsZW1lbnQ6Om1fc3BlY3VsYXJFeHBvbmVudD4o
KTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6
bGltaXRpbmdDb25lQW5nbGVBdHRyLCAmU1ZHRkVMaWdodEVsZW1lbnQ6Om1fbGltaXRpbmdDb25l
QW5nbGU+KCk7CisgICAgfSk7CiB9CiAKIFNWR0ZFTGlnaHRFbGVtZW50KiBTVkdGRUxpZ2h0RWxl
bWVudDo6ZmluZExpZ2h0RWxlbWVudChjb25zdCBTVkdFbGVtZW50KiBzdmdFbGVtZW50KQpAQCAt
NTUsNzIgKzY3LDU1IEBAIFNWR0ZFTGlnaHRFbGVtZW50KiBTVkdGRUxpZ2h0RWxlbWVudDo6Zmlu
ZExpZ2h0RWxlbWVudChjb25zdCBTVkdFbGVtZW50KiBzdmdFbGVtCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLXZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17
Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVn
aXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJB
dHRyaWJ1dGU8U1ZHTmFtZXM6OmF6aW11dGhBdHRyLCAmU1ZHRkVMaWdodEVsZW1lbnQ6Om1fYXpp
bXV0aD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZWxldmF0
aW9uQXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX2VsZXZhdGlvbj4oKTsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdGRUxpZ2h0RWxlbWVudDo6
bV94PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5QXR0ciwg
JlNWR0ZFTGlnaHRFbGVtZW50OjptX3k+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OnpBdHRyLCAmU1ZHRkVMaWdodEVsZW1lbnQ6Om1fej4oKTsKLSAgICByZWdp
c3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cG9pbnRzQXRYQXR0ciwgJlNWR0ZFTGln
aHRFbGVtZW50OjptX3BvaW50c0F0WD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0
ZTxTVkdOYW1lczo6cG9pbnRzQXRZQXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX3BvaW50c0F0
WT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cG9pbnRzQXRa
QXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX3BvaW50c0F0Wj4oKTsKLSAgICByZWdpc3RyeS5y
ZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsICZTVkdGRUxp
Z2h0RWxlbWVudDo6bV9zcGVjdWxhckV4cG9uZW50PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIsICZTVkdGRUxpZ2h0RWxl
bWVudDo6bV9saW1pdGluZ0NvbmVBbmdsZT4oKTsKLX0KLQogdm9pZCBTVkdGRUxpZ2h0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6YXppbXV0aEF0dHIp
IHsKLSAgICAgICAgbV9hemltdXRoLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAg
IG1fYXppbXV0aC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZWxldmF0aW9uQXR0
cikgewotICAgICAgICBtX2VsZXZhdGlvbi5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAg
ICAgICBtX2VsZXZhdGlvbi0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIp
IHsKLSAgICAgICAgbV94LnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1feC0+
c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgbV95LnNl
dFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFs
KHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6ekF0dHIpIHsKLSAgICAgICAgbV96LnNldFZhbHVlKHZhbHVlLnRvRmxv
YXQoKSk7CisgICAgICAgIG1fei0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cG9p
bnRzQXRYQXR0cikgewotICAgICAgICBtX3BvaW50c0F0WC5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0
KCkpOworICAgICAgICBtX3BvaW50c0F0WC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxv
YXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6cG9pbnRzQXRZQXR0cikgewotICAgICAgICBtX3BvaW50c0F0WS5zZXRWYWx1ZSh2YWx1ZS50
b0Zsb2F0KCkpOworICAgICAgICBtX3BvaW50c0F0WS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVl
LnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBT
VkdOYW1lczo6cG9pbnRzQXRaQXR0cikgewotICAgICAgICBtX3BvaW50c0F0Wi5zZXRWYWx1ZSh2
YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX3BvaW50c0F0Wi0+c2V0QmFzZVZhbEludGVybmFs
KHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpIHsKLSAgICAgICAgbV9zcGVjdWxh
ckV4cG9uZW50LnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fc3BlY3VsYXJF
eHBvbmVudC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5n
bGVBdHRyKSB7Ci0gICAgICAgIG1fbGltaXRpbmdDb25lQW5nbGUuc2V0VmFsdWUodmFsdWUudG9G
bG9hdCgpKTsKKyAgICAgICAgbV9saW1pdGluZ0NvbmVBbmdsZS0+c2V0QmFzZVZhbEludGVybmFs
KHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyOSw3ICsx
MjQsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdAogCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewot
ICAgIGlmIChpc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBhdXRvIHBhcmVu
dCA9IG1ha2VSZWZQdHIocGFyZW50RWxlbWVudCgpKTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVM
aWdodEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCmlu
ZGV4IDliZTJiZmE0NmVjOGNmYTA0MjYxODc3YWNjOGM2ZWQ4MDljYmMyNGUuLjFlYjRlYWM4ZTdk
YmI1ZmE5ZWMwMTVjM2I3ZjdkZGViYjBhYTNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5oCkBAIC0yMyw3ICsyMyw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkxpZ2h0U291cmNlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRl
ICJTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDI3ICszNSwyNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWY8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKFNWR0Zp
bHRlckJ1aWxkZXImKSBjb25zdCA9IDA7CiAgICAgc3RhdGljIFNWR0ZFTGlnaHRFbGVtZW50KiBm
aW5kTGlnaHRFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQqKTsKIAotICAgIGZsb2F0IGF6aW11dGgo
KSBjb25zdCB7IHJldHVybiBtX2F6aW11dGguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBmbG9hdCBlbGV2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VsZXZhdGlv
bi5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IHgoKSBj
b25zdCB7IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
LSAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgeigpIGNvbnN0IHsgcmV0dXJuIG1fei5jdXJyZW50
VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IHBvaW50c0F0WCgpIGNv
bnN0IHsgcmV0dXJuIG1fcG9pbnRzQXRYLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9Ci0gICAgZmxvYXQgcG9pbnRzQXRZKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHNBdFku
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBwb2ludHNB
dFooKSBjb25zdCB7IHJldHVybiBtX3BvaW50c0F0Wi5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQoKSBjb25zdCB7IHJldHVy
biBtX3NwZWN1bGFyRXhwb25lbnQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRp
bmdDb25lQW5nbGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBm
bG9hdCBhemltdXRoKCkgY29uc3QgeyByZXR1cm4gbV9hemltdXRoLT5jdXJyZW50VmFsdWUoKTsg
fQorICAgIGZsb2F0IGVsZXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZWxldmF0aW9uLT5jdXJy
ZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1cnJlbnRW
YWx1ZSgpOyB9CisgICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS0+Y3VycmVudFZhbHVl
KCk7IH0KKyAgICBmbG9hdCB6KCkgY29uc3QgeyByZXR1cm4gbV96LT5jdXJyZW50VmFsdWUoKTsg
fQorICAgIGZsb2F0IHBvaW50c0F0WCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzQXRYLT5jdXJy
ZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IHBvaW50c0F0WSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
bnRzQXRZLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IHBvaW50c0F0WigpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pbnRzQXRaLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IHNwZWN1bGFy
RXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyRXhwb25lbnQtPmN1cnJlbnRWYWx1
ZSgpOyB9CisgICAgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2xp
bWl0aW5nQ29uZUFuZ2xlLT5jdXJyZW50VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1h
dGVkTnVtYmVyPiBhemltdXRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX2F6aW11dGguYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVk
TnVtYmVyPiBlbGV2YXRpb25BbmltYXRlZCgpIHsgcmV0dXJuIG1fZWxldmF0aW9uLmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRl
ZE51bWJlcj4geEFuaW1hdGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4geUFuaW1h
dGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gekFuaW1hdGVkKCkgeyByZXR1cm4g
bV96LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0
cjxTVkdBbmltYXRlZE51bWJlcj4gcG9pbnRzQXRYQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BvaW50
c0F0WC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWROdW1iZXI+IHBvaW50c0F0WUFuaW1hdGVkKCkgeyByZXR1cm4gbV9wb2lu
dHNBdFkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVm
UHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBwb2ludHNBdFpBbmltYXRlZCgpIHsgcmV0dXJuIG1fcG9p
bnRzQXRaLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJl
ZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gc3BlY3VsYXJFeHBvbmVudEFuaW1hdGVkKCkgeyByZXR1
cm4gbV9zcGVjdWxhckV4cG9uZW50LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gbGltaXRpbmdDb25lQW5nbGVB
bmltYXRlZCgpIHsgcmV0dXJuIG1fbGltaXRpbmdDb25lQW5nbGUuYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGF6aW11dGhB
bmltYXRlZCgpIHsgcmV0dXJuIG1fYXppbXV0aDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBl
bGV2YXRpb25BbmltYXRlZCgpIHsgcmV0dXJuIG1fZWxldmF0aW9uOyB9CisgICAgU1ZHQW5pbWF0
ZWROdW1iZXImIHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feDsgfQorICAgIFNWR0FuaW1hdGVkTnVt
YmVyJiB5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3k7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYg
ekFuaW1hdGVkKCkgeyByZXR1cm4gbV96OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHBvaW50
c0F0WEFuaW1hdGVkKCkgeyByZXR1cm4gbV9wb2ludHNBdFg7IH0KKyAgICBTVkdBbmltYXRlZE51
bWJlciYgcG9pbnRzQXRZQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BvaW50c0F0WTsgfQorICAgIFNW
R0FuaW1hdGVkTnVtYmVyJiBwb2ludHNBdFpBbmltYXRlZCgpIHsgcmV0dXJuIG1fcG9pbnRzQXRa
OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHNwZWN1bGFyRXhwb25lbnRBbmltYXRlZCgpIHsg
cmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVudDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBsaW1p
dGluZ0NvbmVBbmdsZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9saW1pdGluZ0NvbmVBbmdsZTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRkVMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CkBAIC02NSwzNCArNjQsMjcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRWxlbWVudD47Ci0gICAgc3RhdGljIGF1dG8mIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNv
bnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVMaWdodEVsZW1lbnQs
IFNWR0VsZW1lbnQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVn
aXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAg
IHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRl
OwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhp
cyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2F6aW11dGg7Ci0gICAgU1ZHQW5pbWF0
ZWROdW1iZXJBdHRyaWJ1dGUgbV9lbGV2YXRpb247Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRy
aWJ1dGUgbV94OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1feTsKLSAgICBTVkdB
bmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3o7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1
dGUgbV9wb2ludHNBdFg7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9wb2ludHNB
dFk7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9wb2ludHNBdFo7Ci0gICAgU1ZH
QW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zcGVjdWxhckV4cG9uZW50IHsgMSB9OwotICAgIFNW
R0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fbGltaXRpbmdDb25lQW5nbGU7CisgICAgUmVmPFNW
R0FuaW1hdGVkTnVtYmVyPiBtX2F6aW11dGggeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRo
aXMpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2VsZXZhdGlvbiB7IFNWR0FuaW1h
dGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1f
eCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWROdW1iZXI+IG1feSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1feiB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhp
cykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fcG9pbnRzQXRYIHsgU1ZHQW5pbWF0
ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9w
b2ludHNBdFkgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTnVtYmVyPiBtX3BvaW50c0F0WiB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUo
dGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc3BlY3VsYXJFeHBvbmVudCB7
IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcywgMSkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWROdW1iZXI+IG1fbGltaXRpbmdDb25lQW5nbGUgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRl
KHRoaXMpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggYTQyMTczOTNlZDM5ZWUwYTBk
MmZmYjk2YmY2ZmYyNGY0ZTcxMmYzMC4uNjJmZjI0YWNjNGYxNjc5ODBmZTlmNGVhNDVjNzg3ZmVj
YTIxMmRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1
bHplIDxrcml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiw2ICszNiwx
MSBAQCBpbmxpbmUgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpmZU1vcnBob2xvZ3lUYWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKyAg
ICAKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6cmFkaXVzQXR0ciwgJlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6Om1fcmFk
aXVzWCwgJlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6Om1fcmFkaXVzWT4oKTsKKyAgICB9KTsKIH0K
IAogUmVmPFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBA
IC00MywyMiArNDgsMTAgQEAgUmVmPFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ+IFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNYSWRl
bnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19p
ZGVudGlmaWVyKCJTVkdSYWRpdXNYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdSYWRpdXNZIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRp
ZmllcjsKLX0KLQogdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRSYWRpdXMoZmxvYXQg
eCwgZmxvYXQgeSkKIHsKLSAgICBtX3JhZGl1c1guc2V0VmFsdWUoeCk7Ci0gICAgbV9yYWRpdXNZ
LnNldFZhbHVlKHkpOworICAgIG1fcmFkaXVzWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOworICAg
IG1fcmFkaXVzWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwogICAgIGludmFsaWRhdGUoKTsKIH0K
IApAQCAtNjksOSArNjIsNiBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcygpCiAgICAgICAgIHJldHVybjsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJp
YnV0ZTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6bV9pbjE+KCk7
CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwg
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgJlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6Om1fc3ZnT3Bl
cmF0b3I+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJhZGl1
c0F0dHIsCi0gICAgICAgICZTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNYSWRlbnRpZmll
ciwgJlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6Om1fcmFkaXVzWCwKLSAgICAgICAgJlNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQ6OnJhZGl1c1lJZGVudGlmaWVyLCAmU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6bV9yYWRpdXNZPigpOwogfQogCiB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCkBAIC05MSw4ICs4MSw4IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnJhZGl1c0F0dHIpIHsKICAgICAgICAgZmxvYXQgeCwgeTsKICAg
ICAgICAgaWYgKHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIodmFsdWUsIHgsIHkpKSB7Ci0gICAg
ICAgICAgICBtX3JhZGl1c1guc2V0VmFsdWUoeCk7Ci0gICAgICAgICAgICBtX3JhZGl1c1kuc2V0
VmFsdWUoeSk7CisgICAgICAgICAgICBtX3JhZGl1c1gtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsK
KyAgICAgICAgICAgIG1fcmFkaXVzWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuaAppbmRleCA2ODI4MWI3ZmZmZTgzYWMyYzBhMGEzNjU2ZjNlYzYxYmQ2ZjM3
Yjk0Li5lZTc1NWZkMjQ1N2VlZTY0OTJjYzk5ZTczZTE4ZmUxZDFkY2RjMWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAK
IAogI2luY2x1ZGUgIkZFTW9ycGhvbG9neS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVy
YXRpb24uaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC02NSwxMyArNjQsMTMgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsg
cmV0dXJuIG1faW4xLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAg
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSBzdmdPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Zn
T3BlcmF0b3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9h
dCByYWRpdXNYKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNYLmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFkaXVzWS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGZsb2F0
IHJhZGl1c1goKSBjb25zdCB7IHJldHVybiBtX3JhZGl1c1gtPmN1cnJlbnRWYWx1ZSgpOyB9Cisg
ICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWS0+Y3VycmVudFZhbHVl
KCk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX2luMS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gc3ZnT3BlcmF0b3JBbmltYXRlZCgpIHsg
cmV0dXJuIG1fc3ZnT3BlcmF0b3IuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiByYWRpdXNYQW5pbWF0ZWQoKSB7
IHJldHVybiBtX3JhZGl1c1guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiByYWRpdXNZQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3JhZGl1c1kuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHJhZGl1c1hBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmFk
aXVzWDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiByYWRpdXNZQW5pbWF0ZWQoKSB7IHJldHVy
biBtX3JhZGl1c1k7IH0KIAogcHJpdmF0ZToKICAgICBTVkdGRU1vcnBob2xvZ3lFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtOTUsMTUgKzk0LDEyIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJhZGl1c1hJZGVudGlmaWVyKCk7Ci0gICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaXVzWUlkZW50aWZpZXIoKTsKLQogICAgIEF0dHJpYnV0
ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRT
dHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0
ZTxNb3JwaG9sb2d5T3BlcmF0b3JUeXBlPiBtX3N2Z09wZXJhdG9yIHsgRkVNT1JQSE9MT0dZX09Q
RVJBVE9SX0VST0RFIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9yYWRpdXNY
OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fcmFkaXVzWTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWROdW1iZXI+IG1fcmFkaXVzWCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhp
cykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fcmFkaXVzWSB7IFNWR0FuaW1hdGVk
TnVtYmVyOjpjcmVhdGUodGhpcykgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggZTg0MmU3NTFhN2Rm
MDdiNWVlZThlOTc5ZjJhZTEwNTJlNjUyYzg2Ni4uMjViODFiMGQyYjI0NWNkNzk5NmI3ZjgxN2Vi
ZDBkN2NmYmYwN2FlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5j
cHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0zNyw2ICszNywxMiBAQCBpbmxpbmUgU1ZHRkVPZmZzZXRFbGVtZW50OjpTVkdGRU9mZnNl
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU9mZnNldFRhZykpOwogICAgIHJlZ2lzdGVyQXR0cmli
dXRlcygpOworICAgIAorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5Ojpy
ZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpkeEF0dHIsICZTVkdGRU9mZnNldEVsZW1lbnQ6Om1f
ZHg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OmR5QXR0ciwgJlNWR0ZFT2Zmc2V0RWxlbWVudDo6bV9keT4oKTsKKyAgICB9KTsKIH0KIAog
UmVmPFNWR0ZFT2Zmc2V0RWxlbWVudD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNTAsMTkgKzU2
LDE3IEBAIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQogICAg
IGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgcmVnaXN0cnku
cmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmluQXR0ciwgJlNWR0ZFT2Zmc2V0RWxlbWVudDo6
bV9pbjE+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmR4QXR0
ciwgJlNWR0ZFT2Zmc2V0RWxlbWVudDo6bV9keD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0
dHJpYnV0ZTxTVkdOYW1lczo6ZHlBdHRyLCAmU1ZHRkVPZmZzZXRFbGVtZW50OjptX2R5PigpOwog
fQogCiB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6ZHhBdHRyKSB7Ci0gICAgICAgIG1fZHguc2V0VmFsdWUodmFsdWUudG9G
bG9hdCgpKTsKKyAgICAgICAgbV9keC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
ZHlBdHRyKSB7Ci0gICAgICAgIG1fZHkuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAg
ICAgbV9keS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAppbmRl
eCAyNzVhOWZjMmM3NzA3M2JiMTAxNGU5MGEzNTQ0NDUyNjQxYWUyMjk5Li5lOGZiMTQ2NzhmZmU5
MGMxODI4MDVlNzM0YmFjOWI2N2IyNjk2YWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzIsMTIgKzMxLDEy
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR0ZFT2Zmc2V0RWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0
IHsgcmV0dXJuIG1faW4xLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgZmxvYXQgZHgoKSBjb25zdCB7IHJldHVybiBtX2R4LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgZHkoKSBjb25zdCB7IHJldHVybiBtX2R5LmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgZmxvYXQgZHgoKSBjb25zdCB7
IHJldHVybiBtX2R4LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9keS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZFN0
cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRlZFByb3BlcnR5KGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGR4QW5p
bWF0ZWQoKSB7IHJldHVybiBtX2R4LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gZHlBbmltYXRlZCgpIHsgcmV0
dXJuIG1fZHkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAg
U1ZHQW5pbWF0ZWROdW1iZXImIGR4QW5pbWF0ZWQoKSB7IHJldHVybiBtX2R4OyB9CisgICAgU1ZH
QW5pbWF0ZWROdW1iZXImIGR5QW5pbWF0ZWQoKSB7IHJldHVybiBtX2R5OyB9CiAKIHByaXZhdGU6
CiAgICAgU1ZHRkVPZmZzZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwpAQCAtNjMsOCArNjIsOCBAQCBwcml2YXRlOgogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9h
dHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUg
bV9pbjE7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9keDsKLSAgICBTVkdBbmlt
YXRlZE51bWJlckF0dHJpYnV0ZSBtX2R5OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9k
eCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWROdW1iZXI+IG1fZHkgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggOGExOWQwZGU1YTEwZGIyYTUyOGEx
ZTYxMDU2MDA5YzA5MTNjYzU3Zi4uOWYxYzUxNjA2Y2EzMTdkY2NiMmM0MzM2YzMxNTAxODE2ODgx
YzVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcApAQCAtNDAsNiArNDAsMTQgQEAgaW5saW5lIFNWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWUK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFn
KSk7CiAgICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNwZWN1bGFy
Q29uc3RhbnRBdHRyLCAmU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bV9zcGVjdWxhckNv
bnN0YW50PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNW
R05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgJlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6Om1fc3BlY3VsYXJFeHBvbmVudD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgJlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6Om1fc3VyZmFjZVNjYWxlPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgJlNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Om1fa2VybmVsVW5pdExlbmd0aFgsICZTVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50OjptX2tlcm5lbFVuaXRMZW5ndGhZPigpOworICAgIH0pOwog
fQogCiBSZWY8U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudD4gU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKQEAgLTQ3LDMwICs1NSwxMiBAQCBSZWY8U1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YQog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVs
VW5pdExlbmd0aFgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBy
ZXR1cm4gc19pZGVudGlmaWVyOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCi17Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJu
ZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
IHJldHVybiBzX2lkZW50aWZpZXI7Ci19Ci0KIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKIHsKICAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJp
YnV0ZVJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6aW5BdHRyLCAm
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bV9pbjE+KCk7Ci0gICAgcmVnaXN0cnkucmVn
aXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCAmU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudDo6bV9zcGVjdWxhckNvbnN0YW50PigpOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgJlNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Om1fc3BlY3VsYXJFeHBvbmVudD4oKTsKLSAgICByZWdp
c3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgJlNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Om1fc3VyZmFjZVNjYWxlPigpOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwKLSAgICAg
ICAgJlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRp
ZmllciwgJlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Om1fa2VybmVsVW5pdExlbmd0aFgs
Ci0gICAgICAgICZTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3Ro
WUlkZW50aWZpZXIsICZTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjptX2tlcm5lbFVuaXRM
ZW5ndGhZPigpOwogfQogCiB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCkBAIC04MSwyNSArNzEsMjUgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb24KICAgICB9
CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cikgewotICAgICAg
ICBtX3N1cmZhY2VTY2FsZS5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX3N1
cmZhY2VTY2FsZS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJDb25z
dGFudEF0dHIpIHsKLSAgICAgICAgbV9zcGVjdWxhckNvbnN0YW50LnNldFZhbHVlKHZhbHVlLnRv
RmxvYXQoKSk7CisgICAgICAgIG1fc3BlY3VsYXJDb25zdGFudC0+c2V0QmFzZVZhbEludGVybmFs
KHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpIHsKLSAgICAgICAgbV9zcGVjdWxh
ckV4cG9uZW50LnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fc3BlY3VsYXJF
eHBvbmVudC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIpIHsKICAgICAgICAgZmxvYXQgeCwgeTsKICAgICAgICAgaWYgKHBhcnNlTnVtYmVyT3B0
aW9uYWxOdW1iZXIodmFsdWUsIHgsIHkpKSB7Ci0gICAgICAgICAgICBtX2tlcm5lbFVuaXRMZW5n
dGhYLnNldFZhbHVlKHgpOwotICAgICAgICAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWS5zZXRWYWx1
ZSh5KTsKKyAgICAgICAgICAgIG1fa2VybmVsVW5pdExlbmd0aFgtPnNldEJhc2VWYWxJbnRlcm5h
bCh4KTsKKyAgICAgICAgICAgIG1fa2VybmVsVW5pdExlbmd0aFktPnNldEJhc2VWYWxJbnRlcm5h
bCh5KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggN2M5MDVhYTcy
YTdlMmY5OWY1OWFmMGY3YTg2NTI1ZGU0Y2U1OWI2Ny4uYmY3YmQ4NzUwMmViMjhhZTVmOTk0Y2Zm
NTc0YmU2ZjQxNDlhMzU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5oCkBAIC0yMyw3ICsyMyw2IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkZFU3BlY3VsYXJMaWdodGluZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVt
YmVyLmgiCiAjaW5jbHVkZSAiU1ZHRkVMaWdodEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApAQCAtMzYsMTggKzM1LDE4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVM
aWdodEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBTdHJpbmcgaW4xKCkg
Y29uc3QgeyByZXR1cm4gbV9pbjEuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBmbG9hdCBzcGVjdWxhckNvbnN0YW50KCkgY29uc3QgIHsgcmV0dXJuIG1fc3BlY3Vs
YXJDb25zdGFudC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZs
b2F0IHNwZWN1bGFyRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyRXhwb25lbnQu
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBzdXJmYWNl
U2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2VTY2FsZS5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3Qg
eyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QgeyByZXR1cm4g
bV9rZXJuZWxVbml0TGVuZ3RoWS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQorICAgIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFy
Q29uc3RhbnQtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVudC0+Y3VycmVudFZhbHVlKCk7IH0KKyAg
ICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2VTY2FsZS0+Y3Vy
cmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2VybmVsVW5pdExlbmd0aFgtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFkoKSBjb25zdCB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZLT5jdXJy
ZW50VmFsdWUoKTsgfQogCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBpbjFBbmltYXRl
ZCgpIHsgcmV0dXJuIG1faW4xLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gc3BlY3VsYXJDb25zdGFudEFuaW1h
dGVkKCkgeyByZXR1cm4gbV9zcGVjdWxhckNvbnN0YW50LmFuaW1hdGVkUHJvcGVydHkoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gc3BlY3Vs
YXJFeHBvbmVudEFuaW1hdGVkKCkgeyByZXR1cm4gbV9zcGVjdWxhckV4cG9uZW50LmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRl
ZE51bWJlcj4gc3VyZmFjZVNjYWxlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N1cmZhY2VTY2FsZS5h
bmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWROdW1iZXI+IGtlcm5lbFVuaXRMZW5ndGhYQW5pbWF0ZWQoKSB7IHJldHVybiBtX2tl
cm5lbFVuaXRMZW5ndGhYLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4ga2VybmVsVW5pdExlbmd0aFlBbmltYXRl
ZCgpIHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHNwZWN1bGFyQ29uc3Rh
bnRBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3BlY3VsYXJDb25zdGFudDsgfQorICAgIFNWR0FuaW1h
dGVkTnVtYmVyJiBzcGVjdWxhckV4cG9uZW50QW5pbWF0ZWQoKSB7IHJldHVybiBtX3NwZWN1bGFy
RXhwb25lbnQ7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgc3VyZmFjZVNjYWxlQW5pbWF0ZWQo
KSB7IHJldHVybiBtX3N1cmZhY2VTY2FsZTsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrZXJu
ZWxVbml0TGVuZ3RoWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsgfQor
ICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrZXJuZWxVbml0TGVuZ3RoWUFuaW1hdGVkKCkgeyByZXR1
cm4gbV9rZXJuZWxVbml0TGVuZ3RoWTsgfQogCiBwcml2YXRlOgogICAgIFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC03MSwx
NyArNzAsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShG
aWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExlbmd0
aFhJZGVudGlmaWVyKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5p
dExlbmd0aFlJZGVudGlmaWVyKCk7Ci0KICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmli
dXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5
UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4x
OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3BlY3VsYXJDb25zdGFudCB7IDEg
fTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3NwZWN1bGFyRXhwb25lbnQgeyAx
IH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zdXJmYWNlU2NhbGUgeyAxIH07
Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9rZXJuZWxVbml0TGVuZ3RoWDsKLSAg
ICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2tlcm5lbFVuaXRMZW5ndGhZOworICAgIFJl
ZjxTVkdBbmltYXRlZE51bWJlcj4gbV9zcGVjdWxhckNvbnN0YW50IHsgU1ZHQW5pbWF0ZWROdW1i
ZXI6OmNyZWF0ZSh0aGlzLCAxKSB9OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9zcGVj
dWxhckV4cG9uZW50IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzLCAxKSB9OworICAg
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9zdXJmYWNlU2NhbGUgeyBTVkdBbmltYXRlZE51bWJl
cjo6Y3JlYXRlKHRoaXMsIDEpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2tlcm5l
bFVuaXRMZW5ndGhYIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZE51bWJlcj4gbV9rZXJuZWxVbml0TGVuZ3RoWSB7IFNWR0FuaW1hdGVkTnVt
YmVyOjpjcmVhdGUodGhpcykgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAppbmRleCA5OWQ4YzJk
ZTQwZTY3OTQxNzU0YmYxZDEyYzEyNTg3ODExMzBiMGMzLi4wZTJjNDhlNTI5ZWFlZTBkYzBhODhh
ODk5YmFkMGI2ZDA2YjkyZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVU
dXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzgsNyArMzgsOSBAQCBpbmxpbmUgU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYQogICAgIAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwgJlNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6Om1fYmFzZUZyZXF1ZW5jeVgsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX2Jh
c2VGcmVxdWVuY3lZPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1f
bnVtT2N0YXZlcz4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6c2VlZEF0dHIsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX3NlZWQ+KCk7
CiAgICAgfSk7CiB9CiAKQEAgLTQ3LDI3ICs0OSwxMSBAQCBSZWY8U1ZHRkVUdXJidWxlbmNlRWxl
bWVudD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQ6OmJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdCYXNlRnJlcXVlbmN5WCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBzX2lkZW50aWZp
ZXI7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFz
ZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0Jhc2VGcmVxdWVuY3lZIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKLX0KLQog
dm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQogewogICAg
IGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKICAgICBpZiAoIXJlZ2lzdHJ5
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwKLSAgICAgICAgJlNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6OmJhc2VGcmVxdWVuY3lYSWRlbnRpZmllciwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6Om1fYmFzZUZyZXF1ZW5jeVgsCi0gICAgICAgICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpi
YXNlRnJlcXVlbmN5WUlkZW50aWZpZXIsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX2Jhc2VG
cmVxdWVuY3lZPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpz
ZWVkQXR0ciwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1fc2VlZD4oKTsKICAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBTVkdTdGl0Y2hP
cHRpb25zLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV9zdGl0Y2hUaWxlcz4oKTsKICAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6dHlwZUF0dHIsIFR1cmJ1bGVuY2VU
eXBlLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV90eXBlPigpOwogfQpAQCAtOTEsMTQgKzc3
LDE0IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmJhc2VGcmVxdWVuY3lBdHRyKSB7CiAgICAgICAgIGZsb2F0IHgsIHk7CiAgICAgICAgIGlmIChw
YXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHZhbHVlLCB4LCB5KSkgewotICAgICAgICAgICAgbV9i
YXNlRnJlcXVlbmN5WC5zZXRWYWx1ZSh4KTsKLSAgICAgICAgICAgIG1fYmFzZUZyZXF1ZW5jeVku
c2V0VmFsdWUoeSk7CisgICAgICAgICAgICBtX2Jhc2VGcmVxdWVuY3lYLT5zZXRCYXNlVmFsSW50
ZXJuYWwoeCk7CisgICAgICAgICAgICBtX2Jhc2VGcmVxdWVuY3lZLT5zZXRCYXNlVmFsSW50ZXJu
YWwoeSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjpzZWVkQXR0cikgewotICAgICAgICBtX3NlZWQuc2V0VmFsdWUodmFsdWUu
dG9GbG9hdCgpKTsKKyAgICAgICAgbV9zZWVkLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9G
bG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKaW5kZXggMTFjZDdmZWIwYTJiMDhhY2FmYWQyMDNmMzEw
NWQyYjZlNDU2Mjk0OS4uOTc5NmE1MzI0ZTAwZjJhZGJlODk1MjFjZWMxMTAyYWY1ZDQ1YWFlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCkBAIC0yMyw3
ICsyMyw2IEBACiAKICNpbmNsdWRlICJGRVR1cmJ1bGVuY2UuaCIKICNpbmNsdWRlICJTVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNs
dWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtOTcsMTcgKzk2LDE3IEBAIGNsYXNzIFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQgZmluYWwgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBmbG9hdCBiYXNlRnJlcXVlbmN5
WCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZUZyZXF1ZW5jeVguY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBiYXNlRnJlcXVlbmN5WSgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFzZUZyZXF1ZW5jeVkuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KKyAgICBmbG9hdCBiYXNlRnJlcXVlbmN5WCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZUZyZXF1
ZW5jeVgtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVkoKSBjb25z
dCB7IHJldHVybiBtX2Jhc2VGcmVxdWVuY3lZLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGludCBu
dW1PY3RhdmVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1PY3RhdmVzLT5jdXJyZW50VmFsdWUoKTsg
fQotICAgIGZsb2F0IHNlZWQoKSBjb25zdCB7IHJldHVybiBtX3NlZWQuY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBmbG9hdCBzZWVkKCkgY29uc3QgeyByZXR1cm4g
bV9zZWVkLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIFNWR1N0aXRjaE9wdGlvbnMgc3RpdGNoVGls
ZXMoKSBjb25zdCB7IHJldHVybiBtX3N0aXRjaFRpbGVzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CiAgICAgVHVyYnVsZW5jZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogCi0gICAgUmVm
UHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBiYXNlRnJlcXVlbmN5WEFuaW1hdGVkKCkgeyByZXR1cm4g
bV9iYXNlRnJlcXVlbmN5WC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGJhc2VGcmVxdWVuY3lZQW5pbWF0ZWQo
KSB7IHJldHVybiBtX2Jhc2VGcmVxdWVuY3lZLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBiYXNlRnJlcXVlbmN5WEFuaW1h
dGVkKCkgeyByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVy
JiBiYXNlRnJlcXVlbmN5WUFuaW1hdGVkKCkgeyByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WTsgfQog
ICAgIFNWR0FuaW1hdGVkSW50ZWdlciYgbnVtT2N0YXZlc0FuaW1hdGVkKCkgeyByZXR1cm4gbV9u
dW1PY3RhdmVzOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBzZWVkQW5pbWF0ZWQo
KSB7IHJldHVybiBtX3NlZWQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHNlZWRBbmltYXRlZCgpIHsgcmV0dXJuIG1fc2Vl
ZDsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBzdGl0Y2hUaWxlc0FuaW1h
dGVkKCkgeyByZXR1cm4gbV9zdGl0Y2hUaWxlcy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gdHlwZUFu
aW1hdGVkKCkgeyByZXR1cm4gbV90eXBlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQogCkBAIC0xMzMsMTUgKzEzMiwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBiYXNlRnJlcXVlbmN5WElkZW50aWZpZXIoKTsKLSAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBiYXNlRnJlcXVlbmN5WUlkZW50aWZpZXIoKTsKLQogICAgIEF0
dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5p
bWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9iYXNlRnJlcXVlbmN5WDsKLSAgICBTVkdBbmltYXRlZE51
bWJlckF0dHJpYnV0ZSBtX2Jhc2VGcmVxdWVuY3lZOworICAgIFJlZjxTVkdBbmltYXRlZE51bWJl
cj4gbV9iYXNlRnJlcXVlbmN5WCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fYmFzZUZyZXF1ZW5jeVkgeyBTVkdBbmltYXRl
ZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gbV9u
dW1PY3RhdmVzIHsgU1ZHQW5pbWF0ZWRJbnRlZ2VyOjpjcmVhdGUodGhpcywgMSkgfTsKLSAgICBT
VkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3NlZWQ7CisgICAgUmVmPFNWR0FuaW1hdGVkTnVt
YmVyPiBtX3NlZWQgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdTdGl0Y2hPcHRpb25zPiBtX3N0aXRjaFRp
bGVzIHsgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0ggfTsKICAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uQXR0cmlidXRlPFR1cmJ1bGVuY2VUeXBlPiBtX3R5cGUgeyBUdXJidWxlbmNlVHlwZTo6VHVy
YnVsZW5jZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1Zp
ZXdCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAppbmRleCAwZTFl
ZmU3NWZkNWYzMWY1NGEzMzBmNzRlYzYxMjI4ZjdhMTEyM2EyLi4zYjBjNDM0MDYyMDE4YjE2MGUz
ZTc1OTc5NGY5ODVkNGRmOWZiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rml0VG9WaWV3Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5o
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsOSArMjMsMTIgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFBy
b3BlcnR5SW1wbC5oIgorI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsLmgiCiAj
aW5jbHVkZSAiU1ZHQXR0cmlidXRlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCmluZGV4
IDcyZGQzZjEzNTk4OTE1ZDNhNjAxZGZkYzE5YjU0MzgyODkyMjFlYWQuLmJkZDdhMDI3NTRhY2U1
NDE4YWQ5ZTk4MGQxMzM4MWU2OWVkZmFjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9t
ZXRyeUVsZW1lbnQuY3BwCkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlF
bGVtZW50LmgiCiAKICNpbmNsdWRlICJET01Qb2ludC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jl
c291cmNlLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHU2hhcGUuaCIKICNpbmNsdWRlICJTVkdEb2N1
bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHUG9pbnQuaCIKQEAgLTM2LDcgKzM4LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChTVkdHZW9tZXRyeUVsZW1lbnQpOwogU1ZHR2VvbWV0cnlFbGVtZW50OjpTVkdHZW9tZXRy
eUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogU1ZHR3JhcGhpY3NFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewotICAgIHJl
Z2lzdGVyQXR0cmlidXRlcygpOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
KyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0ciwgJlNWR0dlb21l
dHJ5RWxlbWVudDo6bV9wYXRoTGVuZ3RoPigpOworICAgIH0pOwogfQogCiBmbG9hdCBTVkdHZW9t
ZXRyeUVsZW1lbnQ6OmdldFRvdGFsTGVuZ3RoKCkgY29uc3QKQEAgLTg3LDE5ICs5MiwxMSBAQCBi
b29sIFNWR0dlb21ldHJ5RWxlbWVudDo6aXNQb2ludEluU3Ryb2tlKERPTVBvaW50SW5pdCYmIHBv
aW50SW5pdCkKICAgICByZXR1cm4gcmVuZGVyZXItPmlzUG9pbnRJblN0cm9rZShwb2ludCk7CiB9
CiAKLXZvaWQgU1ZHR2VvbWV0cnlFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAg
IGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0ciwgJlNWR0dlb21ldHJ5RWxlbWVudDo6bV9wYXRo
TGVuZ3RoPigpOwotfQotCiB2b2lkIFNWR0dlb21ldHJ5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIpIHsKLSAgICAgICAgbV9w
YXRoTGVuZ3RoLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7Ci0gICAgICAgIGlmIChtX3BhdGhM
ZW5ndGgudmFsdWUoKSA8IDApCisgICAgICAgIG1fcGF0aExlbmd0aC0+c2V0QmFzZVZhbEludGVy
bmFsKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIGlmIChtX3BhdGhMZW5ndGgtPmJhc2VWYWwo
KSA8IDApCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBv
cnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1ZSBmb3IgcGF0aCBhdHRyaWJ1dGUgPHBhdGhMZW5ndGg+
IGlzIG5vdCBhbGxvd2VkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR2VvbWV0cnlFbGVtZW50LmgKaW5kZXggYjA5Y2JjYjAxNWMwNDZlZTVmMDJiN2Y2Y2E2
OGNkOWU2MTZjOGFmZC4uMjg3MWY1ODk1ZmNhZjE1MDhhMGZmMGZhMGQ0ZTVkYWNhNWRlY2JmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaApAQCAtMjMsNyArMjMsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0
ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogCkBAIC00MywxMSArNDIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNQb2lu
dEluU3Ryb2tlKERPTVBvaW50SW5pdCYmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJv
eHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0dy
YXBoaWNzRWxlbWVudD47Ci0gICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotCiAgICAg
dXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdHZW9t
ZXRyeUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudD47CiAKLSAgICBhdXRvIHBhdGhMZW5ndGhB
bmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0aExlbmd0aC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KKyAgICBmbG9hdCBwYXRoTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9wYXRoTGVuZ3RoLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBw
YXRoTGVuZ3RoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BhdGhMZW5ndGg7IH0KIAogcHJvdGVjdGVk
OgogICAgIFNWR0dlb21ldHJ5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKQEAgLTU5LDE4ICs1NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdHZW9tZXRyeUVs
ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBTVkdB
dHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9
CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIEF0dHJpYnV0ZU93
bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1i
ZXJBdHRyaWJ1dGUgbV9wYXRoTGVuZ3RoOworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9w
YXRoTGVuZ3RoIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01Q
YXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcApp
bmRleCA2MGJhNzE0NzUzNDk4ZDY4MTNmZmRiODg3OWY2Y2E3ZDZkMTFiMTI4Li41Mzc2NWQ5OTNk
YzMwNWUyYWI1YTc2NWM0Y2QxZGNjYTYyMTZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBh
dGhFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1l
bnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKaW5kZXggMjc2NDg1ODVlODBl
NDdmMDNkM2M2MGRhMDBhNmI5MzJlODgzNmZjNC4uMGU5YWQyYzNlMGI4YmFhODU2ZjUzMWZkMTVi
Y2RjNWIxMDBhOTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKQEAgLTIyLDcg
KzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGF0aC5oIgotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoLmgiCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dlb21ldHJ5
RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0
VmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAK
aW5kZXggNDc2ZDIyNWI2ODlhZmY3NWZkYmQ2Yzk3NzI1NzQzZThjNThhNWMxMi4uNjIxNjMyYzI1
NjI5N2Q2ZGViMmY5ODFlMDBhOWExZmM5OTZmOTI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiU1ZH
UGF0aFNlZ0xpc3RWYWx1ZXMuaCIKIAogI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCisjaW5j
bHVkZSAiU1ZHUGF0aFNlZ1dpdGhDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGll
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3RvcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50
LmNwcAppbmRleCA2NjAxMTIxOTBkYmI4OTMyMzFiZDdiNzRhYzg2NWEyMmQzNDg5YzYyLi5iYTFk
YWIwZmYxZDgzNjc5YWRiNzk3ZGY1MzYwODU4OGFjMWRkMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdG9wRWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNyw3ICszNywxMSBAQCBpbmxp
bmUgU1ZHU3RvcEVsZW1lbnQ6OlNWR1N0b3BFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkbwogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3RvcFRhZykpOwotICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om9mZnNldEF0dHIsICZTVkdTdG9wRWxlbWVu
dDo6bV9vZmZzZXQ+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdTdG9wRWxlbWVudD4gU1ZHU3Rv
cEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCkBAIC00NSwyMSArNDksMTMgQEAgUmVmPFNWR1N0b3BFbGVtZW50PiBTVkdTdG9w
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW4KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdTdG9wRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQogCi12b2lkIFNWR1N0b3BFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAg
IGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpvZmZzZXRBdHRyLCAmU1ZHU3RvcEVsZW1lbnQ6Om1fb2Zmc2V0PigpOwot
fQotCiB2b2lkIFNWR1N0b3BFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgnJScp
KQotICAgICAgICAgICAgbV9vZmZzZXQuc2V0VmFsdWUodmFsdWUuc3RyaW5nKCkubGVmdCh2YWx1
ZS5sZW5ndGgoKSAtIDEpLnRvRmxvYXQoKSAvIDEwMC4wZik7CisgICAgICAgICAgICBtX29mZnNl
dC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnN0cmluZygpLmxlZnQodmFsdWUubGVuZ3RoKCkg
LSAxKS50b0Zsb2F0KCkgLyAxMDAuMGYpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX29m
ZnNldC5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICAgICAgbV9vZmZzZXQtPnNl
dEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCmluZGV4IDA4ZDk5MTExMmYyYzIwNGYw
OWJmZmVlODc0YWVhMTZlZjU2YmI3ZjcuLmY3NzgxZmM0ZjExNzM4M2QwZDA0ZTY2ZTFkODgwYWQw
MzJjYWU0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNp
bmNsdWRlICJTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDI1ICsz
MiwxOCBAQCBwdWJsaWM6CiAKICAgICBDb2xvciBzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KCkg
Y29uc3Q7CiAKLSAgICBmbG9hdCBvZmZzZXQoKSB7IHJldHVybiBtX29mZnNldC5jdXJyZW50VmFs
dWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJl
cj4gb2Zmc2V0QW5pbWF0ZWQoKSB7IHJldHVybiBtX29mZnNldC5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBmbG9hdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgb2Zm
c2V0QW5pbWF0ZWQoKSB7IHJldHVybiBtX29mZnNldDsgfQogCiBwcml2YXRlOgogICAgIFNWR1N0
b3BFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1N0b3BF
bGVtZW50LCBTVkdFbGVtZW50PjsKLSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0
cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0
ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7
IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0
cnk8U1ZHU3RvcEVsZW1lbnQsIFNWR0VsZW1lbnQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVn
aXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5
UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBmaW5hbDsKIApAQCAtNjIsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgQXR0cmli
dXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3Bl
cnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRl
ZE51bWJlckF0dHJpYnV0ZSBtX29mZnNldCB7IDAgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1i
ZXI+IG1fb2Zmc2V0IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSgwKSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5oCmluZGV4IDY4NzRmZGYxZjJhOTUwZTE2OGRmNGNhMzk2ZDk4ZDkw
NzRjY2M3NTMuLmFjMTYwZWRjZTdjMGUwYTA2N2JkZWZiZDcwN2YyYWJlNTU5MDgxYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKQEAg
LTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBJbWFnZTsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CitjbGFzcyBUcmVlU2NvcGU7CiAKIGNsYXNz
IEZFSW1hZ2UgZmluYWwgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nl
c3NvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBY2Nlc3NvckltcGwuaAppbmRleCBkMDhlYjcwM2YwMjUxNDRiMjdjMzVjNTI1NjQ0MjA0
MTg4Yjk5ZTNjLi5kMzA0OWJiMzc3NTA5M2NkMmUxNzZlNTZmZTI3YTJiODFmM2QxZGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
QWNjZXNzb3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCkBAIC03Niw2ICs3NiwyOCBAQCBwcml2YXRlOgog
ICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1h
dGVkTnVtYmVyQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vz
c29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWROdW1iZXI+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWROdW1iZXI+Owor
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0
eTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IE93bmVyVHlwZTo6KnByb3Bl
cnR5PgorICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJU
eXBlPiYgc2luZ2xldG9uKCkgeyByZXR1cm4gQmFzZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR0Fu
aW1hdGVkTnVtYmVyQWNjZXNzb3IsIHByb3BlcnR5PigpOyB9CisKK3ByaXZhdGU6CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5
cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdB
bmltYXRlZE51bWJlckFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3du
ZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYgb3du
ZXIsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJiBhbmltYXRvcikgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHN0YXRpY19jYXN0PFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3ImPihhbmltYXRvciku
YXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShwcm9wZXJ0eShvd25lcikpOworICAgIH0KK307CisKIHRl
bXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpb0FjY2Vzc29yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3Nv
cjxPd25lclR5cGUsIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4gewogICAgIHVzaW5n
IEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4
IGZlMTUwNDVhM2U4YWNjMDM2ZGJkNjIyZTdkZGU5OWE3NmNlOTY1Y2MuLjk4NmE5ZDhiNTE5YjYx
Mjk4NDcyM2E1NWJlYjIxMzcyNWNjYzAxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBs
LmgKQEAgLTc2LDYgKzc2LDI1IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHQW5p
bWF0ZWROdW1iZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3I8U1ZHQW5pbWF0ZWROdW1iZXIsIFNWR0FuaW1hdGlvbk51bWJlckZ1bmN0aW9uPiB7Cisg
ICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvciwgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj47CisgICAgZnJpZW5k
IGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yOworICAgIHVzaW5nIEJhc2UgPSBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWROdW1iZXIsIFNWR0FuaW1hdGlv
bk51bWJlckZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCitwdWJsaWM6CisgICAg
c3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJl
ZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWROdW1i
ZXJBbmltYXRvcj4obmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZp
bmFsCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBl
cmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmltVmFsKCkpOworICAgIH0KK307
CisKIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8sIFNWR0FuaW1hdGlvblByZXNlcnZlQXNwZWN0UmF0aW9GdW5jdGlvbj4gewogICAg
IHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCBTVkdBbmltYXRpb25QcmVzZXJ2ZUFzcGVjdFJhdGlvRnVuY3Rpb24+
OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaAppbmRleCAyYTBjMzJlYmExNzdm
MTVkNWY0ZTJjZDZiNDVjMDE0Nzk2NWUyNmRiLi5lYTUzMDY0NDBiMzhjODk2NDE0ZTUwY2FmYmZi
ZWZlYzYzYzdkNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGgu
aCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmltaXRp
dmVQcm9wZXJ0eS5oIgpAQCAtNDMsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIFNWR0FuaW1hdGVkQm9vbGVhbiA9IFNWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHk8Ym9v
bD47CiB1c2luZyBTVkdBbmltYXRlZEludGVnZXIgPSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3Bl
cnR5PGludD47Cit1c2luZyBTVkdBbmltYXRlZE51bWJlciA9IFNWR0FuaW1hdGVkUHJpbWl0aXZl
UHJvcGVydHk8ZmxvYXQ+OwogCiB1c2luZyBTVkdBbmltYXRlZFJlY3QgPSBTVkdBbmltYXRlZFZh
bHVlUHJvcGVydHk8U1ZHUmVjdD47CiB1c2luZyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8gPSBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHk8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5UGFpckFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaAppbmRleCBhY2RhMWY1Y2RjODQwZDU0
ZTIyMGQwZTE0ZTU0NTBlZDE2ZjU0NjhjLi41NjY5MDE1ZTdmZThjZDBkYWRiZTA3Y2VmYTZmMWI2
ODI5YTdiYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmgKQEAgLTY5
LDQgKzY5LDM5IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgT3du
ZXJUeXBlPgorY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQWNjZXNzb3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVk
TnVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiwgU1ZHQW5pbWF0ZWROdW1iZXJBY2Nlc3NvcjxPd25l
clR5cGU+PiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNz
b3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZE51bWJlckFjY2Vzc29yPE93bmVyVHlwZT4sIFNWR0Fu
aW1hdGVkTnVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPj47CisgICAgdXNpbmcgQmFzZTo6cHJvcGVy
dHkxOworICAgIHVzaW5nIEJhc2U6OnByb3BlcnR5MjsKKworcHVibGljOgorICAgIHVzaW5nIEJh
c2U6OkJhc2U7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBPd25lclR5cGU6
Oipwcm9wZXJ0eTEsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gT3duZXJUeXBlOjoqcHJvcGVydHky
ID4KKyAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlw
ZT4mIHNpbmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdBbmlt
YXRlZE51bWJlclBhaXJBY2Nlc3NvciwgcHJvcGVydHkxLCBwcm9wZXJ0eTI+KCk7IH0KKworcHJp
dmF0ZToKKyAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYg
b3duZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBib29sIGRpcnR5MSA9IHByb3BlcnR5
MShvd25lciktPmlzRGlydHkoKTsKKyAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIob3du
ZXIpLT5pc0RpcnR5KCk7CisgICAgICAgIGlmICghKGRpcnR5MSB8fCBkaXJ0eTIpKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBTdHJpbmcgc3RyaW5nMSA9IGRp
cnR5MSA/ICpwcm9wZXJ0eTEob3duZXIpLT5zeW5jaHJvbml6ZSgpIDogcHJvcGVydHkxKG93bmVy
KS0+YmFzZVZhbEFzU3RyaW5nKCk7CisgICAgICAgIFN0cmluZyBzdHJpbmcyID0gZGlydHkyID8g
KnByb3BlcnR5Mihvd25lciktPnN5bmNocm9uaXplKCkgOiBwcm9wZXJ0eTIob3duZXIpLT5iYXNl
VmFsQXNTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHN0cmluZzEgPT0gc3RyaW5nMiA/IHN0cmlu
ZzEgOiBzdHJpbmcxICsgIiwgIiArIHN0cmluZzI7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVf
cHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93bmVy
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRlZE51
bWJlclBhaXJBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5MShvd25lciks
IHByb3BlcnR5Mihvd25lciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2Uo
T3duZXJUeXBlJiBvd25lciwgU1ZHQXR0cmlidXRlQW5pbWF0b3ImIGFuaW1hdG9yKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5p
bWF0b3ImPihhbmltYXRvcikuYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShwcm9wZXJ0eTEob3duZXIp
LCBwcm9wZXJ0eTIob3duZXIpKTsKKyAgICB9Cit9OworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBh
aXJBbmltYXRvckltcGwuaAppbmRleCAzOWJlYTEzYjk1OWY5ZDFkYjdiNzI5YTM3YTk1NTBhOTU5
YzE5NDcxLi5lMWY5OGU0OGE3NjUzNTIxZGI0NWNiMjAyNTg3ZDYxMjFiMjRmYjQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFp
ckFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTc2LDQgKzc2LDQ3IEBAIHByaXZh
dGU6CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IgZmlu
YWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmltYXRlZE51
bWJlckFuaW1hdG9yLCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPiB7CisgICAgdXNpbmcgQmFz
ZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZHQW5pbWF0ZWROdW1iZXJBbmlt
YXRvciwgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsK
KworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdB
bmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkTnVtYmVyUGFp
ckFuaW1hdG9yPihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IoYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgc2V0RnJv
bUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmlu
ZyYgdG8pIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHBhaXJGcm9tID0gU1ZHUHJvcGVydHlU
cmFpdHM8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+Ojpmcm9tU3RyaW5nKGZyb20pOworICAgICAg
ICBhdXRvIHBhaXJUbyA9IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+
Pjo6ZnJvbVN0cmluZyh0byk7CisgICAgICAgIAorICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjEtPm1fZnVuY3Rpb24ubV9mcm9tID0gcGFpckZyb20uZmlyc3Q7CisgICAgICAgIG1f
YW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlvbi5tX3RvID0gcGFpclRvLmZpcnN0
OworICAgICAgICAKKyAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0
aW9uLm1fZnJvbSA9IHBhaXJGcm9tLnNlY29uZDsKKyAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5
QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fdG8gPSBwYWlyVG8uc2Vjb25kOworICAgIH0KKworICAg
IHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20s
IGNvbnN0IFN0cmluZyYgYnkpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHBhaXJGcm9tID0g
U1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+Ojpmcm9tU3RyaW5nKGZy
b20pOworICAgICAgICBhdXRvIHBhaXJCeSA9IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+Pjo6ZnJvbVN0cmluZyhieSk7CisgICAgICAgIAorICAgICAgICBtX2FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjEtPm1fZnVuY3Rpb24ubV9mcm9tID0gcGFpckZyb20uZmlyc3Q7
CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlvbi5tX3RvID0g
cGFpckZyb20uZmlyc3QgKyBwYWlyQnkuZmlyc3Q7CisgICAgICAgIAorICAgICAgICBtX2FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV9mcm9tID0gcGFpckZyb20uc2Vjb25k
OworICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV90byA9
IHBhaXJGcm9tLnNlY29uZCArIHBhaXJCeS5zZWNvbmQ7CisgICAgfQorCisgICAgdm9pZCBzZXRU
b0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pIGZp
bmFsCisgICAgeworICAgICAgICBhdXRvIHBhaXJUb0F0RW5kT2ZEdXJhdGlvbiA9IFNWR1Byb3Bl
cnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+Pjo6ZnJvbVN0cmluZyh0b0F0RW5kT2ZE
dXJhdGlvbik7CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlv
bi5tX3RvQXRFbmRPZkR1cmF0aW9uID0gcGFpclRvQXRFbmRPZkR1cmF0aW9uLmZpcnN0OworICAg
ICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV90b0F0RW5kT2ZE
dXJhdGlvbiA9IHBhaXJUb0F0RW5kT2ZEdXJhdGlvbi5zZWNvbmQ7CisgICAgfQorfTsKKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YjFjYmViM2E1NDYwZWMxYzhkODQ4MGVmNzBkZDdiMjA2MDlmYTc4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1
ZUZ1bmN0aW9uSW1wbC5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oIgorCisjaW5jbHVkZSAiUmVu
ZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitDb2xvciBTVkdBbmltYXRpb25Db2xvckZ1bmN0aW9uOjpjb2xvckZyb21TdHJpbmco
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY3VycmVudENvbG9yKCJj
dXJyZW50Q29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKworICAg
IGlmIChzdHJpbmcgIT0gY3VycmVudENvbG9yLmdldCgpKQorICAgICAgICByZXR1cm4gU1ZHUHJv
cGVydHlUcmFpdHM8Q29sb3I+Ojpmcm9tU3RyaW5nKHN0cmluZyk7CisKKyAgICBpZiAoYXV0byog
cmVuZGVyZXIgPSB0YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gcmVu
ZGVyZXItPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwor
CisgICAgcmV0dXJuIHsgfTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0
aW9uSW1wbC5oCmluZGV4IDVkNzQ3MTAyNjQ0MDExMjA4NTU5NzdiYTAxMGQ1ODMwOGNjYmNjNWQu
LmVmMmNlNmQ1MGZjOTE3ZWMyNDlmOWIzYWZmNWU1NGQwMTk5OGFlMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5j
dGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRp
b25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKQEAgLTMwLDYgKzMwLDYyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbiA6IHB1Ymxp
YyBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248Q29sb3I+IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uPENvbG9yPjsK
KyAgICB1c2luZyBCYXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcm
IHRvKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9mcm9tID0gY29sb3JGcm9tU3RyaW5nKHRh
cmdldEVsZW1lbnQsIGZyb20pOworICAgICAgICBtX3RvID0gY29sb3JGcm9tU3RyaW5nKHRhcmdl
dEVsZW1lbnQsIHRvKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFRvQXRFbmRPZkR1cmF0aW9uVmFs
dWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIG1fdG9BdEVuZE9mRHVyYXRpb24gPSBTVkdQcm9wZXJ0eVRyYWl0czxDb2xvcj46OmZyb21T
dHJpbmcodG9BdEVuZE9mRHVyYXRpb24pOworICAgIH0KKworICAgIHZvaWQgcHJvZ3Jlc3MoU1ZH
RWxlbWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBDb2xvciYg
YW5pbWF0ZWQpCisgICAgeworICAgICAgICBDb2xvciBmcm9tID0gbV9hbmltYXRpb25Nb2RlID09
IEFuaW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBtX2Zyb207CisgICAgICAgIAorICAgICAg
ICBmbG9hdCByZWQgPSBCYXNlOjpwcm9ncmVzcyhwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJv
bS5yZWQoKSwgbV90by5yZWQoKSwgdG9BdEVuZE9mRHVyYXRpb24oKS5yZWQoKSwgYW5pbWF0ZWQu
cmVkKCkpOworICAgICAgICBmbG9hdCBncmVlbiA9IEJhc2U6OnByb2dyZXNzKHBlcmNlbnRhZ2Us
IHJlcGVhdENvdW50LCBmcm9tLmdyZWVuKCksIG1fdG8uZ3JlZW4oKSwgdG9BdEVuZE9mRHVyYXRp
b24oKS5ncmVlbigpLCBhbmltYXRlZC5ncmVlbigpKTsKKyAgICAgICAgZmxvYXQgYmx1ZSA9IEJh
c2U6OnByb2dyZXNzKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tLmJsdWUoKSwgbV90by5i
bHVlKCksIHRvQXRFbmRPZkR1cmF0aW9uKCkuYmx1ZSgpLCBhbmltYXRlZC5ibHVlKCkpOworICAg
ICAgICBmbG9hdCBhbHBoYSA9IEJhc2U6OnByb2dyZXNzKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50
LCBmcm9tLmFscGhhKCksIG1fdG8uYWxwaGEoKSwgdG9BdEVuZE9mRHVyYXRpb24oKS5hbHBoYSgp
LCBhbmltYXRlZC5hbHBoYSgpKTsKKyAgICAgICAgCisgICAgICAgIGFuaW1hdGVkID0geyByb3Vu
ZEFuZENsYW1wQ29sb3JDaGFubmVsKHJlZCksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoZ3Jl
ZW4pLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGJsdWUpLCByb3VuZEFuZENsYW1wQ29sb3JD
aGFubmVsKGFscGhhKSB9OworICAgIH0KKworICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKFNW
R0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92
ZXJyaWRlCisgICAgeworICAgICAgICBDb2xvciBmcm9tQ29sb3IgPSBDU1NQYXJzZXI6OnBhcnNl
Q29sb3IoZnJvbS5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgICAgIGlmICghZnJvbUNvbG9yLmlz
VmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgQ29sb3IgdG9Db2xvciA9
IENTU1BhcnNlcjo6cGFyc2VDb2xvcih0by5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgICAgIGlm
ICghdG9Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGZs
b2F0IHJlZCA9IGZyb21Db2xvci5yZWQoKSAtIHRvQ29sb3IucmVkKCk7CisgICAgICAgIGZsb2F0
IGdyZWVuID0gZnJvbUNvbG9yLmdyZWVuKCkgLSB0b0NvbG9yLmdyZWVuKCk7CisgICAgICAgIGZs
b2F0IGJsdWUgPSBmcm9tQ29sb3IuYmx1ZSgpIC0gdG9Db2xvci5ibHVlKCk7CisgICAgICAgIHJl
dHVybiBzcXJ0ZihyZWQgKiByZWQgKyBncmVlbiAqIGdyZWVuICsgYmx1ZSAqIGJsdWUpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGFkZEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50Kikg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIElnbm9yZXMgYW55IGFscGhhIGFuZCBzZXRzIGFs
cGhhIG9uIHJlc3VsdCB0byAxMDAlIG9wYXF1ZS4KKyAgICAgICAgbV90byA9IHsKKyAgICAgICAg
ICAgIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwobV90by5yZWQoKSArIG1fZnJvbS5yZWQoKSks
CisgICAgICAgICAgICByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKG1fdG8uZ3JlZW4oKSArIG1f
ZnJvbS5ncmVlbigpKSwKKyAgICAgICAgICAgIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwobV90
by5ibHVlKCkgKyBtX2Zyb20uYmx1ZSgpKQorICAgICAgICB9OworICAgIH0KKworICAgIHN0YXRp
YyBDb2xvciBjb2xvckZyb21TdHJpbmcoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOworfTsK
KwogY2xhc3MgU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbjxpbnQ+IHsKICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0
ZWRJbnRlZ2VyUGFpckFuaW1hdG9yOwogCkBAIC02NCw3ICsxMjAsNDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgbV90byArPSBtX2Zyb207CiAgICAgfQogfTsKLSAgICAKKworY2xhc3MgU1ZHQW5pbWF0
aW9uTnVtYmVyRnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0
aW9uPGZsb2F0PiB7CisgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1h
dG9yOworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFs
dWVGdW5jdGlvbjxmbG9hdD47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAgIHZvaWQgc2V0
RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0
cmluZyYgdG8pIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2Zyb20gPSBTVkdQcm9wZXJ0eVRy
YWl0czxmbG9hdD46OmZyb21TdHJpbmcoZnJvbSk7CisgICAgICAgIG1fdG8gPSBTVkdQcm9wZXJ0
eVRyYWl0czxmbG9hdD46OmZyb21TdHJpbmcodG8pOworICAgIH0KKworICAgIHZvaWQgc2V0VG9B
dEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgbV90b0F0RW5kT2ZEdXJhdGlvbiA9IFNWR1Byb3BlcnR5VHJh
aXRzPGZsb2F0Pjo6ZnJvbVN0cmluZyh0b0F0RW5kT2ZEdXJhdGlvbik7CisgICAgfQorCisgICAg
dm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVw
ZWF0Q291bnQsIGZsb2F0JiBhbmltYXRlZCkKKyAgICB7CisgICAgICAgIGZsb2F0IGZyb20gPSBt
X2FuaW1hdGlvbk1vZGUgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IG1fZnJvbTsK
KyAgICAgICAgYW5pbWF0ZWQgPSBCYXNlOjpwcm9ncmVzcyhwZXJjZW50YWdlLCByZXBlYXRDb3Vu
dCwgZnJvbSwgbV90bywgdG9BdEVuZE9mRHVyYXRpb24oKSwgYW5pbWF0ZWQpOworICAgIH0KKwor
ICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBmbG9h
dCBmcm9tTnVtYmVyID0gMDsKKyAgICAgICAgZmxvYXQgdG9OdW1iZXIgPSAwOworICAgICAgICBw
YXJzZU51bWJlckZyb21TdHJpbmcoZnJvbSwgZnJvbU51bWJlcik7CisgICAgICAgIHBhcnNlTnVt
YmVyRnJvbVN0cmluZyh0bywgdG9OdW1iZXIpOworICAgICAgICByZXR1cm4gZmFic2YodG9OdW1i
ZXIgLSBmcm9tTnVtYmVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRGcm9tQW5k
VG9WYWx1ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3RvICs9IG1f
ZnJvbTsKKyAgICB9Cit9OworCiBjbGFzcyBTVkdBbmltYXRpb25SZWN0RnVuY3Rpb24gOiBwdWJs
aWMgU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uPEZsb2F0UmVjdD4gewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248Rmxv
YXRSZWN0PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGlvbkZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRpb25GdW5jdGlvbi5oCmluZGV4IDRhZWI3MWNkOGExNDM5OWU1ZTgyZDlkYzdiZWM5OWUxYjIz
MTljODAuLjg1OGM5NDg1ZTM4NzM0OGU1OGRlMGU1NGY1YjlmODhmYzM2ZjI3YTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkZ1bmN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRnVuY3Rpb24u
aApAQCAtMjUsOCArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTVkdBdHRy
aWJ1dGVBbmltYXRvci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNWR0VsZW1l
bnQ7CisKIGNsYXNzIFNWR0FuaW1hdGlvbkZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5TVkdBbmltYXRpb25GdW5jdGlvbigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAppbmRleCBkOTJh
NmM1YzE0OWRjNmMzYTRhODIyOTJiNTNiYzAyZTkyMDY0NGYyLi5kYzQ2YTBmYzM3MDUwY2Q5MDc3
NjQyM2NmNDFkYWVmZWFkYzk0ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCkBAIC0zMiw2ICszMiw2MyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3ZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5
QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqIGVsZW1lbnQsIENTU1Byb3Bl
cnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOwor
ICAgIEFTU0VSVCghZWxlbWVudC0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAKKyAgICBpZiAo
IWVsZW1lbnQtPmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpLnNldFByb3BlcnR5
KGlkLCB2YWx1ZSwgZmFsc2UpKQorICAgICAgICByZXR1cm47CisgICAgZWxlbWVudC0+aW52YWxp
ZGF0ZVN0eWxlKCk7Cit9CisKK3ZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0
ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCit7CisgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOworICAgIEFTU0VSVCht
X2F0dHJpYnV0ZU5hbWUgIT0gYW55UU5hbWUoKSk7CisgICAgCisgICAgLy8gRklYTUU6IERvIHdl
IHJlYWxseSBuZWVkIHRvIGNoZWNrIGJvdGggaXNDb25uZWN0ZWQgYW5kICFwYXJlbnROb2RlPwor
ICAgIGlmICghdGFyZ2V0RWxlbWVudC0+aXNDb25uZWN0ZWQoKSB8fCAhdGFyZ2V0RWxlbWVudC0+
cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ1NTUHJvcGVydHlJRCBp
ZCA9IGNzc1Byb3BlcnR5SUQobV9hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICAKKyAg
ICBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcigqdGFyZ2V0RWxlbWVu
dCk7CisgICAgYXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxlbWVudCwg
aWQsIHZhbHVlKTsKKyAgICAKKyAgICAvLyBJZiB0aGUgdGFyZ2V0IGVsZW1lbnQgaGFzIGluc3Rh
bmNlcywgdXBkYXRlIHRoZW0gYXMgd2VsbCwgdy9vIHJlcXVpcmluZyB0aGUgPHVzZT4gdHJlZSB0
byBiZSByZWJ1aWx0LgorICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiB0YXJnZXRFbGVtZW50LT5p
bnN0YW5jZXMoKSkKKyAgICAgICAgYXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UoaW5z
dGFuY2UsIGlkLCB2YWx1ZSk7Cit9CisgICAgCit2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjpy
ZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHkoU1ZHRWxlbWVudCogZWxlbWVudCwgQ1NTUHJvcGVy
dHlJRCBpZCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKCFlbGVtZW50LT5t
X2RlbGV0aW9uSGFzQmVndW4pOworCisgICAgZWxlbWVudC0+ZW5zdXJlQW5pbWF0ZWRTTUlMU3R5
bGVQcm9wZXJ0aWVzKCkucmVtb3ZlUHJvcGVydHkoaWQpOworICAgIGVsZW1lbnQtPmludmFsaWRh
dGVTdHlsZSgpOworfQorCit2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjpyZW1vdmVBbmltYXRl
ZFN0eWxlUHJvcGVydHkoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQo
dGFyZ2V0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYXR0cmlidXRlTmFtZSAhPSBhbnlRTmFtZSgp
KTsKKworICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBjaGVjayBib3RoIGlzQ29u
bmVjdGVkIGFuZCAhcGFyZW50Tm9kZT8KKyAgICBpZiAoIXRhcmdldEVsZW1lbnQtPmlzQ29ubmVj
dGVkKCkgfHwgIXRhcmdldEVsZW1lbnQtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQ1NTUHJvcGVydHlJRCBpZCA9IGNzc1Byb3BlcnR5SUQobV9hdHRyaWJ1dGVOYW1lLmxv
Y2FsTmFtZSgpKTsKKworICAgIFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tlciBibG9j
a2VyKCp0YXJnZXRFbGVtZW50KTsKKyAgICByZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHkodGFy
Z2V0RWxlbWVudCwgaWQpOworCisgICAgLy8gSWYgdGhlIHRhcmdldCBlbGVtZW50IGhhcyBpbnN0
YW5jZXMsIHVwZGF0ZSB0aGVtIGFzIHdlbGwsIHcvbyByZXF1aXJpbmcgdGhlIDx1c2U+IHRyZWUg
dG8gYmUgcmVidWlsdC4KKyAgICBmb3IgKGF1dG8qIGluc3RhbmNlIDogdGFyZ2V0RWxlbWVudC0+
aW5zdGFuY2VzKCkpCisgICAgICAgIHJlbW92ZUFuaW1hdGVkU3R5bGVQcm9wZXJ0eShpbnN0YW5j
ZSwgaWQpOworfQorICAgIAogdm9pZCBTVkdBdHRyaWJ1dGVBbmltYXRvcjo6YXBwbHlBbmltYXRl
ZFByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgQVNTRVJUKCFlbGVtZW50LT5tX2RlbGV0aW9uSGFzQmVn
dW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0
ZUFuaW1hdG9yLmgKaW5kZXggODQ5MjQ2NTZjMjYzM2MwYzA4NTRhZTc0ZWE5NjE0NGNmOTEzMjU4
ZC4uMGU2MDI5MDU4OGE0NjBkYjhjMGNhYzFjYTQzMjExMmI4ZjczY2ViNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCkBA
IC03NCw4ICs3NCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0
YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyBy
ZXR1cm4gLTE7IH0KIAogcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5QW5pbWF0ZWRT
dHlsZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHko
U1ZHRWxlbWVudCosIENTU1Byb3BlcnR5SUQpOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5QW5pbWF0
ZWRQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCisg
ICAgCisgICAgdm9pZCBhcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50
KiwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCByZW1vdmVBbmltYXRlZFN0eWxlUHJv
cGVydHkoU1ZHRWxlbWVudCopOwogICAgIHZvaWQgYXBwbHlBbmltYXRlZFByb3BlcnR5Q2hhbmdl
KFNWR0VsZW1lbnQqKTsKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRlTmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0
ZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVS
ZWdpc3RyeS5oCmluZGV4IDdmNTg2N2EwZmNkYzU5MzA4NTkxNGYwZWU0OTAyZWFmYmE1YjUyM2Mu
LmEwZDI1ZWJkZGE1NzkwZDQwYjhjM2RjMmVjMTFkODk4YjIwYjNlZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlz
dC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWROdW1iZXJMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgpAQCAtNzQsMjYgKzczLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QXR0cmlidXRlQWNj
ZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPGF0dHJpYnV0ZU5hbWUsIGF0dHJp
YnV0ZT4oKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVk
PGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZE51bWJlckF0
dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+Ci0gICAgdm9pZCByZWdpc3RlckF0dHJpYnV0
ZSgpCi0gICAgewotICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdBbmltYXRlZE51bWJlckF0
dHJpYnV0ZUFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxhdHRyaWJ1dGVO
YW1lLCBhdHRyaWJ1dGU+KCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0
ZWROdW1iZXJMaXN0QXR0cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KICAgICB2b2lkIHJl
Z2lzdGVyQXR0cmlidXRlKCkKICAgICB7CiAgICAgICAgIHJlZ2lzdGVyQXR0cmlidXRlKFNWR0Fu
aW1hdGVkTnVtYmVyTGlzdEF0dHJpYnV0ZUFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNp
bmdsZXRvbjxhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGU+KCkpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmli
dXRlTmFtZSwKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiAoKmlkZW50aWZpZXIpKCksIFNW
R0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZSwKLSAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiAoKm9wdGlvbmFsSWRlbnRpZmllcikoKSwgU1ZHQW5pbWF0ZWRO
dW1iZXJBdHRyaWJ1dGUgT3duZXJUeXBlOjoqb3B0aW9uYWxBdHRyaWJ1dGU+Ci0gICAgdm9pZCBy
ZWdpc3RlckF0dHJpYnV0ZSgpCi0gICAgewotICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdB
bmltYXRlZE9wdGlvbmFsTnVtYmVyQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxh
dGUgc2luZ2xldG9uPGF0dHJpYnV0ZU5hbWUsIGlkZW50aWZpZXIsIGF0dHJpYnV0ZSwgb3B0aW9u
YWxJZGVudGlmaWVyLCBvcHRpb25hbEF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVtcGxh
dGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1
dGVOYW1lLCBTVkdBbmltYXRlZFBvaW50TGlzdEF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1
dGU+CiAgICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJiZjMzYTk1ZGRiNDMwOGM5MjY2ZmUzZDU2NzljODIwMzVmM2Mx
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlNWR1Byb3BlcnR5QW5pbWF0b3IuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5o
IgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGlvbkZ1bmN0
aW9uPgorY2xhc3MgU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvciA6IHB1YmxpYyBTVkdQcm9w
ZXJ0eUFuaW1hdG9yPEFuaW1hdGlvbkZ1bmN0aW9uPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1By
b3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVuY3Rpb24+OworICAgIHVzaW5nIFZhbHVlUHJvcGVy
dHlUeXBlID0gU1ZHVmFsdWVQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+OworICAgIHVzaW5nIEJhc2U6
OkJhc2U7CisgICAgdXNpbmcgQmFzZTo6YXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2U7
CisgICAgdXNpbmcgQmFzZTo6Y29tcHV0ZUNTU1Byb3BlcnR5VmFsdWU7CisgICAgdXNpbmcgQmFz
ZTo6bV9hdHRyaWJ1dGVOYW1lOworICAgIHVzaW5nIEJhc2U6Om1fZnVuY3Rpb247CisgICAgCitw
dWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdQcmlt
aXRpdmVQcm9wZXJ0eUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
KyAgICAgICAgOiBCYXNlKGF0dHJpYnV0ZU5hbWUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pCisgICAgICAgICwgbV9wcm9wZXJ0eShzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
VmFsdWVQcm9wZXJ0eVR5cGU+KFdURk1vdmUocHJvcGVydHkpKSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgU3RyaW5nIGJhc2VWYWx1ZSA9IGNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKHRhcmdl
dEVsZW1lbnQsIGNzc1Byb3BlcnR5SUQobV9hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7Cisg
ICAgICAgIG1fcHJvcGVydHktPnNldFZhbHVlKFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlw
ZT46OmZyb21TdHJpbmcoYmFzZVZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBwcm9ncmVzcyhT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBl
YXRDb3VudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFByb3BlcnR5VHlwZSYgYW5pbWF0ZWQg
PSBtX3Byb3BlcnR5LT52YWx1ZSgpOworICAgICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdl
dEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRlZCk7CisgICAgfQorCisg
ICAgdm9pZCBhcHBseShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgYXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxlbWVudCwg
U1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6dG9TdHJpbmcobV9wcm9wZXJ0eS0+dmFs
dWUoKSkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFJlZjxWYWx1ZVByb3BlcnR5VHlwZT4g
bV9wcm9wZXJ0eTsKK307CisgICAgCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYjhlMzNhZTE0ZjA4Y2UxOTU5M2Y4ZmVhNDMzYWI3MDA0ZGQxZTM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvckltcGwuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
U1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oIgorI2luY2x1ZGUgIlNWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2lu
ZyBTVkdDb2xvckFuaW1hdG9yID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcjxDb2xvciwg
U1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbj47Cit1c2luZyBTVkdOdW1iZXJBbmltYXRvciA9IFNW
R1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I8ZmxvYXQsIFNWR0FuaW1hdGlvbk51bWJlckZ1bmN0
aW9uPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlBbmltYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5MDZiMWRkN2Q1Y2Y2OWM4NGVkNGViOWVkNWQ0
MDlhYzA0ZGQxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0
eVBhcnNlci5oIgorI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFuaW1hdG9yLmgiCisjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit0ZW1wbGF0ZTx0eXBl
bmFtZSBBbmltYXRpb25GdW5jdGlvbj4KK2NsYXNzIFNWR1Byb3BlcnR5QW5pbWF0b3IgOiBwdWJs
aWMgU1ZHQXR0cmlidXRlQW5pbWF0b3IgeworcHVibGljOgorICAgIGJvb2wgaXNEaXNjcmV0ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnVuY3Rpb24uaXNEaXNjcmV0ZSgpOyB9CisKKyAg
ICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25z
dCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBtX2Z1bmN0aW9uLnNldEZyb21BbmRUb1ZhbHVlcyh0YXJnZXRFbGVtZW50LCBhZGp1c3RGb3JJ
bmhlcml0YW5jZSh0YXJnZXRFbGVtZW50LCBmcm9tKSwgYWRqdXN0Rm9ySW5oZXJpdGFuY2UodGFy
Z2V0RWxlbWVudCwgdG8pKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEZyb21BbmRCeVZhbHVlcyhT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmlu
ZyYgYnkpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uLnNldEZyb21BbmRCeVZh
bHVlcyh0YXJnZXRFbGVtZW50LCBmcm9tLCBieSk7CisgICAgfQorCisgICAgdm9pZCBzZXRUb0F0
RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pIG92ZXJy
aWRlCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uLnNldFRvQXRFbmRPZkR1cmF0aW9uVmFsdWUo
dG9BdEVuZE9mRHVyYXRpb24pOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBTVkdQcm9wZXJ0eUFuaW1hdG9yKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAg
ICAgOiBTVkdBdHRyaWJ1dGVBbmltYXRvcihhdHRyaWJ1dGVOYW1lKQorICAgICAgICAsIG1fZnVu
Y3Rpb24oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCBzdG9wKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHkodGFyZ2V0RWxlbWVudCk7
CisgICAgfQorCisgICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb24uY2FsY3VsYXRlRGlzdGFuY2Uo
dGFyZ2V0RWxlbWVudCwgZnJvbSwgdG8pOworICAgIH0KKworICAgIFN0cmluZyBhZGp1c3RGb3JJ
bmhlcml0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAorICAgIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gaW5oZXJpdCgiaW5oZXJpdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgICAgICByZXR1cm4gdmFsdWUgPT0gaW5oZXJpdCA/IGNvbXB1dGVJbmhlcml0
ZWRDU1NQcm9wZXJ0eVZhbHVlKHRhcmdldEVsZW1lbnQpIDogdmFsdWU7CisgICAgfQorCisgICAg
U3RyaW5nIGNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQs
IENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodGFyZ2V0RWxl
bWVudCk7CisKKyAgICAgICAgLy8gRG9uJ3QgaW5jbHVkZSBhbnkgcHJvcGVydGllcyByZXN1bHRp
bmcgZnJvbSBDU1MgVHJhbnNpdGlvbnMvQW5pbWF0aW9ucyBvciBTTUlMIGFuaW1hdGlvbnMsIGFz
IHdlIHdhbnQgdG8gcmV0cmlldmUgdGhlICJiYXNlIHZhbHVlIi4KKyAgICAgICAgdGFyZ2V0RWxl
bWVudC0+c2V0VXNlT3ZlcnJpZGVDb21wdXRlZFN0eWxlKHRydWUpOworICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcih0YXJnZXRFbGVtZW50KS5w
cm9wZXJ0eVZhbHVlKGlkKTsKKyAgICAgICAgdGFyZ2V0RWxlbWVudC0+c2V0VXNlT3ZlcnJpZGVD
b21wdXRlZFN0eWxlKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUtPmNzc1Rl
eHQoKSA6IFN0cmluZygpOworICAgIH0KKworICAgIFN0cmluZyBjb21wdXRlSW5oZXJpdGVkQ1NT
UHJvcGVydHlWYWx1ZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VS
ZWZQdHIodGFyZ2V0RWxlbWVudC0+cGFyZW50RWxlbWVudCgpKTsKKyAgICAgICAgaWYgKCFwYXJl
bnQgfHwgIXBhcmVudC0+aXNTVkdFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKKyAgICAgICAgCisgICAgICAgIFNWR0VsZW1lbnQmIHN2Z1BhcmVudCA9IGRvd25j
YXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUNTU1Byb3Bl
cnR5VmFsdWUoJnN2Z1BhcmVudCwgY3NzUHJvcGVydHlJRChtX2F0dHJpYnV0ZU5hbWUubG9jYWxO
YW1lKCkpKTsKKyAgICB9CisKKyAgICBBbmltYXRpb25GdW5jdGlvbiBtX2Z1bmN0aW9uOworfTsK
KyAgICAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5QW5pbWF0b3JDcmVhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwODhjYzliMjVhYjFkMWU5
NGZiMjJlOWFmMDhlNGE2MDJhOTlkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvci5oCkBAIC0wLDAgKzEs
MTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdQcmltaXRp
dmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNWR1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yIHsKK3B1YmxpYzoKKyAgICBTVkdQcm9wZXJ0eUFu
aW1hdG9yQ3JlYXRvcigpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVBbmltYXRvckNyZWF0b3IoKS5jb250YWlucyhhdHRyaWJ1dGVOYW1l
LmltcGwoKSk7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1h
dG9yPiBjcmVhdGVBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKKyAgICB7CisgICAgICAgIGF1dG8gaXRlcmF0b3Ig
PSBhdHRyaWJ1dGVBbmltYXRvckNyZWF0b3IoKS5maW5kKGF0dHJpYnV0ZU5hbWUuaW1wbCgpKTsK
KyAgICAgICAgaWYgKGl0ZXJhdG9yID09IGF0dHJpYnV0ZUFuaW1hdG9yQ3JlYXRvcigpLmVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2F0dHJpYnV0ZVByb3BlcnR5LmVuc3VyZShhdHRyaWJ1dGVOYW1lLCBbJml0ZXJhdG9yXSgp
IHsKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuZmlyc3QoKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5zZWNvbmQoYXR0cmlidXRlTmFt
ZSwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5jb3B5UmVmKCksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKKyAgICB2b2lkIGFu
aW1hdG9yV2lsbEJlRGVsZXRlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQor
ICAgIHsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fYXR0cmlidXRlUHJvcGVydHkuZmluZChh
dHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fYXR0cmlidXRlUHJvcGVy
dHkuZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gSWYgcmVmQ291bnQg
PSAxIChpbiB0aGUgYW5pbWF0b3IpICsgMSAoaW4gbV9hdHRyaWJ1dGVQcm9wZXJ0eSkgPSAyLCB0
aGUgZW50cnkgY2FuIGJlIGRlbGV0ZWQuCisgICAgICAgIGlmIChpdGVyYXRvci0+dmFsdWUtPnJl
ZkNvdW50KCkgPT0gMikKKyAgICAgICAgICAgIG1fYXR0cmlidXRlUHJvcGVydHkucmVtb3ZlKGl0
ZXJhdG9yKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gVGhpcyBIYXNoTWFwIG1hcHMgYW4g
YXR0cmlidXRlIG5hbWUgdG8gYSBwYWlyIG9mIHN0YXRpYyBtZXRob2RzLiBUaGUgZmlyc3Qgb25l
IGNyZWF0ZXMgYSBzaGFyZWQKKyAgICAvLyBSZWY8U1ZHUHJvcGVydHk+IGZvciB0aGUgdmFsdWUg
dHlwZSBvZiB0aGlzIGF0dHJpYnV0ZS4gVGhlIHNlY29uZCBjcmVhdGVzIHRoZSBhbmltYXRvciBn
aXZlbiB0aGUKKyAgICAvLyBhdHRyaWJ1dGUgbmFtZSBhbmQgdGhlIHNoYXJlZCBSZWY8U1ZHUHJv
cGVydHk+LgorICAgIHVzaW5nIEF0dHJpYnV0ZUFuaW1hdG9yQ3JlYXRvciA9IEhhc2hNYXA8Cisg
ICAgICAgIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKiwKKyAgICAgICAgc3RkOjpw
YWlyPAorICAgICAgICAgICAgc3RkOjpmdW5jdGlvbjxSZWY8U1ZHUHJvcGVydHk+KCk+LAorICAg
ICAgICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0
b3I+KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBSZWY8U1ZHUHJvcGVydHk+JiYsIEFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlLCBib29sLCBib29sKT4KKyAgICAgICAgPgorICAgID47CisKKyAgICBzdGF0
aWMgYXV0byBjcmVhdGVDb2xvckFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gU1ZHQ29sb3JBbmltYXRvcjo6Y3JlYXRlKGF0
dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCisgICAgc3RhdGljIGF1dG8gY3Jl
YXRlTnVtYmVyQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBTVkdOdW1iZXJBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5h
bWUsICBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBBdHRyaWJ1dGVB
bmltYXRvckNyZWF0b3ImIGF0dHJpYnV0ZUFuaW1hdG9yQ3JlYXRvcigpCisgICAgeworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXR0cmlidXRlQW5pbWF0b3JDcmVhdG9yPiBtYXAgPSBB
dHRyaWJ1dGVBbmltYXRvckNyZWF0b3IoeworICAgICAgICAgICAgeyBTVkdOYW1lczo6Y29sb3JB
dHRyLT5pbXBsKCksICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29s
b3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yOjpjcmVhdGVDb2xvckFuaW1h
dG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6ZmlsbEF0dHItPmltcGwoKSwgICAgICAg
ICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1By
b3BlcnR5QW5pbWF0b3JDcmVhdG9yOjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAorICAgICAgICAg
ICAgeyBTVkdOYW1lczo6Zmxvb2RfY29sb3JBdHRyLT5pbXBsKCksICAgIHN0ZDo6bWFrZV9wYWly
KFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JDcmVh
dG9yOjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6bGln
aHRpbmdfY29sb3JBdHRyLT5pbXBsKCksIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8
Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yOjpjcmVhdGVDb2xvckFu
aW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6c3RvcF9jb2xvckF0dHItPmltcGwo
KSwgICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNW
R1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yOjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAorICAgICAg
ICAgICAgeyBTVkdOYW1lczo6c3Ryb2tlQXR0ci0+aW1wbCgpLCAgICAgICAgIHN0ZDo6bWFrZV9w
YWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JD
cmVhdG9yOjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgCisgICAgICAgICAg
ICB7IFNWR05hbWVzOjpmaWxsX29wYWNpdHlBdHRyLT5pbXBsKCksICAgICAgIHN0ZDo6bWFrZV9w
YWlyKFNWR1ZhbHVlUHJvcGVydHk8ZmxvYXQ+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JD
cmVhdG9yOjpjcmVhdGVOdW1iZXJBbmltYXRvcikgfSwKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6
OmZsb29kX29wYWNpdHlBdHRyLT5pbXBsKCksICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQ
cm9wZXJ0eTxmbG9hdD46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3I6OmNyZWF0
ZU51bWJlckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6b3BhY2l0eUF0dHIt
PmltcGwoKSwgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihTVkdWYWx1ZVByb3BlcnR5PGZsb2F0
Pjo6Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcjo6Y3JlYXRlTnVtYmVyQW5pbWF0
b3IpIH0sCisgICAgICAgICAgICB7IFNWR05hbWVzOjpzdG9wX29wYWNpdHlBdHRyLT5pbXBsKCks
ICAgICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8ZmxvYXQ+OjpjcmVhdGUsIFNW
R1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yOjpjcmVhdGVOdW1iZXJBbmltYXRvcikgfSwKKyAgICAg
ICAgICAgIHsgU1ZHTmFtZXM6OnN0cm9rZV9taXRlcmxpbWl0QXR0ci0+aW1wbCgpLCAgc3RkOjpt
YWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxmbG9hdD46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmlt
YXRvckNyZWF0b3I6OmNyZWF0ZU51bWJlckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdO
YW1lczo6c3Ryb2tlX29wYWNpdHlBdHRyLT5pbXBsKCksICAgICBzdGQ6Om1ha2VfcGFpcihTVkdW
YWx1ZVByb3BlcnR5PGZsb2F0Pjo6Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcjo6
Y3JlYXRlTnVtYmVyQW5pbWF0b3IpIH0sCisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gbWFw
OworICAgIH0KKworICAgIHVzaW5nIEF0dHJpYnV0ZVByb3BlcnR5ID0gSGFzaE1hcDxRdWFsaWZp
ZWROYW1lLCBSZWY8U1ZHUHJvcGVydHk+PjsKKyAgICBBdHRyaWJ1dGVQcm9wZXJ0eSBtX2F0dHJp
YnV0ZVByb3BlcnR5OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAppbmRleCA2OGE1ZTlkMGRmNzU4
Yjk2YWVmNTRmNzJiYzMzZWZhYzdiNzYzMmQ1Li45MWJkZGE0MzI0OWEzYTdmYTE1ZDYxZjUxMDJm
ZDc5ZWU4MzIwZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaApAQCAtNjAsNyArNjAsMTMgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmlt
YXRlZEludGVnZXJBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVy
dHk+KCkpOwogICAgIH0KLSAgICAKKworICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ry
b3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
TnVtYmVyPiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlclBy
b3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwg
U1ZHQW5pbWF0ZWROdW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248
cHJvcGVydHk+KCkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ry
b3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpbz4gT3duZXJUeXBlOjoqcHJvcGVydHk+CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCiAgICAgewpAQCAtNzgsNiArODQsMTMgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRl
ZEludGVnZXJQYWlyQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPHByb3Bl
cnR5MSwgcHJvcGVydHkyPigpKTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZE51bWJlcj4gT3duZXJUeXBlOjoqcHJvcGVydHkxLCBSZWY8U1ZHQW5pbWF0ZWROdW1i
ZXI+IE93bmVyVHlwZTo6KnByb3BlcnR5Mj4KKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3Bl
cnR5KCkKKyAgICB7CisgICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwgU1ZH
QW5pbWF0ZWROdW1iZXJQYWlyQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9u
PHByb3BlcnR5MSwgcHJvcGVydHkyPigpKTsKKyAgICB9CisKICAgICAvLyBFbnVtZXJhdGUgYWxs
IHRoZSBTVkdNZW1iZXJBY2Nlc3NvcnMgcmVjdXJzaXZlbHkuIFRoZSBmdW5jdG9yIHdpbGwgYmUg
Y2FsbGVkIGFuZCB3aWxsCiAgICAgLy8gYmUgZ2l2ZW4gdGhlIHBhaXI8UXVhbGlmaWVkTmFtZSwg
U1ZHTWVtYmVyQWNjZXNzb3I+IHRpbGwgdGhlIGZ1bmN0b3IgcmV0dXJucyBmYWxzZS4KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365421</attachid>
            <date>2019-03-20 15:56:02 -0700</date>
            <delta_ts>2019-03-20 17:36:21 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>SVGAnimatedNumber-2.patch</filename>
            <type>text/plain</type>
            <size>148762</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5M2FmYzhlYWExMC4uODk3NGFjMjM0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMTktMDMtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNWRyBwcm9wZXJ0eSB0ZWFyIG9mZiBv
YmplY3RzIGZvciBTVkdBbmltYXRlZE51bWJlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLS0gRGVmaW5lIFNWR0FuaW1hdGVkTnVtYmVyIHRvIGJlIFNW
R0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHk8ZmxvYXQ+LgorCisgICAgICAgIC0tIEFkZCBTVkdB
bmltYXRlZE51bWJlckFjY2Vzc29yIHRvIGFzc29jaWF0ZSBhbiBhdHRyaWJ1dGUgbmFtZSB3aXRo
IGEgCisgICAgICAgICAgIHBvaW50ZXIgdG8gYW4gU1ZHQW5pbWF0ZWROdW1iZXIuIEdpdmVuIGEg
cG9pbnRlciB0byBhbiBTVkdFbGVtZW50LAorICAgICAgICAgICB0aGlzIGFjY2Vzc29yIHdpbGwg
YW5kIGNyZWF0ZSBhbiBhbmltYXRvciBmb3IgdGhlIGFuaW1hdGVkIHByb3BlcnR5LgorCisgICAg
ICAgIC0tIEFkZCBTVkdBbmltYXRlZE51bWJlclBhaXJBY2Nlc3NvciB0byBhc3NvY2lhdGUgYW4g
YXR0cmlidXRlIG5hbWUKKyAgICAgICAgICAgd2l0aCBhIHBhaXIgb2YgcG9pbnRlcnMgdG8gU1ZH
QW5pbWF0ZWROdW1iZXJzLiBHaXZlbiBhIHBvaW50ZXIgdG8gYW4KKyAgICAgICAgICAgU1ZHRWxl
bWVudCwgdGhpcyBhY2Nlc3NvciB3aWxsIGFuZCBjcmVhdGUgYW4gYW5pbWF0b3IgZm9yIHRoZXNl
CisgICAgICAgICAgIGFuaW1hdGVkIHByb3BlcnRpZXMuCisKKyAgICAgICAgLS0gQWRkIFNWR0Fu
aW1hdGVkTnVtYmVyQW5pbWF0b3IgdG8gYW5pbWF0ZWQgYW4gU1ZHQW5pbWF0ZWROdW1iZXIuCisK
KyAgICAgICAgLS0gQWRkIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yIHRvIGFuaW1hdGVk
IGEgcGFpciBvZiBTVkdBbmltYXRlZE51bWJlcnMuCisKKyAgICAgICAgLS0gQWRkIFNWR0FuaW1h
dGlvbk51bWJlckZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHByb2dyZXNz
aW5nCisgICAgICAgICAgIGEgZmxvYXQgb3ZlciBhIHBlcmlvZCBvZiB0aW1lLgorCisgICAgICAg
IC0tIERlZmluZSBTVkdOdW1iZXJBbmltYXRvciB0byBiZSBTVkdQcmltaXRpdmVQcm9wZXJ0eUFu
aW1hdG9yPGZsb2F0LAorICAgICAgICAgICBTVkdBbmltYXRpb25OdW1iZXJGdW5jdGlvbj4uIFNW
R051bWJlckFuaW1hdG9yIHdpbGwgYmUgcmVzcG9uc2libGUgCisgICAgICAgICAgIGZvciBhbmlt
YXRpbmcgYXR0cmlidXRlcyB3aXRoIG5vIHJlZmxlY3RpbmcgYW5pbWF0ZWQgcHJvcGVydGllcywg
ZS5nLgorICAgICAgICAgICAiZmlsbC1vcGFjaXR5Ii4KKworICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExl
bmd0aExpc3QuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFj
dG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgor
ICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQ6OnNsb3BlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50OjppbnRlcmNlcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmFtcGxpdHVkZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6
ZXhwb25lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQ6Om9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c2xvcGVBbmltYXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6aW50ZXJjZXB0QW5p
bWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQ6OmFtcGxpdHVkZUFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpleHBvbmVudEFuaW1hdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpvZmZzZXRBbmltYXRl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRy
aWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6c2V0S2VybmVsVW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0
TGVuZ3RoWUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpyZWdpc3RlckF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0U3RkRGV2aWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50
OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllcik6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGRE
ZXZpYXRpb25YSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50
OjpTVkdGRUxpZ2h0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1l
bnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFTGln
aHRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6YXppbXV0
aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6ZWxldmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojp4IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojp5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojp6IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFTGlnaHRFbGVtZW50Ojpwb2ludHNBdFggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVMaWdodEVsZW1lbnQ6OnBvaW50c0F0WSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUxpZ2h0RWxlbWVudDo6cG9pbnRzQXRaIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFTGlnaHRFbGVtZW50OjpzcGVjdWxhckV4cG9uZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpsaW1pdGluZ0NvbmVBbmdsZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6YXppbXV0aEFuaW1hdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjplbGV2YXRpb25BbmltYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6eEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojp5QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVMaWdodEVsZW1lbnQ6OnpBbmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0
RWxlbWVudDo6cG9pbnRzQXRYQW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdo
dEVsZW1lbnQ6OnBvaW50c0F0WUFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGln
aHRFbGVtZW50Ojpwb2ludHNBdFpBbmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxp
Z2h0RWxlbWVudDo6c3BlY3VsYXJFeHBvbmVudEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFTGlnaHRFbGVtZW50OjpsaW1pdGluZ0NvbmVBbmdsZUFuaW1hdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjphdHRyaWJ1dGVSZWdpc3RyeSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5RWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRSYWRp
dXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmVnaXN0ZXJB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OnJhZGl1c1hJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQ6OnJhZGl1c1lJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpTVkdGRU9m
ZnNldEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpyZWdp
c3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpr
ZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
U1ZHRkVUdXJidWxlbmNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVU
dXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVxdWVuY3lZ
SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6U1ZHR2VvbWV0cnlFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR2VvbWV0cnlFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVk
LgorICAgICAgICAqIHN2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0dlb21ldHJ5RWxlbWVudDo6cGF0aExlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnBhdGhMZW5ndGhBbmltYXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OmF0dHJpYnV0ZVJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1N0b3BFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpTVkdT
dG9wRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmli
dXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBs
Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmlt
YXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2
ZVZhbHVlRnVuY3Rpb25JbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25OdW1i
ZXJGdW5jdGlvbjo6cHJvZ3Jlc3MpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJp
YnV0ZVJlZ2lzdHJ5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eUFuaW1hdG9yQ3JlYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlBbmltYXRv
ckNyZWF0b3I6OmNyZWF0ZU51bWJlckFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1By
b3BlcnR5QW5pbWF0b3JDcmVhdG9yOjphdHRyaWJ1dGVBbmltYXRvckNyZWF0b3IpOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5KToKKwog
MjAxOS0wMy0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR0NvbG9yQW5p
bWF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggNDU1ZGUwZmUwOTguLjZlZGM0NjE3ODc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjI3Myw5ICsyMjczLDcgQEAgc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCiBz
dmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAKIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAK
IHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCi1zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3Bw
CiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAotc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAogc3ZnL1NWR0FuaW1hdGVk
UG9pbnRMaXN0LmNwcAogc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIwMjcxMzNlODll
Li5hYjBjZTljNDc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjgwLDcgKzI4MCw2IEBACiAJCTA4OTU4MjU2MEU4NTdBN0Uw
MEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDg5NTgyNTQwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg5QThF
MDcxMjhEOEIzRDAwRTdBNTM0IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OUE4
RTA2MTI4RDhCM0QwMEU3QTUzNCAvKiBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmLmggKi87IH07CiAJCTA4QTQ4NDc4MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEE0ODQ3
NjBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA4QjM1QjEzMTI3QjZBN0MwMDUzMTRERCAv
KiBTVkdBbmltYXRlZE51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDhCMzVCMTIxMjdCNkE3QzAwNTMxNEREIC8qIFNWR0FuaW1hdGVkTnVtYmVy
LmggKi87IH07CiAJCTA4QjM1QjE3MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJl
ckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
QjM1QjE2MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCAqLzsgfTsK
IAkJMDhDN0EyQzcxMERDNzQ2MjAwMkQzNjhCIC8qIFNWR05hbWVzLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFOTA5
RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuaCAqLzsgfTsKIAkJMDhDOTI1MUEwRkNDN0M0QTAw
NDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTc1
LDcgKzExNzQsNiBAQAogCQk0MjdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQyN0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuY3BwICovOyB9OwogCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MjdEQTcxQzEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmggKi87IH07CiAJCTQzMTA3QkUyMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5
cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
MTA3QkUxMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCAqLzsgfTsK
LQkJNDMxQTJGOUMxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
MUEyRjlBMTNCNkYyQjAwMDc3OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVy
LmggKi87IH07CiAJCTQzMkQzRkU4MThBODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJU
ZXN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzJEM0ZFNzE4QTg2NTg0MDBEN0RDMDMgLyogU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0
aW9ucy5oICovOyB9OwogCQk0MzU4RTg3RDEzNjBBMkVFMDBFNDc0OEMgLyogSlNTVkdGRURyb3BT
aGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzU4RTg3QjEzNjBBMkVFMDBFNDc0OEMgLyogSlNTVkdGRURyb3BTaGFkb3dFbGVtZW50
LmggKi87IH07CiAJCTQzNThFODgxMTM2MEEzMTcwMEU0NzQ4QyAvKiBGRURyb3BTaGFkb3cuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNThFODdGMTM2
MEEzMTcwMEU0NzQ4QyAvKiBGRURyb3BTaGFkb3cuaCAqLzsgfTsKQEAgLTU2NTksNyArNTY1Nyw2
IEBACiAJCTA4OUE4RTA2MTI4RDhCM0QwMEU3QTUzNCAvKiBTVkdBbmltYXRlZFBhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0Fu
aW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDhBNDg0NzUwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4QTQ4NDc2MEU1MjcyQzUwMEMzRkU3NiAvKiBT
Y3JpcHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDhCMzVCMTIxMjdCNkE3QzAw
NTMxNEREIC8qIFNWR0FuaW1hdGVkTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0FuaW1hdGVkTnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4QjM1QjE2MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBG
aWx0ZXJFZmZlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmls
dGVyRWZmZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhDOTI1MTgwRkND
N0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGaWx0ZXJFZmZlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1
NzMsOCArNzU3MCw2IEBACiAJCTQyN0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDI3REE3MUMxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMxMDdCRTExOENDMTlERTAwQ0Mx
OEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDMxQTJGOUExM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzFB
MkY5QjEzQjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMxQTJG
RDYxM0I3NzA3QTAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzJEM0ZFNzE4QTg2NTg0MDBEN0RDMDMgLyog
U2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQzMzFBQzc3MTNCNjg3MDAwMEE5RTVBRSAvKiBTVkdBbmltYXRlZE51bWJl
ckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0
ZWROdW1iZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2NjksNyAr
NzY2NCw2IEBACiAJCTQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAvKiBT
VkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0M0EwRjBCMDEzQUM3RDZEMDBBNUYwQTcgLyogU1ZHQW5p
bWF0ZWROdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
QW5pbWF0ZWROdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0E2MjY2
NjEzQjNEMTEwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0M0I4NUVEMDE4Q0JFQUNFMDBFMzFBRjQgLyogbWFrZVNlbGVj
dG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5weSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IG1ha2VTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0
aWJpbGl0eUVsZW1lbnRNYXAucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQjg1
RUQyMThDQkVDNTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0
eUVsZW1lbnRNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2Vs
ZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlF
bGVtZW50TWFwLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTk1
MjQsMTEgKzk1MTgsMTEgQEAKIAkJNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxl
bmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRCbGVuZE1p
bk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RTFEQzdGMjVCMDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRG
MURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyNjZGMDEzMjI0MUJDRTIwMDgzMzk3NSAv
KiBTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0
eUFuaW1hdG9yQ3JlYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAx
NDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5ODAwODMzOTc1IC8qIFNWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJv
cGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxNjIy
NDFDMEZFMDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdQcm9wZXJ0eUFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZG
MDE4MjI0MjlDRkQwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25J
bXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5j
dGlvbkltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY2RjAyMDIyNDJF
NTg1MDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAv
KiBFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8q
IEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNjYsNyArMTYyNjAsNyBAQAogCQkJCTU1RENDNTI2
MjI0MDc0RkEwMEMyNkUzMiAvKiBTVkdQcm9wZXJ0eUFjY2Vzc29yLmggKi8sCiAJCQkJNTVEQ0M1
MjcyMjQwNzUwQjAwQzI2RTMyIC8qIFNWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmggKi8sCiAJCQkJ
NzI2NkYwMTYyMjQxQzBGRTAwODMzOTc1IC8qIFNWR1Byb3BlcnR5QW5pbWF0b3IuaCAqLywKLQkJ
CQk3MjY2RjAxMzIyNDFCQ0UyMDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3Iu
aCAqLywKKwkJCQk3MjY2RjAyMDIyNDJFNTg1MDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRv
ckNyZWF0b3IuaCAqLywKIAkJCQk1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVy
dHlPd25lci5oICovLAogCQkJCTU1QkUwMjVDMjIzQjI5QzMwMDMyRjA4QSAvKiBTVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnkuaCAqLywKIAkJCQk1NUJFMDI1NzIyM0IyOUMwMDAzMkYwOEEgLyogU1ZH
UHJvcGVydHlSZWdpc3RyeS5oICovLApAQCAtMjQxNDYsMTQgKzI0MTQwLDEwIEBACiAJCQkJNDMx
QTJGRDYxM0I3NzA3QTAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgKi8sCiAJ
CQkJMDg5MDIxQUMxMjZFRjVFOTAwOTJENUVBIC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oICov
LAogCQkJCUIyMjI3N0VCMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZExlbmd0aExpc3Qu
aWRsICovLAotCQkJCTQzQTBGMEIwMTNBQzdENkQwMEE1RjBBNyAvKiBTVkdBbmltYXRlZE51bWJl
ci5jcHAgKi8sCi0JCQkJMDhCMzVCMTIxMjdCNkE3QzAwNTMxNEREIC8qIFNWR0FuaW1hdGVkTnVt
YmVyLmggKi8sCiAJCQkJQjIyMjc3RUMwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkTnVt
YmVyLmlkbCAqLywKIAkJCQk0MzMxQUM3NzEzQjY4NzAwMDBBOUU1QUUgLyogU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0LmNwcCAqLywKIAkJCQkwOEIzNUIxNjEyN0I2QTg4MDA1MzE0REQgLyogU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmggKi8sCiAJCQkJQjIyMjc3RUQwRDAwQkYxRjAwNzFCNzgyIC8qIFNW
R0FuaW1hdGVkTnVtYmVyTGlzdC5pZGwgKi8sCi0JCQkJNDMxQTJGOUIxM0I2RjJCMDAwNzc5MUU0
IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwICovLAotCQkJCTQzMUEyRjlB
MTNCNkYyQjAwMDc3OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmggKi8s
CiAJCQkJMDg2Mzk1MTMxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5jcHAgKi8s
CiAJCQkJMDg2Mzk1MTQxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oICovLAog
CQkJCTQzQjkzMzY4MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAg
Ki8sCkBAIC0zMTkzMSw5ICszMTkyMSw3IEBACiAJCQkJMDg5MDIxQTkxMjZFRjVERTAwOTJENUVB
IC8qIFNWR0FuaW1hdGVkTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODkwMjFBRDEyNkVG
NUU5MDA5MkQ1RUEgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwODhBMEUwNDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmLmggaW4gSGVhZGVycyAqLywKLQkJCQkwOEIzNUIxMzEyN0I2QTdDMDA1MzE0REQgLyogU1ZH
QW5pbWF0ZWROdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QjM1QjE3MTI3QjZBODgwMDUz
MTRERCAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQzMUEy
RjlDMTNCNkYyQjAwMDc3OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODYzOTUxNjEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0
ZWRQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODlBOEUwNzEyOEQ4QjNEMDBFN0E1MzQgLyog
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDNCOTMzNjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExl
bmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCmluZGV4
IGEyZTBmMWUwMDhiLi41OGYxMDAzMzI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRMZW5ndGguY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5n
dGguaCIKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTnVtYmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAppbmRleCBjNDJjYTNlMTc3YS4uM2E3
ZGRmZjIzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0
aExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3Qu
Y3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0Lmgi
CiAKICNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJhc2UuaCIKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZE51bWJlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWNm
ZmE0ODdiMC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TnVtYmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCi0K
LSNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJhc2UuaCIKLSNpbmNsdWRlICJTVkdQYXJzZXJV
dGlsaXRpZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdBbmltYXRlZE51bWJlckFu
aW1hdG9yOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFu
aW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWROdW1iZXIsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdB
bmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQotewotICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZShTVkdQcm9wZXJ0
eVRyYWl0czxmbG9hdD46OmZyb21TdHJpbmcoc3RyaW5nKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OnN0YXJ0QW5pbVZh
bEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVk
VHlwZXMpCi17Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRO
dW1iZXI+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0
b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFuaW1hdGlvbkZvclR5cGU8
U1ZHQW5pbWF0ZWROdW1iZXI+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVk
TnVtYmVyQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlwZSYgdHlwZSkK
LXsKLSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWROdW1iZXI+KGFuaW1hdGVkVHlw
ZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmFuaW1WYWxX
aWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRU
eXBlcykKLXsKLSAgICBhbmltVmFsV2lsbENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWROdW1iZXI+
KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmFu
aW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmlt
YXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkTnVt
YmVyPihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
OjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBl
KiB0bykKLXsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkTnVtYmVyKTsKLSAg
ICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwotCi0gICAgdG8tPmFzPGZsb2F0
PigpICs9IGZyb20tPmFzPGZsb2F0PigpOwotfQotCi1zdGF0aWMgZmxvYXQgcGFyc2VOdW1iZXJG
cm9tU3RyaW5nKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHN0cmluZykKLXsK
LSAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8ZmxvYXQ+Ojpmcm9tU3RyaW5nKHN0cmluZyk7
Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRU
eXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRP
ZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQotewotICAgIEFTU0VSVChtX2Fu
aW1hdGlvbkVsZW1lbnQpOwotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLQotICAgIGF1
dG8gZnJvbU51bWJlciA9IChtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBB
bmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDogZnJvbSktPmFzPGZsb2F0PigpOwotICAgIGF1
dG8gdG9OdW1iZXIgPSB0by0+YXM8ZmxvYXQ+KCk7Ci0gICAgY29uc3QgYXV0byB0b0F0RW5kT2ZE
dXJhdGlvbk51bWJlciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5hczxmbG9hdD4oKTsKLSAgICBhdXRv
JiBhbmltYXRlZE51bWJlciA9IGFuaW1hdGVkLT5hczxmbG9hdD4oKTsKLQotICAgIC8vIEFwcGx5
IENTUyBpbmhlcml0YW5jZSBydWxlcy4KLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZv
ckluaGVyaXRhbmNlPGZsb2F0PihwYXJzZU51bWJlckZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxl
bWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBlKCksIGZyb21OdW1iZXIsIG1fY29udGV4dEVsZW1l
bnQpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8ZmxvYXQ+
KHBhcnNlTnVtYmVyRnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFs
dWVUeXBlKCksIHRvTnVtYmVyLCBtX2NvbnRleHRFbGVtZW50KTsKLQotICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBm
cm9tTnVtYmVyLCB0b051bWJlciwgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXIsIGFuaW1hdGVkTnVt
YmVyKTsKLX0KLQotZmxvYXQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRGlz
dGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQot
ewotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLSAgICBmbG9hdCBmcm9tID0gMDsKLSAg
ICBmbG9hdCB0byA9IDA7Ci0gICAgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKGZyb21TdHJpbmcsIGZy
b20pOwotICAgIHBhcnNlTnVtYmVyRnJvbVN0cmluZyh0b1N0cmluZywgdG8pOwotICAgIHJldHVy
biBmYWJzZih0byAtIGZyb20pOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTNkOTZiNDAzNC4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUg
IlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCi0jaW5jbHVkZSAiU1ZHQXR0cmlidXRlQWNjZXNz
b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdBbmltYXRpb25FbGVtZW50
OwotCi11c2luZyBTVkdBbmltYXRlZE51bWJlciA9IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlU
ZWFyT2ZmPGZsb2F0PjsKLXVzaW5nIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlID0gU1ZHQW5p
bWF0ZWRBdHRyaWJ1dGU8U1ZHQW5pbWF0ZWROdW1iZXI+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBP
d25lclR5cGU+Ci11c2luZyBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZH
QW5pbWF0ZWRBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkTnVtYmVyQXR0
cmlidXRlLCBBbmltYXRlZE51bWJlcj47Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4K
LXVzaW5nIFNWR0FuaW1hdGVkT3B0aW9uYWxOdW1iZXJBdHRyaWJ1dGVBY2Nlc3NvciA9IFNWR0Fu
aW1hdGVkT3B0aW9uYWxBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkTnVt
YmVyQXR0cmlidXRlLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyPjsKLQotY2xhc3MgU1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmlt
YXRvciB7Ci1wdWJsaWM6Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcihTVkdBbmltYXRp
b25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1h
dGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5p
bWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNhbGN1
bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykgb3ZlcnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCmluZGV4IGY1Njk4M2NiZDE5Li4w
MmUwMTA4N2I4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlz
dC5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlckxpc3Qu
aCIKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTnVtYmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTI2Njk0ZTlkMS4uMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaCIK
LQotI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1h
dGVkTnVtYmVyLmgiCi0jaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpT
VkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVu
dCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCi0gICAgOiBT
VkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLCBhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpj
b25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVybiBT
VkdBbmltYXRlZFR5cGU6OmNyZWF0ZShTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8ZmxvYXQs
IGZsb2F0Pj46OmZyb21TdHJpbmcoc3RyaW5nKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6c3Rh
cnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYg
YW5pbWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZXM8U1ZH
QW5pbWF0ZWROdW1iZXIsIFNWR0FuaW1hdGVkTnVtYmVyPihhbmltYXRlZFR5cGVzKTsKLX0KLQot
dm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OnN0b3BBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRU
eXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFuaW1hdGlvbkZvclR5cGVzPFNWR0FuaW1hdGVkTnVt
YmVyLCBTVkdBbmltYXRlZE51bWJlcj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwo
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzLCBTVkdB
bmltYXRlZFR5cGUmIHR5cGUpCi17Ci0gICAgcmVzZXRGcm9tQmFzZVZhbHVlczxTVkdBbmltYXRl
ZE51bWJlciwgU1ZHQW5pbWF0ZWROdW1iZXI+KGFuaW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12
b2lkIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6YW5pbVZhbFdpbGxD
aGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVz
KQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZXM8U1ZHQW5pbWF0ZWROdW1iZXIsIFNW
R0FuaW1hdGVkTnVtYmVyPihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxE
aWRDaGFuZ2VGb3JUeXBlczxTVkdBbmltYXRlZE51bWJlciwgU1ZHQW5pbWF0ZWROdW1iZXI+KGFu
aW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJB
bmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1h
dGVkVHlwZSogdG8pCi17Ci0gICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyKTsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkp
OwotCi0gICAgY29uc3QgYXV0byYgZnJvbU51bWJlclBhaXIgPSBmcm9tLT5hczxzdGQ6OnBhaXI8
ZmxvYXQsIGZsb2F0Pj4oKTsKLSAgICBhdXRvJiB0b051bWJlclBhaXIgPSB0by0+YXM8c3RkOjpw
YWlyPGZsb2F0LCBmbG9hdD4+KCk7Ci0KLSAgICB0b051bWJlclBhaXIuZmlyc3QgKz0gZnJvbU51
bWJlclBhaXIuZmlyc3Q7Ci0gICAgdG9OdW1iZXJQYWlyLnNlY29uZCArPSBmcm9tTnVtYmVyUGFp
ci5zZWNvbmQ7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1h
dG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJl
cGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNW
R0FuaW1hdGVkVHlwZSogdG9BdEVuZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0
ZWQpCi17Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fY29u
dGV4dEVsZW1lbnQpOwotCi0gICAgY29uc3QgYXV0byYgZnJvbU51bWJlclBhaXIgPSAobV9hbmlt
YXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmlt
YXRlZCA6IGZyb20pLT5hczxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4oKTsKLSAgICBjb25zdCBh
dXRvJiB0b051bWJlclBhaXIgPSB0by0+YXM8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+KCk7Ci0g
ICAgY29uc3QgYXV0byYgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJQYWlyID0gdG9BdEVuZE9mRHVy
YXRpb24tPmFzPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PigpOwotICAgIGF1dG8mIGFuaW1hdGVk
TnVtYmVyUGFpciA9IGFuaW1hdGVkLT5hczxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4oKTsKLQot
ICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2Us
IHJlcGVhdENvdW50LCBmcm9tTnVtYmVyUGFpci5maXJzdCwgdG9OdW1iZXJQYWlyLmZpcnN0LCB0
b0F0RW5kT2ZEdXJhdGlvbk51bWJlclBhaXIuZmlyc3QsIGFuaW1hdGVkTnVtYmVyUGFpci5maXJz
dCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2Vu
dGFnZSwgcmVwZWF0Q291bnQsIGZyb21OdW1iZXJQYWlyLnNlY29uZCwgdG9OdW1iZXJQYWlyLnNl
Y29uZCwgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJQYWlyLnNlY29uZCwgYW5pbWF0ZWROdW1iZXJQ
YWlyLnNlY29uZCk7Ci19Ci0KLWZsb2F0IFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJB
bmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikK
LXsKLSAgICAvLyBGSVhNRTogRGlzdGFuY2UgY2FsY3VsYXRpb24gaXMgbm90IHBvc3NpYmxlIGZv
ciBTVkdOdW1iZXJPcHRpb25hbE51bWJlciByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNl
IGZvciBldmVyeSBzaW5nbGUgdmFsdWUuCi0gICAgcmV0dXJuIC0xOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZjNGZjMGU4ZDIuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKLQotY2xhc3MgU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKLQotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldEFu
aW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZH
QW5pbWF0ZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFu
aW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3Zl
cnJpZGU7Ci0KLSAgICB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZH
QW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUq
LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBv
dmVycmlkZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21T
dHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0LmNwcAppbmRleCA4YzNjMDg3NGMzYy4uMDQ4NjExYjkzNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCkBAIC0yNSw3ICsyNSw2
IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAKICNpbmNsdWRlICJT
VkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVy
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1EaXN0YW5j
ZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggMzgxZmM1
NzVhZGYuLjgwZTUwYmQwNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9y
eS5oCkBAIC0yMyw5ICsyMyw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJT
VkdBbmltYXRlZE51bWJlckxpc3QuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlck9wdGlv
bmFsTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgpAQCAt
NDcsNiArNDUsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICAg
ICAgY2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyOgorICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgICAgICBjYXNl
IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXI6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOgogICAgICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtNTksMTIgKzU5LDggQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYW5pbWF0
aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3Ro
TGlzdDoKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0gICAg
ICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0
RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGFu
aW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgY2FzZSBBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50
LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I+KGFuaW1h
dGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFBvaW50
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuY3BwCmluZGV4IDRlMjAzMmJiMjE3Li4xNDA1MTljMjllYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsNiArMzYsMTUgQEAgU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
KGNvbnN0IFEKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNsb3BlQXR0ciwgJlNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjptX3Nsb3BlPigpOworICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjppbnRlcmNlcHRBdHRyLCAmU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1faW50ZXJjZXB0PigpOworICAgICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjphbXBsaXR1ZGVB
dHRyLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1fYW1wbGl0dWRlPigp
OworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpl
eHBvbmVudEF0dHIsICZTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6bV9leHBv
bmVudD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdO
YW1lczo6b2Zmc2V0QXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojpt
X29mZnNldD4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKQEAgLTQ1LDExICs1NCw2IEBAIHZvaWQg
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygp
CiAgICAgICAgIHJldHVybjsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6dHlwZUF0dHIsIENvbXBvbmVudFRyYW5zZmVyVHlwZSwgJlNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50OjptX3R5cGU+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50OjptX3RhYmxlVmFsdWVzPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpzbG9wZUF0dHIsICZTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudDo6bV9zbG9wZT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6aW50ZXJjZXB0QXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojpt
X2ludGVyY2VwdD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6
YW1wbGl0dWRlQXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjptX2Ft
cGxpdHVkZT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZXhw
b25lbnRBdHRyLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1fZXhwb25l
bnQ+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Om9mZnNldEF0
dHIsICZTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6bV9vZmZzZXQ+KCk7CiB9
CiAKIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CkBAIC03MCwyNyArNzQsMjcgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKICAgICB9CiAKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c2xvcGVBdHRyKSB7Ci0gICAgICAgIG1fc2xvcGUuc2V0
VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9zbG9wZS0+c2V0QmFzZVZhbEludGVy
bmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6aW50ZXJjZXB0QXR0cikgewotICAgICAgICBtX2ludGVyY2VwdC5z
ZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX2ludGVyY2VwdC0+c2V0QmFzZVZh
bEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6YW1wbGl0dWRlQXR0cikgewotICAgICAgICBtX2FtcGxp
dHVkZS5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX2FtcGxpdHVkZS0+c2V0
QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZXhwb25lbnRBdHRyKSB7Ci0gICAgICAgIG1f
ZXhwb25lbnQuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9leHBvbmVudC0+
c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0cikgewotICAgICAgICBt
X29mZnNldC5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX29mZnNldC0+c2V0
QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmgKaW5kZXggOWQyYjZkZTZmZmEuLjg5ZTZkMGMzZGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQuaApAQCAtMjMsNyArMjMsNiBAQAogCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFu
c2Zlci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKLSNpbmNsdWRlICJT
VkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIgog
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIApAQCAtNzcsMTkgKzc2LDE5IEBAIHB1YmxpYzoKIAog
ICAgIENvbXBvbmVudFRyYW5zZmVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTnVtYmVy
TGlzdFZhbHVlcyYgdGFibGVWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlVmFsdWVzLmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgc2xvcGUoKSBj
b25zdCB7IHJldHVybiBtX3Nsb3BlLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgZmxvYXQgaW50ZXJjZXB0KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcmNlcHQuY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBhbXBsaXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX2FtcGxpdHVkZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIGZsb2F0IGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVu
dC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CisgICAgZmxvYXQgc2xvcGUoKSBjb25zdCB7IHJldHVybiBtX3Nsb3BlLT5jdXJy
ZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGludGVyY2VwdCgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJjZXB0LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGFtcGxpdHVkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYW1wbGl0dWRlLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGV4cG9uZW50
KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVudC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9h
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldC0+Y3VycmVudFZhbHVlKCk7IH0KIAog
ICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiB0eXBlQW5pbWF0ZWQoKSB7IHJldHVy
biBtX3R5cGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAg
UmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gdGFibGVWYWx1ZXNBbmltYXRlZCgpIHsgcmV0
dXJuIG1fdGFibGVWYWx1ZXMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBzbG9wZUFuaW1hdGVkKCkgeyByZXR1
cm4gbV9zbG9wZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGludGVyY2VwdEFuaW1hdGVkKCkgeyByZXR1cm4g
bV9pbnRlcmNlcHQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBhbXBsaXR1ZGVBbmltYXRlZCgpIHsgcmV0dXJu
IG1fYW1wbGl0dWRlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gZXhwb25lbnRBbmltYXRlZCgpIHsgcmV0dXJu
IG1fZXhwb25lbnQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBvZmZzZXRBbmltYXRlZCgpIHsgcmV0dXJuIG1f
b2Zmc2V0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNW
R0FuaW1hdGVkTnVtYmVyJiBzbG9wZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9zbG9wZTsgfQorICAg
IFNWR0FuaW1hdGVkTnVtYmVyJiBpbnRlcmNlcHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faW50ZXJj
ZXB0OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGFtcGxpdHVkZUFuaW1hdGVkKCkgeyByZXR1
cm4gbV9hbXBsaXR1ZGU7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgZXhwb25lbnRBbmltYXRl
ZCgpIHsgcmV0dXJuIG1fZXhwb25lbnQ7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgb2Zmc2V0
QW5pbWF0ZWQoKSB7IHJldHVybiBtX29mZnNldDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CkBAIC0xMTcsMTEgKzExNiwxMSBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uQXR0cmlidXRlPENvbXBvbmVudFRyYW5zZmVyVHlwZT4gbV90eXBlIHsgRkVDT01QT05FTlRU
UkFOU0ZFUl9UWVBFX0lERU5USVRZIH07CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QXR0cmli
dXRlIG1fdGFibGVWYWx1ZXM7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zbG9w
ZSB7IDEgfTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2ludGVyY2VwdDsKLSAg
ICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2FtcGxpdHVkZSB7IDEgfTsKLSAgICBTVkdB
bmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2V4cG9uZW50IHsgMSB9OwotICAgIFNWR0FuaW1hdGVk
TnVtYmVyQXR0cmlidXRlIG1fb2Zmc2V0OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9z
bG9wZSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcywgMSkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWROdW1iZXI+IG1faW50ZXJjZXB0IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0
aGlzKSB9OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9hbXBsaXR1ZGUgeyBTVkdBbmlt
YXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMsIDEpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVy
PiBtX2V4cG9uZW50IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzLCAxKSB9OworICAg
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9vZmZzZXQgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3Jl
YXRlKHRoaXMpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IDM3NDA4M2M2YWRhLi4yNjU3
YWU5OTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zNiw2ICszNiwxNCBAQCBpbmxpbmUgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZykpOwogICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOworICAgIAorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjprMUF0dHIsICZTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQ6Om1fazE+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OmsyQXR0ciwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9rMj4oKTsK
KyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6azNB
dHRyLCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50OjptX2szPigpOworICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjprNEF0dHIsICZTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQ6Om1fazQ+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTUxLDEwICs1OSw2IEBAIHZvaWQgU1ZHRkVD
b21wb3NpdGVFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQogICAgIHJlZ2lzdHJ5LnJlZ2lz
dGVyQXR0cmlidXRlPFNWR05hbWVzOjppbkF0dHIsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1f
aW4xPigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjppbjJBdHRy
LCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50OjptX2luMj4oKTsKICAgICByZWdpc3RyeS5yZWdpc3Rl
ckF0dHJpYnV0ZTxTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBDb21wb3NpdGVPcGVyYXRpb25UeXBl
LCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50OjptX3N2Z09wZXJhdG9yPigpOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjprMUF0dHIsICZTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6Om1fazE+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Omsy
QXR0ciwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9rMj4oKTsKLSAgICByZWdpc3RyeS5yZWdp
c3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6azNBdHRyLCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpt
X2szPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjprNEF0dHIs
ICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1fazQ+KCk7CiB9CiAKIHZvaWQgU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtNzcsMjIgKzgxLDIyIEBAIHZvaWQgU1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tCiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmsxQXR0cikgewot
ICAgICAgICBtX2sxLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fazEtPnNl
dEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmsyQXR0cikgewotICAgICAgICBtX2syLnNl
dFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fazItPnNldEJhc2VWYWxJbnRlcm5h
bCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OmszQXR0cikgewotICAgICAgICBtX2szLnNldFZhbHVlKHZhbHVlLnRv
RmxvYXQoKSk7CisgICAgICAgIG1fazMtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
Oms0QXR0cikgewotICAgICAgICBtX2s0LnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAg
ICAgIG1fazQtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmgKaW5kZXggNTViYThmYWMzMTcuLjAzYTdkYmViNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJG
RUNvbXBvc2l0ZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKLSNpbmNs
dWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04OCwxOCArODcs
MTggQEAgcHVibGljOgogICAgIFN0cmluZyBpbjEoKSBjb25zdCB7IHJldHVybiBtX2luMS5jdXJy
ZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFN0cmluZyBpbjIoKSBjb25z
dCB7IHJldHVybiBtX2luMi5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgc3ZnT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBt
X3N2Z09wZXJhdG9yLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAg
ZmxvYXQgazEoKSBjb25zdCB7IHJldHVybiBtX2sxLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9Ci0gICAgZmxvYXQgazIoKSBjb25zdCB7IHJldHVybiBtX2syLmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgazMoKSBjb25zdCB7IHJl
dHVybiBtX2szLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxv
YXQgazQoKSBjb25zdCB7IHJldHVybiBtX2s0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CisgICAgZmxvYXQgazEoKSBjb25zdCB7IHJldHVybiBtX2sxLT5jdXJyZW50VmFs
dWUoKTsgfQorICAgIGZsb2F0IGsyKCkgY29uc3QgeyByZXR1cm4gbV9rMi0+Y3VycmVudFZhbHVl
KCk7IH0KKyAgICBmbG9hdCBrMygpIGNvbnN0IHsgcmV0dXJuIG1fazMtPmN1cnJlbnRWYWx1ZSgp
OyB9CisgICAgZmxvYXQgazQoKSBjb25zdCB7IHJldHVybiBtX2s0LT5jdXJyZW50VmFsdWUoKTsg
fQogCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBpbjFBbmltYXRlZCgpIHsgcmV0dXJu
IG1faW4xLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJl
ZlB0cjxTVkdBbmltYXRlZFN0cmluZz4gaW4yQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMi5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbj4gc3ZnT3BlcmF0b3JBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3ZnT3Bl
cmF0b3IuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVm
UHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBrMUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rMS5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWROdW1iZXI+IGsyQW5pbWF0ZWQoKSB7IHJldHVybiBtX2syLmFuaW1hdGVkUHJvcGVydHkoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gazNB
bmltYXRlZCgpIHsgcmV0dXJuIG1fazMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBrNEFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9rNC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAg
ICBTVkdBbmltYXRlZE51bWJlciYgazFBbmltYXRlZCgpIHsgcmV0dXJuIG1fazE7IH0KKyAgICBT
VkdBbmltYXRlZE51bWJlciYgazJBbmltYXRlZCgpIHsgcmV0dXJuIG1fazI7IH0KKyAgICBTVkdB
bmltYXRlZE51bWJlciYgazNBbmltYXRlZCgpIHsgcmV0dXJuIG1fazM7IH0KKyAgICBTVkdBbmlt
YXRlZE51bWJlciYgazRBbmltYXRlZCgpIHsgcmV0dXJuIG1fazQ7IH0KIAogcHJpdmF0ZToKICAg
ICBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CkBAIC0xMjgsMTAgKzEyNywxMCBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0
cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4yOwogICAg
IFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT4g
bV9zdmdPcGVyYXRvciB7IEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgfTsKLSAgICBTVkdBbmlt
YXRlZE51bWJlckF0dHJpYnV0ZSBtX2sxOwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRl
IG1fazI7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9rMzsKLSAgICBTVkdBbmlt
YXRlZE51bWJlckF0dHJpYnV0ZSBtX2s0OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9r
MSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWROdW1iZXI+IG1fazIgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2szIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0
aGlzKSB9OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9rNCB7IFNWR0FuaW1hdGVkTnVt
YmVyOjpjcmVhdGUodGhpcykgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4
IDUyZTJlNjU4Y2NmLi5lMjA5NjYxOWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC00NCw4ICs0NCwxMSBAQCBpbmxpbmUg
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpvcmRlckF0dHIsICZTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6bV9vcmRlclgsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9vcmRl
clk+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OmRpdmlzb3JBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fZGl2aXNvcj4o
KTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6
Ymlhc0F0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9iaWFzPigpOwogICAgICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0YXJnZXRYQXR0
ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX3RhcmdldFg+KCk7CiAgICAgICAgIFBy
b3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnRhcmdldFlBdHRyLCAm
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0WT4oKTsKKyAgICAgICAgUHJvcGVy
dHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0
dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9rZXJuZWxVbml0TGVuZ3RoWCwgJlNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX2tlcm5lbFVuaXRMZW5ndGhZPigpOwogICAgICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpwcmVzZXJ2ZUFs
cGhhQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX3ByZXNlcnZlQWxwaGE+KCk7
CiAgICAgfSk7CiB9CkBAIC01NSwxOCArNTgsNiBAQCBSZWY8U1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaQog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0
TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVy
biBzX2lkZW50aWZpZXI7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0
TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVy
biBzX2lkZW50aWZpZXI7Ci19Ci0KIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnJl
Z2lzdGVyQXR0cmlidXRlcygpCiB7CiAgICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdp
c3RyeSgpOwpAQCAtNzQsMTIgKzY1LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKICAgICAgICAgcmV0dXJuOwogICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjppbkF0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6bV9pbjE+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6
Omtlcm5lbE1hdHJpeEF0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9rZXJuZWxN
YXRyaXg+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmRpdmlz
b3JBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fZGl2aXNvcj4oKTsKLSAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6Ymlhc0F0dHIsICZTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6bV9iaWFzPigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjplZGdlTW9kZUF0dHIsIEVkZ2VNb2RlVHlwZSwgJlNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjptX2VkZ2VNb2RlPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwKLSAgICAgICAgJlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIsICZTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6bV9rZXJuZWxVbml0TGVuZ3RoWCwKLSAgICAgICAgJlNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIsICZTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudDo6bV9rZXJuZWxVbml0TGVuZ3RoWT4oKTsKIH0KIAogdm9pZCBT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTExOSwxNCArMTA1LDE0
IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmRp
dmlzb3JBdHRyKSB7CiAgICAgICAgIGZsb2F0IGRpdmlzb3IgPSB2YWx1ZS50b0Zsb2F0KCk7CiAg
ICAgICAgIGlmIChkaXZpc29yKQotICAgICAgICAgICAgbV9kaXZpc29yLnNldFZhbHVlKGRpdmlz
b3IpOworICAgICAgICAgICAgbV9kaXZpc29yLT5zZXRCYXNlVmFsSW50ZXJuYWwoZGl2aXNvcik7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9u
cygpLnJlcG9ydFdhcm5pbmcoImZlQ29udm9sdmVNYXRyaXg6IHByb2JsZW0gcGFyc2luZyBkaXZp
c29yPVwiIiArIHZhbHVlICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3Bs
YXllZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBpZiAobmFtZSA9PSBT
VkdOYW1lczo6Ymlhc0F0dHIpIHsKLSAgICAgICAgbV9iaWFzLnNldFZhbHVlKHZhbHVlLnRvRmxv
YXQoKSk7CisgICAgICAgIG1fYmlhcy0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0Myw4ICsxMjksOCBAQCB2b2lkIFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVu
Z3RoQXR0cikgewogICAgICAgICBmbG9hdCB4LCB5OwogICAgICAgICBpZiAocGFyc2VOdW1iZXJP
cHRpb25hbE51bWJlcih2YWx1ZSwgeCwgeSkgJiYgeCA+IDAgJiYgeSA+IDApIHsKLSAgICAgICAg
ICAgIG1fa2VybmVsVW5pdExlbmd0aFguc2V0VmFsdWUoeCk7Ci0gICAgICAgICAgICBtX2tlcm5l
bFVuaXRMZW5ndGhZLnNldFZhbHVlKHkpOworICAgICAgICAgICAgbV9rZXJuZWxVbml0TGVuZ3Ro
WC0+c2V0QmFzZVZhbEludGVybmFsKHgpOworICAgICAgICAgICAgbV9rZXJuZWxVbml0TGVuZ3Ro
WS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRv
Y3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydFdhcm5pbmcoImZlQ29udm9sdmVN
YXRyaXg6IHByb2JsZW0gcGFyc2luZyBrZXJuZWxVbml0TGVuZ3RoPVwiIiArIHZhbHVlICsgIlwi
LiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTk0LDggKzE4MCw4IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6
OnNldE9yZGVyKGZsb2F0IHgsIGZsb2F0IHkpCiAKIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgoZmxvYXQgeCwgZmxvYXQgeSkKIHsKLSAgICBtX2tl
cm5lbFVuaXRMZW5ndGhYLnNldFZhbHVlKHgpOwotICAgIG1fa2VybmVsVW5pdExlbmd0aFkuc2V0
VmFsdWUoeSk7CisgICAgbV9rZXJuZWxVbml0TGVuZ3RoWC0+c2V0QmFzZVZhbEludGVybmFsKHgp
OworICAgIG1fa2VybmVsVW5pdExlbmd0aFktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKICAgICBp
bnZhbGlkYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmgKaW5kZXggYzczZmM5Y2Q2NGQuLjQ1MmRjNzNmNjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaApAQCAtNzEsMjYg
KzcxLDI2IEBAIHB1YmxpYzoKICAgICBpbnQgb3JkZXJYKCkgY29uc3QgeyByZXR1cm4gbV9vcmRl
clgtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgaW50IG9yZGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3JkZXJZLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGNvbnN0IFNWR051bWJlckxpc3RWYWx1ZXMm
IGtlcm5lbE1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsTWF0cml4LmN1cnJlbnRWYWx1
ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgZGl2aXNvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGl2aXNvci5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIGZsb2F0IGJpYXMoKSBjb25zdCB7IHJldHVybiBtX2JpYXMuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBmbG9hdCBkaXZpc29yKCkgY29uc3QgeyByZXR1cm4g
bV9kaXZpc29yLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGJpYXMoKSBjb25zdCB7IHJl
dHVybiBtX2JpYXMtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgaW50IHRhcmdldFgoKSBjb25zdCB7
IHJldHVybiBtX3RhcmdldFgtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgaW50IHRhcmdldFkoKSBj
b25zdCB7IHJldHVybiBtX3RhcmdldFktPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgRWRnZU1vZGVU
eXBlIGVkZ2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlTW9kZS5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29u
c3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QgeyByZXR1
cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQorICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QgeyByZXR1cm4gbV9rZXJu
ZWxVbml0TGVuZ3RoWC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFktPmN1cnJlbnRWYWx1ZSgp
OyB9CiAgICAgYm9vbCBwcmVzZXJ2ZUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUFs
cGhhLT5jdXJyZW50VmFsdWUoKTsgfQogCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBp
bjFBbmltYXRlZCgpIHsgcmV0dXJuIG1faW4xLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQogICAgIFNWR0FuaW1hdGVkSW50ZWdlciYgb3JkZXJYQW5pbWF0ZWQoKSB7
IHJldHVybiBtX29yZGVyWDsgfQogICAgIFNWR0FuaW1hdGVkSW50ZWdlciYgb3JkZXJZQW5pbWF0
ZWQoKSB7IHJldHVybiBtX29yZGVyWTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlckxp
c3Q+IGtlcm5lbE1hdHJpeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxNYXRyaXguYW5pbWF0
ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1h
dGVkTnVtYmVyPiBkaXZpc29yQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Rpdmlzb3IuYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVk
TnVtYmVyPiBiaWFzQW5pbWF0ZWQoKSB7IHJldHVybiBtX2JpYXMuYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGRpdmlzb3JB
bmltYXRlZCgpIHsgcmV0dXJuIG1fZGl2aXNvcjsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBi
aWFzQW5pbWF0ZWQoKSB7IHJldHVybiBtX2JpYXM7IH0KICAgICBTVkdBbmltYXRlZEludGVnZXIm
IHRhcmdldFhBbmltYXRlZCgpIHsgcmV0dXJuIG1fdGFyZ2V0WDsgfQogICAgIFNWR0FuaW1hdGVk
SW50ZWdlciYgdGFyZ2V0WUFuaW1hdGVkKCkgeyByZXR1cm4gbV90YXJnZXRZOyB9CiAgICAgUmVm
UHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGVkZ2VNb2RlQW5pbWF0ZWQoKSB7IHJldHVybiBt
X2VkZ2VNb2RlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4ga2VybmVsVW5pdExlbmd0aFhBbmltYXRlZCgpIHsg
cmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBrZXJuZWxVbml0TGVu
Z3RoWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYga2Vy
bmVsVW5pdExlbmd0aFhBbmltYXRlZCgpIHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFg7IH0K
KyAgICBTVkdBbmltYXRlZE51bWJlciYga2VybmVsVW5pdExlbmd0aFlBbmltYXRlZCgpIHsgcmV0
dXJuIG1fa2VybmVsVW5pdExlbmd0aFk7IH0KICAgICBTVkdBbmltYXRlZEJvb2xlYW4mIHByZXNl
cnZlQWxwaGFBbmltYXRlZCgpIHsgcmV0dXJuIG1fcHJlc2VydmVBbHBoYTsgfQogCiBwcml2YXRl
OgpAQCAtMTE1LDIyICsxMTUsMTkgQEAgcHJpdmF0ZToKICAgICBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2Vy
bmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7Ci0KICAgICBBdHRyaWJ1dGVPd25lclBy
b3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0
cmlidXRlIG1faW4xOwogICAgIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IG1fb3JkZXJYIHsgU1ZH
QW5pbWF0ZWRJbnRlZ2VyOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRJbnRl
Z2VyPiBtX29yZGVyWSB7IFNWR0FuaW1hdGVkSW50ZWdlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAg
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QXR0cmlidXRlIG1fa2VybmVsTWF0cml4OwotICAgIFNWR0Fu
aW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZGl2aXNvcjsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0
dHJpYnV0ZSBtX2JpYXM7CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2Rpdmlzb3IgeyBT
VkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVt
YmVyPiBtX2JpYXMgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVm
PFNWR0FuaW1hdGVkSW50ZWdlcj4gbV90YXJnZXRYIHsgU1ZHQW5pbWF0ZWRJbnRlZ2VyOjpjcmVh
dGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBtX3RhcmdldFkgeyBTVkdB
bmltYXRlZEludGVnZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRp
b25BdHRyaWJ1dGU8RWRnZU1vZGVUeXBlPiBtX2VkZ2VNb2RlIHsgRURHRU1PREVfRFVQTElDQVRF
IH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9rZXJuZWxVbml0TGVuZ3RoWDsK
LSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2tlcm5lbFVuaXRMZW5ndGhZOworICAg
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9rZXJuZWxVbml0TGVuZ3RoWCB7IFNWR0FuaW1hdGVk
TnVtYmVyOjpjcmVhdGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fa2Vy
bmVsVW5pdExlbmd0aFkgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAg
UmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4gbV9wcmVzZXJ2ZUFscGhhIHsgU1ZHQW5pbWF0ZWRCb29s
ZWFuOjpjcmVhdGUodGhpcykgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggOGIyM2YyNGIxZjMuLmI1NzBjOGIx
MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcApAQCAtMzksNiArMzksMTMgQEAgaW5saW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE4KIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWcpKTsK
ICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRB
dHRyLCAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjptX2RpZmZ1c2VDb25zdGFudD4oKTsK
KyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c3Vy
ZmFjZVNjYWxlQXR0ciwgJlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bV9zdXJmYWNlU2Nh
bGU+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojpt
X2tlcm5lbFVuaXRMZW5ndGhYLCAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjptX2tlcm5l
bFVuaXRMZW5ndGhZPigpOworICAgIH0pOwogfQogCiBSZWY8U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC00NiwyOSArNTMsMTIgQEAg
UmVmPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotY29uc3QgQXRv
bWljU3RyaW5nJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBzX2lkZW50aWZpZXI7Ci19Ci0KLWNvbnN0IEF0
b21pY1N0cmluZyYgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3Ro
WUlkZW50aWZpZXIoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gc19pZGVudGlmaWVyOwotfQotCiB2b2lkIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKIHsKICAgICBh
dXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdpc3RyeS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0
ZTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjptX2luMT4o
KTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZGlmZnVzZUNvbnN0
YW50QXR0ciwgJlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bV9kaWZmdXNlQ29uc3RhbnQ+
KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnN1cmZhY2VTY2Fs
ZUF0dHIsICZTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Om1fc3VyZmFjZVNjYWxlPigpOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3Ro
QXR0ciwKLSAgICAgICAgJlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6a2VybmVsVW5pdExl
bmd0aFhJZGVudGlmaWVyLCAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjptX2tlcm5lbFVu
aXRMZW5ndGhYLAotICAgICAgICAmU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjprZXJuZWxV
bml0TGVuZ3RoWUlkZW50aWZpZXIsICZTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Om1fa2Vy
bmVsVW5pdExlbmd0aFk+KCk7CiB9CiAKIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQpAQCAtNzksMjAgKzY5LDIwIEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpIHsK
LSAgICAgICAgbV9zdXJmYWNlU2NhbGUuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAg
ICAgbV9zdXJmYWNlU2NhbGUtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1
c2VDb25zdGFudEF0dHIpIHsKLSAgICAgICAgbV9kaWZmdXNlQ29uc3RhbnQuc2V0VmFsdWUodmFs
dWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9kaWZmdXNlQ29uc3RhbnQtPnNldEJhc2VWYWxJbnRl
cm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKSB7CiAgICAgICAgIGZsb2F0
IHgsIHk7CiAgICAgICAgIGlmIChwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHZhbHVlLCB4LCB5
KSkgewotICAgICAgICAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWC5zZXRWYWx1ZSh4KTsKLSAgICAg
ICAgICAgIG1fa2VybmVsVW5pdExlbmd0aFkuc2V0VmFsdWUoeSk7CisgICAgICAgICAgICBtX2tl
cm5lbFVuaXRMZW5ndGhYLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CisgICAgICAgICAgICBtX2tl
cm5lbFVuaXRMZW5ndGhZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuaAppbmRleCAzYmU2ZGE4OGJkNi4uNzYxNDA3OGUxYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKQEAgLTM3
LDE2ICszNywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFNWR0ZFTGlnaHRFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAg
ICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1faW4xLmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2VT
Y2FsZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhYKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWC5jdXJy
ZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhZKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS5jdXJyZW50VmFsdWUo
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGZsb2F0IGRpZmZ1c2VDb25zdGFudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlmZnVzZUNvbnN0YW50LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZs
b2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZVNjYWxlLT5jdXJyZW50
VmFsdWUoKTsgfQorICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QgeyByZXR1cm4g
bV9rZXJuZWxVbml0TGVuZ3RoWC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWSgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFktPmN1cnJlbnRW
YWx1ZSgpOyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IGluMUFuaW1hdGVkKCkg
eyByZXR1cm4gbV9pbjEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBkaWZmdXNlQ29uc3RhbnRBbmltYXRlZCgp
IHsgcmV0dXJuIG1fZGlmZnVzZUNvbnN0YW50LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gc3VyZmFjZVNjYWxl
QW5pbWF0ZWQoKSB7IHJldHVybiBtX3N1cmZhY2VTY2FsZS5hbmltYXRlZFByb3BlcnR5KGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGtlcm5l
bFVuaXRMZW5ndGhYQW5pbWF0ZWQoKSB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhYLmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZE51bWJlcj4ga2VybmVsVW5pdExlbmd0aFlBbmltYXRlZCgpIHsgcmV0dXJuIG1fa2VybmVs
VW5pdExlbmd0aFkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Cisg
ICAgU1ZHQW5pbWF0ZWROdW1iZXImIGRpZmZ1c2VDb25zdGFudEFuaW1hdGVkKCkgeyByZXR1cm4g
bV9kaWZmdXNlQ29uc3RhbnQ7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgc3VyZmFjZVNjYWxl
QW5pbWF0ZWQoKSB7IHJldHVybiBtX3N1cmZhY2VTY2FsZTsgfQorICAgIFNWR0FuaW1hdGVkTnVt
YmVyJiBrZXJuZWxVbml0TGVuZ3RoWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVu
Z3RoWDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrZXJuZWxVbml0TGVuZ3RoWUFuaW1hdGVk
KCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWTsgfQogCiBwcml2YXRlOgogICAgIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
QEAgLTcwLDE2ICs3MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxV
bml0TGVuZ3RoWElkZW50aWZpZXIoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBr
ZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKLQogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkg
bV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1
dGUgbV9pbjE7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9kaWZmdXNlQ29uc3Rh
bnQgeyAxIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zdXJmYWNlU2NhbGUg
eyAxIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9rZXJuZWxVbml0TGVuZ3Ro
WDsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2tlcm5lbFVuaXRMZW5ndGhZOwor
ICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9kaWZmdXNlQ29uc3RhbnQgeyBTVkdBbmltYXRl
ZE51bWJlcjo6Y3JlYXRlKHRoaXMsIDEpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBt
X3N1cmZhY2VTY2FsZSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcywgMSkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fa2VybmVsVW5pdExlbmd0aFggeyBTVkdBbmltYXRl
ZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2tl
cm5lbFVuaXRMZW5ndGhZIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCAyODA5ZTQ3ZWQwZi4uYjJhMjZhYzhk
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2
ZXIgSHVudCA8b2xpdmVyQG5lcmdldC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNSw2
ICszNSwxMSBAQCBpbmxpbmUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTgogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZykpOwogICAgIHJlZ2lzdGVyQXR0cmli
dXRlcygpOworICAgIAorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5Ojpy
ZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpzY2FsZUF0dHIsICZTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6Om1fc2NhbGU+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTUxLDcgKzU2LDYg
QEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygp
CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmluMkF0dHIsICZTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6Om1faW4yPigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQ2hhbm5lbFNlbGVjdG9y
VHlwZSwgJlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6bV94Q2hhbm5lbFNlbGVjdG9yPigp
OwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVj
dG9yQXR0ciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSwgJlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6bV95Q2hhbm5lbFNlbGVjdG9yPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRl
PFNWR05hbWVzOjpzY2FsZUF0dHIsICZTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6Om1fc2Nh
bGU+KCk7CiB9CiAKIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQpAQCAtODEsNyArODUsNyBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29ucwogICAgIH0KIAogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjpzY2FsZUF0dHIpIHsKLSAgICAgICAgbV9zY2FsZS5zZXRW
YWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX3NjYWxlLT5zZXRCYXNlVmFsSW50ZXJu
YWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCmluZGV4IDI0NDhh
ZDA4OTU0Li5mNDllZTBjMzNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuaApAQCAtMjIsNyArMjIsNiBAQAogCiAjaW5jbHVkZSAiRkVE
aXNwbGFjZW1lbnRNYXAuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzUsMTMg
Kzc0LDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgaW4yKCkgY29uc3QgeyByZXR1cm4gbV9pbjIu
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBDaGFubmVsU2VsZWN0
b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3hDaGFubmVsU2VsZWN0
b3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBDaGFubmVsU2Vs
ZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3lDaGFubmVsU2Vs
ZWN0b3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBz
Y2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KKyAgICBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGUtPmN1
cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IGluMUFuaW1h
dGVkKCkgeyByZXR1cm4gbV9pbjEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBpbjJBbmltYXRlZCgpIHsgcmV0
dXJuIG1faW4yLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAg
IFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiB4Q2hhbm5lbFNlbGVjdG9yQW5pbWF0ZWQo
KSB7IHJldHVybiBtX3hDaGFubmVsU2VsZWN0b3IuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHlDaGFu
bmVsU2VsZWN0b3JBbmltYXRlZCgpIHsgcmV0dXJuIG1feUNoYW5uZWxTZWxlY3Rvci5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWROdW1iZXI+IHNjYWxlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3NjYWxlLmFuaW1hdGVkUHJvcGVy
dHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBzY2Fs
ZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9zY2FsZTsgfQogCiBwcml2YXRlOgogICAgIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYpOwpAQCAtMTExLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdB
dHRyaWJ1dGUgbV9pbjI7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxDaGFu
bmVsU2VsZWN0b3JUeXBlPiBtX3hDaGFubmVsU2VsZWN0b3IgeyBDSEFOTkVMX0EgfTsKICAgICBT
VkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPENoYW5uZWxTZWxlY3RvclR5cGU+IG1feUNo
YW5uZWxTZWxlY3RvciB7IENIQU5ORUxfQSB9OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmli
dXRlIG1fc2NhbGU7CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3NjYWxlIHsgU1ZHQW5p
bWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4
IDk2MGVjNDRhZTYyLi40Yjg1MDJiM2RiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNyw2ICszNywxMyBAQCBpbmxpbmUgU1ZHRkVEcm9w
U2hhZG93RWxlbWVudDo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURyb3BTaGFkb3dU
YWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKyAgICAKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZHhBdHRy
LCAmU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6bV9keD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZHlBdHRyLCAmU1ZHRkVEcm9wU2hhZG93
RWxlbWVudDo6bV9keT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgJlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6
Om1fc3RkRGV2aWF0aW9uWCwgJlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6Om1fc3RkRGV2aWF0aW9u
WT4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ+IFNWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCkBAIC00NCwyMiArNTEsMTAgQEAgUmVmPFNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQ+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURyb3BTaGFkb3dF
bGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25YIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmll
cjsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdGRE
ZXZpYXRpb25ZSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25ZIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKLX0KLQogdm9p
ZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzZXRTdGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQg
eSkKIHsKLSAgICBtX3N0ZERldmlhdGlvblguc2V0VmFsdWUoeCk7Ci0gICAgbV9zdGREZXZpYXRp
b25ZLnNldFZhbHVlKHkpOworICAgIG1fc3RkRGV2aWF0aW9uWC0+c2V0QmFzZVZhbEludGVybmFs
KHgpOworICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwogICAgIGlu
dmFsaWRhdGUoKTsKIH0KIApAQCAtNjksMTEgKzY0LDYgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dF
bGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQogICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFt
ZXM6OmluQXR0ciwgJlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6Om1faW4xPigpOwotICAgIHJlZ2lz
dHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpkeEF0dHIsICZTVkdGRURyb3BTaGFkb3dF
bGVtZW50OjptX2R4PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjpkeUF0dHIsICZTVkdGRURyb3BTaGFkb3dFbGVtZW50OjptX2R5PigpOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLAotICAgICAgICAm
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIsICZTVkdGRURy
b3BTaGFkb3dFbGVtZW50OjptX3N0ZERldmlhdGlvblgsCi0gICAgICAgICZTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllciwgJlNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6Om1fc3RkRGV2aWF0aW9uWT4oKTsKIH0KIAogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQpAQCAtODEsOCArNzEsOCBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0bwog
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyKSB7CiAgICAgICAgIGZs
b2F0IHgsIHk7CiAgICAgICAgIGlmIChwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHZhbHVlLCB4
LCB5KSkgewotICAgICAgICAgICAgbV9zdGREZXZpYXRpb25YLnNldFZhbHVlKHgpOwotICAgICAg
ICAgICAgbV9zdGREZXZpYXRpb25ZLnNldFZhbHVlKHkpOworICAgICAgICAgICAgbV9zdGREZXZp
YXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CisgICAgICAgICAgICBtX3N0ZERldmlhdGlv
blktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtOTMsMTIgKzgzLDEyIEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgfQog
CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewotICAgICAgICBtX2R4LnNldFZh
bHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fZHgtPnNldEJhc2VWYWxJbnRlcm5hbCh2
YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBtX2R5LnNldFZhbHVlKHZhbHVlLnRvRmxv
YXQoKSk7CisgICAgICAgIG1fZHktPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuaAppbmRleCA4ZTI5YzBkMmI0Ny4uYTBlNjVjMmUzNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaApAQCAtMjEsNyArMjEsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKLSNpbmNsdWRlICJT
VkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwxNiArMzMsMTYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGZsb2F0IHN0ZERldmlhdGlvblgsIGZs
b2F0IHN0ZERldmlhdGlvblkpOwogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW4xLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgZHgo
KSBjb25zdCB7IHJldHVybiBtX2R4LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgZmxvYXQgZHkoKSBjb25zdCB7IHJldHVybiBtX2R5LmN1cnJlbnRWYWx1ZShhdHRy
aWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RkRGV2aWF0aW9uWC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlh
dGlvblkuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBmbG9hdCBk
eCgpIGNvbnN0IHsgcmV0dXJuIG1fZHgtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQgZHko
KSBjb25zdCB7IHJldHVybiBtX2R5LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IHN0ZERl
dmlhdGlvblgoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvblgtPmN1cnJlbnRWYWx1ZSgp
OyB9CisgICAgZmxvYXQgc3RkRGV2aWF0aW9uWSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0
aW9uWS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZFN0cmluZz4g
aW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGR4QW5pbWF0ZWQo
KSB7IHJldHVybiBtX2R4LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gZHlBbmltYXRlZCgpIHsgcmV0dXJuIG1f
ZHkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRy
PFNWR0FuaW1hdGVkTnVtYmVyPiBzdGREZXZpYXRpb25YQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0
ZERldmlhdGlvblguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBzdGREZXZpYXRpb25ZQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3N0ZERldmlhdGlvblkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGR4QW5pbWF0ZWQoKSB7IHJldHVybiBtX2R4
OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGR5QW5pbWF0ZWQoKSB7IHJldHVybiBtX2R5OyB9
CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHN0ZERldmlhdGlvblhBbmltYXRlZCgpIHsgcmV0dXJu
IG1fc3RkRGV2aWF0aW9uWDsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBzdGREZXZpYXRpb25Z
QW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0ZERldmlhdGlvblk7IH0KIAogcHJpdmF0ZToKICAgICBT
VkdGRURyb3BTaGFkb3dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpA
QCAtNjYsMTYgKzY1LDEzIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25YSWRlbnRpZmllcigpOwotICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCk7Ci0K
ICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwotICAgIFNWR0FuaW1hdGVkTnVtYmVy
QXR0cmlidXRlIG1fZHggeyAyIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9k
eSB7IDIgfTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3N0ZERldmlhdGlvblgg
eyAyIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zdGREZXZpYXRpb25ZIHsg
MiB9OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9keCB7IFNWR0FuaW1hdGVkTnVtYmVy
OjpjcmVhdGUodGhpcywgMikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fZHkgeyBT
VkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMsIDIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TnVtYmVyPiBtX3N0ZERldmlhdGlvblggeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMs
IDIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3N0ZERldmlhdGlvblkgeyBTVkdB
bmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMsIDIpIH07CiB9OwogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcAppbmRleCAxMmE5MjcwZGExYi4uMGE5MjdmZWE3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzcsNiArMzcs
MTEgQEAgaW5saW5lIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHQKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6ZmVHYXVzc2lhbkJsdXJUYWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsK
KworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCAmU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjptX3N0ZERldmlhdGlvblgsICZTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om1fc3RkRGV2aWF0
aW9uWT4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudD4gU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDQsMjIgKzQ5LDEwIEBAIFJlZjxTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCi17Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZp
YXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJu
IHNfaWRlbnRpZmllcjsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1N0ZERldmlhdGlvblkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gc19pZGVudGlm
aWVyOwotfQotCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9u
KGZsb2F0IHgsIGZsb2F0IHkpCiB7Ci0gICAgbV9zdGREZXZpYXRpb25YLnNldFZhbHVlKHgpOwot
ICAgIG1fc3RkRGV2aWF0aW9uWS5zZXRWYWx1ZSh5KTsKKyAgICBtX3N0ZERldmlhdGlvblgtPnNl
dEJhc2VWYWxJbnRlcm5hbCh4KTsKKyAgICBtX3N0ZERldmlhdGlvblktPnNldEJhc2VWYWxJbnRl
cm5hbCh5KTsKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKQEAgLTY5LDkgKzYyLDYgQEAgdm9pZCBT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCiAgICAgaWYgKCFy
ZWdpc3RyeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICByZWdpc3RyeS5yZWdpc3Rl
ckF0dHJpYnV0ZTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpt
X2luMT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6c3RkRGV2
aWF0aW9uQXR0ciwKLSAgICAgICAgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3RkRGV2aWF0
aW9uWElkZW50aWZpZXIsICZTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om1fc3RkRGV2aWF0aW9u
WCwKLSAgICAgICAgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3RkRGV2aWF0aW9uWUlkZW50
aWZpZXIsICZTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om1fc3RkRGV2aWF0aW9uWT4oKTsKICAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZWRnZU1vZGVBdHRyLCBFZGdl
TW9kZVR5cGUsICZTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om1fZWRnZU1vZGU+KCk7CiB9CiAK
QEAgLTgwLDggKzcwLDggQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEEKICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewogICAgICAgICBmbG9hdCB4LCB5OwogICAg
ICAgICBpZiAocGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcih2YWx1ZSwgeCwgeSkpIHsKLSAgICAg
ICAgICAgIG1fc3RkRGV2aWF0aW9uWC5zZXRWYWx1ZSh4KTsKLSAgICAgICAgICAgIG1fc3RkRGV2
aWF0aW9uWS5zZXRWYWx1ZSh5KTsKKyAgICAgICAgICAgIG1fc3RkRGV2aWF0aW9uWC0+c2V0QmFz
ZVZhbEludGVybmFsKHgpOworICAgICAgICAgICAgbV9zdGREZXZpYXRpb25ZLT5zZXRCYXNlVmFs
SW50ZXJuYWwoeSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAppbmRleCBlMzM4N2JjM2I5
ZS4uYjA0NTAyODE0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVy
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApAQCAt
MzcsMTMgKzM2LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0ZERldmlhdGlvbihmbG9hdCBz
dGREZXZpYXRpb25YLCBmbG9hdCBzdGREZXZpYXRpb25ZKTsKIAogICAgIFN0cmluZyBpbjEoKSBj
b25zdCB7IHJldHVybiBtX2luMS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlv
blguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBzdGRE
ZXZpYXRpb25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb25ZLmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBz
dGREZXZpYXRpb25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb25ZLT5jdXJyZW50VmFs
dWUoKTsgfQogICAgIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRn
ZU1vZGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAogICAgIFJlZlB0
cjxTVkdBbmltYXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWROdW1iZXI+IHN0ZERldmlhdGlvblhBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9u
WC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWROdW1iZXI+IHN0ZERldmlhdGlvbllBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3Rk
RGV2aWF0aW9uWS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAg
ICBTVkdBbmltYXRlZE51bWJlciYgc3RkRGV2aWF0aW9uWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9z
dGREZXZpYXRpb25YOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHN0ZERldmlhdGlvbllBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPiBlZGdlTW9kZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9lZGdlTW9kZS5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAogcHJpdmF0ZToKQEAgLTY3
LDE0ICs2NiwxMSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKTsKLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpOwotCiAgICAg
QXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAg
IFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdB
bmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJp
YnV0ZSBtX3N0ZERldmlhdGlvblg7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9z
dGREZXZpYXRpb25ZOworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9zdGREZXZpYXRpb25Y
IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZE51bWJlcj4gbV9zdGREZXZpYXRpb25ZIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlz
KSB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8RWRnZU1vZGVUeXBlPiBt
X2VkZ2VNb2RlIHsgRURHRU1PREVfTk9ORSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggODkxZmVkZDk4ZDUuLjJlNmIwZWMyNmE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2xpdmVy
QG5lcmdldC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Myw3ICs0MywxOSBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU1ZHRkVMaWdodEVsZW1lbnQpOwogU1ZHRkVMaWdodEVs
ZW1lbnQ6OlNWR0ZFTGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3Bl
cnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmF6aW11dGhBdHRyLCAmU1ZH
RkVMaWdodEVsZW1lbnQ6Om1fYXppbXV0aD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZWxldmF0aW9uQXR0ciwgJlNWR0ZFTGlnaHRFbGVt
ZW50OjptX2VsZXZhdGlvbj4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQ
cm9wZXJ0eTxTVkdOYW1lczo6eEF0dHIsICZTVkdGRUxpZ2h0RWxlbWVudDo6bV94PigpOworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp5QXR0ciwg
JlNWR0ZFTGlnaHRFbGVtZW50OjptX3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJl
Z2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnpBdHRyLCAmU1ZHRkVMaWdodEVsZW1lbnQ6Om1fej4o
KTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6
cG9pbnRzQXRYQXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX3BvaW50c0F0WD4oKTsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cG9pbnRzQXRZ
QXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX3BvaW50c0F0WT4oKTsKKyAgICAgICAgUHJvcGVy
dHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cG9pbnRzQXRaQXR0ciwgJlNW
R0ZFTGlnaHRFbGVtZW50OjptX3BvaW50c0F0Wj4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsICZTVkdG
RUxpZ2h0RWxlbWVudDo6bV9zcGVjdWxhckV4cG9uZW50PigpOworICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIs
ICZTVkdGRUxpZ2h0RWxlbWVudDo6bV9saW1pdGluZ0NvbmVBbmdsZT4oKTsKKyAgICB9KTsKIH0K
IAogU1ZHRkVMaWdodEVsZW1lbnQqIFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQpCkBAIC01NSw3MiArNjcsNTUgQEAgU1ZHRkVM
aWdodEVsZW1lbnQqIFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQqIHN2Z0VsZW0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBTVkdGRUxp
Z2h0RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9
IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6YXpp
bXV0aEF0dHIsICZTVkdGRUxpZ2h0RWxlbWVudDo6bV9hemltdXRoPigpOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCAmU1ZHRkVMaWdodEVs
ZW1lbnQ6Om1fZWxldmF0aW9uPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNW
R05hbWVzOjp4QXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX3g+KCk7Ci0gICAgcmVnaXN0cnku
cmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHRkVMaWdodEVsZW1lbnQ6Om1f
eT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ekF0dHIsICZT
VkdGRUxpZ2h0RWxlbWVudDo6bV96PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRl
PFNWR05hbWVzOjpwb2ludHNBdFhBdHRyLCAmU1ZHRkVMaWdodEVsZW1lbnQ6Om1fcG9pbnRzQXRY
PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwb2ludHNBdFlB
dHRyLCAmU1ZHRkVMaWdodEVsZW1lbnQ6Om1fcG9pbnRzQXRZPigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwb2ludHNBdFpBdHRyLCAmU1ZHRkVMaWdodEVsZW1l
bnQ6Om1fcG9pbnRzQXRaPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05h
bWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX3NwZWN1bGFy
RXhwb25lbnQ+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Omxp
bWl0aW5nQ29uZUFuZ2xlQXR0ciwgJlNWR0ZFTGlnaHRFbGVtZW50OjptX2xpbWl0aW5nQ29uZUFu
Z2xlPigpOwotfQotCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjphemltdXRoQXR0cikgewotICAgICAgICBtX2F6aW11dGgu
c2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9hemltdXRoLT5zZXRCYXNlVmFs
SW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKSB7Ci0gICAgICAgIG1fZWxldmF0
aW9uLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fZWxldmF0aW9uLT5zZXRC
YXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBtX3guc2V0VmFs
dWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwodmFs
dWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBtX3kuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgp
KTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp6QXR0cikg
ewotICAgICAgICBtX3ouc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV96LT5z
ZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFhBdHRyKSB7Ci0gICAgICAg
IG1fcG9pbnRzQXRYLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fcG9pbnRz
QXRYLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKSB7Ci0g
ICAgICAgIG1fcG9pbnRzQXRZLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1f
cG9pbnRzQXRZLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRy
KSB7Ci0gICAgICAgIG1fcG9pbnRzQXRaLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAg
ICAgIG1fcG9pbnRzQXRaLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzcGVjdWxh
ckV4cG9uZW50QXR0cikgewotICAgICAgICBtX3NwZWN1bGFyRXhwb25lbnQuc2V0VmFsdWUodmFs
dWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9zcGVjdWxhckV4cG9uZW50LT5zZXRCYXNlVmFsSW50
ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChuYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpIHsKLSAgICAgICAgbV9s
aW1pdGluZ0NvbmVBbmdsZS5zZXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICBtX2xp
bWl0aW5nQ29uZUFuZ2xlLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI5LDcgKzEyNCw3IEBAIHZvaWQgU1ZHRkVMaWdo
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0CiAKIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnRF
bGVtZW50KCkpOwogICAgICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgKaW5kZXggOWJlMmJmYTQ2ZWMuLjFlYjRl
YWM4ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaApAQCAtMjMsNyAr
MjMsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMaWdodFNvdXJjZS5oIgotI2luY2x1
ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNiwyNyArMzUsMjcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
UmVmPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QgPSAw
OwogICAgIHN0YXRpYyBTVkdGRUxpZ2h0RWxlbWVudCogZmluZExpZ2h0RWxlbWVudChjb25zdCBT
VkdFbGVtZW50Kik7CiAKLSAgICBmbG9hdCBhemltdXRoKCkgY29uc3QgeyByZXR1cm4gbV9hemlt
dXRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgZWxl
dmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbGV2YXRpb24uY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgeSgpIGNvbnN0IHsg
cmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZs
b2F0IHooKSBjb25zdCB7IHJldHVybiBtX3ouY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBmbG9hdCBwb2ludHNBdFgoKSBjb25zdCB7IHJldHVybiBtX3BvaW50c0F0
WC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IHBvaW50
c0F0WSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzQXRZLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgcG9pbnRzQXRaKCkgY29uc3QgeyByZXR1cm4gbV9w
b2ludHNBdFouY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9h
dCBzcGVjdWxhckV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjdWxhckV4cG9uZW50LmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgbGltaXRpbmdD
b25lQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0aW5nQ29uZUFuZ2xlLmN1cnJlbnRWYWx1
ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgZmxvYXQgYXppbXV0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXppbXV0aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBlbGV2YXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2VsZXZhdGlvbi0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9h
dCB4KCkgY29uc3QgeyByZXR1cm4gbV94LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IHko
KSBjb25zdCB7IHJldHVybiBtX3ktPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQgeigpIGNv
bnN0IHsgcmV0dXJuIG1fei0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBwb2ludHNBdFgo
KSBjb25zdCB7IHJldHVybiBtX3BvaW50c0F0WC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9h
dCBwb2ludHNBdFkoKSBjb25zdCB7IHJldHVybiBtX3BvaW50c0F0WS0+Y3VycmVudFZhbHVlKCk7
IH0KKyAgICBmbG9hdCBwb2ludHNBdFooKSBjb25zdCB7IHJldHVybiBtX3BvaW50c0F0Wi0+Y3Vy
cmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCBzcGVjdWxhckV4cG9uZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zcGVjdWxhckV4cG9uZW50LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGxpbWl0
aW5nQ29uZUFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9saW1pdGluZ0NvbmVBbmdsZS0+Y3VycmVu
dFZhbHVlKCk7IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gYXppbXV0aEFuaW1h
dGVkKCkgeyByZXR1cm4gbV9hemltdXRoLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gZWxldmF0aW9uQW5pbWF0
ZWQoKSB7IHJldHVybiBtX2VsZXZhdGlvbi5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IHhBbmltYXRlZCgpIHsg
cmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IHlBbmltYXRlZCgpIHsgcmV0dXJuIG1feS5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWROdW1iZXI+IHpBbmltYXRlZCgpIHsgcmV0dXJuIG1fei5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IHBv
aW50c0F0WEFuaW1hdGVkKCkgeyByZXR1cm4gbV9wb2ludHNBdFguYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBw
b2ludHNBdFlBbmltYXRlZCgpIHsgcmV0dXJuIG1fcG9pbnRzQXRZLmFuaW1hdGVkUHJvcGVydHko
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4g
cG9pbnRzQXRaQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BvaW50c0F0Wi5hbmltYXRlZFByb3BlcnR5
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+
IHNwZWN1bGFyRXhwb25lbnRBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVudC5h
bmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWROdW1iZXI+IGxpbWl0aW5nQ29uZUFuZ2xlQW5pbWF0ZWQoKSB7IHJldHVybiBtX2xp
bWl0aW5nQ29uZUFuZ2xlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBhemltdXRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX2F6
aW11dGg7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgZWxldmF0aW9uQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX2VsZXZhdGlvbjsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiB4QW5pbWF0ZWQoKSB7
IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgeUFuaW1hdGVkKCkgeyByZXR1
cm4gbV95OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHpBbmltYXRlZCgpIHsgcmV0dXJuIG1f
ejsgfQorICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBwb2ludHNBdFhBbmltYXRlZCgpIHsgcmV0dXJu
IG1fcG9pbnRzQXRYOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHBvaW50c0F0WUFuaW1hdGVk
KCkgeyByZXR1cm4gbV9wb2ludHNBdFk7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgcG9pbnRz
QXRaQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BvaW50c0F0WjsgfQorICAgIFNWR0FuaW1hdGVkTnVt
YmVyJiBzcGVjdWxhckV4cG9uZW50QW5pbWF0ZWQoKSB7IHJldHVybiBtX3NwZWN1bGFyRXhwb25l
bnQ7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgbGltaXRpbmdDb25lQW5nbGVBbmltYXRlZCgp
IHsgcmV0dXJuIG1fbGltaXRpbmdDb25lQW5nbGU7IH0KIAogcHJvdGVjdGVkOgogICAgIFNWR0ZF
TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNjUsMzQg
KzY0LDI3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB1c2luZyBBdHRyaWJ1dGVPd25l
clByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVMaWdodEVsZW1lbnQsIFNW
R0VsZW1lbnQ+OwotICAgIHN0YXRpYyBhdXRvJiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdFbGVtZW50PjsKICAgICBjb25z
dCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAg
ICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
OwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVy
UHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJB
dHRyaWJ1dGUgbV9hemltdXRoOwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZWxl
dmF0aW9uOwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1feDsKLSAgICBTVkdBbmlt
YXRlZE51bWJlckF0dHJpYnV0ZSBtX3k7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUg
bV96OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fcG9pbnRzQXRYOwotICAgIFNW
R0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fcG9pbnRzQXRZOwotICAgIFNWR0FuaW1hdGVkTnVt
YmVyQXR0cmlidXRlIG1fcG9pbnRzQXRaOwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRl
IG1fc3BlY3VsYXJFeHBvbmVudCB7IDEgfTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0
ZSBtX2xpbWl0aW5nQ29uZUFuZ2xlOworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9hemlt
dXRoIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZE51bWJlcj4gbV9lbGV2YXRpb24geyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3ggeyBTVkdBbmltYXRlZE51bWJlcjo6
Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3kgeyBTVkdBbmlt
YXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBt
X3ogeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTnVtYmVyPiBtX3BvaW50c0F0WCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fcG9pbnRzQXRZIHsgU1ZHQW5pbWF0ZWRO
dW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9wb2lu
dHNBdFogeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTnVtYmVyPiBtX3NwZWN1bGFyRXhwb25lbnQgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3Jl
YXRlKHRoaXMsIDEpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2xpbWl0aW5nQ29u
ZUFuZ2xlIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwCmluZGV4IGE0MjE3MzkzZWQzLi42MmZmMjRhY2M0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiw2ICszNiwxMSBAQCBpbmxpbmUgU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1vcnBob2xvZ3lUYWcp
KTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKyAgICAKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cmFkaXVzQXR0
ciwgJlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6Om1fcmFkaXVzWCwgJlNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQ6Om1fcmFkaXVzWT4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQ+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC00MywyMiArNDgsMTAgQEAgUmVmPFNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQ+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNYSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdSYWRpdXNYIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRp
ZmllcjsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojpy
YWRpdXNZSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gc19pZGVudGlmaWVyKCJTVkdSYWRpdXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKLX0KLQogdm9pZCBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50OjpzZXRSYWRpdXMoZmxvYXQgeCwgZmxvYXQgeSkKIHsKLSAgICBtX3Jh
ZGl1c1guc2V0VmFsdWUoeCk7Ci0gICAgbV9yYWRpdXNZLnNldFZhbHVlKHkpOworICAgIG1fcmFk
aXVzWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOworICAgIG1fcmFkaXVzWS0+c2V0QmFzZVZhbElu
dGVybmFsKHkpOwogICAgIGludmFsaWRhdGUoKTsKIH0KIApAQCAtNjksOSArNjIsNiBAQCB2b2lk
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCiAgICAgICAgIHJl
dHVybjsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6aW5BdHRyLCAm
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6bV9pbjE+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJB
dHRyaWJ1dGU8U1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwg
JlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6Om1fc3ZnT3BlcmF0b3I+KCk7Ci0gICAgcmVnaXN0cnku
cmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJhZGl1c0F0dHIsCi0gICAgICAgICZTVkdGRU1v
cnBob2xvZ3lFbGVtZW50OjpyYWRpdXNYSWRlbnRpZmllciwgJlNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ6Om1fcmFkaXVzWCwKLSAgICAgICAgJlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnJhZGl1c1lJ
ZGVudGlmaWVyLCAmU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6bV9yYWRpdXNZPigpOwogfQogCiB2
b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC05MSw4ICs4MSw4IEBA
IHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJhZGl1
c0F0dHIpIHsKICAgICAgICAgZmxvYXQgeCwgeTsKICAgICAgICAgaWYgKHBhcnNlTnVtYmVyT3B0
aW9uYWxOdW1iZXIodmFsdWUsIHgsIHkpKSB7Ci0gICAgICAgICAgICBtX3JhZGl1c1guc2V0VmFs
dWUoeCk7Ci0gICAgICAgICAgICBtX3JhZGl1c1kuc2V0VmFsdWUoeSk7CisgICAgICAgICAgICBt
X3JhZGl1c1gtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKKyAgICAgICAgICAgIG1fcmFkaXVzWS0+
c2V0QmFzZVZhbEludGVybmFsKHkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAppbmRleCA2ODI4
MWI3ZmZmZS4uZWU3NTVmZDI0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuaApAQCAtMjIsNyArMjIsNiBAQAogCiAjaW5jbHVkZSAiRkVNb3JwaG9sb2d5
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY1LDEzICs2NCwxMyBAQCBwdWJs
aWM6CiAKICAgICBTdHJpbmcgaW4xKCkgY29uc3QgeyByZXR1cm4gbV9pbjEuY3VycmVudFZhbHVl
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHN2
Z09wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdmdPcGVyYXRvci5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IHJhZGl1c1goKSBjb25zdCB7IHJldHVy
biBtX3JhZGl1c1guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBm
bG9hdCByYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNZLmN1cnJlbnRWYWx1ZShhdHRy
aWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgZmxvYXQgcmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFkaXVzWC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBmbG9hdCByYWRpdXNZKCkgY29uc3Qg
eyByZXR1cm4gbV9yYWRpdXNZLT5jdXJyZW50VmFsdWUoKTsgfQogCiAgICAgUmVmUHRyPFNWR0Fu
aW1hdGVkU3RyaW5nPiBpbjFBbmltYXRlZCgpIHsgcmV0dXJuIG1faW4xLmFuaW1hdGVkUHJvcGVy
dHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1l
cmF0aW9uPiBzdmdPcGVyYXRvckFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdmdPcGVyYXRvci5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWROdW1iZXI+IHJhZGl1c1hBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmFkaXVzWC5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWROdW1iZXI+IHJhZGl1c1lBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmFkaXVzWS5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYg
cmFkaXVzWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yYWRpdXNYOyB9CisgICAgU1ZHQW5pbWF0ZWRO
dW1iZXImIHJhZGl1c1lBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmFkaXVzWTsgfQogCiBwcml2YXRl
OgogICAgIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CkBAIC05NSwxNSArOTQsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHNldEZpbHRlckVm
ZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
cmFkaXVzWElkZW50aWZpZXIoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRp
dXNZSWRlbnRpZmllcigpOwotCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93
bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKICAg
ICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPE1vcnBob2xvZ3lPcGVyYXRvclR5cGU+
IG1fc3ZnT3BlcmF0b3IgeyBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgfTsKLSAgICBTVkdB
bmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3JhZGl1c1g7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJB
dHRyaWJ1dGUgbV9yYWRpdXNZOworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9yYWRpdXNY
IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZE51bWJlcj4gbV9yYWRpdXNZIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmNwcAppbmRleCBlODQyZTc1MWE3ZC4uMjViODFiMGQyYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzcsNiArMzcsMTIgQEAgaW5saW5l
IFNWR0ZFT2Zmc2V0RWxlbWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3UKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVP
ZmZzZXRUYWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKyAgICAKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6
ZHhBdHRyLCAmU1ZHRkVPZmZzZXRFbGVtZW50OjptX2R4PigpOworICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpkeUF0dHIsICZTVkdGRU9mZnNldEVs
ZW1lbnQ6Om1fZHk+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdGRU9mZnNldEVsZW1lbnQ+IFNW
R0ZFT2Zmc2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCkKQEAgLTUwLDE5ICs1NiwxNyBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxl
bWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKICAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjppbkF0dHIsICZTVkdGRU9mZnNldEVsZW1lbnQ6Om1faW4xPigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpkeEF0dHIsICZTVkdGRU9mZnNldEVsZW1lbnQ6Om1f
ZHg+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmR5QXR0ciwg
JlNWR0ZFT2Zmc2V0RWxlbWVudDo6bV9keT4oKTsKIH0KIAogdm9pZCBTVkdGRU9mZnNldEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewot
ICAgICAgICBtX2R4LnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fZHgtPnNl
dEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBtX2R5LnNl
dFZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fZHktPnNldEJhc2VWYWxJbnRlcm5h
bCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKaW5kZXggMjc1YTlmYzJjNzcuLmU4ZmIxNDY3OGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNp
bmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzIsMTIgKzMxLDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFNWR0ZFT2Zmc2V0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1faW4xLmN1cnJlbnRWYWx1
ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgZHgoKSBjb25zdCB7IHJldHVy
biBtX2R4LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQg
ZHkoKSBjb25zdCB7IHJldHVybiBtX2R5LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9CisgICAgZmxvYXQgZHgoKSBjb25zdCB7IHJldHVybiBtX2R4LT5jdXJyZW50VmFsdWUo
KTsgfQorICAgIGZsb2F0IGR5KCkgY29uc3QgeyByZXR1cm4gbV9keS0+Y3VycmVudFZhbHVlKCk7
IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVy
biBtX2luMS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBS
ZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGR4QW5pbWF0ZWQoKSB7IHJldHVybiBtX2R4LmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZE51bWJlcj4gZHlBbmltYXRlZCgpIHsgcmV0dXJuIG1fZHkuYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGR4QW5pbWF0
ZWQoKSB7IHJldHVybiBtX2R4OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGR5QW5pbWF0ZWQo
KSB7IHJldHVybiBtX2R5OyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVPZmZzZXRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNjMsOCArNjIsOCBAQCBwcml2YXRl
OgogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMg
fTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAg
ICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7Ci0gICAgU1ZHQW5pbWF0ZWROdW1i
ZXJBdHRyaWJ1dGUgbV9keDsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2R5Owor
ICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9keCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVh
dGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fZHkgeyBTVkdBbmltYXRl
ZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5j
cHAKaW5kZXggOGExOWQwZGU1YTEuLjlmMWM1MTYwNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC00MCw2ICs0MCwx
NCBAQCBpbmxpbmUgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKKyAgICAKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0
ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsICZTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjptX3NwZWN1bGFyQ29uc3RhbnQ+KCk7CisgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRy
LCAmU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bV9zcGVjdWxhckV4cG9uZW50PigpOwor
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpzdXJm
YWNlU2NhbGVBdHRyLCAmU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bV9zdXJmYWNlU2Nh
bGU+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCAmU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
bV9rZXJuZWxVbml0TGVuZ3RoWCwgJlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Om1fa2Vy
bmVsVW5pdExlbmd0aFk+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDcsMzAgKzU1LDEy
IEBAIFJlZjxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50PiBTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1jb25z
dCBBdG9taWNTdHJpbmcmIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRM
ZW5ndGhYSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBzX2lkZW50aWZpZXI7Ci19Ci0KLWNv
bnN0IEF0b21pY1N0cmluZyYgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6a2VybmVsVW5p
dExlbmd0aFlJZGVudGlmaWVyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKLX0KLQog
dm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQog
ewogICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKICAgICBpZiAoIXJl
Z2lzdHJ5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjppbkF0dHIsICZTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
OjptX2luMT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6c3Bl
Y3VsYXJDb25zdGFudEF0dHIsICZTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjptX3NwZWN1
bGFyQ29uc3RhbnQ+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6
OnNwZWN1bGFyRXhwb25lbnRBdHRyLCAmU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bV9z
cGVjdWxhckV4cG9uZW50PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05h
bWVzOjpzdXJmYWNlU2NhbGVBdHRyLCAmU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bV9z
dXJmYWNlU2NhbGU+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6
Omtlcm5lbFVuaXRMZW5ndGhBdHRyLAotICAgICAgICAmU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyLCAmU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6bV9rZXJuZWxVbml0TGVuZ3RoWCwKLSAgICAgICAgJlNWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgJlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6Om1fa2VybmVsVW5pdExlbmd0aFk+KCk7CiB9CiAKIHZvaWQgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTgxLDI1ICs3MSwyNSBAQCB2
b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbgogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVz
OjpzdXJmYWNlU2NhbGVBdHRyKSB7Ci0gICAgICAgIG1fc3VyZmFjZVNjYWxlLnNldFZhbHVlKHZh
bHVlLnRvRmxvYXQoKSk7CisgICAgICAgIG1fc3VyZmFjZVNjYWxlLT5zZXRCYXNlVmFsSW50ZXJu
YWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0cikgewotICAgICAgICBtX3NwZWN1
bGFyQ29uc3RhbnQuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9zcGVjdWxh
ckNvbnN0YW50LT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9u
ZW50QXR0cikgewotICAgICAgICBtX3NwZWN1bGFyRXhwb25lbnQuc2V0VmFsdWUodmFsdWUudG9G
bG9hdCgpKTsKKyAgICAgICAgbV9zcGVjdWxhckV4cG9uZW50LT5zZXRCYXNlVmFsSW50ZXJuYWwo
dmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewogICAgICAgICBmbG9hdCB4LCB5
OwogICAgICAgICBpZiAocGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcih2YWx1ZSwgeCwgeSkpIHsK
LSAgICAgICAgICAgIG1fa2VybmVsVW5pdExlbmd0aFguc2V0VmFsdWUoeCk7Ci0gICAgICAgICAg
ICBtX2tlcm5lbFVuaXRMZW5ndGhZLnNldFZhbHVlKHkpOworICAgICAgICAgICAgbV9rZXJuZWxV
bml0TGVuZ3RoWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOworICAgICAgICAgICAgbV9rZXJuZWxV
bml0TGVuZ3RoWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuaAppbmRleCA3YzkwNWFhNzJhNy4uYmY3YmQ4NzUwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaApAQCAtMjMs
NyArMjMsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGRVNwZWN1bGFyTGlnaHRpbmcu
aCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0ZFTGlnaHRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgiCiAKQEAgLTM2LDE4ICszNSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsaWdodEVsZW1lbnRB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZFTGlnaHRFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1faW4xLmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgZmxvYXQgc3BlY3VsYXJDb25zdGFu
dCgpIGNvbnN0ICB7IHJldHVybiBtX3NwZWN1bGFyQ29uc3RhbnQuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBzcGVjdWxhckV4cG9uZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9zcGVjdWxhckV4cG9uZW50LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9Ci0gICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJm
YWNlU2NhbGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9h
dCBrZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFgu
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWSgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFkuY3VycmVudFZh
bHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBmbG9hdCBzcGVjdWxhckNvbnN0YW50
KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjdWxhckNvbnN0YW50LT5jdXJyZW50VmFsdWUoKTsgfQor
ICAgIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyRXhw
b25lbnQtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJmYWNlU2NhbGUtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFgoKSBjb25zdCB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhYLT5jdXJy
ZW50VmFsdWUoKTsgfQorICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QgeyByZXR1
cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFJlZlB0cjxT
VkdBbmltYXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRO
dW1iZXI+IHNwZWN1bGFyQ29uc3RhbnRBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3BlY3VsYXJDb25z
dGFudC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWROdW1iZXI+IHNwZWN1bGFyRXhwb25lbnRBbmltYXRlZCgpIHsgcmV0dXJu
IG1fc3BlY3VsYXJFeHBvbmVudC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IHN1cmZhY2VTY2FsZUFuaW1hdGVk
KCkgeyByZXR1cm4gbV9zdXJmYWNlU2NhbGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBrZXJuZWxVbml0TGVu
Z3RoWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWC5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1i
ZXI+IGtlcm5lbFVuaXRMZW5ndGhZQW5pbWF0ZWQoKSB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5n
dGhZLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0Fu
aW1hdGVkTnVtYmVyJiBzcGVjdWxhckNvbnN0YW50QW5pbWF0ZWQoKSB7IHJldHVybiBtX3NwZWN1
bGFyQ29uc3RhbnQ7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgc3BlY3VsYXJFeHBvbmVudEFu
aW1hdGVkKCkgeyByZXR1cm4gbV9zcGVjdWxhckV4cG9uZW50OyB9CisgICAgU1ZHQW5pbWF0ZWRO
dW1iZXImIHN1cmZhY2VTY2FsZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdXJmYWNlU2NhbGU7IH0K
KyAgICBTVkdBbmltYXRlZE51bWJlciYga2VybmVsVW5pdExlbmd0aFhBbmltYXRlZCgpIHsgcmV0
dXJuIG1fa2VybmVsVW5pdExlbmd0aFg7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYga2VybmVs
VW5pdExlbmd0aFlBbmltYXRlZCgpIHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFk7IH0KIAog
cHJpdmF0ZToKICAgICBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNzEsMTcgKzcwLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwotICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpOwotCiAgICAg
QXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAg
IFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdB
bmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJp
YnV0ZSBtX3NwZWN1bGFyQ29uc3RhbnQgeyAxIH07Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRy
aWJ1dGUgbV9zcGVjdWxhckV4cG9uZW50IHsgMSB9OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0
cmlidXRlIG1fc3VyZmFjZVNjYWxlIHsgMSB9OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmli
dXRlIG1fa2VybmVsVW5pdExlbmd0aFg7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUg
bV9rZXJuZWxVbml0TGVuZ3RoWTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc3BlY3Vs
YXJDb25zdGFudCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcywgMSkgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc3BlY3VsYXJFeHBvbmVudCB7IFNWR0FuaW1hdGVkTnVt
YmVyOjpjcmVhdGUodGhpcywgMSkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc3Vy
ZmFjZVNjYWxlIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzLCAxKSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZE51bWJlcj4gbV9rZXJuZWxVbml0TGVuZ3RoWCB7IFNWR0FuaW1hdGVkTnVt
YmVyOjpjcmVhdGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fa2VybmVs
VW5pdExlbmd0aFkgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxl
bmNlRWxlbWVudC5jcHAKaW5kZXggOTlkOGMyZGU0MGUuLjBlMmM0OGU1MjllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzgsNyAr
MzgsOSBAQCBpbmxpbmUgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQogICAgIAogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpiYXNlRnJl
cXVlbmN5QXR0ciwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1fYmFzZUZyZXF1ZW5jeVgsICZT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX2Jhc2VGcmVxdWVuY3lZPigpOwogICAgICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwg
JlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1fbnVtT2N0YXZlcz4oKTsKKyAgICAgICAgUHJvcGVy
dHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c2VlZEF0dHIsICZTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50OjptX3NlZWQ+KCk7CiAgICAgfSk7CiB9CiAKQEAgLTQ3LDI3ICs0OSwx
MSBAQCBSZWY8U1ZHRkVUdXJidWxlbmNlRWxlbWVudD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZH
RkVUdXJidWxlbmNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1jb25zdCBBdG9t
aWNTdHJpbmcmIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVxdWVuY3lYSWRlbnRpZmll
cigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlm
aWVyKCJTVkdCYXNlRnJlcXVlbmN5WCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBzX2lkZW50aWZpZXI7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYg
U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCkKLXsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0Jh
c2VGcmVxdWVuY3lZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIHNfaWRlbnRpZmllcjsKLX0KLQogdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpy
ZWdpc3RlckF0dHJpYnV0ZXMoKQogewogICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVn
aXN0cnkoKTsKICAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0
ciwKLSAgICAgICAgJlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVxdWVuY3lYSWRlbnRp
ZmllciwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1fYmFzZUZyZXF1ZW5jeVgsCi0gICAgICAg
ICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpiYXNlRnJlcXVlbmN5WUlkZW50aWZpZXIsICZTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50OjptX2Jhc2VGcmVxdWVuY3lZPigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpzZWVkQXR0ciwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6Om1fc2VlZD4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6
c3RpdGNoVGlsZXNBdHRyLCBTVkdTdGl0Y2hPcHRpb25zLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6bV9zdGl0Y2hUaWxlcz4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdO
YW1lczo6dHlwZUF0dHIsIFR1cmJ1bGVuY2VUeXBlLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
bV90eXBlPigpOwogfQpAQCAtOTEsMTQgKzc3LDE0IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyKSB7CiAgICAgICAg
IGZsb2F0IHgsIHk7CiAgICAgICAgIGlmIChwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHZhbHVl
LCB4LCB5KSkgewotICAgICAgICAgICAgbV9iYXNlRnJlcXVlbmN5WC5zZXRWYWx1ZSh4KTsKLSAg
ICAgICAgICAgIG1fYmFzZUZyZXF1ZW5jeVkuc2V0VmFsdWUoeSk7CisgICAgICAgICAgICBtX2Jh
c2VGcmVxdWVuY3lYLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CisgICAgICAgICAgICBtX2Jhc2VG
cmVxdWVuY3lZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzZWVkQXR0cikgewotICAg
ICAgICBtX3NlZWQuc2V0VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKyAgICAgICAgbV9zZWVkLT5z
ZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKaW5kZXgg
MTFjZDdmZWIwYTIuLjk3OTZhNTMyNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIkZFVHVyYnVs
ZW5jZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKLSNpbmNsdWRlICJT
VkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05NywxNyArOTYsMTcgQEAg
Y2xhc3MgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAotICAgIGZsb2F0IGJhc2VGcmVxdWVuY3lYKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRnJlcXVl
bmN5WC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGZsb2F0IGJh
c2VGcmVxdWVuY3lZKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WS5jdXJyZW50VmFs
dWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGZsb2F0IGJhc2VGcmVxdWVuY3lYKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBm
bG9hdCBiYXNlRnJlcXVlbmN5WSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZUZyZXF1ZW5jeVktPmN1
cnJlbnRWYWx1ZSgpOyB9CiAgICAgaW50IG51bU9jdGF2ZXMoKSBjb25zdCB7IHJldHVybiBtX251
bU9jdGF2ZXMtPmN1cnJlbnRWYWx1ZSgpOyB9Ci0gICAgZmxvYXQgc2VlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VlZC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGZs
b2F0IHNlZWQoKSBjb25zdCB7IHJldHVybiBtX3NlZWQtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAg
U1ZHU3RpdGNoT3B0aW9ucyBzdGl0Y2hUaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RpdGNoVGls
ZXMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBUdXJidWxlbmNl
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IGJhc2VGcmVx
dWVuY3lYQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Jhc2VGcmVxdWVuY3lYLmFuaW1hdGVkUHJvcGVy
dHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJl
cj4gYmFzZUZyZXF1ZW5jeVlBbmltYXRlZCgpIHsgcmV0dXJuIG1fYmFzZUZyZXF1ZW5jeVkuYW5p
bWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRO
dW1iZXImIGJhc2VGcmVxdWVuY3lYQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Jhc2VGcmVxdWVuY3lY
OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGJhc2VGcmVxdWVuY3lZQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX2Jhc2VGcmVxdWVuY3lZOyB9CiAgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyJiBudW1PY3Rh
dmVzQW5pbWF0ZWQoKSB7IHJldHVybiBtX251bU9jdGF2ZXM7IH0KLSAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWROdW1iZXI+IHNlZWRBbmltYXRlZCgpIHsgcmV0dXJuIG1fc2VlZC5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgc2Vl
ZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9zZWVkOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51
bWVyYXRpb24+IHN0aXRjaFRpbGVzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0aXRjaFRpbGVzLmFu
aW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uPiB0eXBlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3R5cGUuYW5pbWF0
ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAKQEAgLTEzMywxNSArMTMyLDEy
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZm
ZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lY
SWRlbnRpZmllcigpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVu
Y3lZSWRlbnRpZmllcigpOwotCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93
bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2Jhc2VGcmVx
dWVuY3lYOwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fYmFzZUZyZXF1ZW5jeVk7
CisgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2Jhc2VGcmVxdWVuY3lYIHsgU1ZHQW5pbWF0
ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OworICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9i
YXNlRnJlcXVlbmN5WSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKICAgICBS
ZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBtX251bU9jdGF2ZXMgeyBTVkdBbmltYXRlZEludGVnZXI6
OmNyZWF0ZSh0aGlzLCAxKSB9OwotICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc2Vl
ZDsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc2VlZCB7IFNWR0FuaW1hdGVkTnVtYmVy
OjpjcmVhdGUodGhpcykgfTsKICAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNW
R1N0aXRjaE9wdGlvbnM+IG1fc3RpdGNoVGlsZXMgeyBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCB9
OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8VHVyYnVsZW5jZVR5cGU+IG1f
dHlwZSB7IFR1cmJ1bGVuY2VUeXBlOjpUdXJidWxlbmNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcAppbmRleCA3MmRkM2YxMzU5OC4uYmRkN2EwMjc1NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCkBAIC0yNCw2ICsy
NCw4IEBACiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlFbGVtZW50LmgiCiAKICNpbmNsdWRlICJET01Q
b2ludC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCisjaW5jbHVkZSAiUmVuZGVy
U1ZHU2hhcGUuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRl
ICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKQEAgLTM2LDcgKzM4
LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTVkdHZW9tZXRyeUVsZW1lbnQpOwog
U1ZHR2VvbWV0cnlFbGVtZW50OjpTVkdHZW9tZXRyeUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU1ZHR3JhcGhpY3NFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjpwYXRoTGVuZ3RoQXR0ciwgJlNWR0dlb21ldHJ5RWxlbWVudDo6bV9wYXRoTGVuZ3RoPigp
OworICAgIH0pOwogfQogCiBmbG9hdCBTVkdHZW9tZXRyeUVsZW1lbnQ6OmdldFRvdGFsTGVuZ3Ro
KCkgY29uc3QKQEAgLTg3LDE5ICs5MiwxMSBAQCBib29sIFNWR0dlb21ldHJ5RWxlbWVudDo6aXNQ
b2ludEluU3Ryb2tlKERPTVBvaW50SW5pdCYmIHBvaW50SW5pdCkKICAgICByZXR1cm4gcmVuZGVy
ZXItPmlzUG9pbnRJblN0cm9rZShwb2ludCk7CiB9CiAKLXZvaWQgU1ZHR2VvbWV0cnlFbGVtZW50
OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRl
UmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0
ciwgJlNWR0dlb21ldHJ5RWxlbWVudDo6bV9wYXRoTGVuZ3RoPigpOwotfQotCiB2b2lkIFNWR0dl
b21ldHJ5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
cGF0aExlbmd0aEF0dHIpIHsKLSAgICAgICAgbV9wYXRoTGVuZ3RoLnNldFZhbHVlKHZhbHVlLnRv
RmxvYXQoKSk7Ci0gICAgICAgIGlmIChtX3BhdGhMZW5ndGgudmFsdWUoKSA8IDApCisgICAgICAg
IG1fcGF0aExlbmd0aC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnRvRmxvYXQoKSk7CisgICAg
ICAgIGlmIChtX3BhdGhMZW5ndGgtPmJhc2VWYWwoKSA8IDApCiAgICAgICAgICAgICBkb2N1bWVu
dCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1ZSBm
b3IgcGF0aCBhdHRyaWJ1dGUgPHBhdGhMZW5ndGg+IGlzIG5vdCBhbGxvd2VkIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0
cnlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmgKaW5k
ZXggYjA5Y2JjYjAxNWMuLjI4NzFmNTg5NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR2VvbWV0cnlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21l
dHJ5RWxlbWVudC5oCkBAIC0yMyw3ICsyMyw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IlBhdGguaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0dy
YXBoaWNzRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKQEAgLTQzLDExICs0Miwx
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BvaW50SW5TdHJva2UoRE9NUG9pbnRJbml0JiYpOwog
CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJ
bXBsPFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50PjsKLSAgICBzdGF0aWMg
YXV0byYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0KICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZH
UHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVt
ZW50PjsKIAotICAgIGF1dG8gcGF0aExlbmd0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV9wYXRoTGVu
Z3RoLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGZsb2F0
IHBhdGhMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGhMZW5ndGgtPmN1cnJlbnRWYWx1ZSgp
OyB9CisgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHBhdGhMZW5ndGhBbmltYXRlZCgpIHsgcmV0dXJu
IG1fcGF0aExlbmd0aDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHR2VvbWV0cnlFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNTksMTggKzU3LDExIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc1NWR0dlb21ldHJ5RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0
ZU93bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0
IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7Ci0gICAgfQotCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJv
eHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3BhdGhMZW5ndGg7Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3BhdGhMZW5ndGggeyBTVkdBbmltYXRlZE51bWJl
cjo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoRWxlbWVudC5oCmluZGV4IDI3NjQ4NTg1ZTgwLi4wZTlhZDJjM2UwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiUGF0aC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dlb21ldHJ5RWxlbWVudC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAKaW5kZXggNDc2ZDIyNWI2ODku
LjYyMTYzMmMyNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3RWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVl
cy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdFZhbHVlcy5o
IgogCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnV2l0
aENvbnRleHQuaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCmluZGV4IDY2MDExMjE5
MGRiLi5iYTFkYWIwZmYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzcsNyArMzcsMTEgQEAgaW5saW5lIFNWR1N0b3BFbGVtZW50OjpT
VkdTdG9wRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG8K
ICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnN0b3BUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKwor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5
PFNWR05hbWVzOjpvZmZzZXRBdHRyLCAmU1ZHU3RvcEVsZW1lbnQ6Om1fb2Zmc2V0PigpOworICAg
IH0pOwogfQogCiBSZWY8U1ZHU3RvcEVsZW1lbnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDUsMjEg
KzQ5LDEzIEBAIFJlZjxTVkdTdG9wRWxlbWVudD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHU3RvcEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdTdG9w
RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0
dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6b2Zmc2V0
QXR0ciwgJlNWR1N0b3BFbGVtZW50OjptX29mZnNldD4oKTsKLX0KLQogdm9pZCBTVkdTdG9wRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0
cikgewogICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoJyUnKSkKLSAgICAgICAgICAgIG1fb2Zm
c2V0LnNldFZhbHVlKHZhbHVlLnN0cmluZygpLmxlZnQodmFsdWUubGVuZ3RoKCkgLSAxKS50b0Zs
b2F0KCkgLyAxMDAuMGYpOworICAgICAgICAgICAgbV9vZmZzZXQtPnNldEJhc2VWYWxJbnRlcm5h
bCh2YWx1ZS5zdHJpbmcoKS5sZWZ0KHZhbHVlLmxlbmd0aCgpIC0gMSkudG9GbG9hdCgpIC8gMTAw
LjBmKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9vZmZzZXQuc2V0VmFsdWUodmFsdWUu
dG9GbG9hdCgpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0LT5zZXRCYXNlVmFsSW50ZXJuYWwodmFs
dWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3RvcEVsZW1lbnQuaAppbmRleCAwOGQ5OTExMTJmMi4uZjc3ODFmYzRmMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdG9wRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDI1ICszMiwxOCBAQCBwdWJsaWM6CiAKICAg
ICBDb2xvciBzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KCkgY29uc3Q7CiAKLSAgICBmbG9hdCBv
ZmZzZXQoKSB7IHJldHVybiBtX29mZnNldC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gb2Zmc2V0QW5pbWF0ZWQoKSB7
IHJldHVybiBtX29mZnNldC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KKyAgICBmbG9hdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldC0+Y3VycmVudFZh
bHVlKCk7IH0KKyAgICBTVkdBbmltYXRlZE51bWJlciYgb2Zmc2V0QW5pbWF0ZWQoKSB7IHJldHVy
biBtX29mZnNldDsgfQogCiBwcml2YXRlOgogICAgIFNWR1N0b3BFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1N0b3BFbGVtZW50LCBTVkdFbGVtZW50PjsK
LSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNv
bnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU3RvcEVsZW1lbnQsIFNW
R0VsZW1lbnQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0
cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0
YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAt
NjIsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJp
YnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0
eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX29m
ZnNldCB7IDAgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fb2Zmc2V0IHsgU1ZHQW5p
bWF0ZWROdW1iZXI6OmNyZWF0ZSgwKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCmluZGV4IGQwOGViNzAzZjAyLi5kMzA0OWJiMzc3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFjY2Vzc29ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaApAQCAtNzYsNiArNzYsMjggQEAgcHJp
dmF0ZToKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBT
VkdBbmltYXRlZE51bWJlckFjY2Vzc29yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkTnVtYmVyPiB7CisgICAgdXNpbmcgQmFz
ZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkTnVt
YmVyPjsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdXNpbmcgQmFzZTo6
cHJvcGVydHk7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBPd25lclR5cGU6
Oipwcm9wZXJ0eT4KKyAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29y
PE93bmVyVHlwZT4mIHNpbmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRv
bjxTVkdBbmltYXRlZE51bWJlckFjY2Vzc29yLCBwcm9wZXJ0eT4oKTsgfQorCitwcml2YXRlOgor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0b3Io
T3duZXJUeXBlJiBvd25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIHByb3Bl
cnR5KG93bmVyKSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5
cGUmIG93bmVyLCBTVkdBdHRyaWJ1dGVBbmltYXRvciYgYW5pbWF0b3IpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICBzdGF0aWNfY2FzdDxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yJj4oYW5p
bWF0b3IpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UocHJvcGVydHkob3duZXIpKTsKKyAgICB9Cit9
OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CiBjbGFzcyBTVkdBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW9BY2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5
QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IHsKICAg
ICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwu
aAppbmRleCBmZTE1MDQ1YTNlOC4uOTg2YTlkOGI1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3JJbXBsLmgKQEAgLTc2LDYgKzc2LDI1IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAorY2xhc3Mg
U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWROdW1iZXIsIFNWR0FuaW1hdGlvbk51bWJlckZ1bmN0aW9u
PiB7CisgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvciwgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj47CisgICAg
ZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yOworICAgIHVzaW5nIEJh
c2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWROdW1iZXIsIFNWR0Fu
aW1hdGlvbk51bWJlckZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCitwdWJsaWM6
CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcj4obmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291
bnQpIGZpbmFsCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1l
bnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmltVmFsKCkpOworICAg
IH0KK307CisKIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW8sIFNWR0FuaW1hdGlvblByZXNlcnZlQXNwZWN0UmF0aW9GdW5jdGlvbj4g
ewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBTVkdBbmltYXRpb25QcmVzZXJ2ZUFzcGVjdFJhdGlvRnVu
Y3Rpb24+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaAppbmRleCAyYTBjMzJl
YmExNy4uZWE1MzA2NDQwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExl
bmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBy
aW1pdGl2ZVByb3BlcnR5LmgiCkBAIC00Myw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgU1ZHQW5pbWF0ZWRCb29sZWFuID0gU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0
eTxib29sPjsKIHVzaW5nIFNWR0FuaW1hdGVkSW50ZWdlciA9IFNWR0FuaW1hdGVkUHJpbWl0aXZl
UHJvcGVydHk8aW50PjsKK3VzaW5nIFNWR0FuaW1hdGVkTnVtYmVyID0gU1ZHQW5pbWF0ZWRQcmlt
aXRpdmVQcm9wZXJ0eTxmbG9hdD47CiAKIHVzaW5nIFNWR0FuaW1hdGVkUmVjdCA9IFNWR0FuaW1h
dGVkVmFsdWVQcm9wZXJ0eTxTVkdSZWN0PjsKIHVzaW5nIFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpbyA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eTxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCmluZGV4IGFjZGExZjVjZGM4
Li41NjY5MDE1ZTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCkBA
IC02OSw0ICs2OSwzOSBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IE93bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFjY2Vzc29yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmlt
YXRlZE51bWJlckFjY2Vzc29yPE93bmVyVHlwZT4sIFNWR0FuaW1hdGVkTnVtYmVyQWNjZXNzb3I8
T3duZXJUeXBlPj4geworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFj
Y2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWROdW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+LCBT
VkdBbmltYXRlZE51bWJlckFjY2Vzc29yPE93bmVyVHlwZT4+OworICAgIHVzaW5nIEJhc2U6OnBy
b3BlcnR5MTsKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTI7CisKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlOjpCYXNlOworICAgIHRlbXBsYXRlPFJlZjxTVkdBbmltYXRlZE51bWJlcj4gT3duZXJU
eXBlOjoqcHJvcGVydHkxLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IE93bmVyVHlwZTo6KnByb3Bl
cnR5MiA+CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25l
clR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZH
QW5pbWF0ZWROdW1iZXJQYWlyQWNjZXNzb3IsIHByb3BlcnR5MSwgcHJvcGVydHkyPigpOyB9CisK
K3ByaXZhdGU6CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5
cGUmIG93bmVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCBkaXJ0eTEgPSBwcm9w
ZXJ0eTEob3duZXIpLT5pc0RpcnR5KCk7CisgICAgICAgIGJvb2wgZGlydHkyID0gcHJvcGVydHky
KG93bmVyKS0+aXNEaXJ0eSgpOworICAgICAgICBpZiAoIShkaXJ0eTEgfHwgZGlydHkyKSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgU3RyaW5nIHN0cmluZzEg
PSBkaXJ0eTEgPyAqcHJvcGVydHkxKG93bmVyKS0+c3luY2hyb25pemUoKSA6IHByb3BlcnR5MShv
d25lciktPmJhc2VWYWxBc1N0cmluZygpOworICAgICAgICBTdHJpbmcgc3RyaW5nMiA9IGRpcnR5
MiA/ICpwcm9wZXJ0eTIob3duZXIpLT5zeW5jaHJvbml6ZSgpIDogcHJvcGVydHkyKG93bmVyKS0+
YmFzZVZhbEFzU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBzdHJpbmcxID09IHN0cmluZzIgPyBz
dHJpbmcxIDogc3RyaW5nMSArICIsICIgKyBzdHJpbmcyOworICAgIH0KKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0b3IoT3duZXJUeXBlJiBv
d25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0aW9uTW9kZSBh
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29s
IGlzQWRkaXRpdmUpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZHQW5pbWF0
ZWROdW1iZXJQYWlyQW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eTEob3du
ZXIpLCBwcm9wZXJ0eTIob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRBbmltYXRlZEluc3Rh
bmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJiBhbmltYXRvcikgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PFNWR0FuaW1hdGVkTnVtYmVyUGFp
ckFuaW1hdG9yJj4oYW5pbWF0b3IpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UocHJvcGVydHkxKG93
bmVyKSwgcHJvcGVydHkyKG93bmVyKSk7CisgICAgfQorfTsKKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRv
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQW5pbWF0b3JJbXBsLmgKaW5kZXggMzliZWExM2I5NTkuLmUxZjk4ZTQ4YTc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
UGFpckFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTc2LDQgKzc2LDQ3IEBAIHBy
aXZhdGU6CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmltYXRl
ZE51bWJlckFuaW1hdG9yLCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPiB7CisgICAgdXNpbmcg
QmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvciwgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj47CisgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDEsIFJlZjxT
VkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUp
CisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkTnVtYmVy
UGFpckFuaW1hdG9yPihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IoYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgc2V0
RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0
cmluZyYgdG8pIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHBhaXJGcm9tID0gU1ZHUHJvcGVy
dHlUcmFpdHM8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+Ojpmcm9tU3RyaW5nKGZyb20pOworICAg
ICAgICBhdXRvIHBhaXJUbyA9IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+Pjo6ZnJvbVN0cmluZyh0byk7CisgICAgICAgIAorICAgICAgICBtX2FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjEtPm1fZnVuY3Rpb24ubV9mcm9tID0gcGFpckZyb20uZmlyc3Q7CisgICAgICAg
IG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlvbi5tX3RvID0gcGFpclRvLmZp
cnN0OworICAgICAgICAKKyAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1
bmN0aW9uLm1fZnJvbSA9IHBhaXJGcm9tLnNlY29uZDsKKyAgICAgICAgbV9hbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fdG8gPSBwYWlyVG8uc2Vjb25kOworICAgIH0KKwor
ICAgIHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgYnkpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHBhaXJGcm9t
ID0gU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+Ojpmcm9tU3RyaW5n
KGZyb20pOworICAgICAgICBhdXRvIHBhaXJCeSA9IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFp
cjxmbG9hdCwgZmxvYXQ+Pjo6ZnJvbVN0cmluZyhieSk7CisgICAgICAgIAorICAgICAgICBtX2Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPm1fZnVuY3Rpb24ubV9mcm9tID0gcGFpckZyb20uZmly
c3Q7CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlvbi5tX3Rv
ID0gcGFpckZyb20uZmlyc3QgKyBwYWlyQnkuZmlyc3Q7CisgICAgICAgIAorICAgICAgICBtX2Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV9mcm9tID0gcGFpckZyb20uc2Vj
b25kOworICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV90
byA9IHBhaXJGcm9tLnNlY29uZCArIHBhaXJCeS5zZWNvbmQ7CisgICAgfQorCisgICAgdm9pZCBz
ZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24p
IGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHBhaXJUb0F0RW5kT2ZEdXJhdGlvbiA9IFNWR1By
b3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+Pjo6ZnJvbVN0cmluZyh0b0F0RW5k
T2ZEdXJhdGlvbik7CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5j
dGlvbi5tX3RvQXRFbmRPZkR1cmF0aW9uID0gcGFpclRvQXRFbmRPZkR1cmF0aW9uLmZpcnN0Owor
ICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV90b0F0RW5k
T2ZEdXJhdGlvbiA9IHBhaXJUb0F0RW5kT2ZEdXJhdGlvbi5zZWNvbmQ7CisgICAgfQorfTsKKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCmluZGV4IDEyNzQ0M2Zl
YjYwLi5lZjJjZTZkNTBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbklt
cGwuaApAQCAtMTIwLDcgKzEyMCw0NyBAQCBwcml2YXRlOgogICAgICAgICBtX3RvICs9IG1fZnJv
bTsKICAgICB9CiB9OwotICAgIAorCitjbGFzcyBTVkdBbmltYXRpb25OdW1iZXJGdW5jdGlvbiA6
IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248ZmxvYXQ+IHsKKyAgICBm
cmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I7CisKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uPGZsb2F0PjsK
KyAgICB1c2luZyBCYXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIG1fZnJvbSA9IFNWR1Byb3BlcnR5VHJhaXRzPGZsb2F0Pjo6ZnJvbVN0
cmluZyhmcm9tKTsKKyAgICAgICAgbV90byA9IFNWR1Byb3BlcnR5VHJhaXRzPGZsb2F0Pjo6ZnJv
bVN0cmluZyh0byk7CisgICAgfQorCisgICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVl
KGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBtX3RvQXRFbmRPZkR1cmF0aW9uID0gU1ZHUHJvcGVydHlUcmFpdHM8ZmxvYXQ+Ojpmcm9tU3Ry
aW5nKHRvQXRFbmRPZkR1cmF0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHByb2dyZXNzKFNWR0Vs
ZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgZmxvYXQmIGFu
aW1hdGVkKQorICAgIHsKKyAgICAgICAgZmxvYXQgZnJvbSA9IG1fYW5pbWF0aW9uTW9kZSA9PSBB
bmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDogbV9mcm9tOworICAgICAgICBhbmltYXRlZCA9
IEJhc2U6OnByb2dyZXNzKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tLCBtX3RvLCB0b0F0
RW5kT2ZEdXJhdGlvbigpLCBhbmltYXRlZCk7CisgICAgfQorCisgICAgZmxvYXQgY2FsY3VsYXRl
RGlzdGFuY2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0
bykgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGZsb2F0IGZyb21OdW1iZXIgPSAwOwor
ICAgICAgICBmbG9hdCB0b051bWJlciA9IDA7CisgICAgICAgIHBhcnNlTnVtYmVyRnJvbVN0cmlu
Zyhmcm9tLCBmcm9tTnVtYmVyKTsKKyAgICAgICAgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHRvLCB0
b051bWJlcik7CisgICAgICAgIHJldHVybiBmYWJzZih0b051bWJlciAtIGZyb21OdW1iZXIpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGFkZEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50
Kikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fdG8gKz0gbV9mcm9tOworICAgIH0KK307CisK
IGNsYXNzIFNWR0FuaW1hdGlvblJlY3RGdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25BZGRp
dGl2ZVZhbHVlRnVuY3Rpb248RmxvYXRSZWN0PiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbjxGbG9hdFJlY3Q+OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKaW5k
ZXggN2Y1ODY3YTBmY2QuLmEwZDI1ZWJkZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKQEAgLTI4LDcgKzI4LDYgQEAK
ICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKLSNpbmNsdWRl
ICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyTGlzdC5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRTdHJpbmcuaCIKQEAgLTc0LDI2ICs3MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJlZ2lzdGVy
QXR0cmlidXRlKFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZUFjY2Vzc29yPE93bmVyVHlw
ZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGU+KCkpOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZp
ZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgT3duZXJU
eXBlOjoqYXR0cmlidXRlPgotICAgIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGUoKQotICAgIHsKLSAg
ICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGVBY2Nlc3Nv
cjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmlidXRlTmFtZSwgYXR0cmlidXRl
PigpKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEF0
dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+CiAgICAgdm9pZCByZWdpc3RlckF0dHJpYnV0
ZSgpCiAgICAgewogICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdBbmltYXRlZE51bWJlckxp
c3RBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmli
dXRlTmFtZSwgYXR0cmlidXRlPigpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsCi0gICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgKCppZGVudGlmaWVyKSgpLCBTVkdBbmltYXRlZE51bWJl
ckF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGUsCi0gICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgKCpvcHRpb25hbElkZW50aWZpZXIpKCksIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRl
IE93bmVyVHlwZTo6Km9wdGlvbmFsQXR0cmlidXRlPgotICAgIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGUoKQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5pbWF0ZWRPcHRpb25h
bE51bWJlckF0dHJpYnV0ZUFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxh
dHRyaWJ1dGVOYW1lLCBpZGVudGlmaWVyLCBhdHRyaWJ1dGUsIG9wdGlvbmFsSWRlbnRpZmllciwg
b3B0aW9uYWxBdHRyaWJ1dGU+KCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPGNvbnN0IExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgU1ZHQW5p
bWF0ZWRQb2ludExpc3RBdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgogICAgIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5o
CmluZGV4IDczMDBmMGE4NTZhLi5lYjhlMzNhZTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9ySW1wbC5oCkBAIC0yNSwxMSArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJTVkdBbmltYXRpb25GdW5jdGlvbi5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkFkZGl0aXZl
VmFsdWVGdW5jdGlvbkltcGwuaCIKICNpbmNsdWRlICJTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgU1ZHQ29sb3JBbmltYXRvciA9
IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I8Q29sb3IsIFNWR0FuaW1hdGlvbkNvbG9yRnVu
Y3Rpb24+OwordXNpbmcgU1ZHTnVtYmVyQW5pbWF0b3IgPSBTVkdQcmltaXRpdmVQcm9wZXJ0eUFu
aW1hdG9yPGZsb2F0LCBTVkdBbmltYXRpb25OdW1iZXJGdW5jdGlvbj47CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JDcmVh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9y
Q3JlYXRvci5oCmluZGV4IDAxZjc4MWRhYjUzLi44MDg4Y2M5YjI1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yQ3Jl
YXRvci5oCkBAIC00NSwxMSArNDUsMTEgQEAgcHVibGljOgogICAgICAgICBpZiAoaXRlcmF0b3Ig
PT0gYXR0cmlidXRlQW5pbWF0b3JDcmVhdG9yKCkuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2F0dHJpYnV0ZVByb3BlcnR5
LmVuc3VyZShhdHRyaWJ1dGVOYW1lLCBbJml0ZXJhdG9yXSgpIHsKKyAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2F0dHJpYnV0ZVByb3BlcnR5LmVuc3VyZShhdHRyaWJ1dGVOYW1lLCBbJml0ZXJh
dG9yXSgpIHsKICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuZmlyc3QoKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuc2Vjb25kKGF0dHJp
YnV0ZU5hbWUsIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuY29weVJlZigpLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVy
biBpdGVyYXRvci0+dmFsdWUuc2Vjb25kKGF0dHJpYnV0ZU5hbWUsIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuY29weVJlZigpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiAgICAgdm9pZCBhbmltYXRvcldpbGxCZURlbGV0ZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVi
bGljOgogICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9hdHRyaWJ1dGVQcm9wZXJ0eS5lbmQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgLy8gSWYgcmVmQ291bnQgPSAxIChpbiB0
aGUgYW5pbWF0b3IpICsgMSAoaW4gbV9hdHRyaWJ1dGVQcm9wZXJ0eSkgPSAyLCB0aGUgZW50cnkg
Y2FuIGJlIGRlbGV0ZWQuCisgICAgICAgIC8vIElmIHJlZkNvdW50ID0gMSAoaW4gdGhlIGFuaW1h
dG9yKSArIDEgKGluIG1fYXR0cmlidXRlUHJvcGVydHkpID0gMiwgdGhlIGVudHJ5IGNhbiBiZSBk
ZWxldGVkLgogICAgICAgICBpZiAoaXRlcmF0b3ItPnZhbHVlLT5yZWZDb3VudCgpID09IDIpCiAg
ICAgICAgICAgICBtX2F0dHJpYnV0ZVByb3BlcnR5LnJlbW92ZShpdGVyYXRvcik7CiAgICAgfQpA
QCAtODAsNiArODAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFNWR0NvbG9yQW5pbWF0
b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAorICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZU51bWJlckFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gU1ZHTnVtYmVyQW5pbWF0b3I6OmNyZWF0
ZShhdHRyaWJ1dGVOYW1lLCAgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29u
c3QgQXR0cmlidXRlQW5pbWF0b3JDcmVhdG9yJiBhdHRyaWJ1dGVBbmltYXRvckNyZWF0b3IoKQog
ICAgIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0dHJpYnV0ZUFuaW1hdG9yQ3Jl
YXRvcj4gbWFwID0gQXR0cmlidXRlQW5pbWF0b3JDcmVhdG9yKHsKQEAgLTg5LDYgKzk0LDEzIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICB7IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHItPmlt
cGwoKSwgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxDb2xvcj46OmNyZWF0ZSwgU1ZH
UHJvcGVydHlBbmltYXRvckNyZWF0b3I6OmNyZWF0ZUNvbG9yQW5pbWF0b3IpIH0sCiAgICAgICAg
ICAgICB7IFNWR05hbWVzOjpzdG9wX2NvbG9yQXR0ci0+aW1wbCgpLCAgICAgc3RkOjptYWtlX3Bh
aXIoU1ZHVmFsdWVQcm9wZXJ0eTxDb2xvcj46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckNy
ZWF0b3I6OmNyZWF0ZUNvbG9yQW5pbWF0b3IpIH0sCiAgICAgICAgICAgICB7IFNWR05hbWVzOjpz
dHJva2VBdHRyLT5pbXBsKCksICAgICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0
eTxDb2xvcj46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3I6OmNyZWF0ZUNvbG9y
QW5pbWF0b3IpIH0sCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6OmZpbGxf
b3BhY2l0eUF0dHItPmltcGwoKSwgICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0
eTxmbG9hdD46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckNyZWF0b3I6OmNyZWF0ZU51bWJl
ckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6Zmxvb2Rfb3BhY2l0eUF0dHIt
PmltcGwoKSwgICAgICBzdGQ6Om1ha2VfcGFpcihTVkdWYWx1ZVByb3BlcnR5PGZsb2F0Pjo6Y3Jl
YXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcjo6Y3JlYXRlTnVtYmVyQW5pbWF0b3IpIH0s
CisgICAgICAgICAgICB7IFNWR05hbWVzOjpvcGFjaXR5QXR0ci0+aW1wbCgpLCAgICAgICAgICAg
IHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8ZmxvYXQ+OjpjcmVhdGUsIFNWR1Byb3Bl
cnR5QW5pbWF0b3JDcmVhdG9yOjpjcmVhdGVOdW1iZXJBbmltYXRvcikgfSwKKyAgICAgICAgICAg
IHsgU1ZHTmFtZXM6OnN0b3Bfb3BhY2l0eUF0dHItPmltcGwoKSwgICAgICAgc3RkOjptYWtlX3Bh
aXIoU1ZHVmFsdWVQcm9wZXJ0eTxmbG9hdD46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckNy
ZWF0b3I6OmNyZWF0ZU51bWJlckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6
c3Ryb2tlX21pdGVybGltaXRBdHRyLT5pbXBsKCksICBzdGQ6Om1ha2VfcGFpcihTVkdWYWx1ZVBy
b3BlcnR5PGZsb2F0Pjo6Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yQ3JlYXRvcjo6Y3JlYXRl
TnVtYmVyQW5pbWF0b3IpIH0sCisgICAgICAgICAgICB7IFNWR05hbWVzOjpzdHJva2Vfb3BhY2l0
eUF0dHItPmltcGwoKSwgICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8ZmxvYXQ+
OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JDcmVhdG9yOjpjcmVhdGVOdW1iZXJBbmltYXRv
cikgfSwKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0
cnkuaAppbmRleCA2OGE1ZTlkMGRmNy4uOTFiZGRhNDMyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCkBA
IC02MCw3ICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWdpc3RlclByb3BlcnR5
KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkSW50ZWdlckFjY2Vzc29yPE93bmVyVHlwZT46OnRl
bXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CiAgICAgfQotICAgIAorCisgICAgdGVtcGxh
dGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmVnaXN0ZXJQ
cm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZE51bWJlckFjY2Vzc29yPE93bmVyVHlw
ZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CisgICAgfQorCiAgICAgdGVtcGxh
dGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPiBPd25lclR5cGU6Oipw
cm9wZXJ0eT4KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKICAgICB7CkBAIC03
OCw2ICs4NCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0
dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBY2Nlc3NvcjxPd25lclR5cGU+Ojp0
ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHkxLCBwcm9wZXJ0eTI+KCkpOwogICAgIH0KKworICAg
IHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBPd25lclR5cGU6Oipwcm9wZXJ0
eTEsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gT3duZXJUeXBlOjoqcHJvcGVydHkyPgorICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmVnaXN0ZXJQcm9w
ZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZE51bWJlclBhaXJBY2Nlc3NvcjxPd25lclR5
cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHkxLCBwcm9wZXJ0eTI+KCkpOworICAgIH0K
KwogICAgIC8vIEVudW1lcmF0ZSBhbGwgdGhlIFNWR01lbWJlckFjY2Vzc29ycyByZWN1cnNpdmVs
eS4gVGhlIGZ1bmN0b3Igd2lsbCBiZSBjYWxsZWQgYW5kIHdpbGwKICAgICAvLyBiZSBnaXZlbiB0
aGUgcGFpcjxRdWFsaWZpZWROYW1lLCBTVkdNZW1iZXJBY2Nlc3Nvcj4gdGlsbCB0aGUgZnVuY3Rv
ciByZXR1cm5zIGZhbHNlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>