<?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>124382</bug_id>
          
          <creation_ts>2013-11-14 14:48:28 -0800</creation_ts>
          <short_desc>[SVG] Convert OwnPtr/PassOwnPtr to std::unique_ptr</short_desc>
          <delta_ts>2013-11-19 09:20:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Correia (qrwteyrutiyoup)">sergio</reporter>
          <assigned_to name="Sergio Correia (qrwteyrutiyoup)">sergio</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>950857</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-11-14 14:48:28 -0800</bug_when>
    <thetext>[SVG] Convert OwnPtr/PassOwnPtr to std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950858</commentid>
    <comment_count>1</comment_count>
      <attachid>216984</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-11-14 14:50:08 -0800</bug_when>
    <thetext>Created attachment 216984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950919</commentid>
    <comment_count>2</comment_count>
      <attachid>216984</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-11-14 17:58:56 -0800</bug_when>
    <thetext>Comment on attachment 216984
Patch

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

OK to land this as is, but I see many opportunities for improvement.

&gt; Source/WebCore/platform/graphics/SimpleFontData.h:170
&gt; +    bool isSVGFont() const { return !!m_fontData; }

I think I’d rather see m_fontData != nullptr here than !!m_fontData. Not sure if we have consensus in the team, though.

&gt; Source/WebCore/platform/graphics/SimpleFontData.h:226
&gt; +    SimpleFontData(std::unique_ptr&lt;AdditionalFontData&gt; , float fontSize, bool syntheticBold, bool syntheticItalic);

Extra space here before the comma.

&gt; Source/WebCore/svg/SVGAnimatedAngle.cpp:37
&gt; +    auto animatedType = SVGAnimatedType::createAngleAndEnumeration(new pair&lt;SVGAngle, unsigned&gt;);

Bare new worries me. Can we make that use std::unique_ptr too?

&gt; Source/WebCore/svg/SVGAnimatedBoolean.cpp:36
&gt; +    auto animtedType = SVGAnimatedType::createBoolean(new bool);

Typo in this function, animatedType is missing an &quot;a&quot;. Bare new worries me. Can we make that use std::unique_ptr too?

&gt; Source/WebCore/svg/SVGAnimatedColor.cpp:39
&gt; +    auto animtedType = SVGAnimatedType::createColor(new Color);

Same typo here. Bare new worries me. Can we make that use std::unique_ptr too?

&gt; Source/WebCore/svg/SVGAnimatedEnumeration.cpp:113
&gt; +    auto animatedType = SVGAnimatedType::createEnumeration(new unsigned);

Bare new worries me. Can we make that use std::unique_ptr too?

&gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:38
&gt; +    auto animtedType = SVGAnimatedType::createInteger(new int);

And here. Bare new worries me. Can we make that use std::unique_ptr too?

&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:38
&gt; +    auto animtedType = SVGAnimatedType::createIntegerOptionalInteger(new pair&lt;int, int&gt;);

And here.

&gt; Source/WebCore/svg/SVGAnimatedLength.cpp:45
&gt;      return SVGAnimatedType::createLength(new SVGLength(m_lengthMode, string));

Bare new worries me. Can we make that use std::unique_ptr too?

&gt; Source/WebCore/svg/SVGAnimatedLengthList.cpp:38
&gt; +    auto animateType = SVGAnimatedType::createLengthList(new SVGLengthList);

Funny that here we have a different typo. Should be &quot;animatedType&quot; or &quot;type&quot;, not &quot;animateType&quot;. Bare new issue again.

&gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:37
&gt; +    auto animtedType = SVGAnimatedType::createNumber(new float);

Typo and bare new again here.

&gt; Source/WebCore/svg/SVGAnimatedNumberList.cpp:37
&gt; +    auto animtedType = SVGAnimatedType::createNumberList(new SVGNumberList);

And here.

&gt; Source/WebCore/svg/SVGAnimatedNumberList.h:44
&gt;      virtual ~SVGAnimatedNumberListAnimator() { }

This line of code can and should be deleted.

&gt; Source/WebCore/svg/SVGAnimatedNumberList.h:47
&gt; +    virtual std::unique_ptr&lt;SVGAnimatedType&gt; constructFromString(const String&amp;);
&gt; +    virtual std::unique_ptr&lt;SVGAnimatedType&gt; startAnimValAnimation(const SVGElementAnimatedPropertyList&amp;);

Should add OVERRIDE here.

&gt; Source/WebCore/svg/SVGAnimatedNumberOptionalNumber.cpp:38
&gt; +    auto animtedType = SVGAnimatedType::createNumberOptionalNumber(new pair&lt;float, float&gt;);

Typo again and the bare new.

&gt; Source/WebCore/svg/SVGAnimatedPointList.cpp:38
&gt; +    auto animtedType = SVGAnimatedType::createPointList(new SVGPointList);

Both issues, again.

&gt; Source/WebCore/svg/SVGAnimatedPreserveAspectRatio.cpp:36
&gt; +    auto animatedType = SVGAnimatedType::createPreserveAspectRatio(new SVGPreserveAspectRatio);

Bare new again.

&gt; Source/WebCore/svg/SVGAnimatedRect.cpp:37
&gt; +    auto animatedType = SVGAnimatedType::createRect(new FloatRect);

Again.

&gt; Source/WebCore/svg/SVGAnimatedString.cpp:36
&gt; +    auto animatedType = SVGAnimatedType::createString(new String);

Again.

&gt; Source/WebCore/svg/SVGAnimatedTransformList.cpp:46
&gt; +    auto animatedType = SVGAnimatedType::createTransformList(new SVGTransformList);

Again.

&gt; Source/WebCore/svg/SVGAnimatedType.h:61
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createAngleAndEnumeration(std::pair&lt;SVGAngle, unsigned&gt;*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createBoolean(bool*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createColor(Color*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createEnumeration(unsigned*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createInteger(int*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createIntegerOptionalInteger(std::pair&lt;int, int&gt;*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createLength(SVGLength*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createLengthList(SVGLengthList*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createNumber(float*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createNumberList(SVGNumberList*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createNumberOptionalNumber(std::pair&lt;float, float&gt;*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createPath(std::unique_ptr&lt;SVGPathByteStream&gt;);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createPointList(SVGPointList*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createPreserveAspectRatio(SVGPreserveAspectRatio*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createRect(FloatRect*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createString(String*);
&gt; +    static std::unique_ptr&lt;SVGAnimatedType&gt; createTransformList(SVGTransformList*);

These functions should all take std::unique_ptr arguments instead of bare pointers.

&gt; Source/WebCore/svg/SVGDocumentExtensions.cpp:101
&gt; +    auto end = timeContainers.end();
&gt; +    for (auto itr = timeContainers.begin(); itr != end; ++itr)

Lame that this uses the name &quot;itr&quot;; we normally use &quot;it&quot;.

&gt; Source/WebCore/svg/SVGFontData.h:33
&gt; +    SVGFontData(SVGFontFaceElement*);

Should be marked explicit.

&gt; Source/WebCore/svg/SVGPathByteStreamSource.h:32
&gt;      SVGPathByteStreamSource(SVGPathByteStream*);

Should be marked explicit.

&gt; Source/WebCore/svg/SVGPathSegListSource.h:34
&gt;      SVGPathSegListSource(const SVGPathSegList&amp;);

Should be marked explicit.

&gt; Source/WebCore/svg/SVGPathStringSource.h:32
&gt;      SVGPathStringSource(const String&amp;);

Should be marked explicit.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:382
&gt; +    return !!m_page;

Same comment about != nullptr being better than !!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951365</commentid>
    <comment_count>3</comment_count>
      <attachid>217127</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-11-16 10:19:25 -0800</bug_when>
    <thetext>Created attachment 217127
v2

Typos fixed (also removed the extra space before the comma) and now using != nullptr instead of ls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951366</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-11-16 10:21:35 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=217127) [details]
&gt; v2
&gt; 
&gt; Typos fixed (also removed the extra space before the comma) and now using != nullptr instead of ls


^ instead of &quot;!!&quot;

Darin, I am posting two other patches on top of this one to implement your other suggestions (mark functions as OVERRIDE and casses as FINAL, and replacing the bare pointers with std:unique_ptr in those create functions)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952092</commentid>
    <comment_count>5</comment_count>
      <attachid>217127</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-19 09:20:39 -0800</bug_when>
    <thetext>Comment on attachment 217127
v2

Clearing flags on attachment: 217127

Committed r159503: &lt;http://trac.webkit.org/changeset/159503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952093</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-19 09:20:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216984</attachid>
            <date>2013-11-14 14:50:08 -0800</date>
            <delta_ts>2013-11-16 10:19:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124382-20131114194954.patch</filename>
            <type>text/plain</type>
            <size>117207</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI0NzcwOGI2NWUwOWM2
MDYwODliOTlhODE1MWYwMGQ5NDRhMzM3Zi4uNWVlZDdiODEzM2E5MjMwOTU2MzA4MmU1ZmNjOWJm
MmI4MjAzYWZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEzLTExLTE0ICBTZXJn
aW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1NW
R10gQ29udmVydCBPd25QdHIvUGFzc093blB0ciB0byBzdGQ6OnVuaXF1ZV9wdHIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDM4MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmaWxlcyBtb2RpZmll
ZCBhcmUgbW9zdGx5IHVuZGVyIFdlYkNvcmUvc3ZnLzsgaW4gYSBmZXcgY2FzZXMsIHNvbWUKKyAg
ICAgICAgImV4dGVybmFsIiBmaWxlcyBuZWVkZWQgY2hhbmdlcyBhcyB3ZWxsLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyBvbmVzLgorCisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxl
bWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xl
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHA6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkQm9vbGVhbi5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZENvbG9yLmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5oOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbi5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcDoK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcDoKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0Lmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkUGF0aC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUGF0aC5oOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
UG9pbnRMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFJlY3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Qu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRUeXBlLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaDoKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oOgorICAgICAg
ICAqIHN2Zy9TVkdGb250RGF0YS5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5jcHA6
CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoUGFyc2VyLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmg6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFV0
aWxpdGllcy5jcHA6CisgICAgICAgICogc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaDoKKwogMjAxMy0xMS0xNCAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENsZWFuZXIg
QmFja2VuZCBNZXRob2QgQ2FsbGluZyBDb2RlIEdlbmVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IDZhOWI2NmEzODE5NTQxMzA4YzM0YmNlNjc3Yzhh
MmM2ZmFmNGY0YTguLjIzZWUwMTliNjc5ZjYwNWUzM2U4NTkwMGRhNWVmNjEwNjM1NGVjNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTQ2LDcgKzE0Niw3
IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IENTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3N2
Z0ZvbnRGYWNlRWxlbWVudCA9IGZpcnN0Rm9udEZhY2U7CiAgICAgICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgICAgICBmb250RGF0YSA9IFNpbXBsZUZvbnREYXRhOjpjcmVhdGUo
U1ZHRm9udERhdGE6OmNyZWF0ZShmaXJzdEZvbnRGYWNlKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgICAg
ICAgICAgICAgICAgIGZvbnREYXRhID0gU2ltcGxlRm9udERhdGE6OmNyZWF0ZShzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0ZvbnREYXRhPihmaXJzdEZvbnRGYWNlKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYyk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAjZW5kaWYKQEAgLTE2Miw3ICsxNjIsNyBA
QCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm9udERh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgICAg
ICAgICAvLyBJbi1Eb2N1bWVudCBTVkcgRm9udHMKICAgICAgICAgICAgIGlmIChtX3N2Z0ZvbnRG
YWNlRWxlbWVudCkKLSAgICAgICAgICAgICAgICBmb250RGF0YSA9IFNpbXBsZUZvbnREYXRhOjpj
cmVhdGUoU1ZHRm9udERhdGE6OmNyZWF0ZShtX3N2Z0ZvbnRGYWNlRWxlbWVudC5nZXQoKSksIGZv
bnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNJdGFsaWMpOworICAgICAgICAgICAgICAgIGZvbnREYXRhID0gU2ltcGxlRm9udERhdGE6OmNy
ZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNWR0ZvbnREYXRhPihtX3N2Z0ZvbnRGYWNlRWxlbWVudC5n
ZXQoKSksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xk
LCBzeW50aGV0aWNJdGFsaWMpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggMWQ3NzAyOWU1
MmFmZThmMmU1MjJmNjk0OGVhMjJlYmY2MzY5OTA1YS4uOTRkOWEwN2YwNmQxYjRjZmJhZWJlMjk3
Yzg5OGUyNjBlNzVkMTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNy
ZWF0ZUltYWdlKCkKICNpZiBFTkFCTEUoU1ZHKQogICAgIGVsc2UgaWYgKG1fcmVzcG9uc2UubWlt
ZVR5cGUoKSA9PSAiaW1hZ2Uvc3ZnK3htbCIpIHsKICAgICAgICAgUmVmUHRyPFNWR0ltYWdlPiBz
dmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUodGhpcyk7Ci0gICAgICAgIG1fc3ZnSW1hZ2VDYWNo
ZSA9IFNWR0ltYWdlQ2FjaGU6OmNyZWF0ZShzdmdJbWFnZS5nZXQoKSk7CisgICAgICAgIG1fc3Zn
SW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oc3ZnSW1hZ2UuZ2V0
KCkpOwogICAgICAgICBtX2ltYWdlID0gc3ZnSW1hZ2UucmVsZWFzZSgpOwogICAgIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA3YjM4OGI0
YjE0MGI3ZDAwZTFkNTJkNTdmZmY4N2E4YzI2Y2Q2MzMwLi40N2E3Y2YzNmRhZjAyZGYxMGM5MzE4
ZWI2NWUyMzA1NTllOTEyYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SW1hZ2U+
IG1faW1hZ2U7CiAjaWYgRU5BQkxFKFNWRykKLSAgICBPd25QdHI8U1ZHSW1hZ2VDYWNoZT4gbV9z
dmdJbWFnZUNhY2hlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdJbWFnZUNhY2hlPiBtX3N2Z0lt
YWdlQ2FjaGU7CiAjZW5kaWYKICAgICBib29sIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0
YS5jcHAKaW5kZXggMzI1NzRhOWYyZjdhNGViNzViYTVkMTA2NmZhNGVjOTE0ZmYxYjdjOS4uMzIz
NWI0MGVmNTJkMTcyZjZhNmM2N2I2YmE2MmE1MzExMDlkMGExOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtNjgsOSAr
NjgsOSBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhLCBib29sIGlzQ3VzdAogI2VuZGlmCiB9CiAKLVNpbXBsZUZvbnRE
YXRhOjpTaW1wbGVGb250RGF0YShQYXNzT3duUHRyPEFkZGl0aW9uYWxGb250RGF0YT4gZm9udERh
dGEsIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljKQorU2ltcGxlRm9udERhdGE6OlNpbXBsZUZvbnREYXRhKHN0ZDo6dW5pcXVlX3B0cjxBZGRp
dGlvbmFsRm9udERhdGE+IGZvbnREYXRhLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKICAgICA6IG1fcGxhdGZvcm1EYXRhKEZvbnRQbGF0
Zm9ybURhdGEoZm9udFNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYykpCi0gICAg
LCBtX2ZvbnREYXRhKGZvbnREYXRhKQorICAgICwgbV9mb250RGF0YShzdGQ6Om1vdmUoZm9udERh
dGEpKQogICAgICwgbV90cmVhdEFzRml4ZWRQaXRjaChmYWxzZSkKICAgICAsIG1faXNDdXN0b21G
b250KHRydWUpCiAgICAgLCBtX2lzTG9hZGluZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IGU5YTU3ZTY1NGQxMmJl
NTExOTVhZTYwM2Y0NTRhYzU0MjA3MzQ4M2MuLjBlNWViYThjYWZkMTIwMDRmZGFjZWZhOTgyMzFi
YTEzYzc5OTNhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NpbXBsZUZvbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuaApAQCAtODUsOSArODUsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ly8gVXNlZCB0byBjcmVhdGUgU1ZHIEZvbnRzLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNpbXBs
ZUZvbnREYXRhPiBjcmVhdGUoUGFzc093blB0cjxBZGRpdGlvbmFsRm9udERhdGE+IGZvbnREYXRh
LCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxp
YykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gY3JlYXRlKHN0ZDo6dW5p
cXVlX3B0cjxBZGRpdGlvbmFsRm9udERhdGE+IGZvbnREYXRhLCBmbG9hdCBmb250U2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2ltcGxlRm9udERhdGEoZm9udERhdGEsIGZvbnRTaXplLCBzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaW1wbGVGb250RGF0YShzdGQ6Om1vdmUoZm9udERhdGEpLCBmb250U2l6ZSwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljSXRhbGljKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+U2ltcGxlRm9u
dERhdGEoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgUGl0Y2ggcGl0Y2goKSBj
b25zdCB7IHJldHVybiBtX3RyZWF0QXNGaXhlZFBpdGNoID8gRml4ZWRQaXRjaCA6IFZhcmlhYmxl
UGl0Y2g7IH0KIAogICAgIEFkZGl0aW9uYWxGb250RGF0YSogZm9udERhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnREYXRhLmdldCgpOyB9Ci0gICAgYm9vbCBpc1NWR0ZvbnQoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnREYXRhOyB9CisgICAgYm9vbCBpc1NWR0ZvbnQoKSBjb25zdCB7IHJldHVybiAh
IW1fZm9udERhdGE7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbUZvbnQoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX2lzQ3VzdG9tRm9udDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xv
YWRpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzTG9hZGluZzsgfQpAQCAtMjIzLDcg
KzIyMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2ltcGxlRm9udERhdGEoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYsIGJvb2wgaXNDdXN0b21Gb250ID0gZmFsc2UsIGJvb2wgaXNMb2FkaW5n
ID0gZmFsc2UsIGJvb2wgaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjayA9IGZhbHNlKTsKIAotICAg
IFNpbXBsZUZvbnREYXRhKFBhc3NPd25QdHI8QWRkaXRpb25hbEZvbnREYXRhPiAsIGZsb2F0IGZv
bnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKKyAgICBT
aW1wbGVGb250RGF0YShzdGQ6OnVuaXF1ZV9wdHI8QWRkaXRpb25hbEZvbnREYXRhPiAsIGZsb2F0
IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUdseXBoSW5pdCgpOwpA
QCAtMjQ3LDcgKzI0Nyw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9hdmdDaGFyV2lkdGg7CiAg
ICAgCiAgICAgRm9udFBsYXRmb3JtRGF0YSBtX3BsYXRmb3JtRGF0YTsKLSAgICBPd25QdHI8QWRk
aXRpb25hbEZvbnREYXRhPiBtX2ZvbnREYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBZGRpdGlv
bmFsRm9udERhdGE+IG1fZm9udERhdGE7CiAKICAgICBtdXRhYmxlIE93blB0cjxHbHlwaE1ldHJp
Y3NNYXA8RmxvYXRSZWN0Pj4gbV9nbHlwaFRvQm91bmRzTWFwOwogICAgIG11dGFibGUgR2x5cGhN
ZXRyaWNzTWFwPGZsb2F0PiBtX2dseXBoVG9XaWR0aE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAK
aW5kZXggZDZjM2MyZjY0YmU3OTllZWVkNzBmNjBiNjZhMTgyNWE5Mzk4YTExNC4uOTljNWUxYTUy
ZWM0N2M1MTU1NzU0MGQyYjg5MmM4NjhjZmIyYWE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAK
QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpyZWdp
c3RlclJlc291cmNlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OlNWR1BlbmRpbmdFbGVtZW50cz4gY2xpZW50cyA9IGV4dGVuc2lv
bnMucmVtb3ZlUGVuZGluZ1Jlc291cmNlKG1faWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OlNWR1BlbmRpbmdFbGVtZW50cz4gY2xpZW50cyA9IGV4dGVuc2lv
bnMucmVtb3ZlUGVuZGluZ1Jlc291cmNlKG1faWQpOwogCiAgICAgLy8gQ2FjaGUgdXMgd2l0aCB0
aGUgbmV3IGlkLgogICAgIGV4dGVuc2lvbnMuYWRkUmVzb3VyY2UobV9pZCwgdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAppbmRleCA2OTkwNjYzMTFkNTgyMjIy
YTk4ZmM2NzZkMDllNDk0YTViNjlhYzAyLi40YWFiNWUxYTlmNWZhOTJiMmU1MTJjMWQ2YzVhMTdm
YThjZTc3NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKQEAg
LTMyNSwxNCArMzI1LDE0IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNsZWFyQW5pbWF0ZWRU
eXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghdGFyZ2V0RWxlbWVudCkgewotICAgICAgICBtX2FuaW1hdGVkVHlwZS5jbGVhcigpOworICAg
ICAgICBtX2FuaW1hdGVkVHlwZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAobV9hbmltYXRlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIENT
UyBwcm9wZXJ0aWVzIGFuaW1hdGlvbiBjb2RlLXBhdGguCiAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnR5RnJvbVRhcmdldEFuZEluc3RhbmNlcyh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKCkp
OwotICAgICAgICBtX2FuaW1hdGVkVHlwZS5jbGVhcigpOworICAgICAgICBtX2FuaW1hdGVkVHlw
ZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM0Myw3ICszNDMsNyBA
QCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjbGVhckFuaW1hdGVkVHlwZShTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50KQogICAgIH0KIAogICAgIG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmNsZWFyKCk7
Ci0gICAgbV9hbmltYXRlZFR5cGUuY2xlYXIoKTsKKyAgICBtX2FuaW1hdGVkVHlwZSA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkK
QEAgLTQzNCwxMCArNDM0LDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnNldEF0dHJpYnV0
ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHZvaWQgU1ZHQW5pbWF0
ZUVsZW1lbnQ6OnJlc2V0QW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKQogewogICAgIEFTU0VSVCghbV9h
bmltYXRlZFR5cGUpOwotICAgIG1fZnJvbVR5cGUuY2xlYXIoKTsKLSAgICBtX3RvVHlwZS5jbGVh
cigpOwotICAgIG1fdG9BdEVuZE9mRHVyYXRpb25UeXBlLmNsZWFyKCk7Ci0gICAgbV9hbmltYXRv
ci5jbGVhcigpOworICAgIG1fZnJvbVR5cGUgPSBudWxscHRyOworICAgIG1fdG9UeXBlID0gbnVs
bHB0cjsKKyAgICBtX3RvQXRFbmRPZkR1cmF0aW9uVHlwZSA9IG51bGxwdHI7CisgICAgbV9hbmlt
YXRvciA9IG51bGxwdHI7CiAgICAgbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9IHRhcmdldEVsZW1l
bnQoKSA/IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQoKSkgOiBB
bmltYXRlZFN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaApp
bmRleCAyMjA0ZDQyYTAxODRmZjgzYjU5MDgxMzVjZTFhMThlMjI2MGNhZTZiLi5lYzVkMmU4NmIz
NWYzYjJiMTM2ZTYxMDgwMjc4YzE3NGI3YzJiNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUVsZW1lbnQuaApAQCAtMjgsMTAgKzI4LDkgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFR5
cGVBbmltYXRvci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIAorCiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OwogCiBjbGFzcyBTVkdBbmlt
YXRlRWxlbWVudCA6IHB1YmxpYyBTVkdBbmltYXRpb25FbGVtZW50IHsKQEAgLTQwLDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVFbGVtZW50KCk7CiAKICAgICBBbmlt
YXRlZFByb3BlcnR5VHlwZSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZShTVkdFbGVtZW50
KikgY29uc3Q7Ci0gICAgCisKIHByb3RlY3RlZDoKICAgICBTVkdBbmltYXRlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApAQCAtNjcsMTMgKzY2LDEzIEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgT1ZFUlJJREU7
CiAKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX2Zyb21UeXBlOwotICAgIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+IG1fdG9UeXBlOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IG1f
dG9BdEVuZE9mRHVyYXRpb25UeXBlOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IG1fYW5p
bWF0ZWRUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IG1fZnJvbVR5
cGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gbV90b1R5cGU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gbV90b0F0RW5kT2ZEdXJhdGlvblR5cGU7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gbV9hbmltYXRlZFR5cGU7CiAK
ICAgICBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QgbV9hbmltYXRlZFByb3BlcnRpZXM7
Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yPiBtX2FuaW1hdG9yOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gbV9hbmltYXRvcjsKIH07CiAK
IHZvaWQgaXNTVkdBbmltYXRlRWxlbWVudChjb25zdCBTVkdBbmltYXRlRWxlbWVudCYpOyAvLyBD
YXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0
aW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCmluZGV4IGQxZWU5OWI2
YzIwNzBlZjEyNTk5ZTNhYWM0MGQ5YTMwMWVkYzI3ZTUuLjRlMmU5N2JlNDRhZDI4ZDZlMjk1OGU0
Y2EwMTg5Y2M4ZTE4YjJlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEFuZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5j
cHAKQEAgLTMyLDkgKzMyLDkgQEAgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpTVkdBbmltYXRl
ZEFuZ2xlQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW8KIHsKIH0KIAotUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y29uc3Ry
dWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBh
bmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xlQW5kRW51bWVyYXRpb24o
bmV3IHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPik7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBT
VkdBbmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xlQW5kRW51bWVyYXRpb24obmV3IHBhaXI8U1ZHQW5n
bGUsIHVuc2lnbmVkPik7CiAgICAgcGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiBhbmltYXRlZFBh
aXIgPSBhbmltYXRlZFR5cGUtPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKIAogICAgIFNWR0FuZ2xl
IGFuZ2xlOwpAQCAtNDQsMTAgKzQ0LDEwIEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBT
VkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QKICAgICBp
ZiAob3JpZW50VHlwZSA9PSBTVkdNYXJrZXJPcmllbnRBbmdsZSkKICAgICAgICAgYW5pbWF0ZWRQ
YWlyLmZpcnN0ID0gYW5nbGU7CiAKLSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3Qg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpzdGFydEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmlt
YXRlZFR5cGVzKQogewogICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xlQW5k
RW51bWVyYXRpb24oY29uc3RydWN0RnJvbUJhc2VWYWx1ZXM8U1ZHQW5pbWF0ZWRBbmdsZSwgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZEFuZ2xlLmgKaW5kZXggNTA3MjRiMDM2NGVmMjdhYjFlMDUxNTM3YzM4M2E0MTAx
NDYxNWExZC4uZjFiNTkzMzc0MDA1ZmZhMzhhNGRiMDlhMDNiMDA1NWZmN2JmNDgxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoK
ICAgICBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0Vs
ZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IoKSB7IH0KIAot
ICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29u
c3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxB
bmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmly
dHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZh
bFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCmluZGV4IDczZjcyZTZhMmFjYjc5
Njk4ZjEwODBkYzhiOTU3M2ZmZTc0NWM3MGMuLjZmMzg2OTgzNmY1YmZjZGQ4MmEyNDMxMjhiODli
ZTFkMmFhODRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3Bw
CkBAIC0zMSwxNCArMzEsMTQgQEAgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OlNWR0FuaW1h
dGVkQm9vbGVhbkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW0KIHsKIH0KIAotUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUJvb2xlYW4obmV3IGJvb2wp
OworICAgIGF1dG8gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUJvb2xlYW4o
bmV3IGJvb2wpOwogICAgIGFuaW10ZWRUeXBlLT5ib29sZWFuKCkgPSAoc3RyaW5nID09ICJ0cnVl
Iik7IC8vIHdhdD8KLSAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVy
biBhbmltdGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1h
dGVkQm9vbGVhbkFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFu
aW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlw
ZXMpCiB7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQm9vbGVhbihjb25zdHJ1
Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkQm9vbGVhbj4oYW5pbWF0ZWRUeXBlcykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCmluZGV4IDU3YTI0MWYwMTJlODk3
MzVkMzM0OTllOTljOWNjYzlmOTIyY2QzMWUuLjUwYzhhYzA4OTJhMzAwZTJlODljZThkMDExODMy
ZmU5MGQ1Y2MzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKQEAg
LTQxLDkgKzQxLDkgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogcHVibGljOgogICAgIFNWR0FuaW1hdGVkQm9vbGVh
bkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IoKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0
YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
KSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlv
bihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRv
QmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRl
ZFR5cGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29u
c3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKaW5kZXggZjgxYjg3MzAxZDc5YTYwMmVhNzQyMTAy
ZGNkNjkzMjM2M2JlOTg0Yy4uYTZhOTI3YjI5ZjgzZGZkNWY5NjZlNjczMDg1OGY2MzQ2YzgwOTcx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcApAQCAtMzQsMTEgKzM0
LDExIEBAIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9y
KFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvCiB7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBT
VkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBT
VkdBbmltYXRlZFR5cGU6OmNyZWF0ZUNvbG9yKG5ldyBDb2xvcik7CisgICAgYXV0byBhbmltdGVk
VHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQ29sb3IobmV3IENvbG9yKTsKICAgICBhbmlt
dGVkVHlwZS0+Y29sb3IoKSA9IHN0cmluZy5pc0VtcHR5KCkgPyBDb2xvcigpIDogU1ZHQ29sb3I6
OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHN0cmluZyk7Ci0gICAgcmV0dXJuIGFuaW10ZWRUeXBl
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbXRlZFR5cGU7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0
ZWRDb2xvckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwg
U1ZHQW5pbWF0ZWRUeXBlKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZENvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oCmlu
ZGV4IGJiOGIyZmRkNTBhZDQwYjAzNzU1Y2ZlMTYzN2VkYjIwNmQ3NjkyMzcuLjQ0OWVkZjAwYmQ1
OWNjZWEyNTg2ZGQ3ODQ2NGM1NjM5MTRkY2UxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZENvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkQ29sb3IuaApAQCAtMjQsMTYgKzI0LDE2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBjbGFzcyBTVkdBbmlt
YXRpb25FbGVtZW50OwogCiBjbGFzcyBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogcHVibGljOgogICAgIFNWR0FuaW1hdGVkQ29sb3JB
bmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwg
flNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcigpIHsgfQotICAgIAotICAgIHZpcnR1YWwgUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7
Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5p
bWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIHsgcmV0dXJuIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPigpOyB9CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1W
YWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYsIFNWR0FuaW1hdGVkVHlwZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENo
YW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAppbmRleCAyZWM3ZTNmMDZj
ZDFjMWYxZTYzY2UzNmE2NmExODhiM2FkMWJmY2JmLi44YzUwNzAwM2M4N2MzYmYwZDM4MDJjNmRh
ZWI3ODE5ZjgwYmQxZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51
bWVyYXRpb24uY3BwCkBAIC0xMDcsMTUgKzEwNywxNSBAQCBTVkdBbmltYXRlZEVudW1lcmF0aW9u
QW5pbWF0b3I6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcihTVkdBbmltYXRpb25FbGVt
ZQogewogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbkFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFu
aW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAg
IEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+
IGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlRW51bWVyYXRpb24obmV3IHVu
c2lnbmVkKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
RW51bWVyYXRpb24obmV3IHVuc2lnbmVkKTsKICAgICBhbmltYXRlZFR5cGUtPmVudW1lcmF0aW9u
KCkgPSBlbnVtZXJhdGlvblZhbHVlRm9yVGFyZ2V0QXR0cmlidXRlKG1fYW5pbWF0aW9uRWxlbWVu
dC0+dGFyZ2V0RWxlbWVudCgpLCBtX2FuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwg
c3RyaW5nKTsKLSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
YW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpzdGFydEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmlt
YXRlZFR5cGVzKQogewogICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUVudW1lcmF0
aW9uKGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0
ZWRUeXBlcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
RW51bWVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9u
LmgKaW5kZXggODQ0NzYwMjJiYmQ3YzMxYjI3YWZmYWU3N2RiNzJmNDZkNGFhMzc4ZS4uNWYwNzBj
ODRjNjdkYzRhNjQ1NzdmOWM4NDNhODk4ZjVkMWM2YzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAg
ICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNW
R0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3Io
KSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVj
dEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7
CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwCmluZGV4IDg5MDY3
MzE5MGE0M2EyNTlmYTg2Yzk4NmVjOTk2MmU4NWM2OTAyYTAuLmU2NjgxZTcxZmY3NjU2MTVkZmFi
MzA2ZGIxZmZhYjViMDMwOGQxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZEludGVnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZElu
dGVnZXIuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6
OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW0KIHsK
IH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1h
dG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNvbnN0
cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXIo
bmV3IGludCk7CisgICAgYXV0byBhbmltdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
SW50ZWdlcihuZXcgaW50KTsKICAgICBhbmltdGVkVHlwZS0+aW50ZWdlcigpID0gc3RyaW5nLnRv
SW50U3RyaWN0KCk7Ci0gICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYW5pbXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmlt
YXRlZEludGVnZXJBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKK3N0ZDo6dW5pcXVlX3B0cjxT
VkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpzdGFydEFuaW1WYWxB
bmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5
cGVzKQogewogICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXIoY29uc3Ry
dWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZEludGVnZXI+KGFuaW1hdGVkVHlwZXMpKTsKIH0K
QEAgLTEwMCw3ICsxMDAsNyBAQCBmbG9hdCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2Fs
Y3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjbwogICAgIGludCB0byA9
IHRvU3RyaW5nLnRvSW50U3RyaWN0KCk7CiAgICAgcmV0dXJuIGFicyh0byAtIGZyb20pOwogfQot
ICAgIAorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlci5oCmluZGV4IDBiNTVjMTBlOTNiYTc4MzhkYmRiM2M2YWRiYzFkMzU0NTU2
MmY0NDEuLjBjYzQxNWQxZjY0NGM5ZDUyY2Y1NTI3NjM3NzQ3NGJiY2FiNzA1ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgKQEAgLTQ4LDggKzQ4LDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKFNWR0FuaW1hdGlv
bkVsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgaW50IGZy
b21JbnRlZ2VyLCBpbnQgdG9JbnRlZ2VyLCBpbnQgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyLCBp
bnQmIGFuaW1hdGVkSW50ZWdlcik7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1W
YWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwo
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlKik7
CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAppbmRleCBhZjM3ZGIyMjYxMzgxYThi
MDg5NjIwYTJmNzZiZmM3NDRiYWRmZWVmLi5kYTQwMWFhYmFlMzBkNTdhZDAwNDI5OWQyNzQ5ZWMx
MmM2ODQ1ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcApAQCAtMzMsOSArMzMsOSBAQCBTVkdBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyQW5pbQogewogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5p
bWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBT
VkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBhbmltdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlSW50ZWdlck9wdGlvbmFsSW50
ZWdlcihuZXcgcGFpcjxpbnQsIGludD4pOworICAgIGF1dG8gYW5pbXRlZFR5cGUgPSBTVkdBbmlt
YXRlZFR5cGU6OmNyZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIobmV3IHBhaXI8aW50LCBpbnQ+
KTsKICAgICBwYWlyPGludCwgaW50PiYgYW5pbWF0ZWRJbnRlZ2VyID0gYW5pbXRlZFR5cGUtPmlu
dGVnZXJPcHRpb25hbEludGVnZXIoKTsKICAgICBmbG9hdCBmaXJzdE51bWJlciA9IDA7CiAgICAg
ZmxvYXQgc2Vjb25kTnVtYmVyID0gMDsKQEAgLTQ2LDEwICs0NiwxMCBAQCBQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6
OmNvbnN0cnVjdAogICAgICAgICBhbmltYXRlZEludGVnZXIuZmlyc3QgPSBzdGF0aWNfY2FzdDxp
bnQ+KHJvdW5kZihmaXJzdE51bWJlcikpOwogICAgICAgICBhbmltYXRlZEludGVnZXIuc2Vjb25k
ID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYoc2Vjb25kTnVtYmVyKSk7CiAgICAgfQotICAgIHJl
dHVybiBhbmltdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW10ZWRUeXBlOwogfQog
Ci1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6c3Rh
cnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYg
YW5pbWF0ZWRUeXBlcykKIHsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyKGNvbnN0cnVjdEZyb21CYXNlVmFsdWVzPFNWR0FuaW1hdGVkSW50
ZWdlciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyPihhbmltYXRlZFR5cGVzKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmgK
aW5kZXggZDgxMGJkMzhmM2M2MDNiZjk4ZWE5NjkzZmM3NjAzM2RjYTFjMWI0MS4uYzQwYzE0NjU0
OTNjZjYzNmVlOTBhNGYzMjRkNTBkMjVjNDQ4YTY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaApAQCAtMzEsOSAr
MzEsOSBAQCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvciA6
IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvcgogcHVibGljOgogICAgIFNWR0FuaW1hdGVk
SW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdF
bGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2Vy
QW5pbWF0b3IoKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZh
bEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRMZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNw
cAppbmRleCA4OGU3YjlmN2ZkZjBjMjgyMDBkMTBiNGMwZjA3NmVjMTI2ZTJjNjcxLi5jZDk3NjQx
N2E3ZWY2OWJkNjhlYzFhMmFlZDFmZTgxOTNlZWE4MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aC5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQCBzdGF0aWMgaW5saW5lIFNW
R0xlbmd0aCYgc2hhcmVkU1ZHTGVuZ3RoKFNWR0xlbmd0aE1vZGUgbW9kZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZQogICAgIHJldHVybiBzaGFyZWRMZW5ndGg7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgo
bmV3IFNWR0xlbmd0aChtX2xlbmd0aE1vZGUsIHN0cmluZykpOwogfQogCi1QYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5p
bWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBl
cykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCiB7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6
Y3JlYXRlTGVuZ3RoKGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRMZW5ndGg+KGFu
aW1hdGVkVHlwZXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZExlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgKaW5k
ZXggNjJhMTExOTk3N2QwNDU1NDFmODlhY2I2ZjUyNGJiOTdlMzA0NzQ1Zi4uMWNlNWQ3MTY2ZGZh
NDhlYzNiNzZmYTc1ZjU4OTg0NjY0ZmIwZDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTGVuZ3RoLmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0
dWFsIH5TVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFu
aW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldEFu
aW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZH
QW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAppbmRleCBiNmEyM2FjYmEyYTg4M2JlZDU4YmNhOGM2
YjZlM2I1MzQxNDFiMzU1Li44N2M5YjVhOWIyYjg1NzZjZTkzZmFkYjQzZTdkMDFiYmYzODI2YmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcApAQCAt
MzMsMTQgKzMzLDE0IEBAIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpTVkdBbmltYXRl
ZExlbmd0aExpc3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50CiB7CiB9CiAKLVBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y29uc3Ry
dWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+IGFuaW1hdGVUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGhMaXN0KG5ldyBT
VkdMZW5ndGhMaXN0KTsKKyAgICBhdXRvIGFuaW1hdGVUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVMZW5ndGhMaXN0KG5ldyBTVkdMZW5ndGhMaXN0KTsKICAgICBhbmltYXRlVHlwZS0+bGVu
Z3RoTGlzdCgpLnBhcnNlKHN0cmluZywgbV9sZW5ndGhNb2RlKTsKLSAgICByZXR1cm4gYW5pbWF0
ZVR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlVHlwZTsKIH0KIAotUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpzdGFydEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmlt
YXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0QW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCiB7CiAgICAgcmV0dXJuIFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoTGlzdChjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdD4oYW5pbWF0ZWRUeXBlcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCmluZGV4IDg2ZmZhZmU3ZDIyZTc0NDliNGMzNzM4M2Vh
MWJiODliNDEwNDhlY2QuLjI3MzY3MjYxMzY3Zjk5ZjE0M2Y2OGVmNzk5MGQxMzNmZjAyNWY4ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgKQEAgLTQyLDkg
KzQyLDkgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogcHVibGljOgogICAgIFNWR0FuaW1hdGVkTGVuZ3RoTGlz
dEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IoKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKKwor
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5p
bWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0
ZWRUeXBlKik7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgIAorCiBwcml2YXRl
OgogICAgIFNWR0xlbmd0aE1vZGUgbV9sZW5ndGhNb2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuY3BwCmluZGV4IDNlMTU4OWMwMzA0MGMyMzRjYWIzMmU3ZTMyOTJh
ZGUwNjlhODNjZjcuLjM1ODMxM2U0ZWRkN2FiNjQwZjVkOTZkNzQ1MmE2YTMyYzBhZjdlNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcApAQCAtMzIsMTYgKzMyLDE2
IEBAIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3Io
U1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0CiB7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNW
R0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKG5ldyBmbG9hdCk7CisgICAgYXV0byBhbmltdGVk
VHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKG5ldyBmbG9hdCk7CiAgICAgZmxv
YXQmIGFuaW1hdGVkTnVtYmVyID0gYW5pbXRlZFR5cGUtPm51bWJlcigpOwogICAgIGlmICghcGFy
c2VOdW1iZXJGcm9tU3RyaW5nKHN0cmluZywgYW5pbWF0ZWROdW1iZXIpKQogICAgICAgICBhbmlt
YXRlZE51bWJlciA9IDA7Ci0gICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gYW5pbXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdB
bmltYXRlZE51bWJlckFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6c3RhcnRBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRU
eXBlcykKIHsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXIoY29uc3Ry
dWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZE51bWJlcj4oYW5pbWF0ZWRUeXBlcykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAppbmRleCA5NDJkNjQxYzM5ZDg2YWQw
NjE1ZWJjODkyMzU4YjZiMDFmMDc1ZGUyLi5jYWU5MmFmNDI2NTExODYzYWEwNDM4ZWNmMzcwMzg4
MDhmZmI4MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1i
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaApAQCAtNDYs
OCArNDYsOCBAQCBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcihTVkdBbmlt
YXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkTnVt
YmVyQW5pbWF0b3IoKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5
cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNz
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFu
aW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxp
c3QuY3BwCmluZGV4IDhiMmNhNGM4NWE2NzkwY2Q1N2RlZjFkZWVkNzQ2YzQzNDBhNDQxODEuLjJl
NGU0Yjk5MTQ5ZWRkZTlkYzJkNzk5OGMzYjQzNWUyMjBkYmMxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAgU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9y
KFNWR0FuaW1hdGlvbkVsZW1lbnQKIHsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBT
VkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3QobmV3IFNWR051bWJlckxpc3QpOworICAg
IGF1dG8gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3QobmV3
IFNWR051bWJlckxpc3QpOwogICAgIGFuaW10ZWRUeXBlLT5udW1iZXJMaXN0KCkucGFyc2Uoc3Ry
aW5nKTsKLSAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmlt
dGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVt
YmVyTGlzdEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFu
aW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFu
aW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlw
ZXMpCiB7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyTGlzdChjb25z
dHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4oYW5pbWF0ZWRUeXBlcykp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCmluZGV4IGI2
NDQ1OTlmZDRkOTE5OTFjMzM3ZGU1ZWVmZWYyYzAwNzQxNjhhNjIuLjcyNjg5NDVlZjBkNWYxNDlh
ZDYzZWI4NDI5ZDVhMzFkMjlmNDg2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZE51bWJlckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXJMaXN0LmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJM
aXN0QW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogcHVibGljOgog
ICAgIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBT
VkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3Io
KSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmKTsKKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlv
bihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlci5jcHAKaW5kZXggZGM3OTk4Y2ZiNDVkNmU5YmEzY2UyZjk4NWUzNjkx
NGEzODM4OGJjNy4uMmQ1YzQzZDliOWM2ZThmODkxZTY5MjFhOWNmNWU5NDExMGU1YThjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1i
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyLmNwcApAQCAtMzMsMTggKzMzLDE4IEBAIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yCiB7
CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlck9wdGlv
bmFsTnVtYmVyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlck9w
dGlvbmFsTnVtYmVyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBTVkdB
bmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlck9wdGlvbmFsTnVtYmVyKG5ldyBwYWlyPGZsb2F0LCBm
bG9hdD4pOworICAgIGF1dG8gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51
bWJlck9wdGlvbmFsTnVtYmVyKG5ldyBwYWlyPGZsb2F0LCBmbG9hdD4pOwogICAgIHBhaXI8Zmxv
YXQsIGZsb2F0PiYgYW5pbWF0ZWROdW1iZXIgPSBhbmltdGVkVHlwZS0+bnVtYmVyT3B0aW9uYWxO
dW1iZXIoKTsKICAgICBpZiAoIXBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoc3RyaW5nLCBhbmlt
YXRlZE51bWJlci5maXJzdCwgYW5pbWF0ZWROdW1iZXIuc2Vjb25kKSkgewogICAgICAgICBhbmlt
YXRlZE51bWJlci5maXJzdCA9IDA7CiAgICAgICAgIGFuaW1hdGVkTnVtYmVyLnNlY29uZCA9IDA7
CiAgICAgfQotICAgIHJldHVybiBhbmltdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFu
aW10ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3Qg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFu
aW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQogewogICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZU51bWJlck9wdGlvbmFsTnVtYmVyKGNvbnN0cnVjdEZyb21CYXNlVmFsdWVzPFNWR0Fu
aW1hdGVkTnVtYmVyLCBTVkdBbmltYXRlZE51bWJlcj4oYW5pbWF0ZWRUeXBlcykpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1i
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVy
LmgKaW5kZXggNjQ3MzRiYzgxODk2YmI0YzE4ODg4ZGMwODIwNzE5ZWY0OGI2ZDFlNC4uZjAxY2Nl
OTVkMmMzMjliMWE3OTZhZmE0MGQ3NDhjYTkyNTg0NWI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oCkBAIC0zMSw5ICsz
MSw5IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvciA6IHB1
YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVt
ZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1h
dG9yKCkgeyB9Ci0gICAgCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxT
VkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmlt
YXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3Qg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAg
dmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAppbmRleCAx
MzI5MDNiZjE3MjFmNDcwNThhNTQyOGRmM2ZiZDhmNDBiNWQwZjhlLi5iMjEwYWQ5NWYyODczZTE2
Y2ZkMWI5ODUwMzVkMDE5NjQ1ZjA3NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQ
YXRoLmNwcApAQCAtMzMsMTQgKzMzLDE0IEBAIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpTVkdB
bmltYXRlZFBhdGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FCiB7CiB9
CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gYnl0ZVN0cmVhbSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRTVkdQYXRoQnl0
ZVN0cmVhbUZyb21TdHJpbmcoc3RyaW5nLCBieXRlU3RyZWFtLmdldCgpLCBVbmFsdGVyZWRQYXJz
aW5nKTsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKHN0ZDo6bW92ZShi
eXRlU3RyZWFtKSk7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZFBhdGhBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQogewog
ICAgIEFTU0VSVChhbmltYXRlZFR5cGVzLnNpemUoKSA+PSAxKTsKICAgICBTVkdBbmltYXRlZFBh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKiBwcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5
VG9BY3R1YWxUeXBlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGFuaW1h
dGVkVHlwZXNbMF0ucHJvcGVydGllc1swXS5nZXQoKSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZAogICAgIGlmIChtX2FuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11
bGF0ZWQoKSAmJiByZXBlYXRDb3VudCkKICAgICAgICAgYWRkVG9TVkdQYXRoQnl0ZVN0cmVhbShh
bmltYXRlZFBhdGgsIHRvQXRFbmRPZkR1cmF0aW9uUGF0aCwgcmVwZWF0Q291bnQpOwogfQotICAg
CisKIGZsb2F0IFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHBhY2Vk
IGFuaW1hdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQ
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmgKaW5kZXggYWM3Nzlk
YTQ5YTAzOTZmYTg3Mzg3Nzc2YjBkZjRhYTFjNzA4YmNhOC4uY2QwMGE1ZDIwZjE4MzY2MTgxY2Vh
MDg0YTNmNjEzNTFhOTU4NzM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaApA
QCAtMzIsOCArMzIsOCBAQCBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3IoU1ZH
QW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRl
ZFBhdGhBbmltYXRvcigpIHsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogICAgIHZp
cnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBvaW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExp
c3QuY3BwCmluZGV4IDNkN2FmYzIwOGFmNzEyODdlMjMxOTIzODUyZTNhZTljMDRiNDQzZTQuLmRk
MjNmODMyOGFhN2Q4NWY0YTczNzc0MWFiOGNlMmRjN2U5ODM3OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcApAQCAtMzMsMTQgKzMzLDE0IEBAIFNWR0Fu
aW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoU1ZH
QW5pbWF0aW9uRWxlbWVudCoKIHsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNW
R0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZFBvaW50TGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW10ZWRUeXBlID0gU1ZHQW5p
bWF0ZWRUeXBlOjpjcmVhdGVQb2ludExpc3QobmV3IFNWR1BvaW50TGlzdCk7CisgICAgYXV0byBh
bmltdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUG9pbnRMaXN0KG5ldyBTVkdQb2lu
dExpc3QpOwogICAgIHBvaW50c0xpc3RGcm9tU1ZHRGF0YShhbmltdGVkVHlwZS0+cG9pbnRMaXN0
KCksIHN0cmluZyk7Ci0gICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYW5pbXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmlt
YXRlZFBvaW50TGlzdEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6c3RhcnRBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0
ZWRUeXBlcykKIHsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQb2ludExpc3Qo
Y29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZFBvaW50TGlzdD4oYW5pbWF0ZWRUeXBl
cykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaAppbmRleCA0
YzhiMTg1YWMwYjQ2OWJiYTIyZmQyODE2Y2U5NDcwNWE2MmEwZDY0Li5kNWRlN2UwMWZkZDcxYWMz
MDYxM2Y5M2M5NWM1OTFmMzllNGQ2NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQb2ludExpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQb2ludExpc3QuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKIHB1YmxpYzoKICAg
ICBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdF
bGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcigpIHsg
fQotICAgIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVj
dEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpOworCisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwg
dm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5jcHAKaW5kZXggZTIwMDY4ODhhOGEzYjE3MWU5MzA5MTI5MjFhYjZkMGI0MGVk
OWVjZS4uNGUzODUzNTc2OWExZjM2Y2FhZmRhODQ0OWEzYTY0ODFmMmIzMjU2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5j
cHAKQEAgLTI1LDIwICsyNSwyMCBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQW5pbWF0b3I6OlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yKFNWR0Fu
aW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQogICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkKIHsKIH0KIAotUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1h
dG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5p
bWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvKG5ldyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAg
ICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUHJlc2VydmVBc3Bl
Y3RSYXRpbyhuZXcgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyk7CiAgICAgYW5pbWF0ZWRUeXBlLT5w
cmVzZXJ2ZUFzcGVjdFJhdGlvKCkucGFyc2Uoc3RyaW5nKTsKLSAgICByZXR1cm4gYW5pbWF0ZWRU
eXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I6
OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmIGFuaW1hdGVkVHlwZXMpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKIHsK
ICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvKGNv
bnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPihhbmlt
YXRlZFR5cGVzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmgKaW5kZXggNWM5Yjc1ZTQ5NjgyMTg0MjYwZWE5MGZmYjczZDgy
YjMzMzBjOWY3Yi4uMmJmNjY1ODIxMWUyODg4M2VkNTY4N2QwZWQzOTZjOGE5ZTE3MTg4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW9BbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiBwdWJsaWM6CiAg
ICAgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxl
bWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW9BbmltYXRvcigpIHsgfQotICAgIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmly
dHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOworCisgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3Rh
cnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9C
YXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVk
VHlwZSopOwogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVj
dC5jcHAKaW5kZXggMTY3N2EyMjRjM2Y3N2NjZWI3YWJhYzEzZmU0Yzg3YWIzYmJhMzlkNC4uOTZh
ZWJjMDRkYjQzOTk4NTExMjM4ZWRmNDc5MGY1NWY0N2UyNzQxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkUmVjdC5jcHAKQEAgLTMyLDE0ICszMiwxNCBAQCBTVkdBbmltYXRlZFJlY3RB
bmltYXRvcjo6U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5p
bWF0aW9uRQogewogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRS
ZWN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFJlY3RBbmltYXRvcjo6
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVJl
Y3QobmV3IEZsb2F0UmVjdCk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5
cGU6OmNyZWF0ZVJlY3QobmV3IEZsb2F0UmVjdCk7CiAgICAgcGFyc2VSZWN0KHN0cmluZywgYW5p
bWF0ZWRUeXBlLT5yZWN0KCkpOwotICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwor
ICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFJlY3RBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKK3N0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpzdGFydEFuaW1W
YWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRl
ZFR5cGVzKQogewogICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVJlY3QoY29uc3Ry
dWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZFJlY3Q+KGFuaW1hdGVkVHlwZXMpKTsKIH0KQEAg
LTk5LDcgKzk5LDcgQEAgZmxvYXQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZURp
c3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiAgICAgLy8gRklYTUU6IERpc3Rh
bmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBwb3NzaWJsZSBmb3IgU1ZHUmVjdCByaWdodCBub3cuIFdl
IG5lZWQgdGhlIGRpc3RhbmNlIG9mIGZvciBldmVyeSBzaW5nbGUgdmFsdWUuCiAgICAgcmV0dXJu
IC0xOwogfQotICAgIAorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkUmVjdC5oCmluZGV4IDUxYjk0N2E3ZDU5MmUxZGIzZjU4ZWJhYTA4YWI0ZDFh
Mzg3ZDI0MTEuLjJlOWJkNDYzOTM4ZDRiNGU5YzhlMDdmNjBhNDU4YjE3Y2RmMmRmMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgog
ICAgIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVt
ZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3Ry
dWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmlt
YXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdp
bGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcAppbmRleCAwMDI0NThiMWY4OTg3NjFhNDFm
NmViMmE4NTljYjY1OGQwZmMxNjgwLi5mYmU2M2ZjZTAwMjhmNTRhYjAzNDEwMjg5YjY3ODFjNWZi
OTY0MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKQEAgLTMx
LDE0ICszMSwxNCBAQCBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpTVkdBbmltYXRlZFN0cmlu
Z0FuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdAogewogfQogCi1QYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6Y29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRl
ZFR5cGU+IFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0
ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVTdHJpbmcobmV3IFN0cmluZyk7CisgICAg
YXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVN0cmluZyhuZXcgU3Ry
aW5nKTsKICAgICBhbmltYXRlZFR5cGUtPnN0cmluZygpID0gc3RyaW5nOwotICAgIHJldHVybiBh
bmltYXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpzdGFy
dEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBh
bmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0
ZWRTdHJpbmdBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKIHsKICAgICByZXR1cm4gU1ZHQW5p
bWF0ZWRUeXBlOjpjcmVhdGVTdHJpbmcoY29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRl
ZFN0cmluZz4oYW5pbWF0ZWRUeXBlcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRT
dHJpbmcuaAppbmRleCA4NjhiY2M1NmIxMDU0YTc5ZjBmZjAxMTQwNTJhYTM3ZWU4YjMxN2UzLi5i
NzhjZTA3MTRiZGE5MzJhMWQ4MWMxMWIwODhkNGYyMDg0ODIyMmE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgU1ZH
QW5pbWF0ZWRTdHJpbmdBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCop
OwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3IoKSB7IH0KIAotICAgIHZp
cnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1h
dGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFu
aW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFu
aW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5p
bVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdB
bmltYXRlZFR5cGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCmluZGV4IDhj
YmJkYjY0YTFlYTM4OWMyZjIyYjIxYzkzYzkzOTJkYzIzOThlOWMuLjgwOTZmNWViMmNmOTg0NDJi
MzJhYWZjNTAwMjU0NDQyNzZkODQ2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0QW5pbWF0b3I6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yKFNW
R0FuaW1hdGlvbkUKICAgICBBU1NFUlQoYW5pbWF0aW9uRWxlbWVudC0+aGFzVGFnTmFtZShTVkdO
YW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmlt
YXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVRyYW5zZm9ybUxpc3QobmV3IFNWR1Ry
YW5zZm9ybUxpc3QpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVUcmFuc2Zvcm1MaXN0KG5ldyBTVkdUcmFuc2Zvcm1MaXN0KTsKICAgICBhbmltYXRlZFR5
cGUtPnRyYW5zZm9ybUxpc3QoKS5wYXJzZShtX3RyYW5zZm9ybVR5cGVTdHJpbmcgKyBzdHJpbmcg
KyAnKScpOwogICAgIEFTU0VSVChhbmltYXRlZFR5cGUtPnRyYW5zZm9ybUxpc3QoKS5zaXplKCkg
PD0gMSk7Ci0gICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFu
aW1hdGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OnN0YXJ0
QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFu
aW1hdGVkVHlwZXMpCiB7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNm
b3JtTGlzdChjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4o
YW5pbWF0ZWRUeXBlcykpOwogfQpAQCAtMTMwLDggKzEzMCw4IEBAIGZsb2F0IFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZy
b21TdHJpCiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdCBpbiBhbGwgY2FzZXMu
IFRoZSBzcGVjIGRlbWFuZHMgdGhhdCBlYWNoIGNvbXBvbmVudCAodHJhbnNsYXRlIHggYW5kIHkg
Zm9yIGV4YW1wbGUpCiAgICAgLy8gaXMgcGFjZWQgc2VwYXJhdGVseS4gVG8gaW1wbGVtZW50IHRo
aXMgd2UgbmVlZCB0byB0cmVhdCBlYWNoIGNvbXBvbmVudCBhcyBpbmRpdmlkdWFsIGFuaW1hdGlv
biBldmVyeXdoZXJlLgotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGZyb20gPSBjb25zdHJ1
Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IHRv
ID0gY29uc3RydWN0RnJvbVN0cmluZyh0b1N0cmluZyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gdG8gPSBjb25zdHJ1Y3RGcm9tU3Ry
aW5nKHRvU3RyaW5nKTsKIAogICAgIFNWR1RyYW5zZm9ybUxpc3QmIGZyb21UcmFuc2Zvcm1MaXN0
ID0gZnJvbS0+dHJhbnNmb3JtTGlzdCgpOwogICAgIFNWR1RyYW5zZm9ybUxpc3QmIHRvVHJhbnNm
b3JtTGlzdCA9IHRvLT50cmFuc2Zvcm1MaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKaW5kZXggM2MyOTA5MmRhNDZjMzRmMzU4MzE0NmNkZjU0
NmRkYzRkOTQ3YTY2NC4uMzc0OTcxNzA4MWRiYmUxOTU1ZWQ2NWY4NWU5ZDUyM2RlOTZhM2E4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaApAQCAt
NDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0
b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcigpIHsgfQogCi0gICAgdmlydHVhbCBQYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFs
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHlwZS5jcHAKaW5kZXggNWExN2YxYmI0YTBjZTNhMzkwMTg1NWQ3Mzg2NzRjNWYz
Y2VhOTE4OS4uYWQyODZlOWYwYjEwM2QwMTM3N2U0ZWEyYTEyZjY5NjUzZmFmNjMyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAKQEAgLTkyLDE0MCArOTIsMTQwIEBAIFNW
R0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSgpCiAgICAgfQogfQogCi1QYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVBbmdsZUFuZEVudW1lcmF0
aW9uKHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+KiBhbmdsZUFuZEVudW1lcmF0aW9uKQor
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVB
bmdsZUFuZEVudW1lcmF0aW9uKHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+KiBhbmdsZUFu
ZEVudW1lcmF0aW9uKQogewogICAgIEFTU0VSVChhbmdsZUFuZEVudW1lcmF0aW9uKTsKLSAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5p
bWF0ZWRUeXBlKEFuaW1hdGVkQW5nbGUpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZEFuZ2xlKTsKICAgICBhbmltYXRl
ZFR5cGUtPm1fZGF0YS5hbmdsZUFuZEVudW1lcmF0aW9uID0gYW5nbGVBbmRFbnVtZXJhdGlvbjsK
LSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRU
eXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVCb29sZWFuKGJvb2wqIGJvb2xlYW4pCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUJvb2xlYW4oYm9vbCogYm9vbGVhbikKIHsKICAg
ICBBU1NFUlQoYm9vbGVhbik7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRU
eXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZEJvb2xlYW4pKTsKKyAg
ICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihB
bmltYXRlZEJvb2xlYW4pOwogICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmJvb2xlYW4gPSBib29s
ZWFuOwotICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmlt
YXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5
cGU6OmNyZWF0ZUNvbG9yKENvbG9yKiBjb2xvcikKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRl
ZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQ29sb3IoQ29sb3IqIGNvbG9yKQogewogICAg
IEFTU0VSVChjb2xvcik7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBl
ID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZENvbG9yKSk7CisgICAgYXV0
byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0
ZWRDb2xvcik7CiAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEuY29sb3IgPSBjb2xvcjsKLSAgICBy
ZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwog
fQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVF
bnVtZXJhdGlvbih1bnNpZ25lZCogZW51bWVyYXRpb24pCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUVudW1lcmF0aW9uKHVuc2lnbmVkKiBl
bnVtZXJhdGlvbikKIHsKICAgICBBU1NFUlQoZW51bWVyYXRpb24pOwotICAgIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUo
QW5pbWF0ZWRFbnVtZXJhdGlvbikpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkRW51bWVyYXRpb24pOwogICAgIGFuaW1h
dGVkVHlwZS0+bV9kYXRhLmVudW1lcmF0aW9uID0gZW51bWVyYXRpb247Ci0gICAgcmV0dXJuIGFu
aW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAotUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlSW50ZWdlcihp
bnQqIGludGVnZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZUludGVnZXIoaW50KiBpbnRlZ2VyKQogewogICAgIEFTU0VSVChpbnRlZ2Vy
KTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihu
ZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkSW50ZWdlcikpOworICAgIGF1dG8gYW5pbWF0ZWRU
eXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkSW50ZWdlcik7
CiAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEuaW50ZWdlciA9IGludGVnZXI7Ci0gICAgcmV0dXJu
IGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAot
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlSW50ZWdl
ck9wdGlvbmFsSW50ZWdlcihwYWlyPGludCwgaW50PiogaW50ZWdlck9wdGlvbmFsSW50ZWdlcikK
K3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
SW50ZWdlck9wdGlvbmFsSW50ZWdlcihwYWlyPGludCwgaW50PiogaW50ZWdlck9wdGlvbmFsSW50
ZWdlcikKIHsKICAgICBBU1NFUlQoaW50ZWdlck9wdGlvbmFsSW50ZWdlcik7Ci0gICAgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVk
VHlwZShBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIpKTsKKyAgICBhdXRvIGFuaW1hdGVk
VHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXIpOwogICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmludGVnZXJPcHRpb25h
bEludGVnZXIgPSBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOwotICAgIHJldHVybiBhbmltYXRlZFR5
cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUxlbmd0aChTVkdMZW5ndGgq
IGxlbmd0aCkKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlw
ZTo6Y3JlYXRlTGVuZ3RoKFNWR0xlbmd0aCogbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5ndGgp
OwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5l
dyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRMZW5ndGgpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlw
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZExlbmd0aCk7CiAg
ICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEubGVuZ3RoID0gbGVuZ3RoOwotICAgIHJldHVybiBhbmlt
YXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUxlbmd0aExpc3Qo
U1ZHTGVuZ3RoTGlzdCogbGVuZ3RoTGlzdCkKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoTGlzdChTVkdMZW5ndGhMaXN0KiBsZW5n
dGhMaXN0KQogewogICAgIEFTU0VSVChsZW5ndGhMaXN0KTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1h
dGVkTGVuZ3RoTGlzdCkpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkTGVuZ3RoTGlzdCk7CiAgICAgYW5pbWF0ZWRUeXBl
LT5tX2RhdGEubGVuZ3RoTGlzdCA9IGxlbmd0aExpc3Q7Ci0gICAgcmV0dXJuIGFuaW1hdGVkVHlw
ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKGZsb2F0KiBudW1i
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZU51bWJlcihmbG9hdCogbnVtYmVyKQogewogICAgIEFTU0VSVChudW1iZXIpOwotICAgIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmlt
YXRlZFR5cGUoQW5pbWF0ZWROdW1iZXIpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZE51bWJlcik7CiAgICAgYW5pbWF0
ZWRUeXBlLT5tX2RhdGEubnVtYmVyID0gbnVtYmVyOwotICAgIHJldHVybiBhbmltYXRlZFR5cGUu
cmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3QoU1ZHTnVtYmVy
TGlzdCogbnVtYmVyTGlzdCkKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyTGlzdChTVkdOdW1iZXJMaXN0KiBudW1iZXJMaXN0KQog
ewogICAgIEFTU0VSVChudW1iZXJMaXN0KTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBh
bmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkTnVtYmVy
TGlzdCkpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZFR5cGU+KEFuaW1hdGVkTnVtYmVyTGlzdCk7CiAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEu
bnVtYmVyTGlzdCA9IG51bWJlckxpc3Q7Ci0gICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyT3B0aW9uYWxOdW1iZXIocGFpcjxm
bG9hdCwgZmxvYXQ+KiBudW1iZXJPcHRpb25hbE51bWJlcikKK3N0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyT3B0aW9uYWxOdW1iZXIo
cGFpcjxmbG9hdCwgZmxvYXQ+KiBudW1iZXJPcHRpb25hbE51bWJlcikKIHsKICAgICBBU1NFUlQo
bnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1h
dGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWROdW1iZXJPcHRp
b25hbE51bWJlcikpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwogICAgIGFuaW1h
dGVkVHlwZS0+bV9kYXRhLm51bWJlck9wdGlvbmFsTnVtYmVyID0gbnVtYmVyT3B0aW9uYWxOdW1i
ZXI7Ci0gICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1h
dGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlw
ZTo6Y3JlYXRlUGF0aChzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IHBhdGgpCitz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBh
dGgoc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBwYXRoKQogewogICAgIEFTU0VS
VChwYXRoKTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9w
dFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkUGF0aCkpOworICAgIGF1dG8gYW5pbWF0
ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkUGF0aCk7
CiAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEucGF0aCA9IHBhdGgucmVsZWFzZSgpOwotICAgIHJl
dHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9
CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBv
aW50TGlzdChTVkdQb2ludExpc3QqIHBvaW50TGlzdCkKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUG9pbnRMaXN0KFNWR1BvaW50TGlzdCog
cG9pbnRMaXN0KQogewogICAgIEFTU0VSVChwb2ludExpc3QpOwotICAgIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5p
bWF0ZWRQb2ludHMpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZFBvaW50cyk7CiAgICAgYW5pbWF0ZWRUeXBlLT5tX2Rh
dGEucG9pbnRMaXN0ID0gcG9pbnRMaXN0OwotICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFz
ZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW8oU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbyogcHJlc2VydmVBc3BlY3RSYXRpbykKK3N0ZDo6dW5pcXVlX3B0cjxT
VkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUHJlc2VydmVBc3BlY3RSYXRp
byhTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewogICAgIEFT
U0VSVChwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBh
bmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkUHJlc2Vy
dmVBc3BlY3RSYXRpbykpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7CiAgICAgYW5p
bWF0ZWRUeXBlLT5tX2RhdGEucHJlc2VydmVBc3BlY3RSYXRpbyA9IHByZXNlcnZlQXNwZWN0UmF0
aW87Ci0gICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1h
dGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlw
ZTo6Y3JlYXRlUmVjdChGbG9hdFJlY3QqIHJlY3QpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVJlY3QoRmxvYXRSZWN0KiByZWN0KQogewog
ICAgIEFTU0VSVChyZWN0KTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5
cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkUmVjdCkpOworICAgIGF1
dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1h
dGVkUmVjdCk7CiAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEucmVjdCA9IHJlY3Q7Ci0gICAgcmV0
dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0K
IAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlU3Ry
aW5nKFN0cmluZyogc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWRUeXBlOjpjcmVhdGVTdHJpbmcoU3RyaW5nKiBzdHJpbmcpCiB7CiAgICAgQVNTRVJU
KHN0cmluZyk7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gYWRv
cHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFN0cmluZykpOworICAgIGF1dG8gYW5p
bWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkU3Ry
aW5nKTsKICAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS5zdHJpbmcgPSBzdHJpbmc7Ci0gICAgcmV0
dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0K
IAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJh
bnNmb3JtTGlzdChTVkdUcmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm1MaXN0KQorc3RkOjp1bmlxdWVf
cHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVUcmFuc2Zvcm1MaXN0
KFNWR1RyYW5zZm9ybUxpc3QqIHRyYW5zZm9ybUxpc3QpCiB7CiAgICAgQVNTRVJUKHRyYW5zZm9y
bUxpc3QpOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0
UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KSk7CisgICAgYXV0
byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0KTsKICAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS50cmFuc2Zvcm1MaXN0
ID0gdHJhbnNmb3JtTGlzdDsKLSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCiBTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2YWx1
ZUFzU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAppbmRleCA4YWM3NGEx
MjQyMDM2MDQxMGZlMjRmZGIzZGM5ZTVmMGQzNTc0MDJlLi4wMjg2NDE2ZTQxZGM1OTk4NTcwYzE5
MmEyNWJlNWRlNGQyNDhlY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCkBA
IC0zOSwyNSArMzksMjYgQEAgY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW07CiBjbGFzcyBTVkdBbmlt
YXRlZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIFNW
R0FuaW1hdGVkVHlwZShBbmltYXRlZFByb3BlcnR5VHlwZSk7CiAgICAgdmlydHVhbCB+U1ZHQW5p
bWF0ZWRUeXBlKCk7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNy
ZWF0ZUFuZ2xlQW5kRW51bWVyYXRpb24oc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4qKTsK
LSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUJvb2xlYW4oYm9v
bCopOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQ29sb3Io
Q29sb3IqKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUVu
dW1lcmF0aW9uKHVuc2lnbmVkKik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVJbnRlZ2VyKGludCopOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gY3JlYXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcihzdGQ6OnBhaXI8aW50LCBpbnQ+
Kik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgo
U1ZHTGVuZ3RoKik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVh
dGVMZW5ndGhMaXN0KFNWR0xlbmd0aExpc3QqKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IGNyZWF0ZU51bWJlcihmbG9hdCopOwotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyTGlzdChTVkdOdW1iZXJMaXN0Kik7Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXJPcHRpb25hbE51
bWJlcihzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiopOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gY3JlYXRlUGF0aChzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJl
YW0+KTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBvaW50
TGlzdChTVkdQb2ludExpc3QqKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5
cGU+IGNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW8oU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyopOwot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUmVjdChGbG9hdFJl
Y3QqKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVN0cmlu
ZyhTdHJpbmcqKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0
ZVRyYW5zZm9ybUxpc3QoU1ZHVHJhbnNmb3JtTGlzdCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVBbmdsZUFuZEVudW1lcmF0aW9uKHN0ZDo6cGFp
cjxTVkdBbmdsZSwgdW5zaWduZWQ+Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IGNyZWF0ZUJvb2xlYW4oYm9vbCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVDb2xvcihDb2xvciopOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVFbnVtZXJhdGlvbih1bnNpZ25l
ZCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVJ
bnRlZ2VyKGludCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjcmVhdGVJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKHN0ZDo6cGFpcjxpbnQsIGludD4qKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3RoKFNW
R0xlbmd0aCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBj
cmVhdGVMZW5ndGhMaXN0KFNWR0xlbmd0aExpc3QqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyKGZsb2F0Kik7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZU51bWJlckxpc3QoU1ZHTnVtYmVy
TGlzdCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVh
dGVOdW1iZXJPcHRpb25hbE51bWJlcihzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiopOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQYXRoKHN0ZDo6dW5p
cXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4pOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQb2ludExpc3QoU1ZHUG9pbnRMaXN0Kik7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVByZXNlcnZlQXNwZWN0
UmF0aW8oU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVSZWN0KEZsb2F0UmVjdCopOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVTdHJpbmcoU3RyaW5nKik7Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVRyYW5zZm9y
bUxpc3QoU1ZHVHJhbnNmb3JtTGlzdCopOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQW5pbVZh
bChBbmltYXRlZFByb3BlcnR5VHlwZSk7CiAKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CkBAIC0yNzAsMTAgKzI3MSw4IEBAIHB1YmxpYzoK
IAogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCk7CiAgICAgYm9vbCBzZXRWYWx1ZUFzU3RyaW5n
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKTsKLSAgICAKLXByaXZhdGU6Ci0g
ICAgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkUHJvcGVydHlUeXBlKTsKIAorcHJpdmF0ZToKICAg
ICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAKICAgICB1bmlvbiBEYXRhVW5pb24gewpA
QCAtMzAxLDcgKzMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFNWR1RyYW5zZm9ybUxpc3QqIHRy
YW5zZm9ybUxpc3Q7CiAgICAgfSBtX2RhdGE7CiB9OwotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHAKaW5kZXggZTE5YjFlMTZlY2U1NWVhNWEwYTc1OWU1
NWM1OTU5M2ZiYTE5NjI5Yi4uODUxOTA4OGY1M2NjZGI2YjU3Yzc0NTU0OTBkMzE2OGU0MGNjMTFh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuY3Bw
CkBAIC00OCwxMyArNDgsMTMgQEAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OlNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUsIFNWR0EKIFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yOjp+U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoKQogeyB9CiAKLXZvaWQgU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit2b2lkIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQog
ewogICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwogICAgIHRvID0g
Y29uc3RydWN0RnJvbVN0cmluZyh0b1N0cmluZyk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21T
dHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCit2b2lkIFNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb20sIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQogewogICAgIGZyb20g
PSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwogICAgIHRvID0gY29uc3RydWN0RnJv
bVN0cmluZyhieVN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oCmluZGV4IGE0ZDlhNGNhZGM4NzZiNjcxNzI3OTFmZjE3NGVlMzgzMTIyZTY4OGEu
LjQ5M2FkZDAzODA2ZTI4ZDZmYTFlYmEwMGNmMjk0ZjFjODQ4MDY3ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCkBAIC0yNSw3ICsyNSw3IEBACiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlw
ZS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0YW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ1LDkgKzQ1LDkgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Ig
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflNW
R0FuaW1hdGVkVHlwZUFuaW1hdG9yKCk7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmLCBTVkdBbmltYXRlZFR5cGUqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxs
Q2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpID0gMDsKQEAgLTU3
LDggKzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUq
KSA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsKIAotICAgIHZvaWQgY2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiwgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpOwotICAgIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAgIHZvaWQgY2FsY3VsYXRlRnJv
bUFuZFRvVmFsdWVzKHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+Jiwgc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4mLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+Jiwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1h
dGVkVHlwZT4mLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJp
bmcpOwogCiAgICAgdm9pZCBzZXRDb250ZXh0RWxlbWVudChTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCkgeyBtX2NvbnRleHRFbGVtZW50ID0gY29udGV4dEVsZW1lbnQ7IH0KICAgICBBbmltYXRl
ZFByb3BlcnR5VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggZmQ5MDY0YzQzN2Q2NTkzOTlkYjJlNDUy
NmM3ZDVjYWEzNjc5Zjk3Mi4uMWZlY2VkNjNjMzkzZWU0M2U4NTAyZDM4MzA4ODRhMzU4ZTRjZWVh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaApAQCAtNDUsNDYgKzQ1
LDQ2IEBAIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKIGNsYXNzIFNWR0FuaW1hdG9yRmFj
dG9yeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3I+IGNyZWF0ZShTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYXR0cmlidXRlVHlw
ZSkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yPiBj
cmVhdGUoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGF0dHJpYnV0ZVR5cGUpCiAgICAg
ewogICAgICAgICBBU1NFUlQoYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0RWxlbWVudCk7CiAKICAgICAgICAgc3dpdGNoIChhdHRyaWJ1dGVUeXBlKSB7CiAgICAgICAg
IGNhc2UgQW5pbWF0ZWRBbmdsZToKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZH
QW5pbWF0ZWRBbmdsZUFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5p
bWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBB
bmltYXRlZEJvb2xlYW46Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1h
dGVkQm9vbGVhbkFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5Bbmlt
YXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFu
aW1hdGVkQ29sb3I6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVk
Q29sb3JBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yPihh
bmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRF
bnVtZXJhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9u
QW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2Fz
ZSBBbmltYXRlZEludGVnZXI6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0Fu
aW1hdGVkSW50ZWdlckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJB
bmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNl
IEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcjoKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3IoYW5pbWF0
aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yPihhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5n
dGg6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGFuaW1hdGlv
bkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZExlbmd0aExp
c3Q6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoTGlz
dEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcj4o
YW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVk
TnVtYmVyOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZE51bWJl
ckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1i
ZXJMaXN0OgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZE51bWJl
ckxpc3RBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0
b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVu
dCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVu
dCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkUGF0aDoKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3IoYW5pbWF0aW9u
RWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0
RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6Ci0gICAgICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoYW5pbWF0aW9uRWxl
bWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW86Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RS
YXRpb0FuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW9BbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBj
YXNlIEFuaW1hdGVkUmVjdDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5p
bWF0ZWRSZWN0QW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9y
PihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0
ZWRTdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkU3Ry
aW5nQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I+KGFu
aW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFRy
YW5zZm9ybUxpc3Q6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3RBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAg
ICBjYXNlIEFuaW1hdGVkVW5rbm93bjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC05NSw5ICs5NSw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTVkdBbmltYXRvckZhY3Rv
cnkoKSB7IH0KLQogfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAKaW5kZXggYjE0MWY0MGZjZTA3ZDE3NDVkZmIyNjU0ODAxYzhiNjlmZDNmNmNiNy4uYzBl
MjI3YjY3MzdlYzA2ZDZkMzUxYmRiOGFhNmRhNWM1MTRjY2FmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5z
aW9ucyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAg
ICwgbV9yZXNvdXJjZXNDYWNoZShhZG9wdFB0cihuZXcgU1ZHUmVzb3VyY2VzQ2FjaGUpKQorICAg
ICwgbV9yZXNvdXJjZXNDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigp
KQogewogfQogCkBAIC05NywyMiArOTcsMjIgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OnN0YXJ0QW5pbWF0aW9ucygpCiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQgcmVmYWN0
b3IgdGhlIHVzZS1lbGVtZW50IHRvIGF2b2lkIHRoaXMuIFNlZSBodHRwczovL3dlYmtpdC5vcmcv
Yi81MzcwNAogICAgIFZlY3RvcjxSZWZQdHI8U1ZHU1ZHRWxlbWVudD4+IHRpbWVDb250YWluZXJz
OwogICAgIHRpbWVDb250YWluZXJzLmFwcGVuZFJhbmdlKG1fdGltZUNvbnRhaW5lcnMuYmVnaW4o
KSwgbV90aW1lQ29udGFpbmVycy5lbmQoKSk7Ci0gICAgVmVjdG9yPFJlZlB0cjxTVkdTVkdFbGVt
ZW50Pj46Oml0ZXJhdG9yIGVuZCA9IHRpbWVDb250YWluZXJzLmVuZCgpOwotICAgIGZvciAoVmVj
dG9yPFJlZlB0cjxTVkdTVkdFbGVtZW50Pj46Oml0ZXJhdG9yIGl0ciA9IHRpbWVDb250YWluZXJz
LmJlZ2luKCk7IGl0ciAhPSBlbmQ7ICsraXRyKQorICAgIGF1dG8gZW5kID0gdGltZUNvbnRhaW5l
cnMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ciA9IHRpbWVDb250YWluZXJzLmJlZ2luKCk7IGl0
ciAhPSBlbmQ7ICsraXRyKQogICAgICAgICAoKml0ciktPnRpbWVDb250YWluZXIoKS0+YmVnaW4o
KTsKIH0KLSAgICAKKwogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnBhdXNlQW5pbWF0aW9u
cygpCiB7Ci0gICAgSGFzaFNldDxTVkdTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9IG1fdGlt
ZUNvbnRhaW5lcnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNWR1NWR0VsZW1lbnQqPjo6aXRl
cmF0b3IgaXRyID0gbV90aW1lQ29udGFpbmVycy5iZWdpbigpOyBpdHIgIT0gZW5kOyArK2l0cikK
KyAgICBhdXRvIGVuZCA9IG1fdGltZUNvbnRhaW5lcnMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0
ciA9IG1fdGltZUNvbnRhaW5lcnMuYmVnaW4oKTsgaXRyICE9IGVuZDsgKytpdHIpCiAgICAgICAg
ICgqaXRyKS0+cGF1c2VBbmltYXRpb25zKCk7CiB9CiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zOjp1bnBhdXNlQW5pbWF0aW9ucygpCiB7Ci0gICAgSGFzaFNldDxTVkdTVkdFbGVtZW50Kj46
Oml0ZXJhdG9yIGVuZCA9IG1fdGltZUNvbnRhaW5lcnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0
PFNWR1NWR0VsZW1lbnQqPjo6aXRlcmF0b3IgaXRyID0gbV90aW1lQ29udGFpbmVycy5iZWdpbigp
OyBpdHIgIT0gZW5kOyArK2l0cikKKyAgICBhdXRvIGVuZCA9IG1fdGltZUNvbnRhaW5lcnMuZW5k
KCk7CisgICAgZm9yIChhdXRvIGl0ciA9IG1fdGltZUNvbnRhaW5lcnMuYmVnaW4oKTsgaXRyICE9
IGVuZDsgKytpdHIpCiAgICAgICAgICgqaXRyKS0+dW5wYXVzZUFuaW1hdGlvbnMoKTsKIH0KIApA
QCAtMTIxLDggKzEyMSw4IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpkaXNwYXRjaFNW
R0xvYWRFdmVudFRvT3V0ZXJtb3N0U1ZHRWxlbWVudHMoKQogICAgIFZlY3RvcjxSZWZQdHI8U1ZH
U1ZHRWxlbWVudD4+IHRpbWVDb250YWluZXJzOwogICAgIHRpbWVDb250YWluZXJzLmFwcGVuZFJh
bmdlKG1fdGltZUNvbnRhaW5lcnMuYmVnaW4oKSwgbV90aW1lQ29udGFpbmVycy5lbmQoKSk7CiAK
LSAgICBWZWN0b3I8UmVmUHRyPFNWR1NWR0VsZW1lbnQ+Pjo6aXRlcmF0b3IgZW5kID0gdGltZUNv
bnRhaW5lcnMuZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPFNWR1NWR0VsZW1lbnQ+Pjo6
aXRlcmF0b3IgaXQgPSB0aW1lQ29udGFpbmVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICBhdXRvIGVuZCA9IHRpbWVDb250YWluZXJzLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9
IHRpbWVDb250YWluZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBTVkdT
VkdFbGVtZW50KiBvdXRlclNWRyA9ICgqaXQpLmdldCgpOwogICAgICAgICBpZiAoIW91dGVyU1ZH
LT5pc091dGVybW9zdFNWR1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MTUzLDkgKzE1Myw5IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVz
b3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRWxlbWVudCoKICAgICBpZiAoaWQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRy
PFNWR1BlbmRpbmdFbGVtZW50cz4+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wZW5kaW5nUmVzb3Vy
Y2VzLmFkZChpZCwgbnVsbHB0cik7CisgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdSZXNvdXJj
ZXMuYWRkKGlkLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU1ZHUGVuZGluZ0VsZW1lbnRz
KTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
UGVuZGluZ0VsZW1lbnRzPigpOwogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZChlbGVt
ZW50KTsKIAogICAgIGVsZW1lbnQtPnNldEhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTE3Niw4
ICsxNzYsOCBAQCBib29sIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6aXNFbGVtZW50UGVuZGluZ1Jl
c291cmNlcyhFbGVtZW50KiBlbGVtZW50KSBjb25zdAogCiAgICAgQVNTRVJUKGVsZW1lbnQpOwog
Ci0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+Pjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nUmVzb3VyY2VzLmVuZCgpOwotICAgIGZvciAo
SGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+Pjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgYXV0byBlbmQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuZW5kKCk7CisgICAgZm9yIChh
dXRvIGl0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewog
ICAgICAgICBTVkdQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgpOwog
ICAgICAgICBBU1NFUlQoZWxlbWVudHMpOwogCkBAIC0yMTAsOCArMjEwLDggQEAgdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlcyhFbGVt
ZW50KiBlbGVtZW50KQogICAgIC8vIFJlbW92ZSB0aGUgZWxlbWVudCBmcm9tIHBlbmRpbmcgcmVz
b3VyY2VzLgogICAgIGlmICghbV9wZW5kaW5nUmVzb3VyY2VzLmlzRW1wdHkoKSAmJiBlbGVtZW50
LT5oYXNQZW5kaW5nUmVzb3VyY2VzKCkpIHsKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4g
dG9CZVJlbW92ZWQ7Ci0gICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8U1ZHUGVu
ZGluZ0VsZW1lbnRzPj46Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1Jlc291cmNlcy5lbmQoKTsK
LSAgICAgICAgZm9yIChIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRpbmdFbGVt
ZW50cz4+OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgYXV0byBlbmQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuZW5kKCk7
CisgICAgICAgIGZvciAoYXV0byBpdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIFNWR1BlbmRpbmdFbGVtZW50cyogZWxlbWVudHMg
PSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudHMpOwogICAgICAg
ICAgICAgQVNTRVJUKCFlbGVtZW50cy0+aXNFbXB0eSgpKTsKQEAgLTIyNCwxNiArMjI0LDE2IEBA
IHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNv
dXJjZXMoRWxlbWVudCogZWxlbWVudCkKICAgICAgICAgY2xlYXJIYXNQZW5kaW5nUmVzb3VyY2Vz
SWZQb3NzaWJsZShlbGVtZW50KTsKIAogICAgICAgICAvLyBXZSB1c2UgdGhlIHJlbW92ZVBlbmRp
bmdSZXNvdXJjZSBmdW5jdGlvbiBoZXJlIGJlY2F1c2UgaXQgZGVhbHMgd2l0aCBzZXQgbGlmZXRp
bWUgY29ycmVjdGx5LgotICAgICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPjo6aXRlcmF0b3IgdmVj
dG9yRW5kID0gdG9CZVJlbW92ZWQuZW5kKCk7Ci0gICAgICAgIGZvciAoVmVjdG9yPEF0b21pY1N0
cmluZz46Oml0ZXJhdG9yIGl0ID0gdG9CZVJlbW92ZWQuYmVnaW4oKTsgaXQgIT0gdmVjdG9yRW5k
OyArK2l0KQorICAgICAgICBhdXRvIHZlY3RvckVuZCA9IHRvQmVSZW1vdmVkLmVuZCgpOworICAg
ICAgICBmb3IgKGF1dG8gaXQgPSB0b0JlUmVtb3ZlZC5iZWdpbigpOyBpdCAhPSB2ZWN0b3JFbmQ7
ICsraXQpCiAgICAgICAgICAgICByZW1vdmVQZW5kaW5nUmVzb3VyY2UoKml0KTsKICAgICB9CiAK
ICAgICAvLyBSZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSBwZW5kaW5nIHJlc291cmNlcyB0aGF0IHdl
cmUgc2NoZWR1bGVkIGZvciByZW1vdmFsLgogICAgIGlmICghbV9wZW5kaW5nUmVzb3VyY2VzRm9y
UmVtb3ZhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJl
bW92ZWQ7Ci0gICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8U1ZHUGVuZGluZ0Vs
ZW1lbnRzPj46Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuZW5k
KCk7Ci0gICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5n
RWxlbWVudHM+Pjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBhdXRvIGVuZCA9IG1fcGVuZGluZ1Jl
c291cmNlc0ZvclJlbW92YWwuZW5kKCk7CisgICAgICAgIGZvciAoYXV0byBpdCA9IG1fcGVuZGlu
Z1Jlc291cmNlc0ZvclJlbW92YWwuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAg
ICAgICBTVkdQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgpOwogICAg
ICAgICAgICAgQVNTRVJUKGVsZW1lbnRzKTsKICAgICAgICAgICAgIEFTU0VSVCghZWxlbWVudHMt
PmlzRW1wdHkoKSk7CkBAIC0yNDQsMTkgKzI0NCwxOSBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSB1c2UgdGhlIHJlbW92ZVBlbmRpbmdSZXNvdXJj
ZUZvclJlbW92YWwgZnVuY3Rpb24gaGVyZSBiZWNhdXNlIGl0IGRlYWxzIHdpdGggc2V0IGxpZmV0
aW1lIGNvcnJlY3RseS4KLSAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz46Oml0ZXJhdG9yIHZl
Y3RvckVuZCA9IHRvQmVSZW1vdmVkLmVuZCgpOwotICAgICAgICBmb3IgKFZlY3RvcjxBdG9taWNT
dHJpbmc+OjppdGVyYXRvciBpdCA9IHRvQmVSZW1vdmVkLmJlZ2luKCk7IGl0ICE9IHZlY3RvckVu
ZDsgKytpdCkKKyAgICAgICAgYXV0byB2ZWN0b3JFbmQgPSB0b0JlUmVtb3ZlZC5lbmQoKTsKKyAg
ICAgICAgZm9yIChhdXRvIGl0ID0gdG9CZVJlbW92ZWQuYmVnaW4oKTsgaXQgIT0gdmVjdG9yRW5k
OyArK2l0KQogICAgICAgICAgICAgcmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9yUmVtb3ZhbCgqaXQp
OwogICAgIH0KIH0KIAotT3duUHRyPFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0Vs
ZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25z
dCBBdG9taWNTdHJpbmcmIGlkKQorc3RkOjp1bmlxdWVfcHRyPFNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRp
bmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkKQogewogICAgIEFTU0VSVChtX3BlbmRp
bmdSZXNvdXJjZXMuY29udGFpbnMoaWQpKTsKICAgICByZXR1cm4gbV9wZW5kaW5nUmVzb3VyY2Vz
LnRha2UoaWQpOwogfQogCi1Pd25QdHI8U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdQZW5kaW5n
RWxlbWVudHM+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9y
UmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorc3RkOjp1bmlxdWVfcHRyPFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OnJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkK
IHsKICAgICBBU1NFUlQobV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5jb250YWlucyhpZCkp
OwogICAgIHJldHVybiBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsLnRha2UoaWQpOwpAQCAt
MjY5LDkgKzI2OSw5IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjptYXJrUGVuZGluZ1Jl
c291cmNlc0ZvclJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5nJiBpCiAKICAgICBBU1NFUlQoIW1f
cGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuY29udGFpbnMoaWQpKTsKIAotICAgIE93blB0cjxT
VkdQZW5kaW5nRWxlbWVudHM+IGV4aXN0aW5nID0gbV9wZW5kaW5nUmVzb3VyY2VzLnRha2UoaWQp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdQZW5kaW5nRWxlbWVudHM+IGV4aXN0aW5nID0gbV9w
ZW5kaW5nUmVzb3VyY2VzLnRha2UoaWQpOwogICAgIGlmIChleGlzdGluZyAmJiAhZXhpc3Rpbmct
PmlzRW1wdHkoKSkKLSAgICAgICAgbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5hZGQoaWQs
IGV4aXN0aW5nLnJlbGVhc2UoKSk7CisgICAgICAgIG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92
YWwuYWRkKGlkLCBzdGQ6Om1vdmUoZXhpc3RpbmcpKTsKIH0KIAogRWxlbWVudCogU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFs
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCkBAIC0yODMsNyArMjgzLDcgQEAgRWxlbWVudCogU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JS
ZW1vdmFsKGNvbnMKICAgICBpZiAoIXJlc291cmNlU2V0IHx8IHJlc291cmNlU2V0LT5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgU1ZHUGVuZGluZ0VsZW1lbnRzOjppdGVyYXRv
ciBmaXJzdEVsZW1lbnQgPSByZXNvdXJjZVNldC0+YmVnaW4oKTsKKyAgICBhdXRvIGZpcnN0RWxl
bWVudCA9IHJlc291cmNlU2V0LT5iZWdpbigpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAqZmly
c3RFbGVtZW50OwogCiAgICAgcmVzb3VyY2VTZXQtPnJlbW92ZShmaXJzdEVsZW1lbnQpOwpAQCAt
Mjk3LDcgKzI5Nyw3IEBAIEVsZW1lbnQqIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxl
bWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChjb25zCiBIYXNoU2V0PFNWR0VsZW1l
bnQqPiogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpzZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJn
ZXQoU1ZHRWxlbWVudCogcmVmZXJlbmNlZEVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJl
ZmVyZW5jZWRFbGVtZW50KTsKLSAgICBjb25zdCBIYXNoTWFwPFNWR0VsZW1lbnQqLCBPd25QdHI8
SGFzaFNldDxTVkdFbGVtZW50Kj4+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2VsZW1lbnREZXBl
bmRlbmNpZXMuZmluZChyZWZlcmVuY2VkRWxlbWVudCk7CisgICAgY29uc3QgYXV0byBpdCA9IG1f
ZWxlbWVudERlcGVuZGVuY2llcy5maW5kKHJlZmVyZW5jZWRFbGVtZW50KTsKICAgICBpZiAoaXQg
PT0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmVuZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBy
ZXR1cm4gaXQtPnZhbHVlLmdldCgpOwpAQCAtMzEzLDkgKzMxMyw5IEBAIHZvaWQgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVudCogcmVm
ZXJlbmNpbmdFCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPd25QdHI8SGFzaFNldDxT
VkdFbGVtZW50Kj4+IGVsZW1lbnRzID0gYWRvcHRQdHIobmV3IEhhc2hTZXQ8U1ZHRWxlbWVudCo+
KTsKKyAgICBhdXRvIGVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1l
bnQqPj4oKTsKICAgICBlbGVtZW50cy0+YWRkKHJlZmVyZW5jaW5nRWxlbWVudCk7Ci0gICAgbV9l
bGVtZW50RGVwZW5kZW5jaWVzLnNldChyZWZlcmVuY2VkRWxlbWVudCwgZWxlbWVudHMucmVsZWFz
ZSgpKTsKKyAgICBtX2VsZW1lbnREZXBlbmRlbmNpZXMuc2V0KHJlZmVyZW5jZWRFbGVtZW50LCBz
dGQ6Om1vdmUoZWxlbWVudHMpKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJl
bW92ZUFsbFRhcmdldFJlZmVyZW5jZXNGb3JFbGVtZW50KFNWR0VsZW1lbnQqIHJlZmVyZW5jaW5n
RWxlbWVudCkKQEAgLTMzMSwyOCArMzMxLDI4IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpyZW1vdmVBbGxUYXJnZXRSZWZlcmVuY2VzRm9yRWxlbWVudChTVkdFbGVtZW50KiByZWZlCiAg
ICAgICAgICAgICB0b0JlUmVtb3ZlZC5hcHBlbmQocmVmZXJlbmNlZEVsZW1lbnQpOwogICAgIH0K
IAotICAgIFZlY3RvcjxTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHRvQmVSZW1v
dmVkLmVuZCgpOwotICAgIGZvciAoVmVjdG9yPFNWR0VsZW1lbnQqPjo6aXRlcmF0b3IgaXQgPSB0
b0JlUmVtb3ZlZC5iZWdpbigpOyBpdCAhPSB2ZWN0b3JFbmQ7ICsraXQpCisgICAgYXV0byB2ZWN0
b3JFbmQgPSB0b0JlUmVtb3ZlZC5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSB0b0JlUmVtb3Zl
ZC5iZWdpbigpOyBpdCAhPSB2ZWN0b3JFbmQ7ICsraXQpCiAgICAgICAgIG1fZWxlbWVudERlcGVu
ZGVuY2llcy5yZW1vdmUoKml0KTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJl
YnVpbGRBbGxFbGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldChTVkdFbGVtZW50KiByZWZlcmVuY2Vk
RWxlbWVudCkKIHsKICAgICBBU1NFUlQocmVmZXJlbmNlZEVsZW1lbnQpOwotICAgIEhhc2hNYXA8
U1ZHRWxlbWVudCosIE93blB0cjxIYXNoU2V0PFNWR0VsZW1lbnQqPj4+OjppdGVyYXRvciBpdCA9
IG1fZWxlbWVudERlcGVuZGVuY2llcy5maW5kKHJlZmVyZW5jZWRFbGVtZW50KTsKKyAgICBhdXRv
IGl0ID0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmZpbmQocmVmZXJlbmNlZEVsZW1lbnQpOwogICAg
IGlmIChpdCA9PSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBBU1NFUlQoaXQtPmtleSA9PSByZWZlcmVuY2VkRWxlbWVudCk7CiAgICAgVmVjdG9yPFNW
R0VsZW1lbnQqPiB0b0JlTm90aWZpZWQ7CiAKICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPiogcmVm
ZXJlbmNpbmdFbGVtZW50cyA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICBIYXNoU2V0PFNWR0VsZW1l
bnQqPjo6aXRlcmF0b3Igc2V0RW5kID0gcmVmZXJlbmNpbmdFbGVtZW50cy0+ZW5kKCk7Ci0gICAg
Zm9yIChIYXNoU2V0PFNWR0VsZW1lbnQqPjo6aXRlcmF0b3Igc2V0SXQgPSByZWZlcmVuY2luZ0Vs
ZW1lbnRzLT5iZWdpbigpOyBzZXRJdCAhPSBzZXRFbmQ7ICsrc2V0SXQpCisgICAgYXV0byBzZXRF
bmQgPSByZWZlcmVuY2luZ0VsZW1lbnRzLT5lbmQoKTsKKyAgICBmb3IgKGF1dG8gc2V0SXQgPSBy
ZWZlcmVuY2luZ0VsZW1lbnRzLT5iZWdpbigpOyBzZXRJdCAhPSBzZXRFbmQ7ICsrc2V0SXQpCiAg
ICAgICAgIHRvQmVOb3RpZmllZC5hcHBlbmQoKnNldEl0KTsKIAogICAgIC8vIEZvcmNlIHJlYnVp
bGRpbmcgdGhlIHJlZmVyZW5jaW5nRWxlbWVudCBzbyBpdCBrbm93cyBhYm91dCB0aGlzIGNoYW5n
ZS4KLSAgICBWZWN0b3I8U1ZHRWxlbWVudCo+OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB0b0JlTm90
aWZpZWQuZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8U1ZHRWxlbWVudCo+OjppdGVyYXRvciB2ZWN0
b3JJdCA9IHRvQmVOb3RpZmllZC5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVj
dG9ySXQpIHsKKyAgICBhdXRvIHZlY3RvckVuZCA9IHRvQmVOb3RpZmllZC5lbmQoKTsKKyAgICBm
b3IgKGF1dG8gdmVjdG9ySXQgPSB0b0JlTm90aWZpZWQuYmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVj
dG9yRW5kOyArK3ZlY3Rvckl0KSB7CiAgICAgICAgIC8vIEJlZm9yZSByZWJ1aWxkaW5nIHJlZmVy
ZW5jaW5nRWxlbWVudCBlbnN1cmUgaXQgd2FzIG5vdCByZW1vdmVkIGZyb20gdW5kZXIgdXMuCiAg
ICAgICAgIGlmIChIYXNoU2V0PFNWR0VsZW1lbnQqPiogcmVmZXJlbmNpbmdFbGVtZW50cyA9IHNl
dE9mRWxlbWVudHNSZWZlcmVuY2luZ1RhcmdldChyZWZlcmVuY2VkRWxlbWVudCkpIHsKICAgICAg
ICAgICAgIGlmIChyZWZlcmVuY2luZ0VsZW1lbnRzLT5jb250YWlucygqdmVjdG9ySXQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCmluZGV4IDVkMGNiMjNkZTlj
ZGZmMjFkMmEwOGM5OGNiZjQ0NmZhZTRjYmY4YjIuLmIzY2Q0YjEyYzlmODI3YWZkY2FjOWVlZjM5
MDU0MmE5MDk0ZDg3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmgKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODQsMTAgKzgzLDEwIEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDxTVkdGb250RmFjZUVsZW1lbnQqPiBtX3N2Z0ZvbnRGYWNlRWxlbWVudHM7CiAjZW5k
aWYKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIq
PiBtX3Jlc291cmNlczsKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRp
bmdFbGVtZW50cz4+IG1fcGVuZGluZ1Jlc291cmNlczsgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIHBl
bmRpbmcuCi0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVu
dHM+PiBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsOyAvLyBSZXNvdXJjZXMgdGhhdCBhcmUg
cGVuZGluZyBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsLgotICAgIEhhc2hNYXA8U1ZHRWxlbWVu
dCosIE93blB0cjxIYXNoU2V0PFNWR0VsZW1lbnQqPj4+IG1fZWxlbWVudERlcGVuZGVuY2llczsK
LSAgICBPd25QdHI8U1ZHUmVzb3VyY2VzQ2FjaGU+IG1fcmVzb3VyY2VzQ2FjaGU7CisgICAgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxTVkdQZW5kaW5nRWxlbWVudHM+PiBt
X3BlbmRpbmdSZXNvdXJjZXM7IC8vIFJlc291cmNlcyB0aGF0IGFyZSBwZW5kaW5nLgorICAgIEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPj4g
bV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbDsgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIHBlbmRp
bmcgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbC4KKyAgICBIYXNoTWFwPFNWR0VsZW1lbnQqLCBz
dGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxTVkdFbGVtZW50Kj4+PiBtX2VsZW1lbnREZXBlbmRlbmNp
ZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR1Jlc291cmNlc0NhY2hlPiBtX3Jlc291cmNlc0Nh
Y2hlOwogCiBwdWJsaWM6CiAgICAgLy8gVGhpcyBIYXNoTWFwIGNvbnRhaW5zIGEgbGlzdCBvZiBw
ZW5kaW5nIHJlc291cmNlcy4gUGVuZGluZyByZXNvdXJjZXMsIGFyZSBzdWNoCkBAIC05OSwxNCAr
OTgsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbGVtZW50UGVuZGluZ1Jlc291cmNlKEVsZW1l
bnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICB2b2lkIGNsZWFySGFzUGVu
ZGluZ1Jlc291cmNlc0lmUG9zc2libGUoRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlRWxlbWVu
dEZyb21QZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQqKTsKLSAgICBPd25QdHI8U1ZHUGVuZGluZ0Vs
ZW1lbnRzPiByZW1vdmVQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNWR1BlbmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291
cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyB0d28g
ZnVuY3Rpb25zIGFyZSB1c2VkIGZvciBzY2hlZHVsaW5nIGEgcGVuZGluZyByZXNvdXJjZSB0byBi
ZSByZW1vdmVkLgogICAgIHZvaWQgbWFya1BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsKGNvbnN0
IEF0b21pY1N0cmluZyYpOwogICAgIEVsZW1lbnQqIHJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jl
c291cmNlc0ZvclJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAg
T3duUHRyPFNWR1BlbmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9yUmVtb3Zh
bChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGVuZGluZ0Vs
ZW1lbnRzPiByZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaAppbmRleCA1OGI0Njk0NTBiOTcx
YTI2ZDc1ZDZlMmQ3ZmE0M2RkZWY5YTQ3ZWZlLi5mYTZmMjk1MmJiZDZjMTdhYWRkMmNjNWE2NGI1
NjI4MzhhOWE0NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaApAQCAtMzAsMTAgKzMwLDcg
QEAgY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwogCiBjbGFzcyBTVkdGb250RGF0YSA6IHB1Ymxp
YyBTaW1wbGVGb250RGF0YTo6QWRkaXRpb25hbEZvbnREYXRhIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxTVkdGb250RGF0YT4gY3JlYXRlKFNWR0ZvbnRGYWNlRWxlbWVudCogZWxl
bWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHRm9udERhdGEoZWxl
bWVudCkpOwotICAgIH0KKyAgICBTVkdGb250RGF0YShTVkdGb250RmFjZUVsZW1lbnQqKTsKIAog
ICAgIHZpcnR1YWwgflNWR0ZvbnREYXRhKCkgeyB9CiAKQEAgLTUzLDggKzUwLDYgQEAgcHVibGlj
OgogICAgIGZsb2F0IHZlcnRpY2FsQWR2YW5jZVkoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2Fs
QWR2YW5jZVk7IH0KIAogcHJpdmF0ZToKLSAgICBTVkdGb250RGF0YShTVkdGb250RmFjZUVsZW1l
bnQqKTsKLQogICAgIGJvb2wgZmlsbEJNUEdseXBocyhTVkdGb250RWxlbWVudCosIEdseXBoUGFn
ZSogLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgY29u
c3QgU2ltcGxlRm9udERhdGEqKSBjb25zdDsKICAgICBib29sIGZpbGxOb25CTVBHbHlwaHMoU1ZH
Rm9udEVsZW1lbnQqLCBHbHlwaFBhZ2UqICwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyKiBidWZmZXIsIGNvbnN0IFNpbXBsZUZvbnREYXRhKikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCmluZGV4IGVmM2JhOTg5MmViNDI0OWNmMWMzMWVl
OTQwM2E4YjlkZjVlZWMyZTkuLmMwMzY5OGQ3YTE1YmIzOTE5ZTkzMTQwZWJjMGU5MjZiMTAwY2Yx
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBA
QCBCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZvbnRFbGVtZW50KQogRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZvbnRFbGVtZW50OjpT
VkdGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCi0gICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSAKKyAgICA6IFNWR0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX21pc3NpbmdHbHlwaCgwKQogICAgICwg
bV9pc0dseXBoQ2FjaGVWYWxpZChmYWxzZSkKIHsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNW
R0ZvbnRFbGVtZW50OjpyZWdpc3RlckxpZ2F0dXJlc0luR2x5cGhDYWNoZShWZWN0b3I8U3RyaW5n
PiYgbGlnYXR1cmVzKQogICAgICAgICAgICAgICAgIGdseXBocy5jbGVhcigpOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICAvLyBUaGlzIGdseXBoIGlzIG5ldmVyIG1lYW50IHRvIGJlIHVzZWQgZm9yIHJlbmRl
cmluZywgb25seSBhcyBpZGVudGlmaWVyIGFzIGEgcGFydCBvZiBhIGxpZ2F0dXJlLgogICAgICAg
ICAgICAgU1ZHR2x5cGggbmV3R2x5cGhQYXJ0OwogICAgICAgICAgICAgbmV3R2x5cGhQYXJ0Lmlz
UGFydE9mTGlnYXR1cmUgPSB0cnVlOwpAQCAtMTc5LDkgKzE3OSw5IEBAIHZvaWQgU1ZHS2Vybmlu
Z01hcDo6aW5zZXJ0KGNvbnN0IFNWR0tlcm5pbmdQYWlyJiBrZXJuaW5nUGFpcikKICAgICAgICAg
aWYgKHVuaWNvZGVNYXAuY29udGFpbnMoKnVJdCkpCiAgICAgICAgICAgICB1bmljb2RlTWFwLmdl
dCgqdUl0KS0+YXBwZW5kKHN2Z0tlcm5pbmcpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IE93blB0cjxTVkdLZXJuaW5nVmVjdG9yPiBuZXdWZWN0b3IgPSBhZG9wdFB0cihuZXcgU1ZHS2Vy
bmluZ1ZlY3Rvcik7CisgICAgICAgICAgICBhdXRvIG5ld1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlx
dWU8U1ZHS2VybmluZ1ZlY3Rvcj4oKTsKICAgICAgICAgICAgIG5ld1ZlY3Rvci0+YXBwZW5kKHN2
Z0tlcm5pbmcpOwotICAgICAgICAgICAgdW5pY29kZU1hcC5hZGQoKnVJdCwgbmV3VmVjdG9yLnJl
bGVhc2UoKSk7CisgICAgICAgICAgICB1bmljb2RlTWFwLmFkZCgqdUl0LCBzdGQ6Om1vdmUobmV3
VmVjdG9yKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5MSw5ICsxOTEsOSBAQCB2b2lkIFNW
R0tlcm5pbmdNYXA6Omluc2VydChjb25zdCBTVkdLZXJuaW5nUGFpciYga2VybmluZ1BhaXIpCiAg
ICAgICAgIGlmIChnbHlwaE1hcC5jb250YWlucygqZ0l0KSkKICAgICAgICAgICAgIGdseXBoTWFw
LmdldCgqZ0l0KS0+YXBwZW5kKHN2Z0tlcm5pbmcpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIE93blB0cjxTVkdLZXJuaW5nVmVjdG9yPiBuZXdWZWN0b3IgPSBhZG9wdFB0cihuZXcgU1ZH
S2VybmluZ1ZlY3Rvcik7CisgICAgICAgICAgICBhdXRvIG5ld1ZlY3RvciA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHS2VybmluZ1ZlY3Rvcj4oKTsKICAgICAgICAgICAgIG5ld1ZlY3Rvci0+YXBwZW5k
KHN2Z0tlcm5pbmcpOwotICAgICAgICAgICAgZ2x5cGhNYXAuYWRkKCpnSXQsIG5ld1ZlY3Rvci5y
ZWxlYXNlKCkpOworICAgICAgICAgICAgZ2x5cGhNYXAuYWRkKCpnSXQsIHN0ZDo6bW92ZShuZXdW
ZWN0b3IpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjgxLDcgKzI4MSw3IEBAIHN0YXRpYyBp
bmxpbmUgZmxvYXQga2VybmluZ0ZvclBhaXJPZlN0cmluZ3NBbmRHbHlwaHMoY29uc3QgU1ZHS2Vy
bmluZ01hcCYga2VybmluCiAKICAgICByZXR1cm4gMDsKIH0KLSAgICAKKwogZmxvYXQgU1ZHRm9u
dEVsZW1lbnQ6Omhvcml6b250YWxLZXJuaW5nRm9yUGFpck9mU3RyaW5nc0FuZEdseXBocyhjb25z
dCBTdHJpbmcmIHUxLCBjb25zdCBTdHJpbmcmIGcxLCBjb25zdCBTdHJpbmcmIHUyLCBjb25zdCBT
dHJpbmcmIGcyKSBjb25zdAogewogICAgIGlmIChtX2hvcml6b250YWxLZXJuaW5nTWFwLmlzRW1w
dHkoKSkKQEAgLTMxNiw3ICszMTYsNyBAQCBTVkdHbHlwaCBTVkdGb250RWxlbWVudDo6c3ZnR2x5
cGhGb3JHbHlwaChHbHlwaCBnbHlwaCkKICAgICBlbnN1cmVHbHlwaENhY2hlKCk7CiAgICAgcmV0
dXJuIG1fZ2x5cGhNYXAuc3ZnR2x5cGhGb3JHbHlwaChnbHlwaCk7CiB9Ci0gICAgCisKIEdseXBo
IFNWR0ZvbnRFbGVtZW50OjptaXNzaW5nR2x5cGgoKQogewogICAgIGVuc3VyZUdseXBoQ2FjaGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKaW5kZXggZTZjNTgwZjZlN2Y4ZjhkNGQx
YmY1NDVlNzYxMWIyNTRkMTA4OTY3ZS4uYTg3YjU1NDU5OTUxYzRiN2I5YWM1YjQ4ZWFmOTk5ZGM3
ZmRjMDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKQEAgLTUzLDggKzUzLDgg
QEAgc3RydWN0IFNWR0tlcm5pbmdQYWlyIDogcHVibGljIFNWR0tlcm5pbmcgewogdHlwZWRlZiBW
ZWN0b3I8U1ZHS2VybmluZz4gU1ZHS2VybmluZ1ZlY3RvcjsKIAogc3RydWN0IFNWR0tlcm5pbmdN
YXAgewotICAgIEhhc2hNYXA8U3RyaW5nLCBPd25QdHI8U1ZHS2VybmluZ1ZlY3Rvcj4+IHVuaWNv
ZGVNYXA7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIE93blB0cjxTVkdLZXJuaW5nVmVjdG9yPj4gZ2x5
cGhNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxTVkdLZXJuaW5nVmVj
dG9yPj4gdW5pY29kZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFNW
R0tlcm5pbmdWZWN0b3I+PiBnbHlwaE1hcDsKICAgICBWZWN0b3I8U1ZHS2VybmluZ1BhaXI+IGtl
cm5pbmdVbmljb2RlUmFuZ2VNYXA7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biB1bmljb2RlTWFwLmlzRW1wdHkoKSAmJiBnbHlwaE1hcC5pc0VtcHR5KCkgJiYga2VybmluZ1Vu
aWNvZGVSYW5nZU1hcC5pc0VtcHR5KCk7IH0KQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IFNWR0tl
cm5pbmdNYXAgewogICAgIHZvaWQgaW5zZXJ0KGNvbnN0IFNWR0tlcm5pbmdQYWlyJik7CiB9Owog
Ci1jbGFzcyBTVkdNaXNzaW5nR2x5cGhFbGVtZW50OyAgICAKK2NsYXNzIFNWR01pc3NpbmdHbHlw
aEVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ZvbnRFbGVtZW50IEZJTkFMIDogcHVibGljIFNWR0VsZW1l
bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNz
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApp
bmRleCA1MDFlM2YxYWRmNjZkMjE0M2FiZDI2NTg0NzFmMDQ3M2RmZDk1NmIxLi44OTBkZDJhNzM1
M2Q1ZTM0NDZkODdhYWVkOTE5ODdmNGE2MWE0NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmNwcApAQCAtODcsNyArODcsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZH
R3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIEFmZmluZVRy
YW5zZm9ybSogU1ZHR3JhcGhpY3NFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKQogewog
ICAgIGlmICghbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0pCi0gICAgICAgIG1fc3VwcGxlbWVudGFs
VHJhbnNmb3JtID0gYWRvcHRQdHIobmV3IEFmZmluZVRyYW5zZm9ybSk7CisgICAgICAgIG1fc3Vw
cGxlbWVudGFsVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxBZmZpbmVUcmFuc2Zvcm0+KCk7
CiAgICAgcmV0dXJuIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKaW5kZXggYWVjZDZhNThlMGE2ZDVlYWVlMzU3
MGNlNjg4OGVjMDcxMzkyZTcxMi4uMDRmNTQ3YjhkNThlYjc2NWRiYjQxYmQ1NzQ5Y2RlNTA2MWI0
MDk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaApAQCAtNzEsNyAr
NzEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKCkgT1ZFUlJJREUgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlz
KTsgfQogCiAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1vdGlvbj4KLSAgICBPd25QdHI8QWZmaW5l
VHJhbnNmb3JtPiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
QWZmaW5lVHJhbnNmb3JtPiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKIH07CiAKIHZvaWQgaXNT
VkdHcmFwaGljc0VsZW1lbnQoY29uc3QgU1ZHR3JhcGhpY3NFbGVtZW50Jik7IC8vIENhdGNoIHVu
bmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oCmluZGV4IDg5Mjdi
NzU0MWRjMDgzNDBjZjNjZGY2ZGUzMjg5M2Y2MjU2NGIzZDMuLmM3ZGYxMWI0YWIzODFjZWM5MjU4
MWYxNTdlOWZlYjUzMzQyOGUwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoQnl0ZVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0
ZVN0cmVhbVNvdXJjZS5oCkBAIC0yNCwyMCArMjQsMTQgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50
LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKICNpbmNsdWRlICJTVkdQYXRoU291
cmNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZSA6IHB1YmxpYyBTVkdQYXRoU291cmNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJj
ZT4gY3JlYXRlKFNWR1BhdGhCeXRlU3RyZWFtKiBzdHJlYW0pCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlKHN0cmVhbSkpOwotICAgIH0K
LQotcHJpdmF0ZToKICAgICBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZShTVkdQYXRoQnl0ZVN0cmVh
bSopOwogCitwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlRGF0YSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBtb3ZlVG9OZXh0VG9rZW4oKSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCBib29sIHBhcnNlU1ZHU2VnbWVudFR5cGUoU1ZHUGF0aFNlZ1R5cGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFBhcnNlci5oCmluZGV4IDA0MWJmNzBjZDFiMmQxY2M2OWFhMDFlYjQ2YmYx
MGQzNTkwMmY1MTEuLjY1ZjRiZDg1MTVlZWI4NzYxM2Q2YWJmMTQxNDU3MmEyNzhhZjVmZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmIEVOQUJM
RShTVkcpCiAjaW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNl
Zy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0U291cmNlLmgKaW5kZXggMzU3MjQ4ZjU0NTEyMGNhOWI3ODM3Y2Q4MjZhMjZhZTcw
YzU0NGEwOS4uNjY3ZTY5NGU4Yjc1MmI3NjdmMDgxNTRlNTVlZmVhY2M2YTczNTczNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKQEAgLTI1LDIxICsyNSwxNSBA
QAogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgog
I2luY2x1ZGUgIlNWR1BhdGhTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
VkdQYXRoU2VnTGlzdFNvdXJjZSA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxTVkdQYXRoU2VnTGlzdFNvdXJjZT4gY3JlYXRlKGNvbnN0IFNW
R1BhdGhTZWdMaXN0JiBwYXRoU2VnTGlzdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgU1ZHUGF0aFNlZ0xpc3RTb3VyY2UocGF0aFNlZ0xpc3QpKTsKLSAgICB9Ci0KLXByaXZh
dGU6CiAgICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2UoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmKTsKIAor
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgbW92ZVRvTmV4dFRva2VuKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBwYXJzZVNWR1NlZ21lbnRUeXBlKFNWR1BhdGhTZWdUeXBlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaAppbmRleCA3OTdhYTExZjVkNmM2M2E1MTA5MDJkZGEw
NTkyYzMzMTAwNGZkZmM4Li5mMjdhNzljMDFkZmQ4MTc1OWFjZjIzODZjZjExOTAyNGYwN2M1Yzlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmgKQEAgLTIzLDIxICsy
MywxNSBAQAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQYXRoU3RyaW5nU291cmNlIDog
cHVibGljIFNWR1BhdGhTb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNW
R1BhdGhTdHJpbmdTb3VyY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHN0cmluZykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHUGF0aFN0cmluZ1NvdXJjZShzdHJpbmcpKTsK
LSAgICB9Ci0KLXByaXZhdGU6CiAgICAgU1ZHUGF0aFN0cmluZ1NvdXJjZShjb25zdCBTdHJpbmcm
KTsKIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgbW92ZVRvTmV4dFRva2VuKCk7CiAgICAgdmlydHVhbCBib29sIHBhcnNl
U1ZHU2VnbWVudFR5cGUoU1ZHUGF0aFNlZ1R5cGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
VXRpbGl0aWVzLmNwcAppbmRleCBlODZlNzRhZjM5MDhlNmFkMjJmNzgzMTdlZjljNTQ3NjcwMjgx
NTIyLi4xYzdjZTE2MjkzNTBkZTNhYmE1ODE1N2U5MDMwNzMyNDI4ZDUyNmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBi
dWlsZFBhdGhGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZCwgUGF0aCYgcmVzdWx0KQogCiAgICAg
U1ZHUGF0aEJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnVpbGRlcihyZXN1bHQpOwog
Ci0gICAgT3duUHRyPFNWR1BhdGhTdHJpbmdTb3VyY2U+IHNvdXJjZSA9IFNWR1BhdGhTdHJpbmdT
b3VyY2U6OmNyZWF0ZShkKTsKKyAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
UGF0aFN0cmluZ1NvdXJjZT4oZCk7CiAgICAgU1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFs
U1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwogICAgIGJvb2wgb2sgPSBwYXJz
ZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsKICAgICBwYXJz
ZXItPmNsZWFudXAoKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIGJ1aWxkU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIGxpc3QsIFNWR1Bh
dAogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0
aEJ5dGVTdHJlYW1CdWlsZGVyKHJlc3VsdCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aFNlZ0xpc3RT
b3VyY2U+IHNvdXJjZSA9IFNWR1BhdGhTZWdMaXN0U291cmNlOjpjcmVhdGUobGlzdCk7CisgICAg
YXV0byBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhTZWdMaXN0U291cmNlPihsaXN0
KTsKICAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJj
ZS5nZXQoKSwgYnVpbGRlcik7CiAgICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZy
b21Tb3VyY2UocGFyc2luZ01vZGUpOwogICAgIHBhcnNlci0+Y2xlYW51cCgpOwpAQCAtMTUxLDcg
KzE1MSw3IEBAIGJvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhQYXNz
UmVmUHRyPFNWR1BhdGhTZWc+IHBhdGhTZWcsIFNWR1BhCiAgICAgYXV0byBhcHBlbmRlZEJ5dGVT
dHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwogCiAgICAgU1ZH
UGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1C
dWlsZGVyKGFwcGVuZGVkQnl0ZVN0cmVhbS5nZXQoKSk7Ci0gICAgT3duUHRyPFNWR1BhdGhTZWdM
aXN0U291cmNlPiBzb3VyY2UgPSBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6Y3JlYXRlKGFwcGVuZGVk
SXRlbUxpc3QpOworICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoU2Vn
TGlzdFNvdXJjZT4oYXBwZW5kZWRJdGVtTGlzdCk7CiAgICAgU1ZHUGF0aFBhcnNlciogcGFyc2Vy
ID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwogICAgIGJvb2wg
b2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdNb2RlLCBmYWxzZSk7
CiAgICAgcGFyc2VyLT5jbGVhbnVwKCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgYm9vbCBidWlsZFBh
dGhGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtLCBQYXRoJiByZXN1bHQp
CiAKICAgICBTVkdQYXRoQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCdWlsZGVyKHJl
c3VsdCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+IHNvdXJjZSA9IFNW
R1BhdGhCeXRlU3RyZWFtU291cmNlOjpjcmVhdGUoc3RyZWFtKTsKKyAgICBhdXRvIHNvdXJjZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KHN0cmVhbSk7CiAgICAg
U1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCks
IGJ1aWxkZXIpOwogICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNl
KE5vcm1hbGl6ZWRQYXJzaW5nKTsKICAgICBwYXJzZXItPmNsZWFudXAoKTsKQEAgLTE4MSwxMSAr
MTgxLDExIEBAIGJvb2wgYnVpbGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKFNWR1BhdGhC
eXRlU3RyZWFtKiBzdHJlYW0sIFNWR1BhdGhFbGVtZW50CiB7CiAgICAgQVNTRVJUKHN0cmVhbSk7
CiAgICAgaWYgKHN0cmVhbS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsgCisgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKiBidWlsZGVyID0g
Z2xvYmFsU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKGVsZW1lbnQsIHBhcnNpbmdNb2RlID09IE5vcm1h
bGl6ZWRQYXJzaW5nID8gUGF0aFNlZ05vcm1hbGl6ZWRSb2xlIDogUGF0aFNlZ1VuYWx0ZXJlZFJv
bGUsIHJlc3VsdCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+IHNvdXJj
ZSA9IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpjcmVhdGUoc3RyZWFtKTsKKyAgICBhdXRvIHNv
dXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KHN0cmVhbSk7
CiAgICAgU1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2Uu
Z2V0KCksIGJ1aWxkZXIpOwogICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9t
U291cmNlKHBhcnNpbmdNb2RlKTsKICAgICBwYXJzZXItPmNsZWFudXAoKTsKQEAgLTE5NiwxMSAr
MTk2LDExIEBAIGJvb2wgYnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVh
bSogc3RyZWFtLCBTdHJpbmcmIHJlc3VsdCwgUGF0aFBhCiB7CiAgICAgQVNTRVJUKHN0cmVhbSk7
CiAgICAgaWYgKHN0cmVhbS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsgCisgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgU1ZHUGF0aFN0cmluZ0J1aWxkZXIqIGJ1aWxkZXIgPSBn
bG9iYWxTVkdQYXRoU3RyaW5nQnVpbGRlcigpOwogCi0gICAgT3duUHRyPFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlPiBzb3VyY2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHN0cmVh
bSk7CisgICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlPihzdHJlYW0pOwogICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1Bh
dGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKICAgICBib29sIG9rID0gcGFyc2VyLT5w
YXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5nTW9kZSk7CiAgICAgcmVzdWx0ID0gYnVpbGRl
ci0+cmVzdWx0KCk7CkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBidWlsZFN0cmluZ0Zyb21TVkdQ
YXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU3RyaW5nJiByZXN1bHQsIFAK
IAogICAgIFNWR1BhdGhTdHJpbmdCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFN0cmlu
Z0J1aWxkZXIoKTsKIAotICAgIE93blB0cjxTVkdQYXRoU2VnTGlzdFNvdXJjZT4gc291cmNlID0g
U1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OmNyZWF0ZShsaXN0KTsKKyAgICBhdXRvIHNvdXJjZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aFNlZ0xpc3RTb3VyY2U+KGxpc3QpOwogICAgIFNWR1BhdGhQ
YXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVy
KTsKICAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5n
TW9kZSk7CiAgICAgcmVzdWx0ID0gYnVpbGRlci0+cmVzdWx0KCk7CkBAIC0yMzMsNyArMjMzLDcg
QEAgYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGQs
IFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRl
ciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihyZXN1bHQpOwogCi0g
ICAgT3duUHRyPFNWR1BhdGhTdHJpbmdTb3VyY2U+IHNvdXJjZSA9IFNWR1BhdGhTdHJpbmdTb3Vy
Y2U6OmNyZWF0ZShkKTsKKyAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0
aFN0cmluZ1NvdXJjZT4oZCk7CiAgICAgU1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZH
UGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwogICAgIGJvb2wgb2sgPSBwYXJzZXIt
PnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdNb2RlKTsKICAgICBwYXJzZXItPmNsZWFu
dXAoKTsKQEAgLTI1Myw4ICsyNTMsOCBAQCBib29sIGJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0
cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogZnJvbVN0cmVhbSwgU1ZHUGF0aEJ5dGVTdAogCiAgICAg
U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyKHJlc3VsdCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+
IGZyb21Tb3VyY2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGZyb21TdHJlYW0p
OwotICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gdG9Tb3VyY2UgPSBTVkdQYXRo
Qnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHRvU3RyZWFtKTsKKyAgICBhdXRvIGZyb21Tb3VyY2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPihmcm9tU3RyZWFtKTsK
KyAgICBhdXRvIHRvU291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbVNv
dXJjZT4odG9TdHJlYW0pOwogICAgIFNWR1BhdGhCbGVuZGVyKiBibGVuZGVyID0gZ2xvYmFsU1ZH
UGF0aEJsZW5kZXIoKTsKICAgICBib29sIG9rID0gYmxlbmRlci0+YmxlbmRBbmltYXRlZFBhdGgo
cHJvZ3Jlc3MsIGZyb21Tb3VyY2UuZ2V0KCksIHRvU291cmNlLmdldCgpLCBidWlsZGVyKTsKICAg
ICBibGVuZGVyLT5jbGVhbnVwKCk7CkBAIC0yNzMsOCArMjczLDggQEAgYm9vbCBhZGRUb1NWR1Bh
dGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBmcm9tU3RyZWFtLCBTVkdQYXRoQnl0ZVN0
cmVhbSogYnkKICAgICBhdXRvIGZyb21TdHJlYW1Db3B5ID0gZnJvbVN0cmVhbS0+Y29weSgpOwog
ICAgIGZyb21TdHJlYW0tPmNsZWFyKCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2U+IGZyb21Tb3VyY2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGZyb21T
dHJlYW1Db3B5LmdldCgpKTsKLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+IGJ5
U291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZShieVN0cmVhbSk7CisgICAg
YXV0byBmcm9tU291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJj
ZT4oZnJvbVN0cmVhbUNvcHkuZ2V0KCkpOworICAgIGF1dG8gYnlTb3VyY2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPihieVN0cmVhbSk7CiAgICAgU1ZHUGF0aEJs
ZW5kZXIqIGJsZW5kZXIgPSBnbG9iYWxTVkdQYXRoQmxlbmRlcigpOwogICAgIGJvb2wgb2sgPSBi
bGVuZGVyLT5hZGRBbmltYXRlZFBhdGgoZnJvbVNvdXJjZS5nZXQoKSwgYnlTb3VyY2UuZ2V0KCks
IGJ1aWxkZXIsIHJlcGVhdENvdW50KTsKICAgICBibGVuZGVyLT5jbGVhbnVwKCk7CkBAIC0yOTAs
NyArMjkwLDcgQEAgYm9vbCBnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJl
YW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIHN0cmVhbSwgZmxvYXQKICAgICBQYXRoVHJhdmVyc2FsU3Rh
dGUgdHJhdmVyc2FsU3RhdGUoUGF0aFRyYXZlcnNhbFN0YXRlOjpUcmF2ZXJzYWxTZWdtZW50QXRM
ZW5ndGgpOwogICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9i
YWxTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKHRyYXZlcnNhbFN0YXRlLCBsZW5ndGgpOwog
Ci0gICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPiBzb3VyY2UgPSBTVkdQYXRoQnl0
ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHN0cmVhbSk7CisgICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPihzdHJlYW0pOwogICAgIFNWR1BhdGhQ
YXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVy
KTsKICAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShOb3JtYWxp
emVkUGFyc2luZyk7CiAgICAgcGF0aFNlZyA9IGJ1aWxkZXItPnBhdGhTZWdtZW50SW5kZXgoKTsK
QEAgLTMwMywxMSArMzAzLDExIEBAIGJvb2wgZ2V0VG90YWxMZW5ndGhPZlNWR1BhdGhCeXRlU3Ry
ZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBzdHJlYW0sIGZsb2F0JiB0b3RhbExlCiAgICAgQVNTRVJU
KHN0cmVhbSk7CiAgICAgaWYgKHN0cmVhbS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCisKICAgICBQYXRoVHJhdmVyc2FsU3RhdGUgdHJhdmVyc2FsU3RhdGUoUGF0aFRy
YXZlcnNhbFN0YXRlOjpUcmF2ZXJzYWxUb3RhbExlbmd0aCk7CiAgICAgU1ZHUGF0aFRyYXZlcnNh
bFN0YXRlQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXIodHJhdmVyc2FsU3RhdGUsIDApOwotICAgIAotICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZT4gc291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZShzdHJlYW0p
OworCisgICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlPihzdHJlYW0pOwogICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1Bh
dGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKICAgICBib29sIG9rID0gcGFyc2VyLT5w
YXJzZVBhdGhEYXRhRnJvbVNvdXJjZShOb3JtYWxpemVkUGFyc2luZyk7CiAgICAgdG90YWxMZW5n
dGggPSBidWlsZGVyLT50b3RhbExlbmd0aCgpOwpAQCAtMzIwLDExICszMjAsMTEgQEAgYm9vbCBn
ZXRQb2ludEF0TGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogc3Ry
ZWFtLCBmbG9hdCBsZW5ndGgKICAgICBBU1NFUlQoc3RyZWFtKTsKICAgICBpZiAoc3RyZWFtLT5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIFBhdGhUcmF2ZXJz
YWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFBvaW50
QXRMZW5ndGgpOwogICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIqIGJ1aWxkZXIgPSBn
bG9iYWxTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKHRyYXZlcnNhbFN0YXRlLCBsZW5ndGgp
OwotICAgIAotICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gc291cmNlID0gU1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZShzdHJlYW0pOworCisgICAgYXV0byBzb3VyY2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPihzdHJlYW0pOwogICAg
IFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgp
LCBidWlsZGVyKTsKICAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJj
ZShOb3JtYWxpemVkUGFyc2luZyk7CiAgICAgcG9pbnQgPSBidWlsZGVyLT5jdXJyZW50UG9pbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCmluZGV4IGUyZTY2N2M0N2IzMmIw
ZWYwOTNjMTU1NWU1NjAwMzllOWFmNDg3YzMuLjcxNTdhOThhZWFiYTBlMTNhZGE1ODUxN2RmZDg5
MGUxY2E4NGEyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0
aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaApAQCAtMjMs
NyArMjMsNiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgi
CiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKaW5kZXgg
YjE5ODNmNDA5MTUzOTY0ODVlNGE5OTE3MDBiNTMzYjIyN2NiZGE2Yy4uOWYzOTk1ZmNlNmNmOTIz
YmJjYzVjNTM0M2VhYTVjN2Y5ZmMzMWJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgdm9pZCBT
TUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUoU1ZHU01JTEVsZW1lbnQqIGFuaW1hdGlvbiwgU1ZH
RWxlbWVudCogdGFyZ2V0LAogI2VuZGlmCiAKICAgICBFbGVtZW50QXR0cmlidXRlUGFpciBrZXko
dGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKTsKLSAgICBPd25QdHI8QW5pbWF0aW9uc1ZlY3Rvcj4mIHNj
aGVkdWxlZCA9IG1fc2NoZWR1bGVkQW5pbWF0aW9ucy5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0b3I+JiBzY2hlZHVs
ZWQgPSBtX3NjaGVkdWxlZEFuaW1hdGlvbnMuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghc2NoZWR1bGVkKQotICAgICAgICBzY2hlZHVsZWQgPSBhZG9wdFB0cihu
ZXcgQW5pbWF0aW9uc1ZlY3Rvcik7CisgICAgICAgIHNjaGVkdWxlZCA9IHN0ZDo6bWFrZV91bmlx
dWU8QW5pbWF0aW9uc1ZlY3Rvcj4oKTsKICAgICBBU1NFUlQoIXNjaGVkdWxlZC0+Y29udGFpbnMo
YW5pbWF0aW9uKSk7CiAgICAgc2NoZWR1bGVkLT5hcHBlbmQoYW5pbWF0aW9uKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5oCmluZGV4IDI5
YTk1MTI2NGJjZjliNzk4YTYyMzA2MTliYWJhYjk0NzM5OGViZTIuLjgxZDE5NGUyYTM0Yjg1ZTE2
ZTA3MDYxMTE1MTUzNGZjZTI2ZTM2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU01JTFRpbWVDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHR5cGVkZWYgcGFpcjxTVkdFbGVtZW50KiwgUXVhbGlmaWVkTmFtZT4gRWxlbWVudEF0dHJp
YnV0ZVBhaXI7CiAgICAgdHlwZWRlZiBWZWN0b3I8U1ZHU01JTEVsZW1lbnQqPiBBbmltYXRpb25z
VmVjdG9yOwotICAgIHR5cGVkZWYgSGFzaE1hcDxFbGVtZW50QXR0cmlidXRlUGFpciwgT3duUHRy
PEFuaW1hdGlvbnNWZWN0b3I+PiBHcm91cGVkQW5pbWF0aW9uc01hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8RWxlbWVudEF0dHJpYnV0ZVBhaXIsIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25zVmVj
dG9yPj4gR3JvdXBlZEFuaW1hdGlvbnNNYXA7CiAgICAgR3JvdXBlZEFuaW1hdGlvbnNNYXAgbV9z
Y2hlZHVsZWRBbmltYXRpb25zOwogCiAgICAgU1ZHU1ZHRWxlbWVudCogbV9vd25lclNWR0VsZW1l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBiNTE0MDNh
ZjlhYmUxNDEwOGU1ZDZiYzBmODc0OTNiY2ZmMjY0NTJkLi4xNjg4OGRkYjk1MTg4YWRhNDI3ZTJm
ODEyNmVhYWZhMTY1Y2I3YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgU1ZHSW1hZ2U6On5TVkdJbWFnZSgpCiB7CiAgICAgaWYg
KG1fcGFnZSkgewogICAgICAgICAvLyBTdG9yZSBtX3BhZ2UgaW4gYSBsb2NhbCB2YXJpYWJsZSwg
Y2xlYXJpbmcgbV9wYWdlLCBzbyB0aGF0IFNWR0ltYWdlQ2hyb21lQ2xpZW50IGtub3dzIHdlJ3Jl
IGRlc3RydWN0ZWQuCi0gICAgICAgIE93blB0cjxQYWdlPiBjdXJyZW50UGFnZSA9IG1fcGFnZS5y
ZWxlYXNlKCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjdXJyZW50UGFnZSA9IHN0
ZDo6bW92ZShtX3BhZ2UpOwogICAgICAgICBjdXJyZW50UGFnZS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkuZnJhbWVEZXRhY2hlZCgpOyAvLyBCcmVhayBib3RoIHRoZSBsb2FkZXIgYW5kIHZpZXcgcmVm
ZXJlbmNlcyB0byB0aGUgZnJhbWUKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBib29sIFNW
R0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBpZiAoYWxsRGF0
YVJlY2VpdmVkKSB7CiAgICAgICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOwogICAg
ICAgICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhwYWdlQ2xpZW50cyk7Ci0gICAgICAgIG1fY2hyb21l
Q2xpZW50ID0gYWRvcHRQdHIobmV3IFNWR0ltYWdlQ2hyb21lQ2xpZW50KHRoaXMpKTsKKyAgICAg
ICAgbV9jaHJvbWVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50
Pih0aGlzKTsKICAgICAgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGll
bnQuZ2V0KCk7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGlu
ZyBpdHNlbGYsIHdlIG1pZ2h0IGxlYWsgdGhlIHdvcmxkLgpAQCAtMzU1LDcgKzM1NSw3IEBAIGJv
b2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAv
LyBUaGlzIHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRv
IGxvYWQgb3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUg
bm93LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBh
IHRvcC1sZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9wYWdlID0gYWRvcHRQdHIobmV3IFBhZ2Uo
cGFnZUNsaWVudHMpKTsKKyAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihw
YWdlQ2xpZW50cyk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQo
ZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7
CkBAIC0zNzksNyArMzc5LDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIG1faW50cmluc2ljU2l6ZSA9IGNvbnRhaW5lclNpemUoKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gbV9wYWdlOworICAgIHJldHVybiAhIW1fcGFnZTsKIH0KIAog
U3RyaW5nIFNWR0ltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDg4Njc2Y2FhNzcyYmQ2YzQyMTEzYTkwMjRlYjIx
ZGRhNTUwMWExMTAuLmM0MWM5NDNhYTQxZGQ0YTA4YjI0MjU1ZGI4MWZkNmNmYWE2NDI5NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC05Niw4ICs5Niw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwKICAgICAgICAgQ29tcG9z
aXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAgT3duUHRyPFNWR0ltYWdlQ2hy
b21lQ2xpZW50PiBtX2Nocm9tZUNsaWVudDsKLSAgICBPd25QdHI8UGFnZT4gbV9wYWdlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdJbWFnZUNocm9tZUNsaWVudD4gbV9jaHJvbWVDbGllbnQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IG1fcGFnZTsKICAgICBJbnRTaXplIG1faW50cmluc2lj
U2l6ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5o
CmluZGV4IDk3ODJhNmMxMDdiOTdlZjZjNjMwMDFlYWVkOGQ1ODRmZDQwMGE1ZDQuLjNlMDAwZDNh
YzVlNmM5Yjk2M2E3YjhiMjBhNTY2M2ViYzA4NGQ1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDEzICszOSw5IEBAIGNsYXNzIFJlbmRlck9iamVjdDsK
IGNsYXNzIFNWR0ltYWdlQ2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgorICAgIGV4cGxpY2l0IFNWR0ltYWdlQ2FjaGUoU1ZHSW1hZ2UqKTsKICAgICB+U1ZHSW1h
Z2VDYWNoZSgpOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHSW1hZ2VDYWNoZT4gY3JlYXRl
KFNWR0ltYWdlKiBpbWFnZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZH
SW1hZ2VDYWNoZShpbWFnZSkpOwotICAgIH0KLQogICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50Kik7CiAKICAgICB2b2lkIHNldENvbnRhaW5lclNp
emVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIGNvbnN0IEludFNpemUmLCBm
bG9hdCk7CkBAIC01NSw4ICs1MCw2IEBAIHB1YmxpYzoKICAgICBJbWFnZSogaW1hZ2VGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogcHJpdmF0ZToKLSAgICBTVkdJbWFnZUNhY2hl
KFNWR0ltYWdlKik7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1hZ2VDbGll
bnQqLCBSZWZQdHI8U1ZHSW1hZ2VGb3JDb250YWluZXI+PiBJbWFnZUZvckNvbnRhaW5lck1hcDsK
IAogICAgIFNWR0ltYWdlKiBtX3N2Z0ltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAppbmRleCA0
ZDVhYzAyZmIyODA4ZWM3ODZkZjRmOGE5M2RkODE2NTFjYzU3MWI2Li4yYzM5NDliZWQzOWJmOThh
YWFjYTAyZTgyOGQxMzA3MjFmY2ZhODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcApAQCAtMjQs
NyArMjQsNiBAQAogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgogI2luY2x1ZGUg
IlNWR1Byb3BlcnR5SW5mby5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTQsOSArNTMsOSBAQCB2b2lkIFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXA6OmFkZFByb3BlcnR5KGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIGEgc2Vjb25kIGhhc2gg
dGFibGUgbG9va3VwLCBidXQgd2l0aCBIYXNoTWFwOjphZGQgd2UgY291bGQgaW5zdGVhZCBkbyBv
bmx5IG9uZS4KLSAgICBPd25QdHI8UHJvcGVydGllc1ZlY3Rvcj4gdmVjdG9yID0gYWRvcHRQdHIo
bmV3IFByb3BlcnRpZXNWZWN0b3IpOworICAgIGF1dG8gdmVjdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9wZXJ0aWVzVmVjdG9yPigpOwogICAgIHZlY3Rvci0+YXBwZW5kKGluZm8pOwotICAgIG1f
bWFwLnNldChpbmZvLT5hdHRyaWJ1dGVOYW1lLCB2ZWN0b3IucmVsZWFzZSgpKTsKKyAgICBtX21h
cC5zZXQoaW5mby0+YXR0cmlidXRlTmFtZSwgc3RkOjptb3ZlKHZlY3RvcikpOwogfQogCiB2b2lk
IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0
ZShTVkdFbGVtZW50KiBvd25lclR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+JiBwcm9wZXJ0aWVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5oCmluZGV4IDRiNGYyMzM0OGE0ZmMzNmIzODlmZjA0YzdhNTQ5NzkzMDNmODAw
ZDYuLjBiYTI0MjU0ZTNlYjJiOGFkZWJlZTkxZmZiY2ZkMjJjNzJhNmIyMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFNWR0Fu
aW1hdGVkUHJvcGVydHk+IGFuaW1hdGVkUHJvcGVydHkoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFNWR1Byb3BlcnR5
SW5mbyopOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8Y29uc3QgU1ZHUHJvcGVydHlJbmZvKj4gUHJv
cGVydGllc1ZlY3RvcjsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgT3duUHRy
PFByb3BlcnRpZXNWZWN0b3I+PiBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxQcm9wZXJ0aWVzVmVjdG9y
Pj4gQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOwogICAgIEF0dHJpYnV0ZVRvUHJvcGVydGllc01h
cCBtX21hcDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217127</attachid>
            <date>2013-11-16 10:19:25 -0800</date>
            <delta_ts>2013-11-19 09:20:39 -0800</delta_ts>
            <desc>v2</desc>
            <filename>bug-124382-20131116151822.patch</filename>
            <type>text/plain</type>
            <size>120044</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJkZTFjOTkyMjA3M2Vi
OGM4ZWY0YjBkYjcwNjg5MDc4ODZmZTg3Yy4uMDU1MjRjNjdmNTk3ZWM4ZTE5OWVhYjcwMDY0MTk5
YTI3MzJiMTcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEzLTExLTE0ICBTZXJn
aW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1NW
R10gQ29udmVydCBPd25QdHIvUGFzc093blB0ciB0byBzdGQ6OnVuaXF1ZV9wdHIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDM4MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmaWxlcyBtb2RpZmll
ZCBhcmUgbW9zdGx5IHVuZGVyIFdlYkNvcmUvc3ZnLzsgaW4gYSBmZXcgY2FzZXMsIHNvbWUKKyAg
ICAgICAgImV4dGVybmFsIiBmaWxlcyBuZWVkZWQgY2hhbmdlcyBhcyB3ZWxsLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyBvbmVzLgorCisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxl
bWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xl
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHA6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkQm9vbGVhbi5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZENvbG9yLmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5oOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbi5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcDoK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcDoKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0Lmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkUGF0aC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUGF0aC5oOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
UG9pbnRMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFJlY3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Qu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRUeXBlLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaDoKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oOgorICAgICAg
ICAqIHN2Zy9TVkdGb250RGF0YS5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5jcHA6
CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoUGFyc2VyLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmg6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFV0
aWxpdGllcy5jcHA6CisgICAgICAgICogc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaDoKKwogMjAxMy0xMS0xNCAgQmVtIEpvbmVzLUJleSAg
PGJqb25lc2JlQGFkb2JlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByYW5nZXNJ
bnRlcnNlY3QobV9yZW5kZXJlci5waXhlbFNuYXBwZWRMb2dpY2FsVG9wRm9yRmxvYXQoZmxvYXRp
bmdPYmplY3QpLCBtX3JlbmRlcmVyLnBpeGVsU25hcHBlZExvZ2ljYWxCb3R0b21Gb3JGbG9hdChm
bG9hdGluZ09iamVjdCksIG1fbGluZVRvcCwgbV9saW5lQm90dG9tKSAuLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCg0NjMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCA2YTliNjZhMzgxOTU0MTMwOGMzNGJjZTY3N2M4
YTJjNmZhZjRmNGE4Li4yM2VlMDE5YjY3OWY2MDVlMzNlODU5MDBkYTVlZjYxMDYzNTRlYzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE0Niw3ICsxNDYs
NyBAQCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm9u
dERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgICAgICAgICAgICAgICAgICAgICAgbV9z
dmdGb250RmFjZUVsZW1lbnQgPSBmaXJzdEZvbnRGYWNlOwogICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgZm9udERhdGEgPSBTaW1wbGVGb250RGF0YTo6Y3JlYXRl
KFNWR0ZvbnREYXRhOjpjcmVhdGUoZmlyc3RGb250RmFjZSksIGZvbnREZXNjcmlwdGlvbi5jb21w
dXRlZFBpeGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMpOworICAgICAg
ICAgICAgICAgICAgICBmb250RGF0YSA9IFNpbXBsZUZvbnREYXRhOjpjcmVhdGUoc3RkOjptYWtl
X3VuaXF1ZTxTVkdGb250RGF0YT4oZmlyc3RGb250RmFjZSksIGZvbnREZXNjcmlwdGlvbi5jb21w
dXRlZFBpeGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogI2VuZGlmCkBAIC0xNjIsNyArMTYyLDcg
QEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnRE
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAg
ICAgICAgLy8gSW4tRG9jdW1lbnQgU1ZHIEZvbnRzCiAgICAgICAgICAgICBpZiAobV9zdmdGb250
RmFjZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgZm9udERhdGEgPSBTaW1wbGVGb250RGF0YTo6
Y3JlYXRlKFNWR0ZvbnREYXRhOjpjcmVhdGUobV9zdmdGb250RmFjZUVsZW1lbnQuZ2V0KCkpLCBm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhldGljQm9sZCwgc3ludGhl
dGljSXRhbGljKTsKKyAgICAgICAgICAgICAgICBmb250RGF0YSA9IFNpbXBsZUZvbnREYXRhOjpj
cmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTVkdGb250RGF0YT4obV9zdmdGb250RmFjZUVsZW1lbnQu
Z2V0KCkpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhldGljQm9s
ZCwgc3ludGhldGljSXRhbGljKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDFkNzcwMjll
NTJhZmU4ZjJlNTIyZjY5NDhlYTIyZWJmNjM2OTkwNWEuLjk0ZDlhMDdmMDZkMWI0Y2ZiYWViZTI5
N2M4OThlMjYwZTc1ZDE5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpj
cmVhdGVJbWFnZSgpCiAjaWYgRU5BQkxFKFNWRykKICAgICBlbHNlIGlmIChtX3Jlc3BvbnNlLm1p
bWVUeXBlKCkgPT0gImltYWdlL3N2Zyt4bWwiKSB7CiAgICAgICAgIFJlZlB0cjxTVkdJbWFnZT4g
c3ZnSW1hZ2UgPSBTVkdJbWFnZTo6Y3JlYXRlKHRoaXMpOwotICAgICAgICBtX3N2Z0ltYWdlQ2Fj
aGUgPSBTVkdJbWFnZUNhY2hlOjpjcmVhdGUoc3ZnSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX3N2
Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KHN2Z0ltYWdlLmdl
dCgpKTsKICAgICAgICAgbV9pbWFnZSA9IHN2Z0ltYWdlLnJlbGVhc2UoKTsKICAgICB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggN2IzODhi
NGIxNDBiN2QwMGUxZDUyZDU3ZmZmODdhOGMyNmNkNjMzMC4uNDdhN2NmMzZkYWYwMmRmMTBjOTMx
OGViNjVlMjMwNTU5ZTkxMmE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEltYWdl
PiBtX2ltYWdlOwogI2lmIEVOQUJMRShTVkcpCi0gICAgT3duUHRyPFNWR0ltYWdlQ2FjaGU+IG1f
c3ZnSW1hZ2VDYWNoZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHSW1hZ2VDYWNoZT4gbV9zdmdJ
bWFnZUNhY2hlOwogI2VuZGlmCiAgICAgYm9vbCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9u
dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERh
dGEuY3BwCmluZGV4IDMyNTc0YTlmMmY3YTRlYjc1YmE1ZDEwNjZmYTRlYzkxNGZmMWI3YzkuLjMy
MzViNDBlZjUyZDE3MmY2YTZjNjdiNmJhNjJhNTMxMTA5ZDBhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAKQEAgLTY4LDkg
KzY4LDkgQEAgU2ltcGxlRm9udERhdGE6OlNpbXBsZUZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSwgYm9vbCBpc0N1c3QKICNlbmRpZgogfQogCi1TaW1wbGVGb250
RGF0YTo6U2ltcGxlRm9udERhdGEoUGFzc093blB0cjxBZGRpdGlvbmFsRm9udERhdGE+IGZvbnRE
YXRhLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYykKK1NpbXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YShzdGQ6OnVuaXF1ZV9wdHI8QWRk
aXRpb25hbEZvbnREYXRhPiBmb250RGF0YSwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGlj
Qm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiAgICAgOiBtX3BsYXRmb3JtRGF0YShGb250UGxh
dGZvcm1EYXRhKGZvbnRTaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMpKQotICAg
ICwgbV9mb250RGF0YShmb250RGF0YSkKKyAgICAsIG1fZm9udERhdGEoc3RkOjptb3ZlKGZvbnRE
YXRhKSkKICAgICAsIG1fdHJlYXRBc0ZpeGVkUGl0Y2goZmFsc2UpCiAgICAgLCBtX2lzQ3VzdG9t
Rm9udCh0cnVlKQogICAgICwgbV9pc0xvYWRpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAppbmRleCBlOWE1N2U2NTRkMTJi
ZTUxMTk1YWU2MDNmNDU0YWM1NDIwNzM0ODNjLi40NWEwZjU1ZmEwOTUyZTlmYTE3MWQ4MDI3Y2Yy
YTU4OWYyNDQ5MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaW1wbGVGb250RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NpbXBsZUZvbnREYXRhLmgKQEAgLTg1LDkgKzg1LDkgQEAgcHVibGljOgogICAgIH0KIAogICAg
IC8vIFVzZWQgdG8gY3JlYXRlIFNWRyBGb250cy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaW1w
bGVGb250RGF0YT4gY3JlYXRlKFBhc3NPd25QdHI8QWRkaXRpb25hbEZvbnREYXRhPiBmb250RGF0
YSwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGNyZWF0ZShzdGQ6OnVu
aXF1ZV9wdHI8QWRkaXRpb25hbEZvbnREYXRhPiBmb250RGF0YSwgZmxvYXQgZm9udFNpemUsIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNpbXBsZUZvbnREYXRhKGZvbnREYXRhLCBmb250U2l6ZSwgc3lu
dGhldGljQm9sZCwgc3ludGhldGljSXRhbGljKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2ltcGxlRm9udERhdGEoc3RkOjptb3ZlKGZvbnREYXRhKSwgZm9udFNpemUsIHN5bnRoZXRp
Y0JvbGQsIHN5bnRoZXRpY0l0YWxpYykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflNpbXBsZUZv
bnREYXRhKCk7CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcygpIHsgcmV0dXJuIG1fZm9udE1ldHJpY3M7IH0KICAgICBjb25zdCBGb250TWV0
cmljcyYgZm9udE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRNZXRyaWNzOyB9CiAgICAg
ZmxvYXQgc2l6ZVBlclVuaXQoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybURhdGEoKS5zaXplKCkg
LyAoZm9udE1ldHJpY3MoKS51bml0c1BlckVtKCkgPyBmb250TWV0cmljcygpLnVuaXRzUGVyRW0o
KSA6IDEpOyB9Ci0gICAgCisKICAgICBmbG9hdCBtYXhDaGFyV2lkdGgoKSBjb25zdCB7IHJldHVy
biBtX21heENoYXJXaWR0aDsgfQogICAgIHZvaWQgc2V0TWF4Q2hhcldpZHRoKGZsb2F0IG1heENo
YXJXaWR0aCkgeyBtX21heENoYXJXaWR0aCA9IG1heENoYXJXaWR0aDsgfQogCkBAIC0xNjcsNyAr
MTY3LDcgQEAgcHVibGljOgogICAgIFBpdGNoIHBpdGNoKCkgY29uc3QgeyByZXR1cm4gbV90cmVh
dEFzRml4ZWRQaXRjaCA/IEZpeGVkUGl0Y2ggOiBWYXJpYWJsZVBpdGNoOyB9CiAKICAgICBBZGRp
dGlvbmFsRm9udERhdGEqIGZvbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9mb250RGF0YS5nZXQo
KTsgfQotICAgIGJvb2wgaXNTVkdGb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGF0YTsgfQor
ICAgIGJvb2wgaXNTVkdGb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGF0YSAhPSBudWxscHRy
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21Gb250KCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9pc0N1c3RvbUZvbnQ7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KQEAgLTIyMywxMyArMjIzLDEzIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYsIGJvb2wgaXNDdXN0b21Gb250ID0gZmFsc2UsIGJvb2wgaXNMb2FkaW5nID0gZmFsc2Us
IGJvb2wgaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjayA9IGZhbHNlKTsKIAotICAgIFNpbXBsZUZv
bnREYXRhKFBhc3NPd25QdHI8QWRkaXRpb25hbEZvbnREYXRhPiAsIGZsb2F0IGZvbnRTaXplLCBi
b29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKKyAgICBTaW1wbGVGb250
RGF0YShzdGQ6OnVuaXF1ZV9wdHI8QWRkaXRpb25hbEZvbnREYXRhPiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgdm9pZCBw
bGF0Zm9ybUluaXQoKTsKICAgICB2b2lkIHBsYXRmb3JtR2x5cGhJbml0KCk7CiAgICAgdm9pZCBw
bGF0Zm9ybUNoYXJXaWR0aEluaXQoKTsKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwotICAg
IAorCiAgICAgdm9pZCBpbml0Q2hhcldpZHRocygpOwogCiAgICAgUGFzc1JlZlB0cjxTaW1wbGVG
b250RGF0YT4gY3JlYXRlU2NhbGVkRm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgZmxv
YXQgc2NhbGVGYWN0b3IpIGNvbnN0OwpAQCAtMjQ1LDkgKzI0NSw5IEBAIHByaXZhdGU6CiAgICAg
Rm9udE1ldHJpY3MgbV9mb250TWV0cmljczsKICAgICBmbG9hdCBtX21heENoYXJXaWR0aDsKICAg
ICBmbG9hdCBtX2F2Z0NoYXJXaWR0aDsKLSAgICAKKwogICAgIEZvbnRQbGF0Zm9ybURhdGEgbV9w
bGF0Zm9ybURhdGE7Ci0gICAgT3duUHRyPEFkZGl0aW9uYWxGb250RGF0YT4gbV9mb250RGF0YTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWRkaXRpb25hbEZvbnREYXRhPiBtX2ZvbnREYXRhOwogCiAg
ICAgbXV0YWJsZSBPd25QdHI8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+IG1fZ2x5cGhUb0Jv
dW5kc01hcDsKICAgICBtdXRhYmxlIEdseXBoTWV0cmljc01hcDxmbG9hdD4gbV9nbHlwaFRvV2lk
dGhNYXA7CkBAIC0yNTUsMTQgKzI1NSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV90cmVhdEFz
Rml4ZWRQaXRjaDsKICAgICBib29sIG1faXNDdXN0b21Gb250OyAgLy8gV2hldGhlciBvciBub3Qg
d2UgYXJlIGN1c3RvbSBmb250IGxvYWRlZCB2aWEgQGZvbnQtZmFjZQogICAgIGJvb2wgbV9pc0xv
YWRpbmc7IC8vIFdoZXRoZXIgb3Igbm90IHRoaXMgY3VzdG9tIGZvbnQgaXMgc3RpbGwgaW4gdGhl
IGFjdCBvZiBsb2FkaW5nLgotICAgIAorCiAgICAgYm9vbCBtX2lzVGV4dE9yaWVudGF0aW9uRmFs
bGJhY2s7CiAgICAgYm9vbCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2s7CiAjaWYgRU5BQkxF
KE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgIFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gbV92
ZXJ0aWNhbERhdGE7CiAjZW5kaWYKICAgICBib29sIG1faGFzVmVydGljYWxHbHlwaHM7Ci0gICAg
CisKICAgICBHbHlwaCBtX3NwYWNlR2x5cGg7CiAgICAgZmxvYXQgbV9zcGFjZVdpZHRoOwogICAg
IEdseXBoIG1femVyb0dseXBoOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgICAgICBtdXRhYmxlIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiBjb21wb3NpdGVGb250UmVmZXJlbmNlczsKICNlbmRpZgotICAgICAgICAKKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIERlcml2ZWRGb250RGF0YShib29sIGN1c3RvbSkKICAgICAgICAgICAg
IDogZm9yQ3VzdG9tRm9udChjdXN0b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCmluZGV4IGQ2YzNj
MmY2NGJlNzk5ZWVlZDcwZjYwYjY2YTE4MjVhOTM5OGExMTQuLjk5YzVlMWE1MmVjNDdjNTE1NTc1
NDBkMmI4OTJjODY4Y2ZiMmFhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCkBAIC0xNzksNyAr
MTc5LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNvdXJj
ZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPd25QdHI8U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpTVkdQZW5kaW5nRWxlbWVudHM+IGNsaWVudHMgPSBleHRlbnNpb25zLnJlbW92ZVBl
bmRpbmdSZXNvdXJjZShtX2lkKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpTVkdQZW5kaW5nRWxlbWVudHM+IGNsaWVudHMgPSBleHRlbnNpb25zLnJlbW92ZVBl
bmRpbmdSZXNvdXJjZShtX2lkKTsKIAogICAgIC8vIENhY2hlIHVzIHdpdGggdGhlIG5ldyBpZC4K
ICAgICBleHRlbnNpb25zLmFkZFJlc291cmNlKG1faWQsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKaW5kZXggNjk5MDY2MzExZDU4MjIyMmE5OGZjNjc2ZDA5
ZTQ5NGE1YjY5YWMwMi4uNGFhYjVlMWE5ZjVmYTkyYjJlNTEyYzFkNmM1YTE3ZmE4Y2U3NzQyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCkBAIC0zMjUsMTQgKzMy
NSwxNCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjbGVhckFuaW1hdGVkVHlwZShTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXRhcmdldEVs
ZW1lbnQpIHsKLSAgICAgICAgbV9hbmltYXRlZFR5cGUuY2xlYXIoKTsKKyAgICAgICAgbV9hbmlt
YXRlZFR5cGUgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1f
YW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBDU1MgcHJvcGVydGll
cyBhbmltYXRpb24gY29kZS1wYXRoLgogICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eUZyb21UYXJn
ZXRBbmRJbnN0YW5jZXModGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSgpKTsKLSAgICAgICAg
bV9hbmltYXRlZFR5cGUuY2xlYXIoKTsKKyAgICAgICAgbV9hbmltYXRlZFR5cGUgPSBudWxscHRy
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBTVkdB
bmltYXRlRWxlbWVudDo6Y2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkKICAgICB9CiAKICAgICBtX2FuaW1hdGVkUHJvcGVydGllcy5jbGVhcigpOwotICAgIG1fYW5p
bWF0ZWRUeXBlLmNsZWFyKCk7CisgICAgbV9hbmltYXRlZFR5cGUgPSBudWxscHRyOwogfQogCiB2
b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCkBAIC00MzQsMTAg
KzQzNCwxMCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpzZXRBdHRyaWJ1dGVOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50Ojpy
ZXNldEFuaW1hdGVkUHJvcGVydHlUeXBlKCkKIHsKICAgICBBU1NFUlQoIW1fYW5pbWF0ZWRUeXBl
KTsKLSAgICBtX2Zyb21UeXBlLmNsZWFyKCk7Ci0gICAgbV90b1R5cGUuY2xlYXIoKTsKLSAgICBt
X3RvQXRFbmRPZkR1cmF0aW9uVHlwZS5jbGVhcigpOwotICAgIG1fYW5pbWF0b3IuY2xlYXIoKTsK
KyAgICBtX2Zyb21UeXBlID0gbnVsbHB0cjsKKyAgICBtX3RvVHlwZSA9IG51bGxwdHI7CisgICAg
bV90b0F0RW5kT2ZEdXJhdGlvblR5cGUgPSBudWxscHRyOworICAgIG1fYW5pbWF0b3IgPSBudWxs
cHRyOwogICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSB0YXJnZXRFbGVtZW50KCkgPyBkZXRl
cm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KCkpIDogQW5pbWF0ZWRTdHJp
bmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKaW5kZXggMjIwNGQ0
MmEwMTg0ZmY4M2I1OTA4MTM1Y2UxYTE4ZTIyNjBjYWU2Yi4uZWM1ZDJlODZiMzVmM2IyYjEzNmU2
MTA4MDI3OGMxNzRiN2MyYjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iu
aCIKICNpbmNsdWRlICJTVkdBbmltYXRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAK
KwogY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKIAogY2xhc3MgU1ZHQW5pbWF0ZUVsZW1lbnQg
OiBwdWJsaWMgU1ZHQW5pbWF0aW9uRWxlbWVudCB7CkBAIC00MCw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlRWxlbWVudCgpOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0Owot
ICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTY3LDEzICs2NiwxMyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIE9WRVJSSURFOwogCi0gICAgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gbV9mcm9tVHlwZTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBtX3RvVHlwZTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3RvQXRFbmRPZkR1
cmF0aW9uVHlwZTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX2FuaW1hdGVkVHlwZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX2Zyb21UeXBlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IG1fdG9UeXBlOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IG1fdG9BdEVuZE9mRHVyYXRpb25UeXBlOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IG1fYW5pbWF0ZWRUeXBlOwogCiAgICAgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0IG1fYW5pbWF0ZWRQcm9wZXJ0aWVzOwotICAgIE93blB0
cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gbV9hbmltYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IG1fYW5pbWF0b3I7CiB9OwogCiB2b2lkIGlzU1ZH
QW5pbWF0ZUVsZW1lbnQoY29uc3QgU1ZHQW5pbWF0ZUVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNl
c3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAppbmRleCBkMWVlOTliNmMyMDcwZWYxMjU5
OWUzYWFjNDBkOWEzMDFlZGMyN2U1Li40ZTJlOTdiZTQ0YWQyOGQ2ZTI5NThlNGNhMDE4OWNjOGUx
OGIyZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCkBAIC0zMiw5
ICszMiw5IEBAIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvCiB7CiB9CiAKLVBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBl
ID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVBbmdsZUFuZEVudW1lcmF0aW9uKG5ldyBwYWlyPFNW
R0FuZ2xlLCB1bnNpZ25lZD4pOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRU
eXBlOjpjcmVhdGVBbmdsZUFuZEVudW1lcmF0aW9uKG5ldyBwYWlyPFNWR0FuZ2xlLCB1bnNpZ25l
ZD4pOwogICAgIHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgYW5pbWF0ZWRQYWlyID0gYW5pbWF0
ZWRUeXBlLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAKICAgICBTVkdBbmdsZSBhbmdsZTsKQEAg
LTQ0LDEwICs0NCwxMCBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRB
bmdsZUFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0CiAgICAgaWYgKG9yaWVudFR5
cGUgPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCiAgICAgICAgIGFuaW1hdGVkUGFpci5maXJzdCA9
IGFuZ2xlOwogCi0gICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGFuaW1hdGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1h
dGVkQW5nbGVBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0
aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykK
IHsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVBbmdsZUFuZEVudW1lcmF0aW9u
KGNvbnN0cnVjdEZyb21CYXNlVmFsdWVzPFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuaW1hdGVkRW51
bWVyYXRpb24+KGFuaW1hdGVkVHlwZXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRB
bmdsZS5oCmluZGV4IDUwNzI0YjAzNjRlZjI3YWIxZTA1MTUzN2MzODNhNDEwMTQ2MTVhMWQuLmYx
YjU5MzM3NDAwNWZmYTM4YTRkYjA5YTAzYjAwNTVmZjdiZjQ4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkQW5nbGUuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAgICAgU1ZHQW5p
bWF0ZWRBbmdsZUFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAg
ICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKKyAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdl
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAppbmRleCA3M2Y3MmU2YTJhY2I3OTY5OGYxMDgwZGM4
Yjk1NzNmZmU3NDVjNzBjLi5mZjFhY2RiOTVhZTFlZTU3MzIwZjA0M2I4NDZkMDFiZDlmZTVmYWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcApAQCAtMzEsMTQg
KzMxLDE0IEBAIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpTVkdBbmltYXRlZEJvb2xlYW5B
bmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltCiB7CiB9CiAKLVBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogewotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW10ZWRU
eXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVCb29sZWFuKG5ldyBib29sKTsKLSAgICBhbmlt
dGVkVHlwZS0+Ym9vbGVhbigpID0gKHN0cmluZyA9PSAidHJ1ZSIpOyAvLyB3YXQ/Ci0gICAgcmV0
dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlQm9vbGVhbihuZXcgYm9vbCk7CisgICAgYW5pbWF0ZWRUeXBlLT5i
b29sZWFuKCkgPSAoc3RyaW5nID09ICJ0cnVlIik7IC8vIHdhdD8KKyAgICByZXR1cm4gYW5pbWF0
ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRCb29s
ZWFuQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKIHsK
ICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVCb29sZWFuKGNvbnN0cnVjdEZyb21C
YXNlVmFsdWU8U1ZHQW5pbWF0ZWRCb29sZWFuPihhbmltYXRlZFR5cGVzKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKaW5kZXggNTdhMjQxZjAxMmU4OTczNWQzMzQ5
OWU5OWM5Y2NjOWY5MjJjZDMxZS4uNTBjOGFjMDg5MmEzMDBlMmU4OWNlOGQwMTE4MzJmZTkwZDVj
YzNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaApAQCAtNDEsOSAr
NDEsOSBAQCBjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciA6IHB1YmxpYyBTVkdBbmlt
YXRlZFR5cGVBbmltYXRvciB7CiBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0
b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdB
bmltYXRlZEJvb2xlYW5BbmltYXRvcigpIHsgfQotICAgIAotICAgIHZpcnR1YWwgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJS
SURFOworCisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFs
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZENvbG9yLmNwcAppbmRleCBmODFiODczMDFkNzlhNjAyZWE3NDIxMDJkY2Q2OTMy
MzYzYmU5ODRjLi4wY2MwMDI2MDQ5MWE0NzFmZDRiZWIyMGI2OTRmZTcwYmQ2OThlZGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCkBAIC0zNCwxMSArMzQsMTEgQEAg
U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IoU1ZHQW5p
bWF0aW9uRWxlbWVudCogYW5pbWF0aW8KIHsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5
cGU+IFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1h
dGVkQ29sb3JBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNWR0FuaW1h
dGVkVHlwZTo6Y3JlYXRlQ29sb3IobmV3IENvbG9yKTsKLSAgICBhbmltdGVkVHlwZS0+Y29sb3Io
KSA9IHN0cmluZy5pc0VtcHR5KCkgPyBDb2xvcigpIDogU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNv
bG9yU3RyaW5nKHN0cmluZyk7Ci0gICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKKyAg
ICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQ29sb3IobmV3IENv
bG9yKTsKKyAgICBhbmltYXRlZFR5cGUtPmNvbG9yKCkgPSBzdHJpbmcuaXNFbXB0eSgpID8gQ29s
b3IoKSA6IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhzdHJpbmcpOworICAgIHJl
dHVybiBhbmltYXRlZFR5cGU7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjph
ZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0
bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oCmluZGV4IGJiOGIyZmRkNTBhZDQw
YjAzNzU1Y2ZlMTYzN2VkYjIwNmQ3NjkyMzcuLjQ0OWVkZjAwYmQ1OWNjZWEyNTg2ZGQ3ODQ2NGM1
NjM5MTRkY2UxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENv
bG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuaApAQCAtMjQs
MTYgKzI0LDE2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCiBj
bGFzcyBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IgewogcHVibGljOgogICAgIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcihTVkdBbmltYXRp
b25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkQ29sb3JB
bmltYXRvcigpIHsgfQotICAgIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5
cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNz
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIHsgcmV0dXJuIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPigpOyB9CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3Qg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNl
VmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlw
ZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmNwcAppbmRleCAyZWM3ZTNmMDZjZDFjMWYxZTYzY2UzNmE2NmEx
ODhiM2FkMWJmY2JmLi44YzUwNzAwM2M4N2MzYmYwZDM4MDJjNmRhZWI3ODE5ZjgwYmQxZmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwCkBAIC0x
MDcsMTUgKzEwNywxNSBAQCBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6OlNWR0FuaW1h
dGVkRW51bWVyYXRpb25BbmltYXRvcihTVkdBbmltYXRpb25FbGVtZQogewogfQogCi1QYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpjb25zdHJ1Y3RG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIEFTU0VSVChtX2FuaW1hdGlv
bkVsZW1lbnQpOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IFNW
R0FuaW1hdGVkVHlwZTo6Y3JlYXRlRW51bWVyYXRpb24obmV3IHVuc2lnbmVkKTsKKyAgICBhdXRv
IGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlRW51bWVyYXRpb24obmV3IHVu
c2lnbmVkKTsKICAgICBhbmltYXRlZFR5cGUtPmVudW1lcmF0aW9uKCkgPSBlbnVtZXJhdGlvblZh
bHVlRm9yVGFyZ2V0QXR0cmlidXRlKG1fYW5pbWF0aW9uRWxlbWVudC0+dGFyZ2V0RWxlbWVudCgp
LCBtX2FuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwgc3RyaW5nKTsKLSAgICByZXR1
cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQog
Ci1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1h
dG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29u
c3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQogewogICAg
IHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUVudW1lcmF0aW9uKGNvbnN0cnVjdEZyb21C
YXNlVmFsdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcykpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgKaW5kZXggODQ0NzYwMjJi
YmQ3YzMxYjI3YWZmYWU3N2RiNzJmNDZkNGFhMzc4ZS4uNWYwNzBjODRjNjdkYzRhNjQ1NzdmOWM4
NDNhODk4ZjVkMWM2YzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkRW51bWVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbi5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZEVudW1l
cmF0aW9uQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2
aXJ0dWFsIH5TVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3IoKSB7IH0KIAotICAgIHZpcnR1
YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwor
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwCmluZGV4IDg5MDY3MzE5MGE0M2EyNTlmYTg2Yzk4
NmVjOTk2MmU4NWM2OTAyYTAuLmYyMmFkNDU2YjgxZTM4NjRhMjcxMWFiOGM3NGRiNjU5NmE3ZmQy
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwCkBAIC0zMywx
NCArMzMsMTQgQEAgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OlNWR0FuaW1hdGVkSW50ZWdl
ckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW0KIHsKIH0KIAotUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4gU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbXRl
ZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXIobmV3IGludCk7Ci0gICAgYW5p
bXRlZFR5cGUtPmludGVnZXIoKSA9IHN0cmluZy50b0ludFN0cmljdCgpOwotICAgIHJldHVybiBh
bmltdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZUludGVnZXIobmV3IGludCk7CisgICAgYW5pbWF0ZWRUeXBlLT5pbnRlZ2Vy
KCkgPSBzdHJpbmcudG9JbnRTdHJpY3QoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQog
Ci1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6
OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmIGFuaW1hdGVkVHlwZXMpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdB
bmltYXRlZEludGVnZXJBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKIHsKICAgICByZXR1cm4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyKGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZH
QW5pbWF0ZWRJbnRlZ2VyPihhbmltYXRlZFR5cGVzKSk7CiB9CkBAIC0xMDAsNyArMTAwLDcgQEAg
ZmxvYXQgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY28KICAgICBpbnQgdG8gPSB0b1N0cmluZy50b0ludFN0cmlj
dCgpOwogICAgIHJldHVybiBhYnModG8gLSBmcm9tKTsKIH0KLSAgICAKKwogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAppbmRl
eCAwYjU1YzEwZTkzYmE3ODM4ZGJkYjNjNmFkYmMxZDM1NDU1NjJmNDQxLi4wY2M0MTVkMWY2NDRj
OWQ1MmNmNTUyNzYzNzc0NzRiYmNhYjcwNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlci5oCkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkSW50ZWdlcihTVkdBbmltYXRpb25FbGVtZW50KiwgZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGludCBmcm9tSW50ZWdlciwgaW50IHRvSW50
ZWdlciwgaW50IHRvQXRFbmRPZkR1cmF0aW9uSW50ZWdlciwgaW50JiBhbmltYXRlZEludGVnZXIp
OwogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0Jik7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwgdm9pZCBh
bmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlci5jcHAKaW5kZXggYWYzN2RiMjI2MTM4MWE4YjA4OTYyMGEyZjc2YmZjNzQ0YmFk
ZmVlZi4uMjY0N2JmMmIwNTIzYTY2NDdkZDNlNWFmYzMzODU3NGY0NGFhMTZhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50
ZWdlci5jcHAKQEAgLTMzLDEwICszMywxMCBAQCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbQogewog
fQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXJBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNW
R0FuaW1hdGVkVHlwZTo6Y3JlYXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcihuZXcgcGFpcjxpbnQs
IGludD4pOwotICAgIHBhaXI8aW50LCBpbnQ+JiBhbmltYXRlZEludGVnZXIgPSBhbmltdGVkVHlw
ZS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZH
QW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKG5ldyBwYWlyPGludCwg
aW50Pik7CisgICAgcGFpcjxpbnQsIGludD4mIGFuaW1hdGVkSW50ZWdlciA9IGFuaW1hdGVkVHlw
ZS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwogICAgIGZsb2F0IGZpcnN0TnVtYmVyID0gMDsK
ICAgICBmbG9hdCBzZWNvbmROdW1iZXIgPSAwOwogICAgIGlmICghcGFyc2VOdW1iZXJPcHRpb25h
bE51bWJlcihzdHJpbmcsIGZpcnN0TnVtYmVyLCBzZWNvbmROdW1iZXIpKSB7CkBAIC00NiwxMCAr
NDYsMTAgQEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjb25zdHJ1Y3QKICAgICAgICAgYW5pbWF0ZWRJbnRlZ2Vy
LmZpcnN0ID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYoZmlyc3ROdW1iZXIpKTsKICAgICAgICAg
YW5pbWF0ZWRJbnRlZ2VyLnNlY29uZCA9IHN0YXRpY19jYXN0PGludD4ocm91bmRmKHNlY29uZE51
bWJlcikpOwogICAgIH0KLSAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJl
dHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdB
bmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0
aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykK
K3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlckFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQogewogICAgIHJldHVybiBTVkdB
bmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIoY29uc3RydWN0RnJvbUJh
c2VWYWx1ZXM8U1ZHQW5pbWF0ZWRJbnRlZ2VyLCBTVkdBbmltYXRlZEludGVnZXI+KGFuaW1hdGVk
VHlwZXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXIuaAppbmRleCBkODEwYmQzOGYzYzYwM2JmOThlYTk2OTNmYzc2
MDMzZGNhMWMxYjQxLi5jNDBjMTQ2NTQ5M2NmNjM2ZWU5MGE0ZjMyNGQ1MGQyNWM0NDhhNjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlci5oCkBAIC0zMSw5ICszMSw5IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yCiBw
dWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3IoU1ZH
QW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcigpIHsgfQotICAgIAotICAgIHZpcnR1YWwg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOworCisg
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYsIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5n
ZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCmluZGV4IDg4ZTdiOWY3ZmRmMGMyODIwMGQxMGI0YzBm
MDc2ZWMxMjZlMmM2NzEuLmNkOTc2NDE3YTdlZjY5YmQ2OGVjMWEyYWVkMWZlODE5M2VlYTgxNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcApAQCAtNDAsMTIgKzQw
LDEyIEBAIHN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoJiBzaGFyZWRTVkdMZW5ndGgoU1ZHTGVuZ3Ro
TW9kZSBtb2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlCiAgICAgcmV0dXJuIHNoYXJlZExlbmd0aDsK
IH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0
b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjb25zdHJ1
Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHJldHVybiBTVkdBbmlt
YXRlZFR5cGU6OmNyZWF0ZUxlbmd0aChuZXcgU1ZHTGVuZ3RoKG1fbGVuZ3RoTW9kZSwgc3RyaW5n
KSk7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aEFu
aW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKIHsKICAgICBy
ZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgoY29uc3RydWN0RnJvbUJhc2VWYWx1
ZTxTVkdBbmltYXRlZExlbmd0aD4oYW5pbWF0ZWRUeXBlcykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRMZW5ndGguaAppbmRleCA2MmExMTE5OTc3ZDA0NTU0MWY4OWFjYjZmNTI0YmI5
N2UzMDQ3NDVmLi4xY2U1ZDcxNjZkZmE0OGVjM2I3NmZhNzVmNTg5ODQ2NjRmYjBkMWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaApAQCAtNDMsOCArNDMsOCBAQCBwdWJs
aWM6CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50Kiwg
U1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoKSB7
IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCmluZGV4IGI2
YTIzYWNiYTJhODgzYmVkNThiY2E4YzZiNmUzYjUzNDE0MWIzNTUuLmEwMGExNWQ3OTk0NDk0YWI1
OTU3MGJmYzAwZjlkYzRmNjI1OWYxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZExlbmd0aExpc3QuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAgU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0QW5pbWF0b3I6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVs
ZW1lbnQKIHsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0g
ICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZVR5cGUgPSBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZUxlbmd0aExpc3QobmV3IFNWR0xlbmd0aExpc3QpOwotICAgIGFuaW1hdGVUeXBlLT5s
ZW5ndGhMaXN0KCkucGFyc2Uoc3RyaW5nLCBtX2xlbmd0aE1vZGUpOwotICAgIHJldHVybiBhbmlt
YXRlVHlwZS5yZWxlYXNlKCk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5
cGU6OmNyZWF0ZUxlbmd0aExpc3QobmV3IFNWR0xlbmd0aExpc3QpOworICAgIGFuaW1hdGVkVHlw
ZS0+bGVuZ3RoTGlzdCgpLnBhcnNlKHN0cmluZywgbV9sZW5ndGhNb2RlKTsKKyAgICByZXR1cm4g
YW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCitzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6c3RhcnRBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0
ZWRUeXBlcykKIHsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGhMaXN0
KGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PihhbmltYXRlZFR5
cGVzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgKaW5k
ZXggODZmZmFmZTdkMjJlNzQ0OWI0YzM3MzgzZWExYmI4OWI0MTA0OGVjZC4uMjczNjcyNjEzNjdm
OTlmMTQzZjY4ZWY3OTkwZDEzM2ZmMDI1ZjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZExlbmd0aExpc3QuaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBTVkdBbmltYXRlZExl
bmd0aExpc3RBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiBwdWJs
aWM6CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVu
dCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZExlbmd0aExpc3RBbmlt
YXRvcigpIHsgfQotICAgIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOworCisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5p
bWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSopOwogICAg
IHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmKTsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUq
LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIGZsb2F0
IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZyk7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0
aE1vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKaW5kZXgg
M2UxNTg5YzAzMDQwYzIzNGNhYjMyZTdlMzI5MmFkZTA2OWE4M2NmNy4uMzUxZjM5MzhhMGYzZDI1
ZmU4MDRkZjc1ZWEzNDJhNTdhN2NjZTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwCkBAIC0zMiwxNiArMzIsMTYgQEAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRv
cjo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXQK
IHsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyQW5p
bWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+IGFuaW10ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXIo
bmV3IGZsb2F0KTsKLSAgICBmbG9hdCYgYW5pbWF0ZWROdW1iZXIgPSBhbmltdGVkVHlwZS0+bnVt
YmVyKCk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51
bWJlcihuZXcgZmxvYXQpOworICAgIGZsb2F0JiBhbmltYXRlZE51bWJlciA9IGFuaW1hdGVkVHlw
ZS0+bnVtYmVyKCk7CiAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nLCBhbmlt
YXRlZE51bWJlcikpCiAgICAgICAgIGFuaW1hdGVkTnVtYmVyID0gMDsKLSAgICByZXR1cm4gYW5p
bXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpzdGFydEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmlt
YXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRO
dW1iZXJBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKIHsKICAgICByZXR1cm4gU1ZHQW5pbWF0
ZWRUeXBlOjpjcmVhdGVOdW1iZXIoY29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZE51
bWJlcj4oYW5pbWF0ZWRUeXBlcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1i
ZXIuaAppbmRleCA5NDJkNjQxYzM5ZDg2YWQwNjE1ZWJjODkyMzU4YjZiMDFmMDc1ZGUyLi5jYWU5
MmFmNDI2NTExODYzYWEwNDM4ZWNmMzcwMzg4MDhmZmI4MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuaApAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiAgICAgU1ZHQW5p
bWF0ZWROdW1iZXJBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwog
ICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoKSB7IH0KIAotICAgIHZpcnR1
YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwor
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCmluZGV4IDhiMmNhNGM4NWE2NzkwY2Q1
N2RlZjFkZWVkNzQ2YzQzNDBhNDQxODEuLjEwN2I3MDYzODRmNjZhZWRjNjk0ODA4NzFmZGE5MGM1
YjYxYjIwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3Qu
Y3BwCkBAIC0zMiwxNCArMzIsMTQgQEAgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OlNW
R0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQKIHsKIH0KIAot
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9y
Ojpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVf
cHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNvbnN0
cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxp
c3QobmV3IFNWR051bWJlckxpc3QpOwotICAgIGFuaW10ZWRUeXBlLT5udW1iZXJMaXN0KCkucGFy
c2Uoc3RyaW5nKTsKLSAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOworICAgIGF1dG8g
YW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXJMaXN0KG5ldyBTVkdO
dW1iZXJMaXN0KTsKKyAgICBhbmltYXRlZFR5cGUtPm51bWJlckxpc3QoKS5wYXJzZShzdHJpbmcp
OworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKK3N0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1h
dG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0JiBhbmltYXRlZFR5cGVzKQogewogICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZU51bWJlckxpc3QoY29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZE51bWJlckxp
c3Q+KGFuaW1hdGVkVHlwZXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZE51bWJlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlckxpc3QuaAppbmRleCBiNjQ0NTk5ZmQ0ZDkxOTkxYzMzN2RlNWVlZmVmMmMwMDc0MTY4YTYy
Li43MjY4OTQ1ZWYwZDVmMTQ5YWQ2M2ViODQyOWQ1YTMxZDI5ZjQ4NjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNz
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yIHsKIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcihTVkdB
bmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVk
TnVtYmVyTGlzdEFuaW1hdG9yKCkgeyB9Ci0gICAgCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CisKKyAgICB2aXJ0dWFsIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBz
dGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
Jik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxU
b0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0
ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwCmluZGV4IGRjNzk5OGNmYjQ1
ZDZlOWJhM2NlMmY5ODVlMzY5MTRhMzgzODhiYzcuLmQzYmUyMTkxN2VjODFiZDYwNzAxM2FlYTk1
YzIzZTJhMjRjOGZhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAKQEAgLTMzLDE4ICszMywxOCBAQCBTVkdBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OlNWR0FuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXJBbmltYXRvcgogewogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+
IGFuaW10ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXJPcHRpb25hbE51bWJl
cihuZXcgcGFpcjxmbG9hdCwgZmxvYXQ+KTsKLSAgICBwYWlyPGZsb2F0LCBmbG9hdD4mIGFuaW1h
dGVkTnVtYmVyID0gYW5pbXRlZFR5cGUtPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CisgICAgYXV0
byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlck9wdGlvbmFsTnVt
YmVyKG5ldyBwYWlyPGZsb2F0LCBmbG9hdD4pOworICAgIHBhaXI8ZmxvYXQsIGZsb2F0PiYgYW5p
bWF0ZWROdW1iZXIgPSBhbmltYXRlZFR5cGUtPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CiAgICAg
aWYgKCFwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0cmluZywgYW5pbWF0ZWROdW1iZXIuZmly
c3QsIGFuaW1hdGVkTnVtYmVyLnNlY29uZCkpIHsKICAgICAgICAgYW5pbWF0ZWROdW1iZXIuZmly
c3QgPSAwOwogICAgICAgICBhbmltYXRlZE51bWJlci5zZWNvbmQgPSAwOwogICAgIH0KLSAgICBy
ZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9
CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OnN0YXJ0
QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFu
aW1hdGVkVHlwZXMpCiB7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVy
T3B0aW9uYWxOdW1iZXIoY29uc3RydWN0RnJvbUJhc2VWYWx1ZXM8U1ZHQW5pbWF0ZWROdW1iZXIs
IFNWR0FuaW1hdGVkTnVtYmVyPihhbmltYXRlZFR5cGVzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaAppbmRleCA2NDcz
NGJjODE4OTZiYjRjMTg4ODhkYzA4MjA3MTllZjQ4YjZkMWU0Li5mMDFjY2U5NWQyYzMyOWIxYTc5
NmFmYTQwZDc0OGNhOTI1ODQ1YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmgKQEAgLTMxLDkgKzMxLDkgQEAgY2xhc3Mg
U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yIHsKIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2
aXJ0dWFsIH5TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3IoKSB7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKTsKKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCmluZGV4IDEzMjkwM2JmMTcyMWY0
NzA1OGE1NDI4ZGYzZmJkOGY0MGI1ZDBmOGUuLmIyMTBhZDk1ZjI4NzNlMTZjZmQxYjk4NTAzNWQw
MTk2NDVmMDc1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBh
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCkBAIC0z
MywxNCArMzMsMTQgQEAgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OlNWR0FuaW1hdGVkUGF0aEFu
aW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkUKIHsKIH0KIAotUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4gU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byBieXRlU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0
cmluZyhzdHJpbmcsIGJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgIHJl
dHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBhdGgoc3RkOjptb3ZlKGJ5dGVTdHJlYW0pKTsK
IH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9y
OjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0JiBhbmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCiB7CiAgICAgQVNTRVJUKGFu
aW1hdGVkVHlwZXMuc2l6ZSgpID49IDEpOwogICAgIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYqIHByb3BlcnR5ID0gY2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5cGU8
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4oYW5pbWF0ZWRUeXBlc1swXS5w
cm9wZXJ0aWVzWzBdLmdldCgpKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFNWR0FuaW1hdGVk
UGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVu
c2lnbmVkCiAgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+aXNBY2N1bXVsYXRlZCgpICYmIHJl
cGVhdENvdW50KQogICAgICAgICBhZGRUb1NWR1BhdGhCeXRlU3RyZWFtKGFuaW1hdGVkUGF0aCwg
dG9BdEVuZE9mRHVyYXRpb25QYXRoLCByZXBlYXRDb3VudCk7CiB9Ci0gICAKKwogZmxvYXQgU1ZH
QW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IFN1cHBvcnQgcGFjZWQgYW5pbWF0aW9ucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaAppbmRleCBhYzc3OWRhNDlhMDM5NmZhODcz
ODc3NzZiMGRmNGFhMWM3MDhiY2E4Li5jZDAwYTVkMjBmMTgzNjYxODFjZWEwODRhM2Y2MTM1MWE5
NTg3Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5oCkBAIC0zMiw4ICszMiw4
IEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZFBhdGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVt
ZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkUGF0aEFuaW1hdG9y
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1
Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRl
ZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29u
c3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHN0
b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
OwogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2
b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAKaW5kZXgg
M2Q3YWZjMjA4YWY3MTI4N2UyMzE5MjM4NTJlM2FlOWMwNGI0NDNlNC4uMDlmODU4ZDIxZDZmMWJk
N2Y2MGRkMWM4ZmU1YTQzOGFlYWYyZDM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRQb2ludExpc3QuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAgU1ZHQW5pbWF0ZWRQb2ludExp
c3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVt
ZW50KgogewogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQb2lu
dExpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykK
K3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5p
bWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZVBvaW50TGlzdChuZXcgU1ZHUG9pbnRMaXN0KTsKLSAgICBwb2ludHNMaXN0RnJvbVNWR0Rh
dGEoYW5pbXRlZFR5cGUtPnBvaW50TGlzdCgpLCBzdHJpbmcpOwotICAgIHJldHVybiBhbmltdGVk
VHlwZS5yZWxlYXNlKCk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZVBvaW50TGlzdChuZXcgU1ZHUG9pbnRMaXN0KTsKKyAgICBwb2ludHNMaXN0RnJvbVNW
R0RhdGEoYW5pbWF0ZWRUeXBlLT5wb2ludExpc3QoKSwgc3RyaW5nKTsKKyAgICByZXR1cm4gYW5p
bWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQ
b2ludExpc3RBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFu
aW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlw
ZXMpCiB7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUG9pbnRMaXN0KGNvbnN0
cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGFuaW1hdGVkVHlwZXMpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmgKaW5kZXggNGM4YjE4
NWFjMGI0NjliYmEyMmZkMjgxNmNlOTQ3MDVhNjJhMGQ2NC4uZDVkZTdlMDFmZGQ3MWFjMzA2MTNm
OTNjOTVjNTkxZjM5ZTRkNjc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkUG9pbnRMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9p
bnRMaXN0LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmlt
YXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiBwdWJsaWM6CiAgICAgU1ZH
QW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVu
dCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoKSB7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKTsKKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uY3BwCmluZGV4IGUyMDA2ODg4YThhM2IxNzFlOTMwOTEyOTIxYWI2ZDBiNDBlZDllY2Uu
LjRlMzg1MzU3NjlhMWYzNmNhYWZkYTg0NDlhM2E2NDgxZjJiMzI1NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCkBA
IC0yNSwyMCArMjUsMjAgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0Fu
aW1hdG9yOjpTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcihTVkdBbmltYXRp
b25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkK
ICAgICA6IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
bywgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCiB7CiB9CiAKLVBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcjo6
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9y
Ojpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
UHJlc2VydmVBc3BlY3RSYXRpbyhuZXcgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyk7CisgICAgYXV0
byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0
aW8obmV3IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8pOwogICAgIGFuaW1hdGVkVHlwZS0+cHJlc2Vy
dmVBc3BlY3RSYXRpbygpLnBhcnNlKHN0cmluZyk7Ci0gICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAotUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yOjpzdGFy
dEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBh
bmltYXRlZFR5cGVzKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCiB7CiAgICAg
cmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpbyhjb25zdHJ1
Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4oYW5pbWF0ZWRU
eXBlcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpby5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2Vy
dmVBc3BlY3RSYXRpby5oCmluZGV4IDVjOWI3NWU0OTY4MjE4NDI2MGVhOTBmZmI3M2Q4MmIzMzMw
YzlmN2IuLjJiZjY2NTgyMTFlMjg4ODNlZDU2ODdkMGVkMzk2YzhhOWUxNzE4ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgK
QEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5p
bWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogcHVibGljOgogICAgIFNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
LCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQW5pbWF0b3IoKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKKworICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZh
bChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFu
aW1hdGVkUHJvcGVydHlMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuY3Bw
CmluZGV4IDE2NzdhMjI0YzNmNzdjY2ViN2FiYWMxM2ZlNGM4N2FiM2JiYTM5ZDQuLjk2YWViYzA0
ZGI0Mzk5ODUxMTIzOGVkZjQ3OTBmNTVmNDdlMjc0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFJlY3QuY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0
b3I6OlNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlv
bkUKIHsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUmVjdEFu
aW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNvbnN0
cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVSZWN0KG5l
dyBGbG9hdFJlY3QpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVSZWN0KG5ldyBGbG9hdFJlY3QpOwogICAgIHBhcnNlUmVjdChzdHJpbmcsIGFuaW1hdGVk
VHlwZS0+cmVjdCgpKTsKLSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWRSZWN0QW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCitzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFJlY3RBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5p
bWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBl
cykKIHsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVSZWN0KGNvbnN0cnVjdEZy
b21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRSZWN0PihhbmltYXRlZFR5cGVzKSk7CiB9CkBAIC05OSw3
ICs5OSw3IEBAIGZsb2F0IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5j
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBj
YWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR1JlY3QgcmlnaHQgbm93LiBXZSBuZWVk
IHRoZSBkaXN0YW5jZSBvZiBmb3IgZXZlcnkgc2luZ2xlIHZhbHVlLgogICAgIHJldHVybiAtMTsK
IH0KLSAgICAKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFJlY3QuaAppbmRleCA1MWI5NDdhN2Q1OTJlMWRiM2Y1OGViYWEwOGFiNGQxYTM4N2Qy
NDExLi4yZTliZDQ2MzkzOGQ0YjRlOWM4ZTA3ZjYwYTQ1OGIxN2NkZjJkZjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKICAgICBT
VkdBbmltYXRlZFJlY3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCop
OwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yKCkgeyB9CiAKLSAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0
QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsK
KyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0JiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hh
bmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKaW5kZXggMDAyNDU4YjFmODk4NzYxYTQxZjZlYjJh
ODU5Y2I2NThkMGZjMTY4MC4uZmJlNjNmY2UwMDI4ZjU0YWIwMzQxMDI4OWI2NzgxYzVmYjk2NDJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwCkBAIC0zMSwxNCAr
MzEsMTQgQEAgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6U1ZHQW5pbWF0ZWRTdHJpbmdBbmlt
YXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXQKIHsKIH0KIAotUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlw
ZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlU3RyaW5nKG5ldyBTdHJpbmcpOworICAgIGF1dG8g
YW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVTdHJpbmcobmV3IFN0cmluZyk7
CiAgICAgYW5pbWF0ZWRUeXBlLT5zdHJpbmcoKSA9IHN0cmluZzsKLSAgICByZXR1cm4gYW5pbWF0
ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6c3RhcnRBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0
ZWRUeXBlcykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkU3Ry
aW5nQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCiB7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVk
VHlwZTo6Y3JlYXRlU3RyaW5nKGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRTdHJp
bmc+KGFuaW1hdGVkVHlwZXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5n
LmgKaW5kZXggODY4YmNjNTZiMTA1NGE3OWYwZmYwMTE0MDUyYWEzN2VlOGIzMTdlMy4uYjc4Y2Uw
NzE0YmRhOTMyYTFkODFjMTFiMDg4ZDRmMjA4NDgyMjJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkU3RyaW5nLmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIFNWR0FuaW1h
dGVkU3RyaW5nQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAg
ICB2aXJ0dWFsIH5TVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRp
b24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxU
b0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0
ZWRUeXBlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcAppbmRleCA4Y2JiZGI2
NGExZWEzODljMmYyMmIyMWM5M2M5MzkyZGMyMzk4ZTljLi44MDk2ZjVlYjJjZjk4NDQyYjMyYWFm
YzUwMDI1NDQ0Mjc2ZDg0NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0LmNwcApAQCAtNDEsMTUgKzQxLDE1IEBAIFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdEFuaW1hdG9yOjpTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcihTVkdBbmlt
YXRpb25FCiAgICAgQVNTRVJUKGFuaW1hdGlvbkVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmFuaW1hdGVUcmFuc2Zvcm1UYWcpKTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRU
eXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVUcmFuc2Zvcm1MaXN0KG5ldyBTVkdUcmFuc2Zv
cm1MaXN0KTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
VHJhbnNmb3JtTGlzdChuZXcgU1ZHVHJhbnNmb3JtTGlzdCk7CiAgICAgYW5pbWF0ZWRUeXBlLT50
cmFuc2Zvcm1MaXN0KCkucGFyc2UobV90cmFuc2Zvcm1UeXBlU3RyaW5nICsgc3RyaW5nICsgJykn
KTsKICAgICBBU1NFUlQoYW5pbWF0ZWRUeXBlLT50cmFuc2Zvcm1MaXN0KCkuc2l6ZSgpIDw9IDEp
OwotICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRl
ZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpzdGFydEFuaW1W
YWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRl
ZFR5cGVzKQogewogICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVRyYW5zZm9ybUxp
c3QoY29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+KGFuaW1h
dGVkVHlwZXMpKTsKIH0KQEAgLTEzMCw4ICsxMzAsOCBAQCBmbG9hdCBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aQogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3QgaW4gYWxsIGNhc2VzLiBUaGUg
c3BlYyBkZW1hbmRzIHRoYXQgZWFjaCBjb21wb25lbnQgKHRyYW5zbGF0ZSB4IGFuZCB5IGZvciBl
eGFtcGxlKQogICAgIC8vIGlzIHBhY2VkIHNlcGFyYXRlbHkuIFRvIGltcGxlbWVudCB0aGlzIHdl
IG5lZWQgdG8gdHJlYXQgZWFjaCBjb21wb25lbnQgYXMgaW5kaXZpZHVhbCBhbmltYXRpb24gZXZl
cnl3aGVyZS4KLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBmcm9tID0gY29uc3RydWN0RnJv
bVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiB0byA9IGNv
bnN0cnVjdEZyb21TdHJpbmcodG9TdHJpbmcpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHRvID0gY29uc3RydWN0RnJvbVN0cmluZyh0
b1N0cmluZyk7CiAKICAgICBTVkdUcmFuc2Zvcm1MaXN0JiBmcm9tVHJhbnNmb3JtTGlzdCA9IGZy
b20tPnRyYW5zZm9ybUxpc3QoKTsKICAgICBTVkdUcmFuc2Zvcm1MaXN0JiB0b1RyYW5zZm9ybUxp
c3QgPSB0by0+dHJhbnNmb3JtTGlzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oCmluZGV4IDNjMjkwOTJkYTQ2YzM0ZjM1ODMxNDZjZGY1NDZkZGM0
ZDk0N2E2NjQuLjM3NDk3MTcwODFkYmJlMTk1NWVkNjVmODVlOWQ1MjNkZTk2YTNhOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKQEAgLTQyLDgg
KzQyLDggQEAgcHVibGljOgogICAgIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yKFNW
R0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IoKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFR5cGUuY3BwCmluZGV4IDVhMTdmMWJiNGEwY2UzYTM5MDE4NTVkNzM4Njc0YzVmM2NlYTkx
ODkuLmFkMjg2ZTlmMGIxMDNkMDEzNzdlNGVhMmExMmY2OTY1M2ZhZjYzMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCkBAIC05MiwxNDAgKzkyLDE0MCBAQCBTVkdBbmlt
YXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUoKQogICAgIH0KIH0KIAotUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQW5nbGVBbmRFbnVtZXJhdGlvbihz
dGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiogYW5nbGVBbmRFbnVtZXJhdGlvbikKK3N0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQW5nbGVB
bmRFbnVtZXJhdGlvbihzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiogYW5nbGVBbmRFbnVt
ZXJhdGlvbikKIHsKICAgICBBU1NFUlQoYW5nbGVBbmRFbnVtZXJhdGlvbik7Ci0gICAgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVk
VHlwZShBbmltYXRlZEFuZ2xlKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWRBbmdsZSk7CiAgICAgYW5pbWF0ZWRUeXBl
LT5tX2RhdGEuYW5nbGVBbmRFbnVtZXJhdGlvbiA9IGFuZ2xlQW5kRW51bWVyYXRpb247Ci0gICAg
cmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsK
IH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
Qm9vbGVhbihib29sKiBib29sZWFuKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVCb29sZWFuKGJvb2wqIGJvb2xlYW4pCiB7CiAgICAgQVNT
RVJUKGJvb2xlYW4pOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9
IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRCb29sZWFuKSk7CisgICAgYXV0
byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0
ZWRCb29sZWFuKTsKICAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS5ib29sZWFuID0gYm9vbGVhbjsK
LSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRU
eXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVDb2xvcihDb2xvciogY29sb3IpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUNvbG9yKENvbG9yKiBjb2xvcikKIHsKICAgICBBU1NF
UlQoY29sb3IpOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFk
b3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRDb2xvcikpOworICAgIGF1dG8gYW5p
bWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkQ29s
b3IpOwogICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmNvbG9yID0gY29sb3I7Ci0gICAgcmV0dXJu
IGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAot
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlRW51bWVy
YXRpb24odW5zaWduZWQqIGVudW1lcmF0aW9uKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVFbnVtZXJhdGlvbih1bnNpZ25lZCogZW51bWVy
YXRpb24pCiB7CiAgICAgQVNTRVJUKGVudW1lcmF0aW9uKTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1h
dGVkRW51bWVyYXRpb24pKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZEVudW1lcmF0aW9uKTsKICAgICBhbmltYXRlZFR5
cGUtPm1fZGF0YS5lbnVtZXJhdGlvbiA9IGVudW1lcmF0aW9uOwotICAgIHJldHVybiBhbmltYXRl
ZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXIoaW50KiBp
bnRlZ2VyKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBl
OjpjcmVhdGVJbnRlZ2VyKGludCogaW50ZWdlcikKIHsKICAgICBBU1NFUlQoaW50ZWdlcik7Ci0g
ICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNW
R0FuaW1hdGVkVHlwZShBbmltYXRlZEludGVnZXIpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZEludGVnZXIpOwogICAg
IGFuaW1hdGVkVHlwZS0+bV9kYXRhLmludGVnZXIgPSBpbnRlZ2VyOwotICAgIHJldHVybiBhbmlt
YXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXJPcHRp
b25hbEludGVnZXIocGFpcjxpbnQsIGludD4qIGludGVnZXJPcHRpb25hbEludGVnZXIpCitzdGQ6
OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVn
ZXJPcHRpb25hbEludGVnZXIocGFpcjxpbnQsIGludD4qIGludGVnZXJPcHRpb25hbEludGVnZXIp
CiB7CiAgICAgQVNTRVJUKGludGVnZXJPcHRpb25hbEludGVnZXIpOwotICAgIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUo
QW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWRJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyKTsKICAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRl
Z2VyID0gaW50ZWdlck9wdGlvbmFsSW50ZWdlcjsKLSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKiBsZW5n
dGgpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZUxlbmd0aChTVkdMZW5ndGgqIGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoKTsKLSAg
ICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZH
QW5pbWF0ZWRUeXBlKEFuaW1hdGVkTGVuZ3RoKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWRMZW5ndGgpOwogICAgIGFu
aW1hdGVkVHlwZS0+bV9kYXRhLmxlbmd0aCA9IGxlbmd0aDsKLSAgICByZXR1cm4gYW5pbWF0ZWRU
eXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGhMaXN0KFNWR0xl
bmd0aExpc3QqIGxlbmd0aExpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBT
VkdBbmltYXRlZFR5cGU6OmNyZWF0ZUxlbmd0aExpc3QoU1ZHTGVuZ3RoTGlzdCogbGVuZ3RoTGlz
dCkKIHsKICAgICBBU1NFUlQobGVuZ3RoTGlzdCk7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZExl
bmd0aExpc3QpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRUeXBlPihBbmltYXRlZExlbmd0aExpc3QpOwogICAgIGFuaW1hdGVkVHlwZS0+bV9k
YXRhLmxlbmd0aExpc3QgPSBsZW5ndGhMaXN0OwotICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVs
ZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlcihmbG9hdCogbnVtYmVyKQor
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVO
dW1iZXIoZmxvYXQqIG51bWJlcikKIHsKICAgICBBU1NFUlQobnVtYmVyKTsKLSAgICBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRU
eXBlKEFuaW1hdGVkTnVtYmVyKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWROdW1iZXIpOwogICAgIGFuaW1hdGVkVHlw
ZS0+bV9kYXRhLm51bWJlciA9IG51bWJlcjsKLSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXJMaXN0KFNWR051bWJlckxpc3Qq
IG51bWJlckxpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZU51bWJlckxpc3QoU1ZHTnVtYmVyTGlzdCogbnVtYmVyTGlzdCkKIHsKICAg
ICBBU1NFUlQobnVtYmVyTGlzdCk7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0
ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZE51bWJlckxpc3Qp
KTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRU
eXBlPihBbmltYXRlZE51bWJlckxpc3QpOwogICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLm51bWJl
ckxpc3QgPSBudW1iZXJMaXN0OwotICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwor
ICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlck9wdGlvbmFsTnVtYmVyKHBhaXI8ZmxvYXQs
IGZsb2F0PiogbnVtYmVyT3B0aW9uYWxOdW1iZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlck9wdGlvbmFsTnVtYmVyKHBhaXI8
ZmxvYXQsIGZsb2F0PiogbnVtYmVyT3B0aW9uYWxOdW1iZXIpCiB7CiAgICAgQVNTRVJUKG51bWJl
ck9wdGlvbmFsTnVtYmVyKTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5
cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRUeXBlPihBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKICAgICBhbmltYXRlZFR5
cGUtPm1fZGF0YS5udW1iZXJPcHRpb25hbE51bWJlciA9IG51bWJlck9wdGlvbmFsTnVtYmVyOwot
ICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5
cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZVBhdGgoc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBwYXRoKQorc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKHN0
ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gcGF0aCkKIHsKICAgICBBU1NFUlQocGF0
aCk7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIo
bmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFBhdGgpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlw
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZFBhdGgpOwogICAg
IGFuaW1hdGVkVHlwZS0+bV9kYXRhLnBhdGggPSBwYXRoLnJlbGVhc2UoKTsKLSAgICByZXR1cm4g
YW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1Q
YXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQb2ludExp
c3QoU1ZHUG9pbnRMaXN0KiBwb2ludExpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBvaW50TGlzdChTVkdQb2ludExpc3QqIHBvaW50
TGlzdCkKIHsKICAgICBBU1NFUlQocG9pbnRMaXN0KTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVk
UG9pbnRzKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkVHlwZT4oQW5pbWF0ZWRQb2ludHMpOwogICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLnBv
aW50TGlzdCA9IHBvaW50TGlzdDsKLSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8qIHByZXNlcnZlQXNwZWN0UmF0aW8pCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW8oU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyogcHJlc2VydmVBc3BlY3RSYXRpbykKIHsKICAgICBBU1NFUlQo
cHJlc2VydmVBc3BlY3RSYXRpbyk7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0
ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8pKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRUeXBlPihBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwogICAgIGFuaW1hdGVk
VHlwZS0+bV9kYXRhLnByZXNlcnZlQXNwZWN0UmF0aW8gPSBwcmVzZXJ2ZUFzcGVjdFJhdGlvOwot
ICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5
cGU7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZVJlY3QoRmxvYXRSZWN0KiByZWN0KQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVSZWN0KEZsb2F0UmVjdCogcmVjdCkKIHsKICAgICBB
U1NFUlQocmVjdCk7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0g
YWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFJlY3QpKTsKKyAgICBhdXRvIGFu
aW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZFJl
Y3QpOwogICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLnJlY3QgPSByZWN0OwotICAgIHJldHVybiBh
bmltYXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVN0cmluZyhT
dHJpbmcqIHN0cmluZykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1h
dGVkVHlwZTo6Y3JlYXRlU3RyaW5nKFN0cmluZyogc3RyaW5nKQogewogICAgIEFTU0VSVChzdHJp
bmcpOwotICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRy
KG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRTdHJpbmcpKTsKKyAgICBhdXRvIGFuaW1hdGVk
VHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZFN0cmluZyk7
CiAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEuc3RyaW5nID0gc3RyaW5nOwotICAgIHJldHVybiBh
bmltYXRlZFR5cGUucmVsZWFzZSgpOworICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLVBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVRyYW5zZm9y
bUxpc3QoU1ZHVHJhbnNmb3JtTGlzdCogdHJhbnNmb3JtTGlzdCkKK3N0ZDo6dW5pcXVlX3B0cjxT
VkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3JtTGlzdChTVkdU
cmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm1MaXN0KQogewogICAgIEFTU0VSVCh0cmFuc2Zvcm1MaXN0
KTsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihu
ZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkVHJhbnNmb3JtTGlzdCkpOworICAgIGF1dG8gYW5p
bWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkVHJh
bnNmb3JtTGlzdCk7CiAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEudHJhbnNmb3JtTGlzdCA9IHRy
YW5zZm9ybUxpc3Q7Ci0gICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAogU3RyaW5nIFNWR0FuaW1hdGVkVHlwZTo6dmFsdWVBc1N0
cmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKaW5kZXggOGFjNzRhMTI0MjAz
NjA0MTBmZTI0ZmRiM2RjOWU1ZjBkMzU3NDAyZS4uMTBhZDAyNWI3ZDU3NWEyZjA5MWQ2OGJmYzJl
YTk1N2RlNGUzYTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaApAQCAtMzks
MjUgKzM5LDI3IEBAIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwogY2xhc3MgU1ZHQW5pbWF0ZWRU
eXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBTVkdBbmlt
YXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVk
VHlwZSgpOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVB
bmdsZUFuZEVudW1lcmF0aW9uKHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+Kik7Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVCb29sZWFuKGJvb2wqKTsK
LSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUNvbG9yKENvbG9y
Kik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVFbnVtZXJh
dGlvbih1bnNpZ25lZCopOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y3JlYXRlSW50ZWdlcihpbnQqKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5
cGU+IGNyZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIoc3RkOjpwYWlyPGludCwgaW50PiopOwot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3RoKFNWR0xl
bmd0aCopOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVu
Z3RoTGlzdChTVkdMZW5ndGhMaXN0Kik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjcmVhdGVOdW1iZXIoZmxvYXQqKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IGNyZWF0ZU51bWJlckxpc3QoU1ZHTnVtYmVyTGlzdCopOwotICAgIHN0YXRp
YyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyT3B0aW9uYWxOdW1iZXIo
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4qKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IGNyZWF0ZVBhdGgoc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPik7
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQb2ludExpc3Qo
U1ZHUG9pbnRMaXN0Kik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBj
cmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qKTsKLSAgICBz
dGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVJlY3QoRmxvYXRSZWN0Kik7
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVTdHJpbmcoU3Ry
aW5nKik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVUcmFu
c2Zvcm1MaXN0KFNWR1RyYW5zZm9ybUxpc3QqKTsKKyAgICAvLyBGSVhNRTogVGhlc2UgZnVuY3Rp
b25zIHNob3VsZCBhbGwgdGFrZSBzdGQ6OnVuaXF1ZV9wdHIgYXJndW1lbnRzIGluc3RlYWQgb2Yg
YmFyZSBwb2ludGVycy4KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY3JlYXRlQW5nbGVBbmRFbnVtZXJhdGlvbihzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVk
PiopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVC
b29sZWFuKGJvb2wqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY3JlYXRlQ29sb3IoQ29sb3IqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlRW51bWVyYXRpb24odW5zaWduZWQqKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlSW50ZWdlcihpbnQqKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlSW50ZWdlck9wdGlv
bmFsSW50ZWdlcihzdGQ6OnBhaXI8aW50LCBpbnQ+Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUxlbmd0aChTVkdMZW5ndGgqKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3RoTGlzdChTVkdM
ZW5ndGhMaXN0Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
IGNyZWF0ZU51bWJlcihmbG9hdCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXJMaXN0KFNWR051bWJlckxpc3QqKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyT3B0aW9uYWxOdW1i
ZXIoc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4qKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUGF0aChzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVT
dHJlYW0+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3Jl
YXRlUG9pbnRMaXN0KFNWR1BvaW50TGlzdCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8qKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y3JlYXRlUmVjdChGbG9hdFJlY3QqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlU3RyaW5nKFN0cmluZyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVUcmFuc2Zvcm1MaXN0KFNWR1RyYW5zZm9ybUxp
c3QqKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FuaW1WYWwoQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUpOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQpAQCAtMjcwLDEwICsyNzIsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdmFsdWVB
c1N0cmluZygpOwogICAgIGJvb2wgc2V0VmFsdWVBc1N0cmluZyhjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgU3RyaW5nJik7Ci0gICAgCi1wcml2YXRlOgotICAgIFNWR0FuaW1hdGVkVHlwZShB
bmltYXRlZFByb3BlcnR5VHlwZSk7CiAKK3ByaXZhdGU6CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUgbV90eXBlOwogCiAgICAgdW5pb24gRGF0YVVuaW9uIHsKQEAgLTMwMSw3ICszMDEsNyBAQCBw
cml2YXRlOgogICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm1MaXN0OwogICAgIH0g
bV9kYXRhOwogfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5
cGVBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IuY3BwCmluZGV4IGUxOWIxZTE2ZWNlNTVlYTVhMGE3NTllNTVjNTk1OTNmYmExOTYyOWIuLjg1
MTkwODhmNTNjY2RiNmI1N2M3NDU1NDkwZDMxNjhlNDBjYzExYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBA
IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRl
ZFByb3BlcnR5VHlwZSB0eXBlLCBTVkdBCiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6flNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yKCkKIHsgfQogCi12b2lkIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20s
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRvU3RyaW5nKQordm9pZCBTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6Y2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+JiBm
cm9tLCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKICAgICBmcm9tID0gY29uc3Ry
dWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKICAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmco
dG9TdHJpbmcpOwogfQogCi12b2lkIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJ5U3RyaW5nKQordm9pZCBTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFu
ZEJ5VmFsdWVzKHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiBieVN0cmluZykKIHsKICAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmlu
Zyhmcm9tU3RyaW5nKTsKICAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAppbmRleCBhNGQ5
YTRjYWRjODc2YjY3MTcyNzkxZmYxNzRlZTM4MzEyMmU2ODhhLi40OTNhZGQwMzgwNmUyOGQ2ZmEx
ZWJhMDBjZjI5NGYxYzg0ODA2N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUeXBlQW5pbWF0b3IuaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
UHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGUuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50SW5zdGFuY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw5ICs0
NSw5IEBAIGNsYXNzIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFR5cGVBbmltYXRv
cigpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxB
bmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgPSAwOworICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5p
bWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VW
YWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBl
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSA9IDA7CkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBl
KiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgPSAwOwogICAgIHZpcnR1YWwg
ZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRvU3RyaW5nKSA9IDA7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVl
cyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiwgY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKLSAgICB2b2lk
IGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGJ5U3RyaW5nKTsKKyAgICB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+JiwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsK
KyAgICB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+JiwgY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKIAogICAgIHZvaWQgc2V0
Q29udGV4dEVsZW1lbnQoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpIHsgbV9jb250ZXh0RWxl
bWVudCA9IGNvbnRleHRFbGVtZW50OyB9CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdG9yRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFj
dG9yeS5oCmluZGV4IGZkOTA2NGM0MzdkNjU5Mzk5ZGIyZTQ1MjZjN2Q1Y2FhMzY3OWY5NzIuLjFm
ZWNlZDYzYzM5M2VlNDNlODUwMmQzODMwODg0YTM1OGU0Y2VlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKQEAgLTQ1LDQ2ICs0NSw0NiBAQCBjbGFzcyBTVkdBbmlt
YXRpb25FbGVtZW50OwogCiBjbGFzcyBTVkdBbmltYXRvckZhY3RvcnkgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yPiBjcmVhdGUoU1ZHQW5p
bWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGF0dHJpYnV0ZVR5cGUpCisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVs
ZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBbmlt
YXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFu
aW1hdGlvbkVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogCiAgICAg
ICAgIHN3aXRjaCAoYXR0cmlidXRlVHlwZSkgewogICAgICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRv
cihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhbmltYXRpb25FbGVt
ZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRCb29sZWFuOgotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcihh
bmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1l
bnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZENvbG9yOgotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IoYW5pbWF0
aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29u
dGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkRW51bWVyYXRpb246Ci0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcihh
bmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPihhbmltYXRpb25F
bGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZEludGVnZXJBbmltYXRv
cihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+KGFuaW1hdGlvbkVs
ZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXI6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVk
SW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRF
bGVtZW50KSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4
dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1l
bnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxl
bWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcihhbmltYXRpb25F
bGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNv
bnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcihhbmltYXRpb25F
bGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4
dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3IoYW5pbWF0
aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50
LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51
bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJP
cHRpb25hbE51bWJlckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlck9w
dGlvbmFsTnVtYmVyQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsK
ICAgICAgICAgY2FzZSBBbmltYXRlZFBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVt
ZW50KSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBh
dGhBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBj
YXNlIEFuaW1hdGVkUG9pbnRzOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdB
bmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50
KSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBvaW50
TGlzdEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAg
IGNhc2UgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOgotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcihhbmltYXRp
b25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+KGFuaW1hdGlv
bkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFJlY3Q6Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yKGFu
aW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwg
Y29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOgotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yKGFuaW1hdGlv
bkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250
ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OgotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
cihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGFuaW1h
dGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFVua25v
d246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtOTUsOSArOTUsOCBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0b3JGYWN0b3J5KCkgeyB9Ci0KIH07Ci0gICAg
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IGIxNDFmNDBm
Y2UwN2QxNzQ1ZGZiMjY1NDgwMWM4YjY5ZmQzZjZjYjcuLjljYTI0MDk5ZjMwYmExYTg1YWFmNGM0
MWQxMzc2NGQ3MWQzMGMxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4
dGVuc2lvbnMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcmVzb3VyY2VzQ2FjaGUo
YWRvcHRQdHIobmV3IFNWR1Jlc291cmNlc0NhY2hlKSkKKyAgICAsIG1fcmVzb3VyY2VzQ2FjaGUo
c3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKIHsKIH0KIApAQCAtOTcsMjMg
Kzk3LDIzIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpzdGFydEFuaW1hdGlvbnMoKQog
ICAgIC8vIEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIHJlZmFjdG9yIHRoZSB1c2UtZWxlbWVudCB0
byBhdm9pZCB0aGlzLiBTZWUgaHR0cHM6Ly93ZWJraXQub3JnL2IvNTM3MDQKICAgICBWZWN0b3I8
UmVmUHRyPFNWR1NWR0VsZW1lbnQ+PiB0aW1lQ29udGFpbmVyczsKICAgICB0aW1lQ29udGFpbmVy
cy5hcHBlbmRSYW5nZShtX3RpbWVDb250YWluZXJzLmJlZ2luKCksIG1fdGltZUNvbnRhaW5lcnMu
ZW5kKCkpOwotICAgIFZlY3RvcjxSZWZQdHI8U1ZHU1ZHRWxlbWVudD4+OjppdGVyYXRvciBlbmQg
PSB0aW1lQ29udGFpbmVycy5lbmQoKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8U1ZHU1ZHRWxl
bWVudD4+OjppdGVyYXRvciBpdHIgPSB0aW1lQ29udGFpbmVycy5iZWdpbigpOyBpdHIgIT0gZW5k
OyArK2l0cikKLSAgICAgICAgKCppdHIpLT50aW1lQ29udGFpbmVyKCktPmJlZ2luKCk7CisgICAg
YXV0byBlbmQgPSB0aW1lQ29udGFpbmVycy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSB0aW1l
Q29udGFpbmVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT50aW1l
Q29udGFpbmVyKCktPmJlZ2luKCk7CiB9Ci0gICAgCisKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zOjpwYXVzZUFuaW1hdGlvbnMoKQogewotICAgIEhhc2hTZXQ8U1ZHU1ZHRWxlbWVudCo+Ojpp
dGVyYXRvciBlbmQgPSBtX3RpbWVDb250YWluZXJzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxT
VkdTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGl0ciA9IG1fdGltZUNvbnRhaW5lcnMuYmVnaW4oKTsg
aXRyICE9IGVuZDsgKytpdHIpCi0gICAgICAgICgqaXRyKS0+cGF1c2VBbmltYXRpb25zKCk7Cisg
ICAgYXV0byBlbmQgPSBtX3RpbWVDb250YWluZXJzLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9
IG1fdGltZUNvbnRhaW5lcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0
KS0+cGF1c2VBbmltYXRpb25zKCk7CiB9CiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1
bnBhdXNlQW5pbWF0aW9ucygpCiB7Ci0gICAgSGFzaFNldDxTVkdTVkdFbGVtZW50Kj46Oml0ZXJh
dG9yIGVuZCA9IG1fdGltZUNvbnRhaW5lcnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNWR1NW
R0VsZW1lbnQqPjo6aXRlcmF0b3IgaXRyID0gbV90aW1lQ29udGFpbmVycy5iZWdpbigpOyBpdHIg
IT0gZW5kOyArK2l0cikKLSAgICAgICAgKCppdHIpLT51bnBhdXNlQW5pbWF0aW9ucygpOworICAg
IGF1dG8gZW5kID0gbV90aW1lQ29udGFpbmVycy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBt
X3RpbWVDb250YWluZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCkt
PnVucGF1c2VBbmltYXRpb25zKCk7CiB9CiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpk
aXNwYXRjaFNWR0xvYWRFdmVudFRvT3V0ZXJtb3N0U1ZHRWxlbWVudHMoKQpAQCAtMTIxLDggKzEy
MSw4IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpkaXNwYXRjaFNWR0xvYWRFdmVudFRv
T3V0ZXJtb3N0U1ZHRWxlbWVudHMoKQogICAgIFZlY3RvcjxSZWZQdHI8U1ZHU1ZHRWxlbWVudD4+
IHRpbWVDb250YWluZXJzOwogICAgIHRpbWVDb250YWluZXJzLmFwcGVuZFJhbmdlKG1fdGltZUNv
bnRhaW5lcnMuYmVnaW4oKSwgbV90aW1lQ29udGFpbmVycy5lbmQoKSk7CiAKLSAgICBWZWN0b3I8
UmVmUHRyPFNWR1NWR0VsZW1lbnQ+Pjo6aXRlcmF0b3IgZW5kID0gdGltZUNvbnRhaW5lcnMuZW5k
KCk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPFNWR1NWR0VsZW1lbnQ+Pjo6aXRlcmF0b3IgaXQg
PSB0aW1lQ29udGFpbmVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBhdXRvIGVu
ZCA9IHRpbWVDb250YWluZXJzLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IHRpbWVDb250YWlu
ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBTVkdTVkdFbGVtZW50KiBv
dXRlclNWRyA9ICgqaXQpLmdldCgpOwogICAgICAgICBpZiAoIW91dGVyU1ZHLT5pc091dGVybW9z
dFNWR1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTUzLDkgKzE1Myw5
IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCwgRWxlbWVudCoKICAgICBpZiAoaWQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRpbmdF
bGVtZW50cz4+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwg
bnVsbHB0cik7CisgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRkKGlkLCBu
dWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU1ZHUGVuZGluZ0VsZW1lbnRzKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGVuZGluZ0VsZW1l
bnRzPigpOwogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZChlbGVtZW50KTsKIAogICAg
IGVsZW1lbnQtPnNldEhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTE3Niw4ICsxNzYsOCBAQCBi
b29sIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6aXNFbGVtZW50UGVuZGluZ1Jlc291cmNlcyhFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAogCiAgICAgQVNTRVJUKGVsZW1lbnQpOwogCi0gICAgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+Pjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9wZW5kaW5nUmVzb3VyY2VzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+Pjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3BlbmRpbmdSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgYXV0
byBlbmQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9w
ZW5kaW5nUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBTVkdQ
ZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgpOwogICAgICAgICBBU1NF
UlQoZWxlbWVudHMpOwogCkBAIC0yMTAsOCArMjEwLDggQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlcyhFbGVtZW50KiBlbGVtZW50
KQogICAgIC8vIFJlbW92ZSB0aGUgZWxlbWVudCBmcm9tIHBlbmRpbmcgcmVzb3VyY2VzLgogICAg
IGlmICghbV9wZW5kaW5nUmVzb3VyY2VzLmlzRW1wdHkoKSAmJiBlbGVtZW50LT5oYXNQZW5kaW5n
UmVzb3VyY2VzKCkpIHsKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7
Ci0gICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRz
Pj46Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1Jlc291cmNlcy5lbmQoKTsKLSAgICAgICAgZm9y
IChIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50cz4+OjppdGVy
YXRvciBpdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgYXV0byBlbmQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuZW5kKCk7CisgICAgICAgIGZv
ciAoYXV0byBpdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgICAgIFNWR1BlbmRpbmdFbGVtZW50cyogZWxlbWVudHMgPSBpdC0+dmFsdWUu
Z2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudHMpOwogICAgICAgICAgICAgQVNTRVJU
KCFlbGVtZW50cy0+aXNFbXB0eSgpKTsKQEAgLTIyNCwxNiArMjI0LDE2IEBAIHZvaWQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXMoRWxlbWVu
dCogZWxlbWVudCkKICAgICAgICAgY2xlYXJIYXNQZW5kaW5nUmVzb3VyY2VzSWZQb3NzaWJsZShl
bGVtZW50KTsKIAogICAgICAgICAvLyBXZSB1c2UgdGhlIHJlbW92ZVBlbmRpbmdSZXNvdXJjZSBm
dW5jdGlvbiBoZXJlIGJlY2F1c2UgaXQgZGVhbHMgd2l0aCBzZXQgbGlmZXRpbWUgY29ycmVjdGx5
LgotICAgICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdG9C
ZVJlbW92ZWQuZW5kKCk7Ci0gICAgICAgIGZvciAoVmVjdG9yPEF0b21pY1N0cmluZz46Oml0ZXJh
dG9yIGl0ID0gdG9CZVJlbW92ZWQuYmVnaW4oKTsgaXQgIT0gdmVjdG9yRW5kOyArK2l0KQorICAg
ICAgICBhdXRvIHZlY3RvckVuZCA9IHRvQmVSZW1vdmVkLmVuZCgpOworICAgICAgICBmb3IgKGF1
dG8gaXQgPSB0b0JlUmVtb3ZlZC5iZWdpbigpOyBpdCAhPSB2ZWN0b3JFbmQ7ICsraXQpCiAgICAg
ICAgICAgICByZW1vdmVQZW5kaW5nUmVzb3VyY2UoKml0KTsKICAgICB9CiAKICAgICAvLyBSZW1v
dmUgdGhlIGVsZW1lbnQgZnJvbSBwZW5kaW5nIHJlc291cmNlcyB0aGF0IHdlcmUgc2NoZWR1bGVk
IGZvciByZW1vdmFsLgogICAgIGlmICghbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7Ci0gICAg
ICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPj46Oml0
ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuZW5kKCk7Ci0gICAgICAg
IGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+Pjo6
aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBhdXRvIGVuZCA9IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJl
bW92YWwuZW5kKCk7CisgICAgICAgIGZvciAoYXV0byBpdCA9IG1fcGVuZGluZ1Jlc291cmNlc0Zv
clJlbW92YWwuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBTVkdQZW5k
aW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgQVNT
RVJUKGVsZW1lbnRzKTsKICAgICAgICAgICAgIEFTU0VSVCghZWxlbWVudHMtPmlzRW1wdHkoKSk7
CkBAIC0yNDQsMTkgKzI0NCwxOSBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3Zl
RWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIH0K
IAogICAgICAgICAvLyBXZSB1c2UgdGhlIHJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwg
ZnVuY3Rpb24gaGVyZSBiZWNhdXNlIGl0IGRlYWxzIHdpdGggc2V0IGxpZmV0aW1lIGNvcnJlY3Rs
eS4KLSAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz46Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHRv
QmVSZW1vdmVkLmVuZCgpOwotICAgICAgICBmb3IgKFZlY3RvcjxBdG9taWNTdHJpbmc+OjppdGVy
YXRvciBpdCA9IHRvQmVSZW1vdmVkLmJlZ2luKCk7IGl0ICE9IHZlY3RvckVuZDsgKytpdCkKKyAg
ICAgICAgYXV0byB2ZWN0b3JFbmQgPSB0b0JlUmVtb3ZlZC5lbmQoKTsKKyAgICAgICAgZm9yIChh
dXRvIGl0ID0gdG9CZVJlbW92ZWQuYmVnaW4oKTsgaXQgIT0gdmVjdG9yRW5kOyArK2l0KQogICAg
ICAgICAgICAgcmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9yUmVtb3ZhbCgqaXQpOwogICAgIH0KIH0K
IAotT3duUHRyPFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJp
bmcmIGlkKQorc3RkOjp1bmlxdWVfcHRyPFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGlu
Z0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZShj
b25zdCBBdG9taWNTdHJpbmcmIGlkKQogewogICAgIEFTU0VSVChtX3BlbmRpbmdSZXNvdXJjZXMu
Y29udGFpbnMoaWQpKTsKICAgICByZXR1cm4gbV9wZW5kaW5nUmVzb3VyY2VzLnRha2UoaWQpOwog
fQogCi1Pd25QdHI8U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdQZW5kaW5nRWxlbWVudHM+IFNW
R0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9yUmVtb3ZhbChjb25z
dCBBdG9taWNTdHJpbmcmIGlkKQorc3RkOjp1bmlxdWVfcHRyPFNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRp
bmdSZXNvdXJjZUZvclJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKIHsKICAgICBBU1NF
UlQobV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5jb250YWlucyhpZCkpOwogICAgIHJldHVy
biBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsLnRha2UoaWQpOwpAQCAtMjY5LDkgKzI2OSw5
IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjptYXJrUGVuZGluZ1Jlc291cmNlc0ZvclJl
bW92YWwoY29uc3QgQXRvbWljU3RyaW5nJiBpCiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ1Jlc291
cmNlc0ZvclJlbW92YWwuY29udGFpbnMoaWQpKTsKIAotICAgIE93blB0cjxTVkdQZW5kaW5nRWxl
bWVudHM+IGV4aXN0aW5nID0gbV9wZW5kaW5nUmVzb3VyY2VzLnRha2UoaWQpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxTVkdQZW5kaW5nRWxlbWVudHM+IGV4aXN0aW5nID0gbV9wZW5kaW5nUmVzb3Vy
Y2VzLnRha2UoaWQpOwogICAgIGlmIChleGlzdGluZyAmJiAhZXhpc3RpbmctPmlzRW1wdHkoKSkK
LSAgICAgICAgbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5hZGQoaWQsIGV4aXN0aW5nLnJl
bGVhc2UoKSk7CisgICAgICAgIG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuYWRkKGlkLCBz
dGQ6Om1vdmUoZXhpc3RpbmcpKTsKIH0KIAogRWxlbWVudCogU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQpCkBAIC0yODMsNyArMjgzLDcgQEAgRWxlbWVudCogU1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsKGNvbnMK
ICAgICBpZiAoIXJlc291cmNlU2V0IHx8IHJlc291cmNlU2V0LT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgU1ZHUGVuZGluZ0VsZW1lbnRzOjppdGVyYXRvciBmaXJzdEVsZW1l
bnQgPSByZXNvdXJjZVNldC0+YmVnaW4oKTsKKyAgICBhdXRvIGZpcnN0RWxlbWVudCA9IHJlc291
cmNlU2V0LT5iZWdpbigpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAqZmlyc3RFbGVtZW50Owog
CiAgICAgcmVzb3VyY2VTZXQtPnJlbW92ZShmaXJzdEVsZW1lbnQpOwpAQCAtMjk3LDcgKzI5Nyw3
IEBAIEVsZW1lbnQqIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZyb21QZW5k
aW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChjb25zCiBIYXNoU2V0PFNWR0VsZW1lbnQqPiogU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpzZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVu
dCogcmVmZXJlbmNlZEVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlZmVyZW5jZWRFbGVt
ZW50KTsKLSAgICBjb25zdCBIYXNoTWFwPFNWR0VsZW1lbnQqLCBPd25QdHI8SGFzaFNldDxTVkdF
bGVtZW50Kj4+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZmlu
ZChyZWZlcmVuY2VkRWxlbWVudCk7CisgICAgY29uc3QgYXV0byBpdCA9IG1fZWxlbWVudERlcGVu
ZGVuY2llcy5maW5kKHJlZmVyZW5jZWRFbGVtZW50KTsKICAgICBpZiAoaXQgPT0gbV9lbGVtZW50
RGVwZW5kZW5jaWVzLmVuZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gaXQtPnZh
bHVlLmdldCgpOwpAQCAtMzEzLDkgKzMxMyw5IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVudCogcmVmZXJlbmNpbmdFCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPd25QdHI8SGFzaFNldDxTVkdFbGVtZW50Kj4+
IGVsZW1lbnRzID0gYWRvcHRQdHIobmV3IEhhc2hTZXQ8U1ZHRWxlbWVudCo+KTsKKyAgICBhdXRv
IGVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oKTsKICAg
ICBlbGVtZW50cy0+YWRkKHJlZmVyZW5jaW5nRWxlbWVudCk7Ci0gICAgbV9lbGVtZW50RGVwZW5k
ZW5jaWVzLnNldChyZWZlcmVuY2VkRWxlbWVudCwgZWxlbWVudHMucmVsZWFzZSgpKTsKKyAgICBt
X2VsZW1lbnREZXBlbmRlbmNpZXMuc2V0KHJlZmVyZW5jZWRFbGVtZW50LCBzdGQ6Om1vdmUoZWxl
bWVudHMpKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbFRhcmdl
dFJlZmVyZW5jZXNGb3JFbGVtZW50KFNWR0VsZW1lbnQqIHJlZmVyZW5jaW5nRWxlbWVudCkKQEAg
LTMzMSwyOCArMzMxLDI4IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbGxU
YXJnZXRSZWZlcmVuY2VzRm9yRWxlbWVudChTVkdFbGVtZW50KiByZWZlCiAgICAgICAgICAgICB0
b0JlUmVtb3ZlZC5hcHBlbmQocmVmZXJlbmNlZEVsZW1lbnQpOwogICAgIH0KIAotICAgIFZlY3Rv
cjxTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHRvQmVSZW1vdmVkLmVuZCgpOwot
ICAgIGZvciAoVmVjdG9yPFNWR0VsZW1lbnQqPjo6aXRlcmF0b3IgaXQgPSB0b0JlUmVtb3ZlZC5i
ZWdpbigpOyBpdCAhPSB2ZWN0b3JFbmQ7ICsraXQpCisgICAgYXV0byB2ZWN0b3JFbmQgPSB0b0Jl
UmVtb3ZlZC5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSB0b0JlUmVtb3ZlZC5iZWdpbigpOyBp
dCAhPSB2ZWN0b3JFbmQ7ICsraXQpCiAgICAgICAgIG1fZWxlbWVudERlcGVuZGVuY2llcy5yZW1v
dmUoKml0KTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlYnVpbGRBbGxFbGVt
ZW50UmVmZXJlbmNlc0ZvclRhcmdldChTVkdFbGVtZW50KiByZWZlcmVuY2VkRWxlbWVudCkKIHsK
ICAgICBBU1NFUlQocmVmZXJlbmNlZEVsZW1lbnQpOwotICAgIEhhc2hNYXA8U1ZHRWxlbWVudCos
IE93blB0cjxIYXNoU2V0PFNWR0VsZW1lbnQqPj4+OjppdGVyYXRvciBpdCA9IG1fZWxlbWVudERl
cGVuZGVuY2llcy5maW5kKHJlZmVyZW5jZWRFbGVtZW50KTsKKyAgICBhdXRvIGl0ID0gbV9lbGVt
ZW50RGVwZW5kZW5jaWVzLmZpbmQocmVmZXJlbmNlZEVsZW1lbnQpOwogICAgIGlmIChpdCA9PSBt
X2VsZW1lbnREZXBlbmRlbmNpZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
aXQtPmtleSA9PSByZWZlcmVuY2VkRWxlbWVudCk7CiAgICAgVmVjdG9yPFNWR0VsZW1lbnQqPiB0
b0JlTm90aWZpZWQ7CiAKICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPiogcmVmZXJlbmNpbmdFbGVt
ZW50cyA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPjo6aXRlcmF0
b3Igc2V0RW5kID0gcmVmZXJlbmNpbmdFbGVtZW50cy0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0
PFNWR0VsZW1lbnQqPjo6aXRlcmF0b3Igc2V0SXQgPSByZWZlcmVuY2luZ0VsZW1lbnRzLT5iZWdp
bigpOyBzZXRJdCAhPSBzZXRFbmQ7ICsrc2V0SXQpCisgICAgYXV0byBzZXRFbmQgPSByZWZlcmVu
Y2luZ0VsZW1lbnRzLT5lbmQoKTsKKyAgICBmb3IgKGF1dG8gc2V0SXQgPSByZWZlcmVuY2luZ0Vs
ZW1lbnRzLT5iZWdpbigpOyBzZXRJdCAhPSBzZXRFbmQ7ICsrc2V0SXQpCiAgICAgICAgIHRvQmVO
b3RpZmllZC5hcHBlbmQoKnNldEl0KTsKIAogICAgIC8vIEZvcmNlIHJlYnVpbGRpbmcgdGhlIHJl
ZmVyZW5jaW5nRWxlbWVudCBzbyBpdCBrbm93cyBhYm91dCB0aGlzIGNoYW5nZS4KLSAgICBWZWN0
b3I8U1ZHRWxlbWVudCo+OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB0b0JlTm90aWZpZWQuZW5kKCk7
Ci0gICAgZm9yIChWZWN0b3I8U1ZHRWxlbWVudCo+OjppdGVyYXRvciB2ZWN0b3JJdCA9IHRvQmVO
b3RpZmllZC5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpIHsKKyAg
ICBhdXRvIHZlY3RvckVuZCA9IHRvQmVOb3RpZmllZC5lbmQoKTsKKyAgICBmb3IgKGF1dG8gdmVj
dG9ySXQgPSB0b0JlTm90aWZpZWQuYmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyArK3Zl
Y3Rvckl0KSB7CiAgICAgICAgIC8vIEJlZm9yZSByZWJ1aWxkaW5nIHJlZmVyZW5jaW5nRWxlbWVu
dCBlbnN1cmUgaXQgd2FzIG5vdCByZW1vdmVkIGZyb20gdW5kZXIgdXMuCiAgICAgICAgIGlmIChI
YXNoU2V0PFNWR0VsZW1lbnQqPiogcmVmZXJlbmNpbmdFbGVtZW50cyA9IHNldE9mRWxlbWVudHNS
ZWZlcmVuY2luZ1RhcmdldChyZWZlcmVuY2VkRWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChy
ZWZlcmVuY2luZ0VsZW1lbnRzLT5jb250YWlucygqdmVjdG9ySXQpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCmluZGV4IDVkMGNiMjNkZTljZGZmMjFkMmEwOGM5
OGNiZjQ0NmZhZTRjYmY4YjIuLmIzY2Q0YjEyYzlmODI3YWZkY2FjOWVlZjM5MDU0MmE5MDk0ZDg3
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKQEAgLTI1
LDcgKzI1LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtODQsMTAgKzgzLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTVkdG
b250RmFjZUVsZW1lbnQqPiBtX3N2Z0ZvbnRGYWNlRWxlbWVudHM7CiAjZW5kaWYKICAgICBIYXNo
TWFwPEF0b21pY1N0cmluZywgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqPiBtX3Jlc291cmNl
czsKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50cz4+
IG1fcGVuZGluZ1Jlc291cmNlczsgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIHBlbmRpbmcuCi0gICAg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+PiBtX3BlbmRp
bmdSZXNvdXJjZXNGb3JSZW1vdmFsOyAvLyBSZXNvdXJjZXMgdGhhdCBhcmUgcGVuZGluZyBhbmQg
c2NoZWR1bGVkIGZvciByZW1vdmFsLgotICAgIEhhc2hNYXA8U1ZHRWxlbWVudCosIE93blB0cjxI
YXNoU2V0PFNWR0VsZW1lbnQqPj4+IG1fZWxlbWVudERlcGVuZGVuY2llczsKLSAgICBPd25QdHI8
U1ZHUmVzb3VyY2VzQ2FjaGU+IG1fcmVzb3VyY2VzQ2FjaGU7CisgICAgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxTVkdQZW5kaW5nRWxlbWVudHM+PiBtX3BlbmRpbmdSZXNv
dXJjZXM7IC8vIFJlc291cmNlcyB0aGF0IGFyZSBwZW5kaW5nLgorICAgIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPj4gbV9wZW5kaW5nUmVz
b3VyY2VzRm9yUmVtb3ZhbDsgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIHBlbmRpbmcgYW5kIHNjaGVk
dWxlZCBmb3IgcmVtb3ZhbC4KKyAgICBIYXNoTWFwPFNWR0VsZW1lbnQqLCBzdGQ6OnVuaXF1ZV9w
dHI8SGFzaFNldDxTVkdFbGVtZW50Kj4+PiBtX2VsZW1lbnREZXBlbmRlbmNpZXM7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR1Jlc291cmNlc0NhY2hlPiBtX3Jlc291cmNlc0NhY2hlOwogCiBwdWJs
aWM6CiAgICAgLy8gVGhpcyBIYXNoTWFwIGNvbnRhaW5zIGEgbGlzdCBvZiBwZW5kaW5nIHJlc291
cmNlcy4gUGVuZGluZyByZXNvdXJjZXMsIGFyZSBzdWNoCkBAIC05OSwxNCArOTgsMTQgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNFbGVtZW50UGVuZGluZ1Jlc291cmNlKEVsZW1lbnQqLCBjb25zdCBB
dG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICB2b2lkIGNsZWFySGFzUGVuZGluZ1Jlc291cmNl
c0lmUG9zc2libGUoRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlRWxlbWVudEZyb21QZW5kaW5n
UmVzb3VyY2VzKEVsZW1lbnQqKTsKLSAgICBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPiByZW1v
dmVQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFNWR1BlbmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFy
ZSB1c2VkIGZvciBzY2hlZHVsaW5nIGEgcGVuZGluZyByZXNvdXJjZSB0byBiZSByZW1vdmVkLgog
ICAgIHZvaWQgbWFya1BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogICAgIEVsZW1lbnQqIHJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJl
bW92YWwoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPFNWR1Bl
bmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9yUmVtb3ZhbChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPiByZW1v
dmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaAppbmRleCA1OGI0Njk0NTBiOTcxYTI2ZDc1ZDZlMmQ3
ZmE0M2RkZWY5YTQ3ZWZlLi5mYzIxMTM0OTA4YTk0MGEwOTEwYjBmOWY3Nzk4ZTQxZGQyY2M4ZTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaApAQCAtMzAsMTEgKzMwLDcgQEAgY2xhc3MgU1ZH
Rm9udEZhY2VFbGVtZW50OwogCiBjbGFzcyBTVkdGb250RGF0YSA6IHB1YmxpYyBTaW1wbGVGb250
RGF0YTo6QWRkaXRpb25hbEZvbnREYXRhIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxTVkdGb250RGF0YT4gY3JlYXRlKFNWR0ZvbnRGYWNlRWxlbWVudCogZWxlbWVudCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHRm9udERhdGEoZWxlbWVudCkpOwotICAg
IH0KLQorICAgIGV4cGxpY2l0IFNWR0ZvbnREYXRhKFNWR0ZvbnRGYWNlRWxlbWVudCopOwogICAg
IHZpcnR1YWwgflNWR0ZvbnREYXRhKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZUZvbnREYXRhKFNpbXBsZUZvbnREYXRhKiwgZmxvYXQgZm9udFNpemUpOwpAQCAtNTMsOCArNDks
NiBAQCBwdWJsaWM6CiAgICAgZmxvYXQgdmVydGljYWxBZHZhbmNlWSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmVydGljYWxBZHZhbmNlWTsgfQogCiBwcml2YXRlOgotICAgIFNWR0ZvbnREYXRhKFNWR0Zv
bnRGYWNlRWxlbWVudCopOwotCiAgICAgYm9vbCBmaWxsQk1QR2x5cGhzKFNWR0ZvbnRFbGVtZW50
KiwgR2x5cGhQYWdlKiAsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciog
YnVmZmVyLCBjb25zdCBTaW1wbGVGb250RGF0YSopIGNvbnN0OwogICAgIGJvb2wgZmlsbE5vbkJN
UEdseXBocyhTVkdGb250RWxlbWVudCosIEdseXBoUGFnZSogLCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgY29uc3QgU2ltcGxlRm9udERhdGEqKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAKaW5kZXggZWYzYmE5ODkyZWI0
MjQ5Y2YxYzMxZWU5NDAzYThiOWRmNWVlYzJlOS4uYzAzNjk4ZDdhMTViYjM5MTllOTMxNDBlYmMw
ZTkyNmIxMDBjZjFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIEJFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRm9udEVs
ZW1lbnQpCiBFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRm9u
dEVsZW1lbnQ6OlNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCkKLSAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpIAor
ICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fbWlzc2luZ0dseXBo
KDApCiAgICAgLCBtX2lzR2x5cGhDYWNoZVZhbGlkKGZhbHNlKQogewpAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgU1ZHRm9udEVsZW1lbnQ6OnJlZ2lzdGVyTGlnYXR1cmVzSW5HbHlwaENhY2hlKFZl
Y3RvcjxTdHJpbmc+JiBsaWdhdHVyZXMpCiAgICAgICAgICAgICAgICAgZ2x5cGhzLmNsZWFyKCk7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgCisKICAgICAgICAgICAgIC8vIFRoaXMgZ2x5cGggaXMgbmV2ZXIgbWVhbnQgdG8gYmUgdXNl
ZCBmb3IgcmVuZGVyaW5nLCBvbmx5IGFzIGlkZW50aWZpZXIgYXMgYSBwYXJ0IG9mIGEgbGlnYXR1
cmUuCiAgICAgICAgICAgICBTVkdHbHlwaCBuZXdHbHlwaFBhcnQ7CiAgICAgICAgICAgICBuZXdH
bHlwaFBhcnQuaXNQYXJ0T2ZMaWdhdHVyZSA9IHRydWU7CkBAIC0xNzksOSArMTc5LDkgQEAgdm9p
ZCBTVkdLZXJuaW5nTWFwOjppbnNlcnQoY29uc3QgU1ZHS2VybmluZ1BhaXImIGtlcm5pbmdQYWly
KQogICAgICAgICBpZiAodW5pY29kZU1hcC5jb250YWlucygqdUl0KSkKICAgICAgICAgICAgIHVu
aWNvZGVNYXAuZ2V0KCp1SXQpLT5hcHBlbmQoc3ZnS2VybmluZyk7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgT3duUHRyPFNWR0tlcm5pbmdWZWN0b3I+IG5ld1ZlY3RvciA9IGFkb3B0UHRy
KG5ldyBTVkdLZXJuaW5nVmVjdG9yKTsKKyAgICAgICAgICAgIGF1dG8gbmV3VmVjdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdLZXJuaW5nVmVjdG9yPigpOwogICAgICAgICAgICAgbmV3VmVjdG9y
LT5hcHBlbmQoc3ZnS2VybmluZyk7Ci0gICAgICAgICAgICB1bmljb2RlTWFwLmFkZCgqdUl0LCBu
ZXdWZWN0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHVuaWNvZGVNYXAuYWRkKCp1SXQsIHN0
ZDo6bW92ZShuZXdWZWN0b3IpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTkxLDkgKzE5MSw5
IEBAIHZvaWQgU1ZHS2VybmluZ01hcDo6aW5zZXJ0KGNvbnN0IFNWR0tlcm5pbmdQYWlyJiBrZXJu
aW5nUGFpcikKICAgICAgICAgaWYgKGdseXBoTWFwLmNvbnRhaW5zKCpnSXQpKQogICAgICAgICAg
ICAgZ2x5cGhNYXAuZ2V0KCpnSXQpLT5hcHBlbmQoc3ZnS2VybmluZyk7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgT3duUHRyPFNWR0tlcm5pbmdWZWN0b3I+IG5ld1ZlY3RvciA9IGFkb3B0
UHRyKG5ldyBTVkdLZXJuaW5nVmVjdG9yKTsKKyAgICAgICAgICAgIGF1dG8gbmV3VmVjdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdLZXJuaW5nVmVjdG9yPigpOwogICAgICAgICAgICAgbmV3VmVj
dG9yLT5hcHBlbmQoc3ZnS2VybmluZyk7Ci0gICAgICAgICAgICBnbHlwaE1hcC5hZGQoKmdJdCwg
bmV3VmVjdG9yLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBnbHlwaE1hcC5hZGQoKmdJdCwgc3Rk
Ojptb3ZlKG5ld1ZlY3RvcikpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yODEsNyArMjgxLDcg
QEAgc3RhdGljIGlubGluZSBmbG9hdCBrZXJuaW5nRm9yUGFpck9mU3RyaW5nc0FuZEdseXBocyhj
b25zdCBTVkdLZXJuaW5nTWFwJiBrZXJuaW4KIAogICAgIHJldHVybiAwOwogfQotICAgIAorCiBm
bG9hdCBTVkdGb250RWxlbWVudDo6aG9yaXpvbnRhbEtlcm5pbmdGb3JQYWlyT2ZTdHJpbmdzQW5k
R2x5cGhzKGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0cmluZyYgZzEsIGNvbnN0IFN0cmluZyYg
dTIsIGNvbnN0IFN0cmluZyYgZzIpIGNvbnN0CiB7CiAgICAgaWYgKG1faG9yaXpvbnRhbEtlcm5p
bmdNYXAuaXNFbXB0eSgpKQpAQCAtMzE2LDcgKzMxNiw3IEBAIFNWR0dseXBoIFNWR0ZvbnRFbGVt
ZW50OjpzdmdHbHlwaEZvckdseXBoKEdseXBoIGdseXBoKQogICAgIGVuc3VyZUdseXBoQ2FjaGUo
KTsKICAgICByZXR1cm4gbV9nbHlwaE1hcC5zdmdHbHlwaEZvckdseXBoKGdseXBoKTsKIH0KLSAg
ICAKKwogR2x5cGggU1ZHRm9udEVsZW1lbnQ6Om1pc3NpbmdHbHlwaCgpCiB7CiAgICAgZW5zdXJl
R2x5cGhDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAppbmRleCBlNmM1ODBm
NmU3ZjhmOGQ0ZDFiZjU0NWU3NjExYjI1NGQxMDg5NjdlLi5hODdiNTU0NTk5NTFjNGI3YjlhYzVi
NDhlYWY5OTlkYzdmZGMwNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaApAQCAt
NTMsOCArNTMsOCBAQCBzdHJ1Y3QgU1ZHS2VybmluZ1BhaXIgOiBwdWJsaWMgU1ZHS2VybmluZyB7
CiB0eXBlZGVmIFZlY3RvcjxTVkdLZXJuaW5nPiBTVkdLZXJuaW5nVmVjdG9yOwogCiBzdHJ1Y3Qg
U1ZHS2VybmluZ01hcCB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIE93blB0cjxTVkdLZXJuaW5nVmVj
dG9yPj4gdW5pY29kZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgT3duUHRyPFNWR0tlcm5pbmdW
ZWN0b3I+PiBnbHlwaE1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFNW
R0tlcm5pbmdWZWN0b3I+PiB1bmljb2RlTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHS2VybmluZ1ZlY3Rvcj4+IGdseXBoTWFwOwogICAgIFZlY3RvcjxTVkdLZXJu
aW5nUGFpcj4ga2VybmluZ1VuaWNvZGVSYW5nZU1hcDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIHVuaWNvZGVNYXAuaXNFbXB0eSgpICYmIGdseXBoTWFwLmlzRW1wdHkoKSAm
JiBrZXJuaW5nVW5pY29kZVJhbmdlTWFwLmlzRW1wdHkoKTsgfQpAQCAtNjIsNyArNjIsNyBAQCBz
dHJ1Y3QgU1ZHS2VybmluZ01hcCB7CiAgICAgdm9pZCBpbnNlcnQoY29uc3QgU1ZHS2VybmluZ1Bh
aXImKTsKIH07CiAKLWNsYXNzIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ7ICAgIAorY2xhc3MgU1ZH
TWlzc2luZ0dseXBoRWxlbWVudDsKIAogY2xhc3MgU1ZHRm9udEVsZW1lbnQgRklOQUwgOiBwdWJs
aWMgU1ZHRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0Vs
ZW1lbnQuY3BwCmluZGV4IDUwMWUzZjFhZGY2NmQyMTQzYWJkMjY1ODQ3MWYwNDczZGZkOTU2YjEu
Ljg5MGRkMmE3MzUzZDVlMzQ0NmQ4N2FhZWQ5MTk4N2Y0YTYxYTQ1MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIEFmZmluZVRy
YW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25z
dAogQWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5z
Zm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAgICAgICAgbV9z
dXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBhZG9wdFB0cihuZXcgQWZmaW5lVHJhbnNmb3JtKTsKKyAg
ICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFmZmluZVRy
YW5zZm9ybT4oKTsKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAppbmRleCBhZWNkNmE1OGUw
YTZkNWVhZWUzNTcwY2U2ODg4ZWMwNzEzOTJlNzEyLi4wNGY1NDdiOGQ1OGViNzY1ZGJiNDFiZDU3
NDljZGU1MDYxYjQwOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5o
CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKSBPVkVSUklERSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKHRoaXMpOyB9CiAKICAgICAvLyBVc2VkIGJ5IDxhbmltYXRlTW90aW9uPgotICAgIE93
blB0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOwogfTsK
IAogdm9pZCBpc1NWR0dyYXBoaWNzRWxlbWVudChjb25zdCBTVkdHcmFwaGljc0VsZW1lbnQmKTsg
Ly8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBp
bGUgdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgK
aW5kZXggODkyN2I3NTQxZGMwODM0MGNmM2NkZjZkZTMyODkzZjYyNTY0YjNkMy4uMzZmOTFhMDI1
YzBmMTNhNDFmM2M2NTMzNTg1MTE4Y2MyYjgxZjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgKQEAgLTI0LDIwICsyNCwxNCBAQAogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogI2luY2x1ZGUg
IlNWR1BhdGhTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIDogcHVibGljIFNW
R1BhdGhTb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR1BhdGhCeXRl
U3RyZWFtU291cmNlPiBjcmVhdGUoU1ZHUGF0aEJ5dGVTdHJlYW0qIHN0cmVhbSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Uoc3RyZWFt
KSk7Ci0gICAgfQorICAgIGV4cGxpY2l0IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlKFNWR1BhdGhC
eXRlU3RyZWFtKik7CiAKIHByaXZhdGU6Ci0gICAgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UoU1ZH
UGF0aEJ5dGVTdHJlYW0qKTsKLQogICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlRGF0YSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBtb3ZlVG9OZXh0VG9rZW4oKSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIHBhcnNlU1ZHU2VnbWVudFR5cGUoU1ZHUGF0aFNlZ1R5cGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFBhcnNlci5oCmluZGV4IDA0MWJmNzBjZDFiMmQxY2M2OWFhMDFlYjQ2
YmYxMGQzNTkwMmY1MTEuLjY1ZjRiZDg1MTVlZWI4NzYxM2Q2YWJmMTQxNDU3MmEyNzhhZjVmZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmIEVO
QUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgiCiAjaW5jbHVkZSAiU1ZHUGF0
aFNlZy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0U291cmNlLmgKaW5kZXggMzU3MjQ4ZjU0NTEyMGNhOWI3ODM3Y2Q4MjZhMjZh
ZTcwYzU0NGEwOS4uNzk3MjhmMDliN2QxYzgxODJjYmVhZmY4N2YxZWVkZDQzYjk2ZmYzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKQEAgLTI1LDIxICsyNSwx
NSBAQAogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5o
IgogI2luY2x1ZGUgIlNWR1BhdGhTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTVkdQYXRoU2VnTGlzdFNvdXJjZSA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdQYXRoU2VnTGlzdFNvdXJjZT4gY3JlYXRlKGNvbnN0
IFNWR1BhdGhTZWdMaXN0JiBwYXRoU2VnTGlzdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU1ZHUGF0aFNlZ0xpc3RTb3VyY2UocGF0aFNlZ0xpc3QpKTsKLSAgICB9CisgICAg
ZXhwbGljaXQgU1ZHUGF0aFNlZ0xpc3RTb3VyY2UoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmKTsKIAog
cHJpdmF0ZToKLSAgICBTVkdQYXRoU2VnTGlzdFNvdXJjZShjb25zdCBTVkdQYXRoU2VnTGlzdCYp
OwotCiAgICAgdmlydHVhbCBib29sIGhhc01vcmVEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIG1vdmVUb05leHRUb2tlbigpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wg
cGFyc2VTVkdTZWdtZW50VHlwZShTVkdQYXRoU2VnVHlwZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU3RyaW5nU291cmNlLmgKaW5kZXggNzk3YWExMWY1ZDZjNjNhNTEwOTAyZGRhMDU5MmMz
MzEwMDRmZGZjOC4uY2UxMTQxYzE0MTYxNTFhZDQyNDRhOGY2MzQ2MGZlMzM0M2E5YTE1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oCkBAIC0yMywyMSArMjMsMTUg
QEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUGF0aFN0cmluZ1NvdXJjZSA6IHB1Ymxp
YyBTVkdQYXRoU291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdQYXRo
U3RyaW5nU291cmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR1BhdGhTdHJpbmdTb3VyY2Uoc3RyaW5nKSk7Ci0gICAg
fQorICAgIGV4cGxpY2l0IFNWR1BhdGhTdHJpbmdTb3VyY2UoY29uc3QgU3RyaW5nJik7CiAKIHBy
aXZhdGU6Ci0gICAgU1ZHUGF0aFN0cmluZ1NvdXJjZShjb25zdCBTdHJpbmcmKTsKLQogICAgIHZp
cnR1YWwgYm9vbCBoYXNNb3JlRGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBtb3ZlVG9O
ZXh0VG9rZW4oKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTVkdTZWdtZW50VHlwZShTVkdQYXRo
U2VnVHlwZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4IGU4
NmU3NGFmMzkwOGU2YWQyMmY3ODMxN2VmOWM1NDc2NzAyODE1MjIuLjFjN2NlMTYyOTM1MGRlM2Fi
YTU4MTU3ZTkwMzA3MzI0MjhkNTI2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxp
dGllcy5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiBkLCBQYXRoJiByZXN1bHQpCiAKICAgICBTVkdQYXRoQnVpbGRlciogYnVpbGRl
ciA9IGdsb2JhbFNWR1BhdGhCdWlsZGVyKHJlc3VsdCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aFN0
cmluZ1NvdXJjZT4gc291cmNlID0gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6Y3JlYXRlKGQpOworICAg
IGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoU3RyaW5nU291cmNlPihkKTsK
ICAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5n
ZXQoKSwgYnVpbGRlcik7CiAgICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21T
b3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOwogICAgIHBhcnNlci0+Y2xlYW51cCgpOwpAQCAtMTMz
LDcgKzEzMyw3IEBAIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlz
dChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU1ZHUGF0CiAKICAgICBTVkdQYXRoQnl0ZVN0
cmVhbUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIocmVz
dWx0KTsKIAotICAgIE93blB0cjxTVkdQYXRoU2VnTGlzdFNvdXJjZT4gc291cmNlID0gU1ZHUGF0
aFNlZ0xpc3RTb3VyY2U6OmNyZWF0ZShsaXN0KTsKKyAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHUGF0aFNlZ0xpc3RTb3VyY2U+KGxpc3QpOwogICAgIFNWR1BhdGhQYXJzZXIq
IHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKICAg
ICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5nTW9kZSk7
CiAgICAgcGFyc2VyLT5jbGVhbnVwKCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBhcHBlbmRT
VkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFBhc3NSZWZQdHI8U1ZHUGF0aFNlZz4gcGF0
aFNlZywgU1ZHUGEKICAgICBhdXRvIGFwcGVuZGVkQnl0ZVN0cmVhbSA9IHN0ZDo6bWFrZV91bmlx
dWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAKICAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIq
IGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoYXBwZW5kZWRCeXRlU3Ry
ZWFtLmdldCgpKTsKLSAgICBPd25QdHI8U1ZHUGF0aFNlZ0xpc3RTb3VyY2U+IHNvdXJjZSA9IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpjcmVhdGUoYXBwZW5kZWRJdGVtTGlzdCk7CisgICAgYXV0byBz
b3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhTZWdMaXN0U291cmNlPihhcHBlbmRlZEl0
ZW1MaXN0KTsKICAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2Vy
KHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7CiAgICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRo
RGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUsIGZhbHNlKTsKICAgICBwYXJzZXItPmNsZWFudXAo
KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBib29sIGJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKFNWR1Bh
dGhCeXRlU3RyZWFtKiBzdHJlYW0sIFBhdGgmIHJlc3VsdCkKIAogICAgIFNWR1BhdGhCdWlsZGVy
KiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ1aWxkZXIocmVzdWx0KTsKIAotICAgIE93blB0cjxT
VkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gc291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6
OmNyZWF0ZShzdHJlYW0pOworICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQ
YXRoQnl0ZVN0cmVhbVNvdXJjZT4oc3RyZWFtKTsKICAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIg
PSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7CiAgICAgYm9vbCBv
ayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOwog
ICAgIHBhcnNlci0+Y2xlYW51cCgpOwpAQCAtMTgxLDExICsxODEsMTEgQEAgYm9vbCBidWlsZFNW
R1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIHN0cmVhbSwgU1ZH
UGF0aEVsZW1lbnQKIHsKICAgICBBU1NFUlQoc3RyZWFtKTsKICAgICBpZiAoc3RyZWFtLT5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOyAKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1
aWxkZXIoZWxlbWVudCwgcGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcgPyBQYXRoU2Vn
Tm9ybWFsaXplZFJvbGUgOiBQYXRoU2VnVW5hbHRlcmVkUm9sZSwgcmVzdWx0KTsKIAotICAgIE93
blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gc291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2U6OmNyZWF0ZShzdHJlYW0pOworICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4oc3RyZWFtKTsKICAgICBTVkdQYXRoUGFyc2VyKiBw
YXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7CiAgICAg
Ym9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUpOwog
ICAgIHBhcnNlci0+Y2xlYW51cCgpOwpAQCAtMTk2LDExICsxOTYsMTEgQEAgYm9vbCBidWlsZFN0
cmluZ0Zyb21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBzdHJlYW0sIFN0cmluZyYgcmVz
dWx0LCBQYXRoUGEKIHsKICAgICBBU1NFUlQoc3RyZWFtKTsKICAgICBpZiAoc3RyZWFtLT5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOyAKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBTVkdQYXRoU3RyaW5nQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhTdHJpbmdCdWls
ZGVyKCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+IHNvdXJjZSA9IFNW
R1BhdGhCeXRlU3RyZWFtU291cmNlOjpjcmVhdGUoc3RyZWFtKTsKKyAgICBhdXRvIHNvdXJjZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KHN0cmVhbSk7CiAgICAg
U1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCks
IGJ1aWxkZXIpOwogICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNl
KHBhcnNpbmdNb2RlKTsKICAgICByZXN1bHQgPSBidWlsZGVyLT5yZXN1bHQoKTsKQEAgLTIxNiw3
ICsyMTYsNyBAQCBib29sIGJ1aWxkU3RyaW5nRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1Bh
dGhTZWdMaXN0JiBsaXN0LCBTdHJpbmcmIHJlc3VsdCwgUAogCiAgICAgU1ZHUGF0aFN0cmluZ0J1
aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU3RyaW5nQnVpbGRlcigpOwogCi0gICAgT3du
UHRyPFNWR1BhdGhTZWdMaXN0U291cmNlPiBzb3VyY2UgPSBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6
Y3JlYXRlKGxpc3QpOworICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRo
U2VnTGlzdFNvdXJjZT4obGlzdCk7CiAgICAgU1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFs
U1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwogICAgIGJvb2wgb2sgPSBwYXJz
ZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdNb2RlKTsKICAgICByZXN1bHQgPSBi
dWlsZGVyLT5yZXN1bHQoKTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBib29sIGJ1aWxkU1ZHUGF0aEJ5
dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZCwgU1ZHUGF0aEJ5dGVTdHJlYW0qIHJl
c3VsdAogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZH
UGF0aEJ5dGVTdHJlYW1CdWlsZGVyKHJlc3VsdCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aFN0cmlu
Z1NvdXJjZT4gc291cmNlID0gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6Y3JlYXRlKGQpOworICAgIGF1
dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoU3RyaW5nU291cmNlPihkKTsKICAg
ICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQo
KSwgYnVpbGRlcik7CiAgICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3Vy
Y2UocGFyc2luZ01vZGUpOwogICAgIHBhcnNlci0+Y2xlYW51cCgpOwpAQCAtMjUzLDggKzI1Myw4
IEBAIGJvb2wgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFt
KiBmcm9tU3RyZWFtLCBTVkdQYXRoQnl0ZVN0CiAKICAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIocmVzdWx0KTsKIAot
ICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gZnJvbVNvdXJjZSA9IFNWR1BhdGhC
eXRlU3RyZWFtU291cmNlOjpjcmVhdGUoZnJvbVN0cmVhbSk7Ci0gICAgT3duUHRyPFNWR1BhdGhC
eXRlU3RyZWFtU291cmNlPiB0b1NvdXJjZSA9IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpjcmVh
dGUodG9TdHJlYW0pOworICAgIGF1dG8gZnJvbVNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KGZyb21TdHJlYW0pOworICAgIGF1dG8gdG9Tb3VyY2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPih0b1N0cmVhbSk7CiAgICAg
U1ZHUGF0aEJsZW5kZXIqIGJsZW5kZXIgPSBnbG9iYWxTVkdQYXRoQmxlbmRlcigpOwogICAgIGJv
b2wgb2sgPSBibGVuZGVyLT5ibGVuZEFuaW1hdGVkUGF0aChwcm9ncmVzcywgZnJvbVNvdXJjZS5n
ZXQoKSwgdG9Tb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwogICAgIGJsZW5kZXItPmNsZWFudXAoKTsK
QEAgLTI3Myw4ICsyNzMsOCBAQCBib29sIGFkZFRvU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5
dGVTdHJlYW0qIGZyb21TdHJlYW0sIFNWR1BhdGhCeXRlU3RyZWFtKiBieQogICAgIGF1dG8gZnJv
bVN0cmVhbUNvcHkgPSBmcm9tU3RyZWFtLT5jb3B5KCk7CiAgICAgZnJvbVN0cmVhbS0+Y2xlYXIo
KTsKIAotICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gZnJvbVNvdXJjZSA9IFNW
R1BhdGhCeXRlU3RyZWFtU291cmNlOjpjcmVhdGUoZnJvbVN0cmVhbUNvcHkuZ2V0KCkpOwotICAg
IE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gYnlTb3VyY2UgPSBTVkdQYXRoQnl0ZVN0
cmVhbVNvdXJjZTo6Y3JlYXRlKGJ5U3RyZWFtKTsKKyAgICBhdXRvIGZyb21Tb3VyY2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPihmcm9tU3RyZWFtQ29weS5nZXQo
KSk7CisgICAgYXV0byBieVNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJl
YW1Tb3VyY2U+KGJ5U3RyZWFtKTsKICAgICBTVkdQYXRoQmxlbmRlciogYmxlbmRlciA9IGdsb2Jh
bFNWR1BhdGhCbGVuZGVyKCk7CiAgICAgYm9vbCBvayA9IGJsZW5kZXItPmFkZEFuaW1hdGVkUGF0
aChmcm9tU291cmNlLmdldCgpLCBieVNvdXJjZS5nZXQoKSwgYnVpbGRlciwgcmVwZWF0Q291bnQp
OwogICAgIGJsZW5kZXItPmNsZWFudXAoKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCBib29sIGdldFNW
R1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSog
c3RyZWFtLCBmbG9hdAogICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRo
VHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0aCk7CiAgICAgU1ZHUGF0aFRy
YXZlcnNhbFN0YXRlQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXIodHJhdmVyc2FsU3RhdGUsIGxlbmd0aCk7CiAKLSAgICBPd25QdHI8U1ZHUGF0aEJ5
dGVTdHJlYW1Tb3VyY2U+IHNvdXJjZSA9IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpjcmVhdGUo
c3RyZWFtKTsKKyAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2U+KHN0cmVhbSk7CiAgICAgU1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFs
U1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwogICAgIGJvb2wgb2sgPSBwYXJz
ZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsKICAgICBwYXRo
U2VnID0gYnVpbGRlci0+cGF0aFNlZ21lbnRJbmRleCgpOwpAQCAtMzAzLDExICszMDMsMTEgQEAg
Ym9vbCBnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0q
IHN0cmVhbSwgZmxvYXQmIHRvdGFsTGUKICAgICBBU1NFUlQoc3RyZWFtKTsKICAgICBpZiAoc3Ry
ZWFtLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIFBhdGhU
cmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNh
bFRvdGFsTGVuZ3RoKTsKICAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKiBidWlsZGVy
ID0gZ2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcih0cmF2ZXJzYWxTdGF0ZSwgMCk7
Ci0gICAgCi0gICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPiBzb3VyY2UgPSBTVkdQ
YXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHN0cmVhbSk7CisKKyAgICBhdXRvIHNvdXJjZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KHN0cmVhbSk7CiAgICAg
U1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCks
IGJ1aWxkZXIpOwogICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNl
KE5vcm1hbGl6ZWRQYXJzaW5nKTsKICAgICB0b3RhbExlbmd0aCA9IGJ1aWxkZXItPnRvdGFsTGVu
Z3RoKCk7CkBAIC0zMjAsMTEgKzMyMCwxMSBAQCBib29sIGdldFBvaW50QXRMZW5ndGhPZlNWR1Bh
dGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBzdHJlYW0sIGZsb2F0IGxlbmd0aAogICAg
IEFTU0VSVChzdHJlYW0pOwogICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAorCiAgICAgUGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNhbFN0YXRl
KFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsUG9pbnRBdExlbmd0aCk7CiAgICAgU1ZHUGF0
aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxT
dGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3RhdGUsIGxlbmd0aCk7Ci0gICAgCi0gICAgT3duUHRyPFNW
R1BhdGhCeXRlU3RyZWFtU291cmNlPiBzb3VyY2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6
Y3JlYXRlKHN0cmVhbSk7CisKKyAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KHN0cmVhbSk7CiAgICAgU1ZHUGF0aFBhcnNlciogcGFyc2Vy
ID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwogICAgIGJvb2wg
b2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsK
ICAgICBwb2ludCA9IGJ1aWxkZXItPmN1cnJlbnRQb2ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoVXRpbGl0aWVzLmgKaW5kZXggZTJlNjY3YzQ3YjMyYjBlZjA5M2MxNTU1ZTU2MDAzOWU5YWY0
ODdjMy4uNzE1N2E5OGFlYWJhMGUxM2FkYTU4NTE3ZGZkODkwZTFjYTg0YTJiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCkBAIC0yMyw3ICsyMyw2IEBACiAjaWYgRU5BQkxF
KFNWRykKICNpbmNsdWRlICJTVkdQYXRoQ29uc3VtZXIuaCIKICNpbmNsdWRlICJTVkdQb2ludC5o
IgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAppbmRleCBiMTk4M2Y0MDkxNTM5NjQ4NWU0YTk5
MTcwMGI1MzNiMjI3Y2JkYTZjLi45ZjM5OTVmY2U2Y2Y5MjNiYmNjNWM1MzQzZWFhNWM3ZjlmYzMx
YmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29u
dGFpbmVyLmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzY2hl
ZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQsCiAjZW5k
aWYKIAogICAgIEVsZW1lbnRBdHRyaWJ1dGVQYWlyIGtleSh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUp
OwotICAgIE93blB0cjxBbmltYXRpb25zVmVjdG9yPiYgc2NoZWR1bGVkID0gbV9zY2hlZHVsZWRB
bmltYXRpb25zLmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8QW5pbWF0aW9uc1ZlY3Rvcj4mIHNjaGVkdWxlZCA9IG1fc2NoZWR1bGVkQW5pbWF0
aW9ucy5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzY2hlZHVs
ZWQpCi0gICAgICAgIHNjaGVkdWxlZCA9IGFkb3B0UHRyKG5ldyBBbmltYXRpb25zVmVjdG9yKTsK
KyAgICAgICAgc2NoZWR1bGVkID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigp
OwogICAgIEFTU0VSVCghc2NoZWR1bGVkLT5jb250YWlucyhhbmltYXRpb24pKTsKICAgICBzY2hl
ZHVsZWQtPmFwcGVuZChhbmltYXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmgKaW5kZXggMjlhOTUxMjY0YmNmOWI3OThhNjIzMDYx
OWJhYmFiOTQ3Mzk4ZWJlMi4uODFkMTk0ZTJhMzRiODVlMTZlMDcwNjExMTUxNTM0ZmNlMjZlMzZj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRh
aW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWlu
ZXIuaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBwYWlyPFNWR0Vs
ZW1lbnQqLCBRdWFsaWZpZWROYW1lPiBFbGVtZW50QXR0cmlidXRlUGFpcjsKICAgICB0eXBlZGVm
IFZlY3RvcjxTVkdTTUlMRWxlbWVudCo+IEFuaW1hdGlvbnNWZWN0b3I7Ci0gICAgdHlwZWRlZiBI
YXNoTWFwPEVsZW1lbnRBdHRyaWJ1dGVQYWlyLCBPd25QdHI8QW5pbWF0aW9uc1ZlY3Rvcj4+IEdy
b3VwZWRBbmltYXRpb25zTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxFbGVtZW50QXR0cmlidXRl
UGFpciwgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0b3I+PiBHcm91cGVkQW5pbWF0aW9u
c01hcDsKICAgICBHcm91cGVkQW5pbWF0aW9uc01hcCBtX3NjaGVkdWxlZEFuaW1hdGlvbnM7CiAK
ICAgICBTVkdTVkdFbGVtZW50KiBtX293bmVyU1ZHRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGI1MTQwM2FmOWFiZTE0MTA4ZTVkNmJjMGY4NzQ5
M2JjZmYyNjQ1MmQuLjUwNTk4YmJjZTc3Y2YwODU1Y2E1NzNmZjNjMjFkMTg0ZmViYjdmNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNTcsNyArNTcsNyBA
QCBTVkdJbWFnZTo6flNWR0ltYWdlKCkKIHsKICAgICBpZiAobV9wYWdlKSB7CiAgICAgICAgIC8v
IFN0b3JlIG1fcGFnZSBpbiBhIGxvY2FsIHZhcmlhYmxlLCBjbGVhcmluZyBtX3BhZ2UsIHNvIHRo
YXQgU1ZHSW1hZ2VDaHJvbWVDbGllbnQga25vd3Mgd2UncmUgZGVzdHJ1Y3RlZC4KLSAgICAgICAg
T3duUHRyPFBhZ2U+IGN1cnJlbnRQYWdlID0gbV9wYWdlLnJlbGVhc2UoKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBhZ2U+IGN1cnJlbnRQYWdlID0gc3RkOjptb3ZlKG1fcGFnZSk7CiAgICAg
ICAgIGN1cnJlbnRQYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5mcmFtZURldGFjaGVkKCk7IC8v
IEJyZWFrIGJvdGggdGhlIGxvYWRlciBhbmQgdmlldyByZWZlcmVuY2VzIHRvIHRoZSBmcmFtZQog
ICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAg
UGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CiAgICAgICAgIGZpbGxXaXRoRW1wdHlDbGll
bnRzKHBhZ2VDbGllbnRzKTsKLSAgICAgICAgbV9jaHJvbWVDbGllbnQgPSBhZG9wdFB0cihuZXcg
U1ZHSW1hZ2VDaHJvbWVDbGllbnQodGhpcykpOworICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdl
Q2xpZW50cy5jaHJvbWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKIAogICAgICAgICAv
LyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWlnaHQgbGVh
ayB0aGUgd29ybGQuCkBAIC0zNTUsNyArMzU1LDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5n
ZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgYW4g
aXNzdWUgd2hlbiBTVkdJbWFnZSB3aWxsIGJlIGFibGUgdG8gbG9hZCBvdGhlcgogICAgICAgICAv
LyBTVkdJbWFnZSBvYmplY3RzLCBidXQgd2UncmUgc2FmZSBub3csIGJlY2F1c2UgU1ZHSW1hZ2Ug
Y2FuIG9ubHkgYmUKICAgICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9wLWxldmVsIGRvY3VtZW50Lgot
ICAgICAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOworICAgICAg
ICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KHBhZ2VDbGllbnRzKTsKICAgICAgICAg
bV9wYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFn
ZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5z
ZXR0aW5ncygpLnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKQEAgLTM3OSw3ICszNzksNyBAQCBi
b29sIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAg
bV9pbnRyaW5zaWNTaXplID0gY29udGFpbmVyU2l6ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBt
X3BhZ2U7CisgICAgcmV0dXJuIG1fcGFnZSAhPSBudWxscHRyOwogfQogCiBTdHJpbmcgU1ZHSW1h
Z2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgKaW5kZXggODg2NzZjYWE3NzJiZDZjNDIxMTNhOTAyNGViMjFkZGE1NTAxYTExMC4u
YzQxYzk0M2FhNDFkZDRhMDhiMjQyNTVkYjgxZmQ2Y2ZhYTY0Mjk2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTk2LDggKzk2LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBPd25QdHI8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+IG1f
Y2hyb21lQ2xpZW50OwotICAgIE93blB0cjxQYWdlPiBtX3BhZ2U7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFNWR0ltYWdlQ2hyb21lQ2xpZW50PiBtX2Nocm9tZUNsaWVudDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFnZT4gbV9wYWdlOwogICAgIEludFNpemUgbV9pbnRyaW5zaWNTaXplOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKaW5kZXggOTc4MmE2
YzEwN2I5N2VmNmM2MzAwMWVhZWQ4ZDU4NGZkNDAwYTVkNC4uM2UwMDBkM2FjNWU2YzliOTYzYTdi
OGIyMGE1NjYzZWJjMDg0ZDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5oCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDAsMTMgKzM5LDkgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZHSW1h
Z2VDYWNoZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgZXhw
bGljaXQgU1ZHSW1hZ2VDYWNoZShTVkdJbWFnZSopOwogICAgIH5TVkdJbWFnZUNhY2hlKCk7CiAK
LSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdJbWFnZUNhY2hlPiBjcmVhdGUoU1ZHSW1hZ2UqIGlt
YWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdJbWFnZUNhY2hlKGlt
YWdlKSk7Ci0gICAgfQotCiAgICAgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoY29uc3QgQ2Fj
aGVkSW1hZ2VDbGllbnQqKTsKIAogICAgIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVy
KGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0KTsKQEAgLTU1
LDggKzUwLDYgQEAgcHVibGljOgogICAgIEltYWdlKiBpbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCopOwogCiBwcml2YXRlOgotICAgIFNWR0ltYWdlQ2FjaGUoU1ZHSW1hZ2UqKTsK
LQogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIFJlZlB0cjxT
VkdJbWFnZUZvckNvbnRhaW5lcj4+IEltYWdlRm9yQ29udGFpbmVyTWFwOwogCiAgICAgU1ZHSW1h
Z2UqIG1fc3ZnSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwCmluZGV4IDRkNWFjMDJmYjI4MDhl
Yzc4NmRmNGY4YTkzZGQ4MTY1MWNjNTcxYjYuLjJjMzk0OWJlZDM5YmY5OGFhYWNhMDJlODI4ZDEz
MDcyMWZjZmE4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAK
ICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlJ
bmZvLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC01NCw5ICs1Myw5IEBAIHZvaWQgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YWRk
UHJvcGVydHkoY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgYSBzZWNvbmQgaGFzaCB0YWJsZSBsb29rdXAs
IGJ1dCB3aXRoIEhhc2hNYXA6OmFkZCB3ZSBjb3VsZCBpbnN0ZWFkIGRvIG9ubHkgb25lLgotICAg
IE93blB0cjxQcm9wZXJ0aWVzVmVjdG9yPiB2ZWN0b3IgPSBhZG9wdFB0cihuZXcgUHJvcGVydGll
c1ZlY3Rvcik7CisgICAgYXV0byB2ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnRpZXNW
ZWN0b3I+KCk7CiAgICAgdmVjdG9yLT5hcHBlbmQoaW5mbyk7Ci0gICAgbV9tYXAuc2V0KGluZm8t
PmF0dHJpYnV0ZU5hbWUsIHZlY3Rvci5yZWxlYXNlKCkpOworICAgIG1fbWFwLnNldChpbmZvLT5h
dHRyaWJ1dGVOYW1lLCBzdGQ6Om1vdmUodmVjdG9yKSk7CiB9CiAKIHZvaWQgU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKFNWR0VsZW1lbnQq
IG93bmVyVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgVmVjdG9yPFJl
ZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5Pj4mIHByb3BlcnRpZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgK
aW5kZXggNGI0ZjIzMzQ4YTRmYzM2YjM4OWZmMDRjN2E1NDk3OTMwM2Y4MDBkNi4uMGJhMjQyNTRl
M2ViMmI4YWRlYmVlOTFmZmJjZmQyMmM3MmE2YjIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaApAQCAt
NDksNyArNDksNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eT4gYW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKik7CiAKICAg
ICB0eXBlZGVmIFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPiBQcm9wZXJ0aWVzVmVjdG9y
OwotICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBPd25QdHI8UHJvcGVydGllc1Zl
Y3Rvcj4+IEF0dHJpYnV0ZVRvUHJvcGVydGllc01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UXVh
bGlmaWVkTmFtZSwgc3RkOjp1bmlxdWVfcHRyPFByb3BlcnRpZXNWZWN0b3I+PiBBdHRyaWJ1dGVU
b1Byb3BlcnRpZXNNYXA7CiAgICAgQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwIG1fbWFwOwogfTsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>