<?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>179314</bug_id>
          
          <creation_ts>2017-11-06 00:16:30 -0800</creation_ts>
          <short_desc>Replace some stack raw pointers with RefPtrs within WebCore/svg</short_desc>
          <delta_ts>2017-11-10 15:50:12 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1368569</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-06 00:16:30 -0800</bug_when>
    <thetext>Replace some stack raw pointers with RefPtrs within WebCore/svg.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368570</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-06 00:16:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/34842204&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368572</commentid>
    <comment_count>2</comment_count>
      <attachid>326109</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-06 00:31:48 -0800</bug_when>
    <thetext>Created attachment 326109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368797</commentid>
    <comment_count>3</comment_count>
      <attachid>326159</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-06 14:55:54 -0800</bug_when>
    <thetext>Created attachment 326159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368799</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-06 14:59:11 -0800</bug_when>
    <thetext>Attachment 326159 did not pass style-queue:


ERROR: Source/WebCore/svg/animation/SMILTimeContainer.cpp:291:  &apos;resultElement&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedNullptr&apos;.  [readability/naming/protected] [4]
ERROR: Source/WebCore/svg/SVGSVGElement.cpp:641:  &apos;view&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedViewSpec&apos;.  [readability/naming/protected] [4]
ERROR: Source/WebCore/svg/SVGDocumentExtensions.cpp:275:  &apos;element&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedFirstElement&apos;.  [readability/naming/protected] [4]
Total errors found: 3 in 61 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368833</commentid>
    <comment_count>5</comment_count>
      <attachid>326168</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-06 16:40:25 -0800</bug_when>
    <thetext>Created attachment 326168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368834</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-06 16:43:17 -0800</bug_when>
    <thetext>Attachment 326168 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGSVGElement.cpp:641:  &apos;view&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedViewSpec&apos;.  [readability/naming/protected] [4]
ERROR: Source/WebCore/svg/SVGDocumentExtensions.cpp:275:  &apos;element&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedFirstElement&apos;.  [readability/naming/protected] [4]
Total errors found: 2 in 61 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369342</commentid>
    <comment_count>7</comment_count>
      <attachid>326168</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-11-07 22:09:00 -0800</bug_when>
    <thetext>Comment on attachment 326168
Patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:119
&gt; -    SVGElement* stopAtElement = SVGLocatable::nearestViewportElement(element);
&gt; +    auto* stopAtElement = SVGLocatable::nearestViewportElement(element);

Why are we not using RefPtr here?

&gt; Source/WebCore/svg/SVGAElement.cpp:128
&gt; -                Element* targetElement = treeScope().getElementById(url.substringSharingImpl(1));
&gt; +                RefPtr&lt;Element&gt; targetElement = treeScope().getElementById(url.substringSharingImpl(1));

Use makeRefPtr?

&gt; Source/WebCore/svg/SVGAElement.cpp:144
&gt; -            Frame* frame = document().frame();
&gt; +            RefPtr&lt;Frame&gt; frame = document().frame();

Use makeRefPtr?

&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:87
&gt; -    SVGElement* targetElement = this-&gt;targetElement();
&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();

Ditto.

&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:189
&gt; -    SVGElement* targetElement = this-&gt;targetElement();
&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();

Ditto.

&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:339
&gt; -    SVGElement* targetElement = this-&gt;targetElement();
&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();

Ditto.

&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:59
&gt; -    SVGElement* targetElement = this-&gt;targetElement();
&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();

Ditto.

&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:168
&gt; -    SVGElement* targetElement = this-&gt;targetElement();
&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();

Ditto.

&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:-234
&gt; -    SVGElement* targetElement = this-&gt;targetElement();

Ditto.

&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:-274
&gt; -    SVGElement* targetElement = this-&gt;targetElement();

Ditto.

&gt; Source/WebCore/svg/SVGAnimationElement.cpp:646
&gt; -    Element* parent = targetElement-&gt;parentElement();
&gt; +    RefPtr&lt;Element&gt; parent = targetElement-&gt;parentElement();

Ditto.

&gt; Source/WebCore/svg/SVGAnimationElement.cpp:665
&gt; -    SVGElement* targetElement = this-&gt;targetElement();
&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();

Ditto.

&gt; Source/WebCore/svg/SVGElement.cpp:291
&gt; -        if (SVGElement* correspondingElement = m_svgRareData-&gt;correspondingElement())
&gt; +        if (RefPtr&lt;SVGElement&gt; correspondingElement = m_svgRareData-&gt;correspondingElement())

Ditto.

&gt; Source/WebCore/svg/SVGElement.cpp:449
&gt; -        if (SVGElement* oldCorrespondingElement = m_svgRareData-&gt;correspondingElement())
&gt; +        if (RefPtr&lt;SVGElement&gt; oldCorrespondingElement = m_svgRareData-&gt;correspondingElement())

Ditto.

&gt; Source/WebCore/svg/SVGElement.cpp:762
&gt; -    if (Element* parent = parentOrShadowHostElement()) {
&gt; +    if (RefPtr&lt;Element&gt; parent = parentOrShadowHostElement()) {

Ditto.

&gt; Source/WebCore/svg/SVGElement.cpp:1089
&gt; -    ContainerNode* node = parentNode();
&gt; +    RefPtr&lt;ContainerNode&gt; node = parentNode();

Ditto.

&gt; Source/WebCore/svg/SVGElement.cpp:1132
&gt; +        RefPtr&lt;SVGElement&gt; instance = *instances.begin();

Ditto.

&gt; Source/WebCore/svg/SVGFEImageElement.cpp:105
&gt; -    Element* target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);
&gt; +    RefPtr&lt;Element&gt; target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);

Ditto.

&gt; Source/WebCore/svg/SVGFEImageElement.cpp:176
&gt; -    Element* parent = parentElement();
&gt; +    RefPtr&lt;Element&gt; parent = parentElement();

Ditto.

&gt; Source/WebCore/svg/SVGFELightElement.cpp:82
&gt; -    SVGFELightElement* lightNode = findLightElement(svgElement);
&gt; +    RefPtr&lt;SVGFELightElement&gt; lightNode = findLightElement(svgElement);

Ditto.

&gt; Source/WebCore/svg/SVGFELightElement.cpp:178
&gt; -    ContainerNode* parent = parentNode();
&gt; +    RefPtr&lt;ContainerNode&gt; parent = parentNode();

Ditto.

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:157
&gt; -    ContainerNode* parent = element-&gt;parentNode();
&gt; +    RefPtr&lt;ContainerNode&gt; parent = element-&gt;parentNode();

Ditto.

&gt; Source/WebCore/svg/SVGFontFaceElement.cpp:266
&gt; -            if (CSSFontFaceSrcValue* item = downcast&lt;CSSFontFaceSrcValue&gt;(srcList-&gt;itemWithoutBoundsCheck(i)))
&gt; +            if (RefPtr&lt;CSSFontFaceSrcValue&gt; item = downcast&lt;CSSFontFaceSrcValue&gt;(srcList-&gt;itemWithoutBoundsCheck(i)))

Ditto.

&gt; Source/WebCore/svg/SVGFontFaceFormatElement.cpp:50
&gt; -    ContainerNode* ancestor = parentNode()-&gt;parentNode();
&gt; +    RefPtr&lt;ContainerNode&gt; ancestor = parentNode()-&gt;parentNode();

Ditto.

&gt; Source/WebCore/svg/SVGFontFaceUriElement.cpp:79
&gt; -    ContainerNode* grandparent = parentNode()-&gt;parentNode();
&gt; +    RefPtr&lt;ContainerNode&gt; grandparent = parentNode()-&gt;parentNode();

Ditto.

&gt; Source/WebCore/svg/SVGForeignObjectElement.cpp:145
&gt; -    Element* ancestor = parentElement();
&gt; +    RefPtr&lt;Element&gt; ancestor = parentElement();

Ditto.

&gt; Source/WebCore/svg/SVGLengthContext.cpp:304
&gt; -    SVGElement* viewportElement = m_context-&gt;viewportElement();
&gt; +    RefPtr&lt;SVGElement&gt; viewportElement = m_context-&gt;viewportElement();

Ditto.

&gt; Source/WebCore/svg/SVGLinearGradientElement.cpp:165
&gt; -        Node* refNode = SVGURIReference::targetElementFromIRIString(current-&gt;href(), document());
&gt; +        RefPtr&lt;Node&gt; refNode = SVGURIReference::targetElementFromIRIString(current-&gt;href(), document());

Ditto.

&gt; Source/WebCore/svg/SVGMPathElement.cpp:65
&gt; -    Element* target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);
&gt; +    RefPtr&lt;Element&gt; target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);

Ditto.

&gt; Source/WebCore/svg/SVGRadialGradientElement.cpp:181
&gt; -        Node* refNode = SVGURIReference::targetElementFromIRIString(current-&gt;href(), document());
&gt; +        RefPtr&lt;Node&gt; refNode = SVGURIReference::targetElementFromIRIString(current-&gt;href(), document());

Ditto.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:175
&gt; -    Frame* frame = document().frame();
&gt; +    RefPtr&lt;Frame&gt; frame = document().frame();

Ditto.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:376
&gt; +    if (RefPtr&lt;Frame&gt; frame = document().frame())

Ditto.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:456
&gt; -            if (FrameView* view = document().view()) {
&gt; +            if (RefPtr&lt;FrameView&gt; view = document().view()) {

Ditto.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:641
&gt; -    SVGViewSpec* view = m_viewSpec.get();
&gt; +    RefPtr&lt;SVGViewSpec&gt; view(m_viewSpec);

Ditto.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:725
&gt; -    Element* element = treeScope().getElementById(id);
&gt; +    RefPtr&lt;Element&gt; element = treeScope().getElementById(id);

Ditto.

&gt; Source/WebCore/svg/SVGStyleElement.cpp:58
&gt; -    if (CSSStyleSheet* styleSheet = sheet())
&gt; +    if (RefPtr&lt;CSSStyleSheet&gt; styleSheet = sheet())

Ditto.

&gt; Source/WebCore/svg/SVGTRefElement.cpp:166
&gt; -    Node* container = shadowRoot()-&gt;firstChild();
&gt; +    RefPtr&lt;Node&gt; container = shadowRoot()-&gt;firstChild();

Ditto.

&gt; Source/WebCore/svg/SVGTextPathElement.cpp:159
&gt; -    Element* target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);
&gt; +    RefPtr&lt;Element&gt; target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);

Ditto.

&gt; Source/WebCore/svg/SVGUseElement.cpp:145
&gt; -        SVGElement* correspondingElement = shadowElement.correspondingElement();
&gt; +        RefPtr&lt;SVGElement&gt; correspondingElement = shadowElement.correspondingElement();

Ditto.

&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:266
&gt; -    SVGSVGElement* owner = ownerSVGElement();
&gt; +    RefPtr&lt;SVGSVGElement&gt; owner = ownerSVGElement();

Ditto.

&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:547
&gt; -            Element* eventBase = eventBaseFor(condition);
&gt; +            RefPtr&lt;Element&gt; eventBase = eventBaseFor(condition);

Ditto.

&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:582
&gt; -            Element* eventBase = eventBaseFor(condition);
&gt; +            RefPtr&lt;Element&gt; eventBase = eventBaseFor(condition);

Ditto.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:288
&gt; -    FrameView* view = frameView();
&gt; +    RefPtr&lt;FrameView&gt; view = frameView();

Ditto.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:412
&gt; -    Document* document = m_page-&gt;mainFrame().document();
&gt; +    RefPtr&lt;Document&gt; document = m_page-&gt;mainFrame().document();

Ditto.

&gt; Source/WebCore/svg/graphics/filters/SVGFEImage.cpp:121
&gt; +        RefPtr&lt;SVGElement&gt; contextNode = downcast&lt;SVGElement&gt;(renderer-&gt;element());

Ditto.

&gt; Source/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h:93
&gt; -        SVGPathElement* pathElement = downcast&lt;SVGPathElement&gt;(contextElement());
&gt; +        RefPtr&lt;SVGPathElement&gt; pathElement = downcast&lt;SVGPathElement&gt;(contextElement());

Ditto.

&gt; Source/WebCore/svg/properties/SVGListPropertyTearOff.h:144
&gt; -            ListItemTearOff* item = m_wrappers-&gt;at(i);
&gt; +            RefPtr&lt;ListItemTearOff&gt; item = m_wrappers-&gt;at(i);

Ditto.

&gt; Source/WebCore/svg/properties/SVGListPropertyTearOff.h:162
&gt; -        SVGAnimatedProperty* animatedPropertyOfItem = newItem-&gt;animatedProperty();
&gt; +        RefPtr&lt;SVGAnimatedProperty&gt; animatedPropertyOfItem = newItem-&gt;animatedProperty();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369502</commentid>
    <comment_count>8</comment_count>
      <attachid>326168</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-08 11:38:14 -0800</bug_when>
    <thetext>Comment on attachment 326168
Patch

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

Thanks Ryosuke for r+ my patch.

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:119
&gt;&gt; +    auto* stopAtElement = SVGLocatable::nearestViewportElement(element);
&gt; 
&gt; Why are we not using RefPtr here?

This variable is only used for comparison in the latter codes. I don&apos;t see any reason for changing it to RefPtr. I should actually revert this line. Fixed.

&gt;&gt; Source/WebCore/svg/SVGAElement.cpp:128
&gt;&gt; +                RefPtr&lt;Element&gt; targetElement = treeScope().getElementById(url.substringSharingImpl(1));
&gt; 
&gt; Use makeRefPtr?

Why is using makeRefPtr better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369507</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-11-08 11:54:13 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #8)
&gt; Comment on attachment 326168 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=326168&amp;action=review
&gt; 
&gt; Thanks Ryosuke for r+ my patch.
&gt;
&gt; &gt;&gt; Source/WebCore/svg/SVGAElement.cpp:128
&gt; &gt;&gt; +                RefPtr&lt;Element&gt; targetElement = treeScope().getElementById(url.substringSharingImpl(1));
&gt; &gt; 
&gt; &gt; Use makeRefPtr?
&gt; 
&gt; Why is using makeRefPtr better?

For the same reason we use auto elsewhere. It&apos;s redundant to name the local variable RefPtr&lt;Element&gt; when the function is named getElementById.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369524</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-08 12:25:00 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #9)
&gt; (In reply to Jiewen Tan from comment #8)
&gt; &gt; Comment on attachment 326168 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=326168&amp;action=review
&gt; &gt; 
&gt; &gt; Thanks Ryosuke for r+ my patch.
&gt; &gt;
&gt; &gt; &gt;&gt; Source/WebCore/svg/SVGAElement.cpp:128
&gt; &gt; &gt;&gt; +                RefPtr&lt;Element&gt; targetElement = treeScope().getElementById(url.substringSharingImpl(1));
&gt; &gt; &gt; 
&gt; &gt; &gt; Use makeRefPtr?
&gt; &gt; 
&gt; &gt; Why is using makeRefPtr better?
&gt; 
&gt; For the same reason we use auto elsewhere. It&apos;s redundant to name the local
&gt; variable RefPtr&lt;Element&gt; when the function is named getElementById.

Fair enough, I will make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369608</commentid>
    <comment_count>11</comment_count>
      <attachid>326168</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-08 14:23:01 -0800</bug_when>
    <thetext>Comment on attachment 326168
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/svg/SVGAElement.cpp:128
&gt;&gt;&gt;&gt;&gt; +                RefPtr&lt;Element&gt; targetElement = treeScope().getElementById(url.substringSharingImpl(1));
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Use makeRefPtr?
&gt;&gt;&gt; 
&gt;&gt;&gt; Why is using makeRefPtr better?
&gt;&gt; 
&gt;&gt; For the same reason we use auto elsewhere. It&apos;s redundant to name the local variable RefPtr&lt;Element&gt; when the function is named getElementById.
&gt; 
&gt; Fair enough, I will make the change.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAElement.cpp:144
&gt;&gt; +            RefPtr&lt;Frame&gt; frame = document().frame();
&gt; 
&gt; Use makeRefPtr?

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:87
&gt;&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:189
&gt;&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:339
&gt;&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:59
&gt;&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:168
&gt;&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:-234
&gt;&gt; -    SVGElement* targetElement = this-&gt;targetElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:-274
&gt;&gt; -    SVGElement* targetElement = this-&gt;targetElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimationElement.cpp:646
&gt;&gt; +    RefPtr&lt;Element&gt; parent = targetElement-&gt;parentElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGAnimationElement.cpp:665
&gt;&gt; +    RefPtr&lt;SVGElement&gt; targetElement = this-&gt;targetElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:291
&gt;&gt; +        if (RefPtr&lt;SVGElement&gt; correspondingElement = m_svgRareData-&gt;correspondingElement())
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:449
&gt;&gt; +        if (RefPtr&lt;SVGElement&gt; oldCorrespondingElement = m_svgRareData-&gt;correspondingElement())
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:762
&gt;&gt; +    if (RefPtr&lt;Element&gt; parent = parentOrShadowHostElement()) {
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:1089
&gt;&gt; +    RefPtr&lt;ContainerNode&gt; node = parentNode();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:1132
&gt;&gt; +        RefPtr&lt;SVGElement&gt; instance = *instances.begin();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGFEImageElement.cpp:105
&gt;&gt; +    RefPtr&lt;Element&gt; target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGFEImageElement.cpp:176
&gt;&gt; +    RefPtr&lt;Element&gt; parent = parentElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGFELightElement.cpp:82
&gt;&gt; +    RefPtr&lt;SVGFELightElement&gt; lightNode = findLightElement(svgElement);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGFELightElement.cpp:178
&gt;&gt; +    RefPtr&lt;ContainerNode&gt; parent = parentNode();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:157
&gt;&gt; +    RefPtr&lt;ContainerNode&gt; parent = element-&gt;parentNode();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGFontFaceElement.cpp:266
&gt;&gt; +            if (RefPtr&lt;CSSFontFaceSrcValue&gt; item = downcast&lt;CSSFontFaceSrcValue&gt;(srcList-&gt;itemWithoutBoundsCheck(i)))
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGFontFaceFormatElement.cpp:50
&gt;&gt; +    RefPtr&lt;ContainerNode&gt; ancestor = parentNode()-&gt;parentNode();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGFontFaceUriElement.cpp:79
&gt;&gt; +    RefPtr&lt;ContainerNode&gt; grandparent = parentNode()-&gt;parentNode();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGForeignObjectElement.cpp:145
&gt;&gt; +    RefPtr&lt;Element&gt; ancestor = parentElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGLengthContext.cpp:304
&gt;&gt; +    RefPtr&lt;SVGElement&gt; viewportElement = m_context-&gt;viewportElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGLinearGradientElement.cpp:165
&gt;&gt; +        RefPtr&lt;Node&gt; refNode = SVGURIReference::targetElementFromIRIString(current-&gt;href(), document());
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGMPathElement.cpp:65
&gt;&gt; +    RefPtr&lt;Element&gt; target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGRadialGradientElement.cpp:181
&gt;&gt; +        RefPtr&lt;Node&gt; refNode = SVGURIReference::targetElementFromIRIString(current-&gt;href(), document());
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGSVGElement.cpp:175
&gt;&gt; +    RefPtr&lt;Frame&gt; frame = document().frame();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGSVGElement.cpp:376
&gt;&gt; +    if (RefPtr&lt;Frame&gt; frame = document().frame())
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGSVGElement.cpp:456
&gt;&gt; +            if (RefPtr&lt;FrameView&gt; view = document().view()) {
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGSVGElement.cpp:641
&gt;&gt; +    RefPtr&lt;SVGViewSpec&gt; view(m_viewSpec);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGSVGElement.cpp:725
&gt;&gt; +    RefPtr&lt;Element&gt; element = treeScope().getElementById(id);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGStyleElement.cpp:58
&gt;&gt; +    if (RefPtr&lt;CSSStyleSheet&gt; styleSheet = sheet())
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGTRefElement.cpp:166
&gt;&gt; +    RefPtr&lt;Node&gt; container = shadowRoot()-&gt;firstChild();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGTextPathElement.cpp:159
&gt;&gt; +    RefPtr&lt;Element&gt; target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/SVGUseElement.cpp:145
&gt;&gt; +        RefPtr&lt;SVGElement&gt; correspondingElement = shadowElement.correspondingElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:266
&gt;&gt; +    RefPtr&lt;SVGSVGElement&gt; owner = ownerSVGElement();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:547
&gt;&gt; +            RefPtr&lt;Element&gt; eventBase = eventBaseFor(condition);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:582
&gt;&gt; +            RefPtr&lt;Element&gt; eventBase = eventBaseFor(condition);
&gt; 
&gt; Ditto.

Fixed.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:132
&gt; +    RefPtr&lt;FrameView&gt; view = frameView();

Fixed this too.

&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:288
&gt;&gt; +    RefPtr&lt;FrameView&gt; view = frameView();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:412
&gt;&gt; +    RefPtr&lt;Document&gt; document = m_page-&gt;mainFrame().document();
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/graphics/filters/SVGFEImage.cpp:121
&gt;&gt; +        RefPtr&lt;SVGElement&gt; contextNode = downcast&lt;SVGElement&gt;(renderer-&gt;element());
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h:93
&gt;&gt; +        RefPtr&lt;SVGPathElement&gt; pathElement = downcast&lt;SVGPathElement&gt;(contextElement());
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/properties/SVGListPropertyTearOff.h:144
&gt;&gt; +            RefPtr&lt;ListItemTearOff&gt; item = m_wrappers-&gt;at(i);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/svg/properties/SVGListPropertyTearOff.h:162
&gt;&gt; +        RefPtr&lt;SVGAnimatedProperty&gt; animatedPropertyOfItem = newItem-&gt;animatedProperty();
&gt; 
&gt; Ditto.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369621</commentid>
    <comment_count>12</comment_count>
      <attachid>326380</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-11-08 14:42:09 -0800</bug_when>
    <thetext>Created attachment 326380
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369624</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-08 14:43:09 -0800</bug_when>
    <thetext>Attachment 326380 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGDocumentExtensions.cpp:275:  &apos;element&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedFirstElement&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 60 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369772</commentid>
    <comment_count>14</comment_count>
      <attachid>326380</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-08 19:55:09 -0800</bug_when>
    <thetext>Comment on attachment 326380
Patch for landing

Clearing flags on attachment: 326380

Committed r224615: &lt;https://trac.webkit.org/changeset/224615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370552</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-11-10 15:50:12 -0800</bug_when>
    <thetext>All patches have been landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326109</attachid>
            <date>2017-11-06 00:31:48 -0800</date>
            <delta_ts>2017-11-06 14:55:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179314-20171106003147.patch</filename>
            <type>text/plain</type>
            <size>82535</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA2MjRhMzQ3MWVlYTQy
ZjczZGYxYjI2OTE2ZDk0N2Y2YTY1NWIzOS4uOTQ5NzI1ZjRjY2Y5NmVjNWRiZjZiYmMyODkwMTIx
NGI2YmI5NjUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNy0xMS0wNiAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBz
dGFjayByYXcgcG9pbnRlcnMgd2l0aCBSZWZQdHJzIHdpdGhpbiBXZWJDb3JlL3N2ZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MzE0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNDg0MjIwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCZXNpZGVzIHJlcGxhY2luZyBwb2ludGVycyBkaXJlY3RseSwg
c29tZSBvZiB0aGUgbWV0aG9kcyBhcmUgY2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAgUmVmUHRy
cyBhcyB3ZWxsLgorCisgICAgICAgIE5vIGNoYW5nZXMgaW4gYmVoYXZpb3JzLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jvb3RFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKiBkb20vRXZlbnRQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFBhdGg6OmV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRv
QW5jaG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEVsZW1lbnRDVE0pOgorICAgICAgICAqIHN2Zy9TVkdB
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6Omhhc1ZhbGlkR2x5cGhFbGVtZW50cyBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxh
dGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudEJhc2U6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlTW90aW9uRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb25QYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldEFuaW1hdGVk
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxl
bWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpy
ZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFkanVzdEZvcklu
aGVyaXRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50Ojpyb290RWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdEb2N1bWVudDo6em9vbUFuZFBhbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OnN0YXJ0UGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50Ojp1cGRhdGVQYW4gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJj
ZXNGb3JSZW1vdmFsTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg6
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxl
bWVudDo6flNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y29ycmVz
cG9uZGluZ1VzZUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbXB1
dGVkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVz
b3VyY2VzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6dXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
aW52YWxpZGF0ZUluc3RhbmNlcyk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVC
bGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VFbGVt
ZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVP
ZmZzZXRFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQpOgorICAgICAgICAqIHN2Zy9TVkdGb250
RmFjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50Ojpy
ZWJ1aWxkRm9udEZhY2UpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAg
ICogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3Ro
Q29udGV4dDo6ZGV0ZXJtaW5lVmlld3BvcnQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZH
TVBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6YnVp
bGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTVBhdGhFbGVtZW50Ojpw
YXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVt
ZW50OjpmcmFtZUZvckN1cnJlbnRTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50OjpjdXJyZW50U2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZH
RWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmRlc2VsZWN0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmxvY2Fs
Q29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnNjcm9sbFRvQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5
bGVFbGVtZW50OjpzZXREaXNhYmxlZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQpOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBz
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRo
RWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0
dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxl
bWVudDo6dGFyZ2V0Q2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVu
dDo6dG9DbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpyZW5kZXJl
ckNsaXBDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpmaW5k
VGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmludmFsaWRh
dGVEZXBlbmRlbnRTaGFkb3dUcmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50
OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMpOgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NNSUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RDb25kaXRpb25zKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnJv
b3RFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c2V0Q29u
dGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlOjpoYXNSZWxhdGl2ZVdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpoYXNSZWxhdGl2ZUhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpz
dG9wQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjppc0FuaW1hdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6cmVwb3J0QXBwcm94aW1hdGVNZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKwogMjAxNy0xMS0wMiAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhc2ljIE9mZnNjcmVlbkNh
bnZhcyBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGI5ZGM4ZDNjOWI1NWM0MDVj
ZWIxNmU4OTFhYzM1MTFhODViMzBiNjQuLmVkZjM5NzBlNGI4OWVkMmZiNDdjMDdkN2IwYjAzMmI4
OWNlYzdlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzA3Miw3ICszMDcyLDcgQEAgQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jv
b3RFbGVtZW50KENyZWF0aW9uQ2gKICAgICBpZiAoIWlzPFNWR0RvY3VtZW50Pihkb2N1bWVudCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RF
bGVtZW50ID0gU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KCpkb2N1bWVudCk7CisgICAgYXV0byBy
b290RWxlbWVudCA9IFNWR0RvY3VtZW50Ojpyb290RWxlbWVudCgqZG9jdW1lbnQpOwogICAgIGlm
ICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXJSb290ID0gcm9vdEVsZW1lbnQtPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQ
YXRoLmgKaW5kZXggYTU4YWY1YTIyZGZkNGM4NzQ3M2JkOGI1NWNhMDJmYWNmZDI5ZGU5YS4uM2Rj
MDBmOWEyNGE3YjQyMDYxMjM5YTUwNjRlZGY5YzQ0NzY3MjE0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBh
dGguaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gRXZlbnRzIHNlbnQg
dG8gZWxlbWVudHMgaW5zaWRlIGFuIFNWRyB1c2UgZWxlbWVudCdzIHNoYWRvdyB0cmVlIGdvIHRv
IHRoZSB1c2UgZWxlbWVudC4KICAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHJlZmVyZW5jZU5v
ZGUpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogdXNlRWxlbWVudCA9IGRvd25jYXN0PFNWR0Vs
ZW1lbnQ+KHJlZmVyZW5jZU5vZGUpLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHVzZUVsZW1lbnQ7CisgICAgICAgICAgICBpZiAoYXV0byB1c2VFbGVt
ZW50ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVmZXJlbmNlTm9kZSkuY29ycmVzcG9uZGluZ1Vz
ZUVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdXNlRWxlbWVudC5nZXQoKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiAmcmVmZXJlbmNlTm9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCA2MWVmNTlhZjNjMjhjZDk5M2E0YTRkNWIzMDMwZjYwMzJjNjc5NTg3
Li5hODNlYWE1NmI2NTRmMDI4MTM1N2QzODljYjI4MTM1MTE3ZmMyMjdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0yMTI2LDcgKzIxMjYsNyBAQCBib29sIEZyYW1lVmlldzo6c2Ny
b2xsVG9BbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIGRvY3VtZW50LnNldENTU1Rhcmdl
dChhbmNob3JFbGVtZW50KTsKIAogICAgIGlmIChpczxTVkdEb2N1bWVudD4oZG9jdW1lbnQpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiByb290RWxlbWVudCA9IFNWR0RvY3VtZW50Ojpyb290RWxlbWVu
dChkb2N1bWVudCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcm9vdEVsZW1lbnQgPSBTVkdEb2N1bWVu
dDo6cm9vdEVsZW1lbnQoZG9jdW1lbnQpKSB7CiAgICAgICAgICAgICByb290RWxlbWVudC0+c2Ny
b2xsVG9BbmNob3IobmFtZSwgYW5jaG9yRWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoIWFuY2hv
ckVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IGNh
YTc0ZWYzNWM4NmUxMTVkN2RiMzZjNjA3MDZlZmU4ODM3YzAxMTMuLjE3ODAxZTJlMDVjOGUzNzVk
ZDhmMzkyZjI4ZGE5NmRiMmVjNGYzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
c3RhdGljIHZvaWQgZ2V0RWxlbWVudENUTShTVkdFbGVtZW50KiBlbGVtZW50LCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSkKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAKLSAgICBTVkdFbGVt
ZW50KiBzdG9wQXRFbGVtZW50ID0gU1ZHTG9jYXRhYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50
KGVsZW1lbnQpOworICAgIGF1dG8gc3RvcEF0RWxlbWVudCA9IFNWR0xvY2F0YWJsZTo6bmVhcmVz
dFZpZXdwb3J0RWxlbWVudChlbGVtZW50KTsKICAgICBBU1NFUlQoc3RvcEF0RWxlbWVudCk7CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVt
ZW50LmNwcAppbmRleCA3MTBkZWNlODE4ZmI0OTY4MjUyNjkwYWViMDhjMjg4MmZlMGZiNzI3Li4z
MzdiOGQ4MGM2NWUwYWFhNTQ0MTdhNTAwODJlNzQxNzdmNjU2NWI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNWR0FFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIFN0cmluZyB1cmwgPSBz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaHJlZigpKTsKIAogICAgICAgICAgICAg
aWYgKHVybFswXSA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBFbGVtZW50KiB0YXJnZXRFbGVt
ZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQodXJsLnN1YnN0cmluZ1NoYXJpbmdJbXBs
KDEpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRy
ZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKHVybC5zdWJzdHJpbmdTaGFyaW5nSW1wbCgxKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGlzPFNWR1NNSUxFbGVtZW50Pih0YXJnZXRFbGVtZW50KSkgewog
ICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdTTUlMRWxlbWVudD4oKnRhcmdldEVsZW1l
bnQpLmJlZ2luQnlMaW5rQWN0aXZhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICBldmVudC5z
ZXREZWZhdWx0SGFuZGxlZCgpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgIHRhcmdl
dCA9ICJfYmxhbmsiOwogICAgICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIAot
ICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOworICAgICAgICAg
ICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICAgICAgICAg
IGlmICghZnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLnVybFNlbGVjdGVkKGRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsKSwgdGFyZ2V0
LCAmZXZlbnQsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJl
U2VuZFJlZmVycmVyLCBkb2N1bWVudCgpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1By
b3BhZ2F0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKaW5k
ZXggNWM4OWEwMWE3ZWJhNjkzNjVkMTg2MGE2ZjBiZWYzMmYxZTc1M2IwMi4uOWM2ZGJlMmQ5NzE1
NjJjMTg2MWRkNTAwNDMzOTVjZjExMTcyN2QwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYKIGJvb2wgU1ZHQWx0R2x5cGhFbGVtZW50OjpoYXNWYWxpZEdseXBoRWxlbWVudHMoVmVjdG9y
PFN0cmluZz4mIGdseXBoTmFtZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRhcmdldDsKLSAgICBh
dXRvKiBlbGVtZW50ID0gdGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoZ2V0QXR0cmlidXRlKFhM
aW5rTmFtZXM6OmhyZWZBdHRyKSwgZG9jdW1lbnQoKSwgJnRhcmdldCk7CisgICAgYXV0byBlbGVt
ZW50ID0gbWFrZVJlZlB0cih0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhnZXRBdHRyaWJ1dGUo
WExpbmtOYW1lczo6aHJlZkF0dHIpLCBkb2N1bWVudCgpLCAmdGFyZ2V0KSk7CiAKICAgICBpZiAo
aXM8U1ZHR2x5cGhFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICBnbHlwaE5hbWVzLmFwcGVu
ZCh0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNw
cAppbmRleCA3YzZhYmY0NTE4ODI5NGQ5N2ZmZDgzYzk2Y2ZiZGJiMDc1YjEyZjZjLi5iMmJhZWFl
MWYyYzkxZWZjNjJkNjhkNjY3YWJjYzRmZGJhYTc4MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtNDYsOCArNDYsNyBAQCBTVkdBbmltYXRl
RWxlbWVudEJhc2U6On5TVkdBbmltYXRlRWxlbWVudEJhc2UoKSA9IGRlZmF1bHQ7CiAKIGJvb2wg
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKQogewotICAgIFNW
R0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7Ci0gICAgaWYg
KCF0YXJnZXRFbGVtZW50KQorICAgIGlmICghdGhpcy0+dGFyZ2V0RWxlbWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBB
bmltYXRlZFVua25vd24gJiYgIWhhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlKCk7CkBAIC04NSw3
ICs4NCw3IEBAIEFuaW1hdGVkUHJvcGVydHlUeXBlIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6ZGV0
ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50
QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpCiB7CiAgICAgQVNTRVJU
KHJlc3VsdEVsZW1lbnQpOwotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50
YXJnZXRFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0
aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTExMSw3ICsxMTAsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZQogICAg
ICAgICBwZXJjZW50YWdlID0gcGVyY2VudGFnZSA8IDAuNSA/IDAgOiAxOwogCiAgICAgLy8gVGFy
Z2V0IGVsZW1lbnQgbWlnaHQgaGF2ZSBjaGFuZ2VkLgotICAgIG1fYW5pbWF0b3ItPnNldENvbnRl
eHRFbGVtZW50KHRhcmdldEVsZW1lbnQpOworICAgIG1fYW5pbWF0b3ItPnNldENvbnRleHRFbGVt
ZW50KHRhcmdldEVsZW1lbnQuZ2V0KCkpOwogCiAgICAgLy8gQmUgc3VyZSB0byBkZXRhY2ggbGlz
dCB3cmFwcGVycyBiZWZvcmUgd2UgbW9kZml5IHRoZWlyIHVuZGVybHlpbmcgdmFsdWUuIElmIHdl
J2QgZG8KICAgICAvLyBpZiBhZnRlciBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKCkgcmFuIHRoZSBj
YWNoZWQgcG9pbnRlcnMgaW4gdGhlIGxpc3QgcHJvcGVyeSB0ZWFyCkBAIC0xMzUsOCArMTM0LDcg
QEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9u
VmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW4KIAogYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6
OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgdG9TdHJpbmcpCiB7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRo
aXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQpCisgICAgaWYgKCF0
aGlzLT50YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7CkBAIC0xNDcsOCAr
MTQ1LDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRUb1Zh
bHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGMKIAogYm9vbCBTVkdBbmltYXRlRWxlbWVu
dEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCiB7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQpCisgICAg
aWYgKCF0aGlzLT50YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChhbmltYXRpb25Nb2RlKCkgPT0gQnlBbmltYXRpb24gJiYgIWlzQWRkaXRpdmUoKSkKQEAg
LTE4OSwxMiArMTg2LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1h
dGVkVHlwZSgpCiAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIGFuaW1hdG9yID0gZW5zdXJl
QW5pbWF0b3IoKTsKICAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBhbmltYXRv
ci0+dHlwZSgpKTsKIAotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJn
ZXRFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlz
LT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1
cm47CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gdGhpcy0+YXR0
cmlidXRlTmFtZSgpOwotICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gc2hv
dWxkQXBwbHlBbmltYXRpb24odGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7CisgICAgU2hv
dWxkQXBwbHlBbmltYXRpb24gc2hvdWxkQXBwbHkgPSBzaG91bGRBcHBseUFuaW1hdGlvbih0YXJn
ZXRFbGVtZW50LmdldCgpLCBhdHRyaWJ1dGVOYW1lKTsKIAogICAgIGlmIChzaG91bGRBcHBseSA9
PSBEb250QXBwbHlBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIyMCw4ICsyMTcsOCBA
QCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6cmVzZXRBbmltYXRlZFR5cGUoKQogICAgIFN0
cmluZyBiYXNlVmFsdWU7CiAKICAgICBpZiAoc2hvdWxkQXBwbHkgPT0gQXBwbHlDU1NBbmltYXRp
b24pIHsKLSAgICAgICAgQVNTRVJUKFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzVGFyZ2V0QXR0cmli
dXRlQ1NTUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSkpOwotICAgICAgICBj
b21wdXRlQ1NTUHJvcGVydHlWYWx1ZSh0YXJnZXRFbGVtZW50LCBjc3NQcm9wZXJ0eUlEKGF0dHJp
YnV0ZU5hbWUubG9jYWxOYW1lKCkpLCBiYXNlVmFsdWUpOworICAgICAgICBBU1NFUlQoU1ZHQW5p
bWF0aW9uRWxlbWVudDo6aXNUYXJnZXRBdHRyaWJ1dGVDU1NQcm9wZXJ0eSh0YXJnZXRFbGVtZW50
LmdldCgpLCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgICAgIGNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVl
KHRhcmdldEVsZW1lbnQuZ2V0KCksIGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2NhbE5h
bWUoKSksIGJhc2VWYWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKQEAg
LTMzOSw3ICszMzYsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6YXBwbHlSZXN1bHRz
VG9UYXJnZXQoKQogICAgIGlmICghbV9hbmltYXRlZFR5cGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7Cisg
ICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50
KCk7CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9IHRoaXMtPmF0dHJp
YnV0ZU5hbWUoKTsKIAogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKQEAgLTM1Miw3ICszNDks
NyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQog
ICAgIH0KIAogICAgIC8vIFdlIGRvIHVwZGF0ZSB0aGUgc3R5bGUgYW5kIHRoZSBhbmltYXRpb24g
cHJvcGVydHkgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KLSAgICBTaG91bGRBcHBseUFuaW1h
dGlvbiBzaG91bGRBcHBseSA9IHNob3VsZEFwcGx5QW5pbWF0aW9uKHRhcmdldEVsZW1lbnQsIGF0
dHJpYnV0ZU5hbWUpOworICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gc2hv
dWxkQXBwbHlBbmltYXRpb24odGFyZ2V0RWxlbWVudC5nZXQoKSwgYXR0cmlidXRlTmFtZSk7CiAg
ICAgaWYgKHNob3VsZEFwcGx5ID09IEFwcGx5WE1MYW5kQ1NTQW5pbWF0aW9uKQogICAgICAgICBh
cHBseUNTU1Byb3BlcnR5VG9UYXJnZXRBbmRJbnN0YW5jZXMoKnRhcmdldEVsZW1lbnQsIGF0dHJp
YnV0ZU5hbWUsIG1fYW5pbWF0ZWRUeXBlLT52YWx1ZUFzU3RyaW5nKCkpOwogCkBAIC00MDYsOCAr
NDAzLDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmlzQWRkaXRpdmUoKSBjb25zdAog
ZmxvYXQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CiAgICAgLy8gRklYTUU6
IEEgcmV0dXJuIHZhbHVlIG9mIGZsb2F0IGlzIG5vdCBlbm91Z2ggdG8gc3VwcG9ydCBwYWNlZCBh
bmltYXRpb25zIG9uIGxpc3RzLgotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlz
LT50YXJnZXRFbGVtZW50KCk7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50KQorICAgIGlmICghdGhp
cy0+dGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICByZXR1cm4gZW5z
dXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRGlzdGFuY2UoZnJvbVN0cmluZywgdG9TdHJpbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXgg
MGM3NDE2ZGRkNTk5MGQzZGM1NjAwMjRjZGQzZGVhNDRmZmU4NTViYS4uMWJiMDc0NGYxMjM3MTVh
NjBhYmQzOWQ5NGU5NzMyZDFjNjg4YmM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFJlZjxTVkdBbmltYXRl
TW90aW9uRWxlbWVudD4gU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lCiAKIGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmli
dXRlVHlwZSgpCiB7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdl
dEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRoaXMt
PnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQ6OnVwZGF0ZUFuaW1hdGlvblBhdGgoKQogICAgIGJvb2wgZm91bmRNUGF0aCA9IGZhbHNlOwog
CiAgICAgZm9yIChhdXRvJiBtUGF0aCA6IGNoaWxkcmVuT2ZUeXBlPFNWR01QYXRoRWxlbWVudD4o
KnRoaXMpKSB7Ci0gICAgICAgIFNWR1BhdGhFbGVtZW50KiBwYXRoRWxlbWVudCA9IG1QYXRoLnBh
dGhFbGVtZW50KCk7CisgICAgICAgIGF1dG8gcGF0aEVsZW1lbnQgPSBtUGF0aC5wYXRoRWxlbWVu
dCgpOwogICAgICAgICBpZiAocGF0aEVsZW1lbnQpIHsKLSAgICAgICAgICAgIG1fYW5pbWF0aW9u
UGF0aCA9IHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHBhdGhFbGVtZW50KTsKKyAgICAgICAgICAg
IG1fYW5pbWF0aW9uUGF0aCA9IHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHBhdGhFbGVtZW50Lmdl
dCgpKTsKICAgICAgICAgICAgIGZvdW5kTVBhdGggPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50OjpyZXNldEFuaW1hdGVkVHlwZSgpCiB7CiAgICAgaWYgKCFoYXNWYWxpZEF0dHJpYnV0ZVR5
cGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0
aGlzLT50YXJnZXRFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1l
bnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAg
ICAgICByZXR1cm47CiAgICAgaWYgKEFmZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gdGFyZ2V0
RWxlbWVudC0+c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkpCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9p
ZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YnVpbGRUcmFuc2Zvcm1Gb3JQcm9ncmVzcyhBZmZp
bmVUcmFuc2Zvcm0qIHRyYW5zZm8KIAogdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHU01JTEVsZW1lbnQqKQogewotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0
aGlzLT50YXJnZXRFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1l
bnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAg
ICAgICByZXR1cm47CiAgICAgQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zvcm0gPSB0YXJnZXRFbGVt
ZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFNW
R0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkCiB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJlc3Vs
dHNUb1RhcmdldCgpCiB7CiAgICAgLy8gV2UgYWNjdW11bGF0ZSB0byB0aGUgdGFyZ2V0IGVsZW1l
bnQgdHJhbnNmb3JtIGxpc3Qgc28gdGhlcmUgaXMgbm90IG11Y2ggdG8gZG8gaGVyZS4KLSAgICBT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOworICAgIFJl
ZlB0cjxTVkdFbGVtZW50PiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwog
ICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAppbmRleCA3MmViNzcy
MGNlNWE1ZGNjOTAyM2QyY2M0ODdmYTBjY2VkODMwNjkzLi44ZGY4NTlkOTlmNmQ1YmMxZjFkYjIw
MDU5MmExNjc0ZGQ3NjU4MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKQEAgLTQyLDggKzQyLDcgQEAgUmVmPFNWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50PiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmkKIAogYm9vbCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFsaWRBdHRy
aWJ1dGVUeXBlKCkKIHsKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFy
Z2V0RWxlbWVudCgpOwotICAgIGlmICghdGFyZ2V0RWxlbWVudCkKKyAgICBpZiAoIXRoaXMtPnRh
cmdldEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGF0dHJpYnV0
ZVR5cGUoKSA9PSBBdHRyaWJ1dGVUeXBlOjpDU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFBhdGguY3BwCmluZGV4IDI5ZTI0OWJjODFhZDIxNWY2NDZmYzEyOWE0NTcxNjdmZTA5YmI3Njcu
LmEzM2ExNDlkNzBiZGZkNmFlYzgxZGNhZWZhNmE2MGY1Yjk3Yjg3MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgU1ZHQW5pbWF0
ZWRQYXRoQW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlCiAKIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRv
QmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlw
ZXMsIFNWR1BhdGhCeXRlU3RyZWFtKiBieXRlU3RyZWFtKQogewotICAgIFNWR0FuaW1hdGVkUGF0
aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIHByb3BlcnR5ID0gY2FzdEFuaW1hdGVkUHJvcGVydHlU
b0FjdHVhbFR5cGU8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4oYW5pbWF0
ZWRUeXBlc1swXS5wcm9wZXJ0aWVzWzBdLmdldCgpKTsKKyAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gcHJvcGVydHkgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0
eVRvQWN0dWFsVHlwZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihhbmlt
YXRlZFR5cGVzWzBdLnByb3BlcnRpZXNbMF0uZ2V0KCkpOwogICAgIGNvbnN0IGF1dG8mIGJhc2VW
YWx1ZSA9IHByb3BlcnR5LT5jdXJyZW50QmFzZVZhbHVlKCk7CiAKICAgICBidWlsZFNWR1BhdGhC
eXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0VmFsdWVzKGJhc2VWYWx1ZSwgKmJ5dGVTdHJlYW0s
IFVuYWx0ZXJlZFBhcnNpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuY3BwCmluZGV4IDA1YTkzY2JlOTg3NDM5NTM0N2EwM2YyMTNlZGI4MjFlZGYxN2I1MmYuLmQx
MjBmOTU3ODU5MmM5NjEyNWVlNjliZDI0ZGFmNGJmZGNhNTZmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIFNW
R0FuaW1hdGlvbkVsZW1lbnQ6OmFkanVzdEZvckluaGVyaXRhbmNlKFNWR0VsZW1lbnQqIHRhcmdl
dEVsZW1lbnQsIGNvbnN0CiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCB3YW50IHRvIHdv
cmsgd2l0aCB0aGUgdmFsdWUgdHlwZSBkaXJlY3RseSB0byBhdm9pZCB0aGUgU3RyaW5nIHBhcnNp
bmcuCiAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwogCi0gICAgRWxlbWVudCogcGFyZW50ID0g
dGFyZ2V0RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOworICAgIFJlZlB0cjxFbGVtZW50PiBwYXJl
bnQgPSB0YXJnZXRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKCFwYXJlbnQgfHwg
IXBhcmVudC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjYyLDEzICs2
NjIsMTMgQEAgc3RhdGljIGJvb2wgaW5oZXJpdHNGcm9tUHJvcGVydHkoU1ZHRWxlbWVudCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUKIAogdm9pZCBTVkdBbmltYXRpb25FbGVt
ZW50OjpkZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoY29uc3QgU3RyaW5nJiBmcm9tLCBjb25z
dCBTdHJpbmcmIHRvKQogewotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50
YXJnZXRFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0
aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwogCiAgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9IHRoaXMtPmF0dHJpYnV0ZU5hbWUo
KTsKLSAgICBpZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRl
TmFtZSwgZnJvbSkpCisgICAgaWYgKGluaGVyaXRzRnJvbVByb3BlcnR5KHRhcmdldEVsZW1lbnQu
Z2V0KCksIGF0dHJpYnV0ZU5hbWUsIGZyb20pKQogICAgICAgICBtX2Zyb21Qcm9wZXJ0eVZhbHVl
VHlwZSA9IEluaGVyaXRWYWx1ZTsKLSAgICBpZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0
RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgdG8pKQorICAgIGlmIChpbmhlcml0c0Zyb21Qcm9wZXJ0
eSh0YXJnZXRFbGVtZW50LmdldCgpLCBhdHRyaWJ1dGVOYW1lLCB0bykpCiAgICAgICAgIG1fdG9Q
cm9wZXJ0eVZhbHVlVHlwZSA9IEluaGVyaXRWYWx1ZTsKIH0KIHZvaWQgU1ZHQW5pbWF0aW9uRWxl
bWVudDo6cmVzZXRBbmltYXRlZFByb3BlcnR5VHlwZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
LmNwcAppbmRleCAzOTFlMDQ5NGZkYWQyODI5ZjJhODc2MjhiODhkNTAxNDMyNjdmZjRjLi4yYzk1
MDVjMTM4MzRlNGMxNzlkZmE1NGMzYTcxZmU0Y2ZiMjQ0YmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiB9CiAKLVNWR1NWR0VsZW1lbnQqIFNWR0Rv
Y3VtZW50Ojpyb290RWxlbWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8U1ZH
U1ZHRWxlbWVudD4gU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICBhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7
CiAgICAgaWYgKCFpczxTVkdTVkdFbGVtZW50PihlbGVtZW50KSkKQEAgLTQyLDcgKzQyLDcgQEAg
U1ZHU1ZHRWxlbWVudCogU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCkKIAogYm9vbCBTVkdEb2N1bWVudDo6em9vbUFuZFBhbkVuYWJsZWQoKSBjb25zdAog
ewotICAgIGF1dG8qIGVsZW1lbnQgPSByb290RWxlbWVudCgqdGhpcyk7CisgICAgYXV0byBlbGVt
ZW50ID0gcm9vdEVsZW1lbnQoKnRoaXMpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiAoZWxlbWVudC0+dXNlQ3VycmVudFZpZXcoKSA/IGVsZW1l
bnQtPmN1cnJlbnRWaWV3KCkuem9vbUFuZFBhbigpIDogZWxlbWVudC0+em9vbUFuZFBhbigpKSA9
PSBTVkdab29tQW5kUGFuTWFnbmlmeTsKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBTVkdEb2N1bWVu
dDo6em9vbUFuZFBhbkVuYWJsZWQoKSBjb25zdAogCiB2b2lkIFNWR0RvY3VtZW50OjpzdGFydFBh
bihjb25zdCBGbG9hdFBvaW50JiBzdGFydCkKIHsKLSAgICBhdXRvKiBlbGVtZW50ID0gcm9vdEVs
ZW1lbnQoKnRoaXMpOworICAgIGF1dG8gZWxlbWVudCA9IHJvb3RFbGVtZW50KCp0aGlzKTsKICAg
ICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Bhbm5pbmdPZmZzZXQgPSBz
dGFydCAtIGVsZW1lbnQtPmN1cnJlbnRUcmFuc2xhdGVWYWx1ZSgpOwpAQCAtNTgsNyArNTgsNyBA
QCB2b2lkIFNWR0RvY3VtZW50OjpzdGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFydCkKIAog
dm9pZCBTVkdEb2N1bWVudDo6dXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBj
b25zdAogewotICAgIGF1dG8qIGVsZW1lbnQgPSByb290RWxlbWVudCgqdGhpcyk7CisgICAgYXV0
byBlbGVtZW50ID0gcm9vdEVsZW1lbnQoKnRoaXMpOwogICAgIGlmICghZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGVsZW1lbnQtPnNldEN1cnJlbnRUcmFuc2xhdGUocG9zaXRpb24gLSBt
X3Bhbm5pbmdPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRleCAyMzNmMTFiNzQz
YzM1M2Y1NTQ3NGYxZWI5MWU2YjFmNTYyYWRjZDg4Li5lZTk1M2ZjYzdlNzE4ZTYwZWI2MTk1Yzc3
NGZjOGQ2OTIzYmNhOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAtMzEsNyArMzEs
NyBAQCBjbGFzcyBTVkdEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBYTUxEb2N1bWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiwgY29uc3QgVVJM
Jik7CiAKLSAgICBzdGF0aWMgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQoY29uc3QgRG9jdW1l
bnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNWR1NWR0VsZW1lbnQ+IHJvb3RFbGVtZW50KGNvbnN0
IERvY3VtZW50Jik7CiAKICAgICBib29sIHpvb21BbmRQYW5FbmFibGVkKCkgY29uc3Q7CiAgICAg
dm9pZCBzdGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFydCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDc1OGEwZGE5NWZkZDJjMjhkZDFk
NjFjNTI0ZDBkNmJiMWJiZGNjOWIuLjY1ZTI0NmQ5Nzc4OGE5MmMxNDYzYmQxNWE4MTFjNzE5YTFh
MTg5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3Bw
CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6Om1hcmtQZW5k
aW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmIGkKICAgICAgICAgbV9w
ZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5hZGQoaWQsIFdURk1vdmUoZXhpc3RpbmcpKTsKIH0K
IAotRWxlbWVudCogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRp
bmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitSZWZQdHI8
RWxlbWVudD4gU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdS
ZXNvdXJjZXNGb3JSZW1vdmFsTWFwKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiB7CiAgICAgaWYg
KGlkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzIsNyArMjcyLDcgQEAgRWxl
bWVudCogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNv
dXJjZXNGb3JSZW1vdmFsTWFwKGMKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBhdXRvIGZpcnN0
RWxlbWVudCA9IHJlc291cmNlU2V0LT5iZWdpbigpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAq
Zmlyc3RFbGVtZW50OworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gKmZpcnN0RWxlbWVu
dDsKIAogICAgIHJlc291cmNlU2V0LT5yZW1vdmUoZmlyc3RFbGVtZW50KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCmluZGV4IDZhNTI3NzA0OWM1YjI1NTAy
NWY5OWE3MmUxOWYyY2UwODFiZDFkZWIuLmVmNzJlOTc2NWVjNjdjMTgyM2IwYzNkZDNmZDU3NDM2
NWU3OTUwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVu
c2lvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgK
QEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBm
dW5jdGlvbnMgYXJlIHVzZWQgZm9yIHNjaGVkdWxpbmcgYSBwZW5kaW5nIHJlc291cmNlIHRvIGJl
IHJlbW92ZWQuCiAgICAgdm9pZCBtYXJrUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwoY29uc3Qg
QXRvbWljU3RyaW5nJik7Ci0gICAgRWxlbWVudCogcmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVz
b3VyY2VzRm9yUmVtb3ZhbE1hcChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBSZWZQdHI8RWxl
bWVudD4gcmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbE1hcChjb25z
dCBBdG9taWNTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzRWxlbWVudFdpdGhQZW5k
aW5nUmVzb3VyY2VzKEVsZW1lbnQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApp
bmRleCA5ODk3MmM1ZDgyNDRjMmE0YzAwZDI4YThjOGNkZTEyMGNjMzg3NWYyLi4xNjEwNzZkMzc1
OGNkNDIxMzhhMTA3MDU5ZGRkYjVkMzU3OWUxMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCkBAIC0yODgsNyArMjg4LDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQogICAgIGlm
IChtX3N2Z1JhcmVEYXRhKSB7CiAgICAgICAgIGZvciAoU1ZHRWxlbWVudCogaW5zdGFuY2UgOiBt
X3N2Z1JhcmVEYXRhLT5pbnN0YW5jZXMoKSkKICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N2Z1Jh
cmVEYXRhLT5zZXRDb3JyZXNwb25kaW5nRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgaWYgKFNW
R0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50ID0gbV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9u
ZGluZ0VsZW1lbnQoKSkKKyAgICAgICAgaWYgKFJlZlB0cjxTVkdFbGVtZW50PiBjb3JyZXNwb25k
aW5nRWxlbWVudCA9IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCiAgICAg
ICAgICAgICBjb3JyZXNwb25kaW5nRWxlbWVudC0+bV9zdmdSYXJlRGF0YS0+aW5zdGFuY2VzKCku
cmVtb3ZlKHRoaXMpOwogCiAgICAgICAgIG1fc3ZnUmFyZURhdGEgPSBudWxscHRyOwpAQCAtNDMw
LDcgKzQzMCw3IEBAIFNWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6OmNvcnJlc3BvbmRpbmdFbGVtZW50
KCkgY29uc3QKICAgICByZXR1cm4gbV9zdmdSYXJlRGF0YSA/IG1fc3ZnUmFyZURhdGEtPmNvcnJl
c3BvbmRpbmdFbGVtZW50KCkgOiBudWxscHRyOwogfQogCi1TVkdVc2VFbGVtZW50KiBTVkdFbGVt
ZW50Ojpjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0CitSZWZQdHI8U1ZHVXNlRWxlbWVu
dD4gU1ZHRWxlbWVudDo6Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSBjb25zdAogewogICAgIGF1
dG8qIHJvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIGlmICghcm9vdCkKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBTVkdVc2VFbGVtZW50KiBTVkdFbGVtZW50Ojpjb3JyZXNwb25kaW5nVXNl
RWxlbWVudCgpIGNvbnN0CiB2b2lkIFNWR0VsZW1lbnQ6OnNldENvcnJlc3BvbmRpbmdFbGVtZW50
KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KQogewogICAgIGlmIChtX3N2Z1JhcmVE
YXRhKSB7Ci0gICAgICAgIGlmIChTVkdFbGVtZW50KiBvbGRDb3JyZXNwb25kaW5nRWxlbWVudCA9
IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCisgICAgICAgIGlmIChSZWZQ
dHI8U1ZHRWxlbWVudD4gb2xkQ29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtX3N2Z1JhcmVEYXRhLT5j
b3JyZXNwb25kaW5nRWxlbWVudCgpKQogICAgICAgICAgICAgb2xkQ29ycmVzcG9uZGluZ0VsZW1l
bnQtPm1fc3ZnUmFyZURhdGEtPmluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKICAgICB9CiAgICAg
aWYgKG1fc3ZnUmFyZURhdGEgfHwgY29ycmVzcG9uZGluZ0VsZW1lbnQpCkBAIC03MjksNyArNzI5
LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KQogc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFNWR0VsZW1l
bnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKikKIHsKICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBpbiBhIDx1c2U+
IHRyZWUgd2UgZ2V0IHRoZSBzdHlsZSBmcm9tIHRoZSBkZWZpbml0aW9uIHRyZWUuCi0gICAgaWYg
KGF1dG8qIHN0eWxlRWxlbWVudCA9IHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCisgICAg
aWYgKGF1dG8gc3R5bGVFbGVtZW50ID0gbWFrZVJlZlB0cih0aGlzLT5jb3JyZXNwb25kaW5nRWxl
bWVudCgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKCZwYXJl
bnRTdHlsZSk7CiAKICAgICByZXR1cm4gcmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CkBAIC03
NTksNyArNzU5LDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5
bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKICAgICAgICAgcmV0dXJuIEVsZW1l
bnQ6OmNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7CiAKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBudWxscHRyOwotICAgIGlmIChFbGVtZW50KiBwYXJl
bnQgPSBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKKyAgICBpZiAoUmVmUHRyPEVsZW1l
bnQ+IHBhcmVudCA9IHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHBhcmVudFN0
eWxlID0gJnJlbmRlcmVyLT5zdHlsZSgpOwogICAgIH0KQEAgLTEwMDMsMTEgKzEwMDMsMTEgQEAg
dm9pZCBTVkdFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpCiAgICAgZXh0
ZW5zaW9ucy5tYXJrUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwocmVzb3VyY2VJZCk7CiAKICAg
ICAvLyBSZWJ1aWxkIHBlbmRpbmcgcmVzb3VyY2VzIGZvciBlYWNoIGNsaWVudCBvZiBhIHBlbmRp
bmcgcmVzb3VyY2UgdGhhdCBpcyBiZWluZyByZW1vdmVkLgotICAgIHdoaWxlIChFbGVtZW50KiBj
bGllbnRFbGVtZW50ID0gZXh0ZW5zaW9ucy5yZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJj
ZXNGb3JSZW1vdmFsTWFwKHJlc291cmNlSWQpKSB7CisgICAgd2hpbGUgKGF1dG8gY2xpZW50RWxl
bWVudCA9IGV4dGVuc2lvbnMucmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9yUmVt
b3ZhbE1hcChyZXNvdXJjZUlkKSkgewogICAgICAgICBBU1NFUlQoY2xpZW50RWxlbWVudC0+aGFz
UGVuZGluZ1Jlc291cmNlcygpKTsKICAgICAgICAgaWYgKGNsaWVudEVsZW1lbnQtPmhhc1BlbmRp
bmdSZXNvdXJjZXMoKSkgewogICAgICAgICAgICAgY2xpZW50RWxlbWVudC0+YnVpbGRQZW5kaW5n
UmVzb3VyY2UoKTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuY2xlYXJIYXNQZW5kaW5nUmVzb3Vy
Y2VzSWZQb3NzaWJsZShjbGllbnRFbGVtZW50KTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuY2xl
YXJIYXNQZW5kaW5nUmVzb3VyY2VzSWZQb3NzaWJsZShjbGllbnRFbGVtZW50LmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6
dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMs
IFNWR0VsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZpbmQgZmlyc3Qgc3R5bGVkIHBhcmVu
dCBub2RlLCBhbmQgbm90aWZ5IGl0IHRoYXQgd2UndmUgY2hhbmdlZCBvdXIgcmVsYXRpdmUgbGVu
Z3RoIHN0YXRlLgotICAgIENvbnRhaW5lck5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7CisgICAg
UmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUgPSBwYXJlbnROb2RlKCk7CiAgICAgd2hpbGUgKG5v
ZGUpIHsKICAgICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTEyOSw4ICsxMTI5LDggQEAgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlSW5z
dGFuY2VzKCkKIAogICAgIGF1dG8mIGluc3RhbmNlcyA9IHRoaXMtPmluc3RhbmNlcygpOwogICAg
IHdoaWxlICghaW5zdGFuY2VzLmlzRW1wdHkoKSkgewotICAgICAgICBTVkdFbGVtZW50KiBpbnN0
YW5jZSA9ICppbnN0YW5jZXMuYmVnaW4oKTsKLSAgICAgICAgaWYgKFNWR1VzZUVsZW1lbnQqIHVz
ZUVsZW1lbnQgPSBpbnN0YW5jZS0+Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSkKKyAgICAgICAg
UmVmUHRyPFNWR0VsZW1lbnQ+IGluc3RhbmNlID0gKmluc3RhbmNlcy5iZWdpbigpOworICAgICAg
ICBpZiAoYXV0byB1c2VFbGVtZW50ID0gaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50
KCkpCiAgICAgICAgICAgICB1c2VFbGVtZW50LT5pbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAg
ICAgICBpbnN0YW5jZS0+c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQobnVsbHB0cik7CiAgICAgfSB3
aGlsZSAoIWluc3RhbmNlcy5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXgg
YmJkY2M1ZjM1MzI4YmZmY2Q2Nzk0YzBiMGZkNDk1MjAyNWYxYzZmMS4uZjg4MmQxNDA3YTdmMThm
YjJjZTQ0N2ExZjUyYWEzODM2MGMyNjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC05
OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldEJvdW5kaW5nQm94KEZsb2F0UmVjdCYs
IFNWR0xvY2F0YWJsZTo6U3R5bGVVcGRhdGVTdHJhdGVneSA9IFNWR0xvY2F0YWJsZTo6QWxsb3dT
dHlsZVVwZGF0ZSk7CiAKICAgICBTVkdFbGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVudCgpIGNv
bnN0OwotICAgIFNWR1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkgY29uc3Q7
CisgICAgUmVmUHRyPFNWR1VzZUVsZW1lbnQ+IGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkgY29u
c3Q7CiAKICAgICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggZTZiMmE4OTk3Mjhj
ZDAyYTMwM2E5NDE1YzM0YWVmOWQ2ZGM2ZjM5ZC4uNTNjMDg4OGZhYzkzZjgyNTg4N2U1Njk2YTRl
YjUxYmQ1MDgyODkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
CkBAIC0xMDUsOCArMTA1LDggQEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1
aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmls
dGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDIgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQy
ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAKICAgICBpZiAoIWlucHV0
MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDg0MWY0ZmFhYTMxYzQ1ZTRk
MTQ4MDY2YjdlZDU2NWVmYjFkNTQ2YTIuLjg5MTEwYTk5NjZmNjlmMDg5YWFhNDYyY2FkNzM4YjY2
ZDViNmQwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAg
IGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAg
ICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAppbmRleCA1YzFk
MjUwM2NkYmI5YmIwZjg0NDk1NjEzMzQzMzcwZTczN2Y5MzA0Li5hYzJkNjQ0OWUyZDc2MWNkM2Rm
Njk2Nzk1NmIyMDQ3NDA1YThjODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY28KIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZp
bHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRl
ci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVy
LT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwCmluZGV4IGNkM2Q1YzYxYjM3OTVjOTQxOThlM2FmYjY1MWM4NzY3YzJhNzA5MGYuLmM1
MTJhNTkzNjYwMTMyNDA2ZmFjNGQ0OGNjNDU3MjcxYzFmNGZjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xNDAsOCArMTQwLDggQEAgdm9p
ZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRl
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBm
aWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGZpbHRlckJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRl
ci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDIgPSBmaWx0ZXJCdWlsZGVy
LT5nZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDljZjI4YWI3NTIzMTJjNmQ3ZTMxM2Q4
YzA4MmFmZGQ2NzUyOTQzODkuLmJjMTdmN2U5MmVkNzQ4N2M2MjcwMWY2ZmRmMTJiOGRhZTI0ZGFl
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hCiAKIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBhdXRv
KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRv
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYg
KCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBjYTBmNjhmYTlhYjk2
Zjk2YWM2M2JkNmVmMTViMjM2MmNhZmIwN2JiLi4zYzFlNmEwOGRlZDdkOTg3ZmMxMzVjNTA1NmIx
YzAwMzVlOTBkNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZF
TGlnaHRFCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIp
CiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNw
cAppbmRleCBlOTg5YjljZTMxZGY0NDY2YjMxZTI3ZTE2OTI2NTQ0MTdiM2ViNWZlLi4xNWJjYjNi
NzYwODJjYzM0NThiNGMzMzk1ZjE1NmZjYmIxOWExMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtMTIzLDggKzEyMyw4
IEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQx
ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDIg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZiAoIWlu
cHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCAzMTkzNWUxNzBmM2MxNzA1
ZmUyMTk0Zjk1MzlmMTQ3NDM1YzI2ZGQwLi5lZjVmZGNkZmZiYmYwYWZmOTBiZmUxOGE5Y2IzZWZh
Y2JkMzMwMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9w
U2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBj
b25zdCBDb2xvciYgY29sb3IgPSBzdmdTdHlsZS5mbG9vZENvbG9yKCk7CiAgICAgZmxvYXQgb3Bh
Y2l0eSA9IHN2Z1N0eWxlLmZsb29kT3BhY2l0eSgpOwogCi0gICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIGlmICghaW5wdXQx
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCA3YjIxZGU4MzZkZjEwOTc2YWY2MmUzM2Vi
NDg0MjcxM2ExNTA4ZWNkLi5iMjJmZjQ5OTRmZTA4ZjZkY2ZjMzExNjQwYjY3M2NiOGQ0N2ZmMjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAKIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0
KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRv
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYg
KCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAKaW5kZXggNmY5YTI3MTBiM2U0NTNjODkyZDExNmUzNDMxYjBjMTIz
NmI0ZGExNC4uZGQ5Mjk3ODAyZTk5N2ZhZTg1NTVmMTE0YzU2NzdjNjg1MGE2MThkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAg
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBTdHJpbmcgaWQ7Ci0gICAgRWxlbWVudCogdGFyZ2V0ID0gU1ZHVVJJUmVm
ZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRvY3VtZW50KCksICZp
ZCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0
RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQpOwogICAgIGlmICgh
dGFyZ2V0KSB7CiAgICAgICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXF1ZXN0
SW1hZ2VSZXNvdXJjZSgpOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1l
bnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICB9IGVsc2UgaWYgKHRhcmdldC0+aXNTVkdF
bGVtZW50KCkpIHsKICAgICAgICAgLy8gUmVnaXN0ZXIgdXMgd2l0aCB0aGUgdGFyZ2V0IGluIHRo
ZSBkZXBlbmRlbmNpZXMgbWFwLiBBbnkgY2hhbmdlIG9mIGhyZWZFbGVtZW50CiAgICAgICAgIC8v
IHRoYXQgbGVhZHMgdG8gcmVsYXlvdXQvcmVwYWludGluZyBub3cgaW5mb3JtcyB1cywgc28gd2Ug
Y2FuIHJlYWN0IHRvIGl0LgotICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS5hZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQodGhpcywgZG93bmNhc3Q8U1ZHRWxlbWVudD4o
dGFyZ2V0KSk7CisgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZEVs
ZW1lbnRSZWZlcmVuY2luZ1RhcmdldCh0aGlzLCBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQu
Z2V0KCkpKTsKICAgICB9CiAKICAgICBpbnZhbGlkYXRlKCk7CkBAIC0xNzMsNyArMTczLDcgQEAg
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQog
ICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRWxlbWVudCog
cGFyZW50ID0gcGFyZW50RWxlbWVudCgpOworICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQgPSBw
YXJlbnRFbGVtZW50KCk7CiAKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpmaWx0ZXJUYWcpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTGlnaHRFbGVtZW50LmNwcAppbmRleCAzNmY3ZjA1OGUwMWNjMDFjNjgzYzRkMDA0ODQz
ZGEzMDI0NjY3NmNiLi42Mjg1YmY2OWM0M2ViYWVkNTNhZmZjMWI4MWI4ODY2ZWFiZjViY2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTc5LDcgKzc5LDcg
QEAgU1ZHRkVMaWdodEVsZW1lbnQqIFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQqIHN2Z0VsZW0KIAogUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRUxp
Z2h0RWxlbWVudDo6ZmluZExpZ2h0U291cmNlKGNvbnN0IFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQp
CiB7Ci0gICAgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0Tm9kZSA9IGZpbmRMaWdodEVsZW1lbnQo
c3ZnRWxlbWVudCk7CisgICAgUmVmUHRyPFNWR0ZFTGlnaHRFbGVtZW50PiBsaWdodE5vZGUgPSBm
aW5kTGlnaHRFbGVtZW50KHN2Z0VsZW1lbnQpOwogICAgIGlmICghbGlnaHROb2RlKQogICAgICAg
ICByZXR1cm4gMDsKICAgICByZXR1cm4gbGlnaHROb2RlLT5saWdodFNvdXJjZSgpOwpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpwb2ludHNBdFhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlB
dHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyCiAgICAgICAgIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyKSB7CiAKLSAgICAgICAgYXV0byogcGFyZW50
ID0gcGFyZW50RWxlbWVudCgpOworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFy
ZW50RWxlbWVudCgpKTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIAogICAgIGlmIChjaGFuZ2Uuc291cmNl
ID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBDb250
YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7CisgICAgUmVmUHRyPENvbnRhaW5lck5v
ZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0
dXJuOwogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKaW5kZXggNDMzYzc0NWU3ZDkz
OGI1ZGMwYjYxZTdhZGE1NTU3NTQyODc5MmVlYi4uODY3ZjkzYjU1M2E5M2Y2MzZhNDM4NTZhZDIz
MmVjMmU0YjZmNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3Bw
CkBAIC00NywxMCArNDcsMTAgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKIAogICAg
IGZvciAoYXV0byYgbWVyZ2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVt
ZW50PigqdGhpcykpIHsKLSAgICAgICAgRmlsdGVyRWZmZWN0KiBtZXJnZUVmZmVjdCA9IGZpbHRl
ckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgpKTsKKyAgICAgICAgYXV0byBt
ZXJnZUVmZmVjdCA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgp
KTsKICAgICAgICAgaWYgKCFtZXJnZUVmZmVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICBtZXJnZUlucHV0cy5hcHBlbmQobWVyZ2VFZmZlY3QpOworICAgICAgICBtZXJn
ZUlucHV0cy5hcHBlbmQoV1RGTW92ZShtZXJnZUVmZmVjdCkpOwogICAgIH0KIAogICAgIGlmICht
ZXJnZUlucHV0cy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHAKaW5kZXggMzM3MGUxODU1MmZmZDA5MjRlNGE3ZTk5M2FkODc0MWYwMDli
NTZmMi4uNjQ2OTllYzlmNDE1NDI0MWI4NjIxMmFhMGU2ZTc4NGZkN2FhODllMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMTM0LDcgKzEz
NCw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRl
ciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJC
dWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIGZsb2F0IHhSYWRpdXMgPSByYWRpdXNY
KCk7CiAgICAgZmxvYXQgeVJhZGl1cyA9IHJhZGl1c1koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCA2YWI2N2FmYWM2NjY3MTVlZmY2ZDAyMTdhMTBh
MmJlZTlmYTkwMTE0Li41ZDRiYTk1Y2MwNjM0ODFlMThjNDU3NTk1ZDhhOGY1YmUyNTdiNjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtODUsNyArODUs
NyBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZz
ZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIm
IGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5jcHAKaW5kZXggMTcwNDM3ZjMyZmIzM2I0ZmRlZDYzZTRjZjljZmMxNDhkOWNmZDFk
ZS4uZGQ5OGQ4YWFkNjlhMTYzMGYzMGU2MGJiMDAzZjRjZDFlOGEzZjY4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAt
MTgzLDcgKzE4Myw3IEBAIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bGlnaHRF
bGVtZW50QXR0cmlidXRlQ2hhbmdlZChjb25zdCBTVkdGRUxpZ2h0CiAKIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICgh
aW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcAppbmRleCA3NTdlNTU0ZGQ1NTdmNjIxZDM2Y2E1OWU0Y2U5ZTJiZDRjZGVi
YmQxLi40M2M3NWUxY2QxYzI0ZmE4NTcyOGViZmYwNWY3Y2IxZGQ2ZDNkNmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU1ZH
RkVUaWxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OwogCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcAppbmRleCA3N2EzYTk3MWE2YzcyZjBiZjlmMWM4OGEzYzMzZjcwODVmYWFiZTdh
Li45ZDIyNzc5MDkwNzU2MmE5YzFlY2FkYzA4OTc1MTM1NjkzNDFmMGUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1p
dGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gZWxlbWVudC0+cGFyZW50
Tm9kZSgpOworICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBlbGVtZW50LT5wYXJl
bnROb2RlKCk7CiAKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCA3ZGJlMDAwYzMzNzUwOGE3NGM0
MjM5N2FhMzU4OTYxYmI0NmQxNzMzLi5mNTFkMzgzZmI4MmM1ZWIxMjA1ZWE0NWFmODg5ZTM3M2Nl
ZWVhMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAt
MjYzLDcgKzI2Myw3IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2Uo
KQogCiAgICAgICAgIHVuc2lnbmVkIHNyY0xlbmd0aCA9IHNyY0xpc3QgPyBzcmNMaXN0LT5sZW5n
dGgoKSA6IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNMZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgaWYgKENTU0ZvbnRGYWNlU3JjVmFsdWUqIGl0ZW0gPSBkb3duY2Fz
dDxDU1NGb250RmFjZVNyY1ZhbHVlPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkp
KSkKKyAgICAgICAgICAgIGlmIChSZWZQdHI8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gaXRlbSA9IGRv
d25jYXN0PENTU0ZvbnRGYWNlU3JjVmFsdWU+KHNyY0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSkpKQogICAgICAgICAgICAgICAgIGl0ZW0tPnNldFNWR0ZvbnRGYWNlRWxlbWVudCh0aGlz
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZUZvcm1hdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
Rm9ybWF0RWxlbWVudC5jcHAKaW5kZXggNTkxNjA2NTMyZjVmZjAwODdmZWQ5NzJiNzYzNjljNWQ0
ZjBiNTQwZi4uZjlhZGQzY2EyMjU1NzIwOGY3ZGNkYTg4NzBhZmEzYjlmMzgzZDlkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgdm9pZCBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmICghcGFyZW50Tm9kZSgpIHx8ICFw
YXJlbnROb2RlKCktPmhhc1RhZ05hbWUoZm9udF9mYWNlX3VyaVRhZykpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKS0+cGFy
ZW50Tm9kZSgpOworICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBhbmNlc3RvciA9IHBhcmVudE5v
ZGUoKS0+cGFyZW50Tm9kZSgpOwogICAgIGlmICghYW5jZXN0b3IgfHwgIWFuY2VzdG9yLT5oYXNU
YWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IDQxNDlmNjY4YmU0
YzY0OWM4NDhkMjkwNmFkMjQwOTNlZTI4MDA0NjguLmQzMDQzNTE2ZGJiY2I3MGU0YTU1ZThkNmM3
Yzc2NjJkODg4MGIxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVs
ZW1lbnQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoIXBhcmVu
dE5vZGUoKSB8fCAhcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgQ29udGFpbmVyTm9kZSogZ3JhbmRwYXJlbnQgPSBw
YXJlbnROb2RlKCktPnBhcmVudE5vZGUoKTsKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gZ3Jh
bmRwYXJlbnQgPSBwYXJlbnROb2RlKCktPnBhcmVudE5vZGUoKTsKICAgICBpZiAoZ3JhbmRwYXJl
bnQgJiYgZ3JhbmRwYXJlbnQtPmhhc1RhZ05hbWUoZm9udF9mYWNlVGFnKSkKICAgICAgICAgZG93
bmNhc3Q8U1ZHRm9udEZhY2VFbGVtZW50PigqZ3JhbmRwYXJlbnQpLnJlYnVpbGRGb250RmFjZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAK
aW5kZXggNWU2M2ZiNGQ4NGYwYmFkMjZiN2VjYzhhNzE4YzhjOTQ4ZWQwMjVjMy4uYWQ5NGVlZDQ3
ZTk3MDlkOTdmMDlhNmJiMGY0NzQ5ZGFjOGE4YmIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBT
VkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiAgICAgLy8gTm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBm
b3JlaWduT2JqZWN0IGluc3RhbnRpYXRpb24gdmlhIDx1c2U+LCBoZW5jZSBpdCBpcyBzYWZlCiAg
ICAgLy8gdG8gdXNlIHBhcmVudEVsZW1lbnQoKSBoZXJlLiBJZiB0aGF0IGNoYW5nZXMsIHRoaXMg
bWV0aG9kIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZQogICAgIC8vIHBhcmVudE9yU2hhZG93SG9z
dEVsZW1lbnQoKSBpbnN0ZWFkLgotICAgIEVsZW1lbnQqIGFuY2VzdG9yID0gcGFyZW50RWxlbWVu
dCgpOworICAgIFJlZlB0cjxFbGVtZW50PiBhbmNlc3RvciA9IHBhcmVudEVsZW1lbnQoKTsKICAg
ICB3aGlsZSAoYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpKSB7CiAgICAgICAg
IGlmIChhbmNlc3Rvci0+cmVuZGVyZXIoKSAmJiBhbmNlc3Rvci0+cmVuZGVyZXIoKS0+aXNTVkdI
aWRkZW5Db250YWluZXIoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAppbmRleCAwOTkwNmU3Mzk4ZjAwZGU2YWI2MzY5NjAw
ZGYzOTY0OGRmMTVjNDJhLi5hOTdlYzljODdlNDIyNjRiNTg2ZjEzNDg3NzIwYjRjNmNjYzA4MTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCkBAIC0zMDEsNyArMzAx
LDcgQEAgYm9vbCBTVkdMZW5ndGhDb250ZXh0OjpkZXRlcm1pbmVWaWV3cG9ydChGbG9hdFNpemUm
IHZpZXdwb3J0U2l6ZSkgY29uc3QKICAgICB9CiAKICAgICAvLyBUYWtlIHNpemUgZnJvbSBuZWFy
ZXN0IHZpZXdwb3J0IGVsZW1lbnQuCi0gICAgU1ZHRWxlbWVudCogdmlld3BvcnRFbGVtZW50ID0g
bV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdmll
d3BvcnRFbGVtZW50ID0gbV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKTsKICAgICBpZiAoIWlz
PFNWR1NWR0VsZW1lbnQ+KHZpZXdwb3J0RWxlbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApp
bmRleCBiN2ZmNWI0ZjhlNjcxN2RhYTUyZWQ4NGFmM2M0OGM5ODk2NjM0NzVmLi5hZWRlYjI4Njlh
YTkzNDVkOWM5Yzg0ZjM5ZjRiYmE1Mjk2ODg2ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTYyLDkgKzE2Miw5IEBAIGJvb2wg
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKExpbmVh
ckdyYWRpZW50QXR0cmlidXRlCiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAvLyBSZXNw
ZWN0IHhsaW5rOmhyZWYsIHRha2UgYXR0cmlidXRlcyBmcm9tIHJlZmVyZW5jZWQgZWxlbWVudAot
ICAgICAgICBOb2RlKiByZWZOb2RlID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJv
bUlSSVN0cmluZyhjdXJyZW50LT5ocmVmKCksIGRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHI8
Tm9kZT4gcmVmTm9kZSA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJp
bmcoY3VycmVudC0+aHJlZigpLCBkb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGlzPFNWR0dyYWRp
ZW50RWxlbWVudD4ocmVmTm9kZSkpIHsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBkb3duY2FzdDxT
VkdHcmFkaWVudEVsZW1lbnQ+KHJlZk5vZGUpOworICAgICAgICAgICAgY3VycmVudCA9IGRvd25j
YXN0PFNWR0dyYWRpZW50RWxlbWVudD4ocmVmTm9kZS5nZXQoKSk7CiAKICAgICAgICAgICAgIC8v
IEN5Y2xlIGRldGVjdGlvbgogICAgICAgICAgICAgaWYgKHByb2Nlc3NlZEdyYWRpZW50cy5jb250
YWlucyhjdXJyZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKaW5kZXgg
MGUwMWM3ZmU5ZmU3ODI4OTQ3MjIxODU0NTJiMmNkZjE4N2ZjNTA2ZC4uYTQyYzYzMDgyYzg2YzZk
YjJjZGFlYzc0MmEwOWY5OTE3MzE2MDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01QYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxl
bWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OmJ1aWxkUGVu
ZGluZ1Jlc291cmNlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGlkOwotICAgIEVs
ZW1lbnQqIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJp
bmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQpOworICAgIFJlZlB0cjxFbGVtZW50PiB0YXJnZXQg
PSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9j
dW1lbnQoKSwgJmlkKTsKICAgICBpZiAoIXRhcmdldCkgewogICAgICAgICAvLyBEbyBub3QgcmVn
aXN0ZXIgYXMgcGVuZGluZyBpZiB3ZSBhcmUgYWxyZWFkeSBwZW5kaW5nIHRoaXMgcmVzb3VyY2Uu
CiAgICAgICAgIGlmIChkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5pc1BlbmRpbmdS
ZXNvdXJjZSh0aGlzLCBpZCkpCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50
OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgfSBlbHNlIGlmICh0YXJnZXQtPmlzU1ZHRWxl
bWVudCgpKSB7CiAgICAgICAgIC8vIFJlZ2lzdGVyIHVzIHdpdGggdGhlIHRhcmdldCBpbiB0aGUg
ZGVwZW5kZW5jaWVzIG1hcC4gQW55IGNoYW5nZSBvZiBocmVmRWxlbWVudAogICAgICAgICAvLyB0
aGF0IGxlYWRzIHRvIHJlbGF5b3V0L3JlcGFpbnRpbmcgbm93IGluZm9ybXMgdXMsIHNvIHdlIGNh
biByZWFjdCB0byBpdC4KLSAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCku
YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KHRoaXMsIGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRh
cmdldCkpOworICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRFbGVt
ZW50UmVmZXJlbmNpbmdUYXJnZXQodGhpcywgZG93bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0Lmdl
dCgpKSk7CiAgICAgfQogCiAgICAgdGFyZ2V0UGF0aENoYW5nZWQoKTsKQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKIH0KIAotU1ZHUGF0aEVsZW1lbnQqIFNWR01QYXRoRWxlbWVudDo6cGF0aEVs
ZW1lbnQoKQorUmVmUHRyPFNWR1BhdGhFbGVtZW50PiBTVkdNUGF0aEVsZW1lbnQ6OnBhdGhFbGVt
ZW50KCkKIHsKICAgICBFbGVtZW50KiB0YXJnZXQgPSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmlu
ZyhocmVmKCksIGRvY3VtZW50KCkpOwogICAgIGlmIChpczxTVkdQYXRoRWxlbWVudD4odGFyZ2V0
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAppbmRleCAxYTJhYzZhMTExZTYyMjky
YTMyODU2OTc1YTI0MjFlMDk0OWFhNjRjLi5iYTI0YjczMmE5Njc5MGFlYzE5MTdjNmYwODYxMTc4
ZDA0MzBlMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCkBAIC0zNiw3ICsz
Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflNWR01QYXRoRWxlbWVudCgpOwogCi0gICAg
U1ZHUGF0aEVsZW1lbnQqIHBhdGhFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR1BhdGhFbGVtZW50
PiBwYXRoRWxlbWVudCgpOwogCiAgICAgdm9pZCB0YXJnZXRQYXRoQ2hhbmdlZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGM5
ZDlkY2MwOTQ0NjMyMzRkZDkxZDk2Nzk3YjRhNTUxMzc2MzRjMjguLjBjNDBkNDk1OWVkZDYxMzU5
Zjk1ZmE4NWY2NjA2NzkzNTQxZGI2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xNzgsOSArMTc4LDkgQEAgYm9vbCBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGll
bnRBdHRyaWJ1dGUKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIFJlc3BlY3QgeGxp
bms6aHJlZiwgdGFrZSBhdHRyaWJ1dGVzIGZyb20gcmVmZXJlbmNlZCBlbGVtZW50Ci0gICAgICAg
IE5vZGUqIHJlZk5vZGUgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3Ry
aW5nKGN1cnJlbnQtPmhyZWYoKSwgZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0cjxOb2RlPiBy
ZWZOb2RlID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhjdXJy
ZW50LT5ocmVmKCksIGRvY3VtZW50KCkpOwogICAgICAgICBpZiAoaXM8U1ZHR3JhZGllbnRFbGVt
ZW50PihyZWZOb2RlKSkgewotICAgICAgICAgICAgY3VycmVudCA9IGRvd25jYXN0PFNWR0dyYWRp
ZW50RWxlbWVudD4ocmVmTm9kZSk7CisgICAgICAgICAgICBjdXJyZW50ID0gZG93bmNhc3Q8U1ZH
R3JhZGllbnRFbGVtZW50PihyZWZOb2RlLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gQ3ljbGUg
ZGV0ZWN0aW9uCiAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkR3JhZGllbnRzLmNvbnRhaW5zKGN1
cnJlbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGM1YWUxOTUwMTdl
NDhmZjYxODlmMGM1MGNmNDcwZmZhMjMzOWJiNmEuLjFhNjJmZGNiOTAyMjU1ZjNmZGYxZTdiYzVm
MWQ1ZDJmYjAyMjkwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTE2
NiwxMyArMTY2LDEzIEBAIFNWR1ZpZXdTcGVjJiBTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmlldygp
CiAgICAgcmV0dXJuICptX3ZpZXdTcGVjOwogfQogCi1GcmFtZSogU1ZHU1ZHRWxlbWVudDo6ZnJh
bWVGb3JDdXJyZW50U2NhbGUoKSBjb25zdAorUmVmUHRyPEZyYW1lPiBTVkdTVkdFbGVtZW50Ojpm
cmFtZUZvckN1cnJlbnRTY2FsZSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGJlaGF2aW9yIG9mIGN1
cnJlbnRTY2FsZSgpIGlzIHVuZGVmaW5lZCB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCBub24tc3Rh
bmRhbG9uZSBTVkcgZG9jdW1lbnRzLgogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBlbWJlZGRl
ZCwgdGhlIHNjYWxpbmcgaXMgaGFuZGxlZCBieSB0aGUgaG9zdCByZW5kZXJlci4KICAgICBpZiAo
IWlzQ29ubmVjdGVkKCkgfHwgIWlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7Cisg
ICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICByZXR1cm4g
ZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkgPyBmcmFtZSA6IG51bGxwdHI7CiB9CiAKQEAg
LTE4MCwxMyArMTgwLDEzIEBAIGZsb2F0IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRTY2FsZSgpIGNv
bnN0CiB7CiAgICAgLy8gV2hlbiBhc2tpbmcgZnJvbSBpbnNpZGUgYW4gZW1iZWRkZWQgU1ZHIGRv
Y3VtZW50LCBhIHNjYWxlIHZhbHVlIG9mIDEgc2VlbXMgcmVhc29uYWJsZSwgYXMgaXQgZG9lc24n
dAogICAgIC8vIGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIHBhcmVudCBzY2FsZS4KLSAgICBGcmFt
ZSogZnJhbWUgPSBmcmFtZUZvckN1cnJlbnRTY2FsZSgpOworICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBmcmFtZUZvckN1cnJlbnRTY2FsZSgpOwogICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5w
YWdlWm9vbUZhY3RvcigpIDogMTsKIH0KIAogdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50
U2NhbGUoZmxvYXQgc2NhbGUpCiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGZyYW1lRm9yQ3Vy
cmVudFNjYWxlKCkpCisgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBmcmFtZUZvckN1cnJl
bnRTY2FsZSgpKQogICAgICAgICBmcmFtZS0+c2V0UGFnZVpvb21GYWN0b3Ioc2NhbGUpOwogfQog
CkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBTVkdTVkdFbGVtZW50OjpjaGVja0VuY2xvc3VyZShS
ZWZQdHI8U1ZHRWxlbWVudD4mJiBlbGVtZW50LCBTVkdSZWN0JiByZWN0KQogCiB2b2lkIFNWR1NW
R0VsZW1lbnQ6OmRlc2VsZWN0QWxsKCkKIHsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1l
bnQoKS5mcmFtZSgpKQorICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQoKS5m
cmFtZSgpKQogICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKIH0KIApAQCAtNDUz
LDcgKzQ1Myw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5h
dGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjCiAgICAgICAgICAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKGxvY2F0aW9uLngoKSAtIHZpZXdCb3hUcmFuc2Zvcm0uZSgpLCBsb2NhdGlv
bi55KCkgLSB2aWV3Qm94VHJhbnNmb3JtLmYoKSk7CiAKICAgICAgICAgICAgIC8vIFJlc3BlY3Qg
c2Nyb2xsIG9mZnNldC4KLSAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVu
dCgpLnZpZXcoKSkgeworICAgICAgICAgICAgaWYgKFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcgPSBk
b2N1bWVudCgpLnZpZXcoKSkgewogICAgICAgICAgICAgICAgIExheW91dFBvaW50IHNjcm9sbFBv
c2l0aW9uID0gdmlldy0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICBzY3JvbGxQ
b3NpdGlvbi5zY2FsZSh6b29tRmFjdG9yKTsKICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKC1zY3JvbGxQb3NpdGlvbik7CkBAIC02MzgsNyArNjM4LDcgQEAgQWZmaW5lVHJhbnNm
b3JtIFNWR1NWR0VsZW1lbnQ6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRo
LCBmbG9hdCB2aWUKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9BbmNob3IoY29uc3QgU3Ry
aW5nJiBmcmFnbWVudElkZW50aWZpZXIsIEVsZW1lbnQqIGFuY2hvck5vZGUpCiB7CiAgICAgYXV0
byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7Ci0gICAgU1ZHVmlld1NwZWMqIHZpZXcgPSBt
X3ZpZXdTcGVjLmdldCgpOworICAgIFJlZlB0cjxTVkdWaWV3U3BlYz4gdmlldyhtX3ZpZXdTcGVj
KTsKICAgICBpZiAodmlldykKICAgICAgICAgdmlldy0+cmVzZXQoKTsKIApAQCAtNjcwLDcgKzY3
MCw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9BbmNob3IoY29uc3QgU3RyaW5nJiBm
cmFnbWVudElkZW50aWZpZXIsIEVsZW1lbnQqIGFuCiAgICAgLy8gYXR0cmlidXRlcyBvbiB0aGUg
Y2xvc2VzdCBhbmNlc3RvciAic3ZnIiBlbGVtZW50LgogICAgIGlmIChpczxTVkdWaWV3RWxlbWVu
dD4oYW5jaG9yTm9kZSkpIHsKICAgICAgICAgYXV0byYgdmlld0VsZW1lbnQgPSBkb3duY2FzdDxT
VkdWaWV3RWxlbWVudD4oKmFuY2hvck5vZGUpOwotICAgICAgICBhdXRvKiB2aWV3cG9ydEVsZW1l
bnQgPSBTVkdMb2NhdGFibGU6Om5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoJnZpZXdFbGVtZW50KTsK
KyAgICAgICAgYXV0byB2aWV3cG9ydEVsZW1lbnQgPSBtYWtlUmVmUHRyKFNWR0xvY2F0YWJsZTo6
bmVhcmVzdFZpZXdwb3J0RWxlbWVudCgmdmlld0VsZW1lbnQpKTsKICAgICAgICAgaWYgKGlzPFNW
R1NWR0VsZW1lbnQ+KHZpZXdwb3J0RWxlbWVudCkpIHsKICAgICAgICAgICAgIGF1dG8mIGVsZW1l
bnQgPSBkb3duY2FzdDxTVkdTVkdFbGVtZW50Pigqdmlld3BvcnRFbGVtZW50KTsKICAgICAgICAg
ICAgIGVsZW1lbnQuaW5oZXJpdFZpZXdBdHRyaWJ1dGVzKHZpZXdFbGVtZW50KTsKQEAgLTcyMiw5
ICs3MjIsOSBAQCBFbGVtZW50KiBTVkdTVkdFbGVtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBB
dG9taWNTdHJpbmcmIGlkKQogICAgIGlmIChpZC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5
SWQoaWQpOworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxl
bWVudEJ5SWQoaWQpOwogICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFudE9m
KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIHJldHVybiBlbGVtZW50
LmdldCgpOwogICAgIGlmICh0cmVlU2NvcGUoKS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRo
SWQoaWQpKSB7CiAgICAgICAgIGZvciAoYXV0byogZWxlbWVudCA6ICp0cmVlU2NvcGUoKS5nZXRB
bGxFbGVtZW50c0J5SWQoaWQpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNEZXNjZW5k
YW50T2YoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggMzI4OGRlZmNm
ZTYzNDY4NzQ1ZGY2NjM5MDhhNTA2NDVjMTAxNzVlMy4uM2UxODQxODcyZjg3MDk0NmJkY2E0MGEy
NzIwYTdjYjhlNGU3ZDgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xNTEs
NyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNp
b24oKSBvdmVycmlkZTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VU
cmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBG
cmFtZSogZnJhbWVGb3JDdXJyZW50U2NhbGUoKSBjb25zdDsKKyAgICBSZWZQdHI8RnJhbWU+IGZy
YW1lRm9yQ3VycmVudFNjYWxlKCkgY29uc3Q7CiAgICAgdm9pZCBpbmhlcml0Vmlld0F0dHJpYnV0
ZXMoY29uc3QgU1ZHVmlld0VsZW1lbnQmKTsKICAgICBSZWY8Tm9kZUxpc3Q+IGNvbGxlY3RJbnRl
cnNlY3Rpb25PckVuY2xvc3VyZUxpc3QoU1ZHUmVjdCYsIFNWR0VsZW1lbnQqLCBib29sICgqY2hl
Y2tGdW5jdGlvbikoU1ZHRWxlbWVudCYsIFNWR1JlY3QmKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlRWxlbWVudC5jcHAKaW5kZXggOTllYTRlZGVkZDc3OWJiNDEyNjU5YzY5NDFlNWZjMGRk
MmMxOTRkNS4uNDkwNmI2MWM0Nzk0YzM1NzViMWZmMjY5YzA3MzExNWQ4MGFiNWQwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBT
VkdTdHlsZUVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKIAogdm9pZCBTVkdTdHlsZUVsZW1lbnQ6
OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQpCiB7Ci0gICAgaWYgKENTU1N0eWxlU2hlZXQq
IHN0eWxlU2hlZXQgPSBzaGVldCgpKQorICAgIGlmIChSZWZQdHI8Q1NTU3R5bGVTaGVldD4gc3R5
bGVTaGVldCA9IHNoZWV0KCkpCiAgICAgICAgIHN0eWxlU2hlZXQtPnNldERpc2FibGVkKHNldERp
c2FibGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZTNj
NzdlOWRjOGQ1MDI1MzAzOGVlYmEyYjk3NzIwYWE2NGNhOWIwYi4uNDNhZmJmODFkMmYxMTgwYTdi
ZGQwMmZmNDg4MjEwM2Q3ODhiMTNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6ZGV0YWNoVGFyZ2V0
KCkKICAgICBTdHJpbmcgZW1wdHlDb250ZW50OwogCiAgICAgQVNTRVJUKHNoYWRvd1Jvb3QoKSk7
Ci0gICAgTm9kZSogY29udGFpbmVyID0gc2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CisgICAg
UmVmUHRyPE5vZGU+IGNvbnRhaW5lciA9IHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAg
IGlmIChjb250YWluZXIpCiAgICAgICAgIGNvbnRhaW5lci0+c2V0VGV4dENvbnRlbnQoZW1wdHlD
b250ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAppbmRleCAyZDhjNzBkZmMyMjZjOWMzN2VjOWY5YzljMjRmM2ZlYWZiZGFmNWI0Li4zYTllZDg1
NmNhOGQxZWIyODE4MGQzMGEzNzE4ZWJiM2MzMDhiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFNWR1RleHRD
b250ZW50RWxlbWVudCogU1ZHVGV4dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVy
KFJlbmRlck9iamVjdCoKICAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gZG93bmNhc3Q8U1ZHRWxl
bWVudD4ocmVuZGVyZXItPm5vZGUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogCi0gICAgaWYg
KCFpczxTVkdUZXh0Q29udGVudEVsZW1lbnQ+KCplbGVtZW50KSkKKyAgICBpZiAoIWlzPFNWR1Rl
eHRDb250ZW50RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgcmV0dXJuIGRvd25jYXN0PFNWR1RleHRDb250ZW50RWxlbWVudD4oZWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCmluZGV4IGU4YWE4ODZmMjdkZGQ5
NzEzMGRjOThjY2MzNWQ0MmFlMWZlMTQxNDYuLmJkYTBlZGM4NGI0NWMwMTU5NWNjYzMyNDBkYjc4
MmFmZDUyZTEyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmJ1aWxkUGVuZGlu
Z1Jlc291cmNlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGlkOwotICAgIEVsZW1l
bnQqIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmco
aHJlZigpLCBkb2N1bWVudCgpLCAmaWQpOworICAgIFJlZlB0cjxFbGVtZW50PiB0YXJnZXQgPSBT
VkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9jdW1l
bnQoKSwgJmlkKTsKICAgICBpZiAoIXRhcmdldCkgewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0
ZXIgYXMgcGVuZGluZyBpZiB3ZSBhcmUgYWxyZWFkeSBwZW5kaW5nIHRoaXMgcmVzb3VyY2UuCiAg
ICAgICAgIGlmIChkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5pc1BlbmRpbmdSZXNv
dXJjZSh0aGlzLCBpZCkpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1l
bnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICB9IGVsc2UgaWYgKHRhcmdldC0+aGFzVGFn
TmFtZShTVkdOYW1lczo6cGF0aFRhZykpIHsKICAgICAgICAgLy8gUmVnaXN0ZXIgdXMgd2l0aCB0
aGUgdGFyZ2V0IGluIHRoZSBkZXBlbmRlbmNpZXMgbWFwLiBBbnkgY2hhbmdlIG9mIGhyZWZFbGVt
ZW50CiAgICAgICAgIC8vIHRoYXQgbGVhZHMgdG8gcmVsYXlvdXQvcmVwYWludGluZyBub3cgaW5m
b3JtcyB1cywgc28gd2UgY2FuIHJlYWN0IHRvIGl0LgotICAgICAgICBkb2N1bWVudCgpLmFjY2Vz
c1NWR0V4dGVuc2lvbnMoKS5hZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQodGhpcywgZG93bmNh
c3Q8U1ZHRWxlbWVudD4odGFyZ2V0KSk7CisgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCh0aGlzLCBkb3duY2FzdDxTVkdF
bGVtZW50Pih0YXJnZXQuZ2V0KCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcAppbmRleCA2ZTI4NjM0ODQxY2U0ODQyNjFkMGQ3ZmUzOGUwMTIwMjBmMzg1YWEy
Li42YmQxODEwNGFlMjQ0ZGQ3NGQ5YTI1YTlhNTkyNmFiYWFkNTk1MDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBTVkdVc2VFbGVt
ZW50Ojp0cmFuc2ZlclNpemVBdHRyaWJ1dGVzVG9UYXJnZXRDbG9uZShTVkdFbGVtZW50JiBzaGFk
b3dFbGVtZW4KICAgICB9IGVsc2UgaWYgKGlzPFNWR1NWR0VsZW1lbnQ+KHNoYWRvd0VsZW1lbnQp
KSB7CiAgICAgICAgIC8vIFNwZWMgKDx1c2U+IG9uIDxzdmc+KTogSWYgYXR0cmlidXRlcyB3aWR0
aCBhbmQvb3IgaGVpZ2h0IGFyZSBwcm92aWRlZCBvbiB0aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0
aGVzZQogICAgICAgICAvLyB2YWx1ZXMgd2lsbCBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBh
dHRyaWJ1dGVzIG9uIHRoZSAnc3ZnJyBpbiB0aGUgZ2VuZXJhdGVkIHRyZWUuCi0gICAgICAgIFNW
R0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50ID0gc2hhZG93RWxlbWVudC5jb3JyZXNwb25k
aW5nRWxlbWVudCgpOworICAgICAgICBSZWZQdHI8U1ZHRWxlbWVudD4gY29ycmVzcG9uZGluZ0Vs
ZW1lbnQgPSBzaGFkb3dFbGVtZW50LmNvcnJlc3BvbmRpbmdFbGVtZW50KCk7CiAgICAgICAgIHNo
YWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIsICh3aWR0aElzVmFs
aWQoKSAmJiB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpKSA/IEF0b21pY1N0cmluZyh3
aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAoY29ycmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNw
b25kaW5nRWxlbWVudC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIpIDogbnVsbEF0
b20oKSkpOwogICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVp
Z2h0QXR0ciwgKGhlaWdodElzVmFsaWQoKSAmJiBoZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVkVW5p
dHMoKSkgPyBBdG9taWNTdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNw
b25kaW5nRWxlbWVudCA/IGNvcnJlc3BvbmRpbmdFbGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpIDogbnVsbEF0b20oKSkpOwogICAgIH0KQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9u
KCk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSXQn
cyB1bm5lY2Vzc2FyaWx5IGluZWZmaWNpZW50IHRvIHVwZGF0ZSBib3RoIHdpZHRoIGFuZCBoZWln
aHQgZWFjaCB0aW1lIGVpdGhlciBpcyBjaGFuZ2VkLgotICAgICAgICAgICAgaWYgKGF1dG8qIHRh
cmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHRh
cmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKSkKICAgICAgICAgICAgICAgICB0cmFuc2Zl
clNpemVBdHRyaWJ1dGVzVG9UYXJnZXRDbG9uZSgqdGFyZ2V0Q2xvbmUpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCkBAIC0yNjYsNyAr
MjY2LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKCkKICAgICBtX3No
YWRvd1RyZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOwogfQogCi1TVkdFbGVtZW50KiBTVkdVc2VFbGVt
ZW50Ojp0YXJnZXRDbG9uZSgpIGNvbnN0CitSZWZQdHI8U1ZHRWxlbWVudD4gU1ZHVXNlRWxlbWVu
dDo6dGFyZ2V0Q2xvbmUoKSBjb25zdAogewogICAgIGF1dG8gcm9vdCA9IHVzZXJBZ2VudFNoYWRv
d1Jvb3QoKTsKICAgICBpZiAoIXJvb3QpCkBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIGJvb2wg
aXNEaXJlY3RSZWZlcmVuY2UoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkKIAogUGF0aCBTVkdV
c2VFbGVtZW50Ojp0b0NsaXBQYXRoKCkKIHsKLSAgICBhdXRvKiB0YXJnZXRDbG9uZSA9IHRoaXMt
PnRhcmdldENsb25lKCk7CisgICAgYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25l
KCk7CiAgICAgaWYgKCFpczxTVkdHcmFwaGljc0VsZW1lbnQ+KHRhcmdldENsb25lKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIApAQCAtMzEzLDcgKzMxMyw3IEBAIFBhdGggU1ZHVXNlRWxlbWVudDo6
dG9DbGlwUGF0aCgpCiAKIFJlbmRlckVsZW1lbnQqIFNWR1VzZUVsZW1lbnQ6OnJlbmRlcmVyQ2xp
cENoaWxkKCkgY29uc3QKIHsKLSAgICBhdXRvKiB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENs
b25lKCk7CisgICAgYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CiAgICAg
aWYgKCF0YXJnZXRDbG9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFpc0Rp
cmVjdFJlZmVyZW5jZSgqdGFyZ2V0Q2xvbmUpKQpAQCAtNDA1LDcgKzQwNSw3IEBAIFNWR0VsZW1l
bnQqIFNWR1VzZUVsZW1lbnQ6OmZpbmRUYXJnZXQoU3RyaW5nKiB0YXJnZXRJRCkgY29uc3QKICAg
ICBhdXRvKiBjb3JyZXNwb25kaW5nRWxlbWVudCA9IHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50
KCk7CiAgICAgYXV0byYgb3JpZ2luYWwgPSBjb3JyZXNwb25kaW5nRWxlbWVudCA/IGRvd25jYXN0
PFNWR1VzZUVsZW1lbnQ+KCpjb3JyZXNwb25kaW5nRWxlbWVudCkgOiAqdGhpczsKIAotICAgIGF1
dG8qIHRhcmdldENhbmRpZGF0ZSA9IHRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKG9yaWdpbmFs
LmhyZWYoKSwgb3JpZ2luYWwuZG9jdW1lbnQoKSwgdGFyZ2V0SUQsIG9yaWdpbmFsLmV4dGVybmFs
RG9jdW1lbnQoKSk7CisgICAgYXV0byB0YXJnZXRDYW5kaWRhdGUgPSBtYWtlUmVmUHRyKHRhcmdl
dEVsZW1lbnRGcm9tSVJJU3RyaW5nKG9yaWdpbmFsLmhyZWYoKSwgb3JpZ2luYWwuZG9jdW1lbnQo
KSwgdGFyZ2V0SUQsIG9yaWdpbmFsLmV4dGVybmFsRG9jdW1lbnQoKSkpOwogICAgIGlmICh0YXJn
ZXRJRCAmJiAhdGFyZ2V0SUQtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIElmIHRoZSByZWZlcmVu
Y2UgaXMgZXh0ZXJuYWwsIGRvbid0IHJldHVybiB0aGUgdGFyZ2V0IElEIHRvIHRoZSBjYWxsZXIu
CiAgICAgICAgIC8vIFRoZSBjYWxsZXIgd291bGQgdXNlIHRoZSB0YXJnZXQgSUQgdG8gd2FpdCBm
b3IgYSBwZW5kaW5nIHJlc291cmNlIG9uIHRoZSB3cm9uZyBkb2N1bWVudC4KQEAgLTUzOCw3ICs1
MzgsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dUcmVlKCkKIHZvaWQg
U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVzKCkKIHsKICAgICBm
b3IgKGF1dG8qIGluc3RhbmNlIDogaW5zdGFuY2VzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGVs
ZW1lbnQgPSBpbnN0YW5jZS0+Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSkKKyAgICAgICAgaWYg
KGF1dG8gZWxlbWVudCA9IGluc3RhbmNlLT5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKQogICAg
ICAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKICAgICB9CiB9CkBAIC01
NDgsNyArNTQ4LDcgQEAgYm9vbCBTVkdVc2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3QKICAgICBpZiAoeCgpLmlzUmVsYXRpdmUoKSB8fCB5KCkuaXNSZWxhdGl2ZSgpIHx8
IHdpZHRoKCkuaXNSZWxhdGl2ZSgpIHx8IGhlaWdodCgpLmlzUmVsYXRpdmUoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBhdXRvKiB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25l
KCk7CisgICAgYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CiAgICAgcmV0
dXJuIHRhcmdldENsb25lICYmIHRhcmdldENsb25lLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggMGJjZDFiYjVmM2UwY2MzYzE4MDVl
MDZhMTVhNTc4YjRmYTM5YTZkNC4uMzFmNjQ0ZDE3OGQ4MmMzZjk1MTk0YzlkOTEzMDhhZWZmOWNj
Mjc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgU1ZHRWxlbWVudCogZmluZFRhcmdldChTdHJpbmcqIHRhcmdldElEID0gbnVs
bHB0cikgY29uc3Q7CiAKICAgICB2b2lkIGNsb25lVGFyZ2V0KENvbnRhaW5lck5vZGUmLCBTVkdF
bGVtZW50JiB0YXJnZXQpIGNvbnN0OwotICAgIFNWR0VsZW1lbnQqIHRhcmdldENsb25lKCkgY29u
c3Q7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldENsb25lKCkgY29uc3Q7CiAKICAgICB2
b2lkIHVwZGF0ZVNoYWRvd1RyZWUoKTsKICAgICB2b2lkIGV4cGFuZFVzZUVsZW1lbnRzSW5TaGFk
b3dUcmVlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NNSUxUaW1lQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01J
TFRpbWVDb250YWluZXIuY3BwCmluZGV4IDQ1Y2FmOWY0Y2M1MzVmN2NmZDc5ZDVkMTRiOGYwYjc4
Njg2NTRmNTUuLjMyYjgxMTBjYmU5MjNiOWQ0NzdmZDM0YzAzMjk3NWEyZWI1Zjk1NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3Bw
CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6dXBkYXRlQW5pbWF0
aW9ucyhTTUlMVGltZSBlbGFwc2VkLCBib29sIHNlZWtUb1RpbWUpCiAgICAgICAgIC8vIGhhdmUg
aGlnaGVyIHByaW9yaXR5LgogICAgICAgICBzb3J0QnlQcmlvcml0eSgqc2NoZWR1bGVkLCBlbGFw
c2VkKTsKIAotICAgICAgICBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCA9IG51bGxwdHI7
CisgICAgICAgIFJlZlB0cjxTVkdTTUlMRWxlbWVudD4gcmVzdWx0RWxlbWVudCA9IG51bGxwdHI7
CiAgICAgICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogKnNjaGVkdWxlZCkgewogICAgICAgICAg
ICAgQVNTRVJUKGFuaW1hdGlvbi0+dGltZUNvbnRhaW5lcigpID09IHRoaXMpOwogICAgICAgICAg
ICAgQVNTRVJUKGFuaW1hdGlvbi0+dGFyZ2V0RWxlbWVudCgpKTsKQEAgLTMwMiw3ICszMDIsNyBA
QCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjp1cGRhdGVBbmltYXRpb25zKFNNSUxUaW1lIGVsYXBz
ZWQsIGJvb2wgc2Vla1RvVGltZSkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gVGhp
cyB3aWxsIGNhbGN1bGF0ZSB0aGUgY29udHJpYnV0aW9uIGZyb20gdGhlIGFuaW1hdGlvbiBhbmQg
YWRkIGl0IHRvIHRoZSByZXN1bHRzRWxlbWVudC4KLSAgICAgICAgICAgIGlmICghYW5pbWF0aW9u
LT5wcm9ncmVzcyhlbGFwc2VkLCByZXN1bHRFbGVtZW50LCBzZWVrVG9UaW1lKSAmJiByZXN1bHRF
bGVtZW50ID09IGFuaW1hdGlvbikKKyAgICAgICAgICAgIGlmICghYW5pbWF0aW9uLT5wcm9ncmVz
cyhlbGFwc2VkLCByZXN1bHRFbGVtZW50LmdldCgpLCBzZWVrVG9UaW1lKSAmJiByZXN1bHRFbGVt
ZW50ID09IGFuaW1hdGlvbikKICAgICAgICAgICAgICAgICByZXN1bHRFbGVtZW50ID0gbnVsbHB0
cjsKIAogICAgICAgICAgICAgU01JTFRpbWUgbmV4dEZpcmVUaW1lID0gYW5pbWF0aW9uLT5uZXh0
UHJvZ3Jlc3NUaW1lKCk7CkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5l
cjo6dXBkYXRlQW5pbWF0aW9ucyhTTUlMVGltZSBlbGFwc2VkLCBib29sIHNlZWtUb1RpbWUpCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAocmVzdWx0RWxlbWVudCkKLSAgICAgICAgICAgIGFuaW1h
dGlvbnNUb0FwcGx5LmFwcGVuZChyZXN1bHRFbGVtZW50KTsKKyAgICAgICAgICAgIGFuaW1hdGlv
bnNUb0FwcGx5LmFwcGVuZChyZXN1bHRFbGVtZW50LmdldCgpKTsKICAgICB9CiAKICAgICBpZiAo
YW5pbWF0aW9uc1RvQXBwbHkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDNlZTY5N2Y1Mzk4NTk3YzNjZGMzY2Ez
NjliMDJhZGM3Y2MzZTI3ZjQuLjNiNGE5ODZhOGRjNDEyNWU5N2VmMmQ0YzNmZjAwZTg0YmIzZTQ1
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
Y3BwCkBAIC0xNzYsMTMgKzE3NiwxMyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpidWlsZFBlbmRp
bmdSZXNvdXJjZSgpCiAgICAgfQogCiAgICAgU3RyaW5nIGlkOwotICAgIEVsZW1lbnQqIHRhcmdl
dDsKKyAgICBSZWZQdHI8RWxlbWVudD4gdGFyZ2V0OwogICAgIGF1dG8mIGhyZWYgPSBnZXRBdHRy
aWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogICAgIGlmIChocmVmLmlzRW1wdHkoKSkKICAg
ICAgICAgdGFyZ2V0ID0gcGFyZW50RWxlbWVudCgpOwogICAgIGVsc2UKICAgICAgICAgdGFyZ2V0
ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmLnN0cmlu
ZygpLCBkb2N1bWVudCgpLCAmaWQpOwotICAgIFNWR0VsZW1lbnQqIHN2Z1RhcmdldCA9IGlzPFNW
R0VsZW1lbnQ+KHRhcmdldCkgPyBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQpIDogbnVsbHB0
cjsKKyAgICBTVkdFbGVtZW50KiBzdmdUYXJnZXQgPSBpczxTVkdFbGVtZW50Pih0YXJnZXQpID8g
ZG93bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0LmdldCgpKSA6IG51bGxwdHI7CiAKICAgICBpZiAo
c3ZnVGFyZ2V0ICYmICFzdmdUYXJnZXQtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHN2Z1Rhcmdl
dCA9IG51bGxwdHI7CkBAIC0yNjMsNyArMjYzLDcgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0
b3JSZXN1bHQgU1ZHU01JTEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblQK
IAogICAgIHVwZGF0ZUF0dHJpYnV0ZU5hbWUoKTsKIAotICAgIFNWR1NWR0VsZW1lbnQqIG93bmVy
ID0gb3duZXJTVkdFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR1NWR0VsZW1lbnQ+IG93bmVyID0g
b3duZXJTVkdFbGVtZW50KCk7CiAgICAgaWYgKCFvd25lcikKICAgICAgICAgcmV0dXJuIEluc2Vy
dGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogCkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBT
VkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMoKQogICAgIGZvciAoYXV0byYgY29uZGl0
aW9uIDogbV9jb25kaXRpb25zKSB7CiAgICAgICAgIGlmIChjb25kaXRpb24ubV90eXBlID09IENv
bmRpdGlvbjo6RXZlbnRCYXNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX3N5
bmNiYXNlKTsKLSAgICAgICAgICAgIEVsZW1lbnQqIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihj
b25kaXRpb24pOworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGV2ZW50QmFzZSA9IGV2ZW50
QmFzZUZvcihjb25kaXRpb24pOwogICAgICAgICAgICAgaWYgKCFldmVudEJhc2UpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX2V2ZW50
TGlzdGVuZXIpOwpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmRpc2Nv
bm5lY3RDb25kaXRpb25zKCkKICAgICAgICAgICAgIC8vIG5vIGd1YXJhbnRlZSB0aGF0IGV2ZW50
QmFzZUZvcigpIHdpbGwgYmUgYWJsZSB0byBmaW5kIG91ciBjb25kaXRpb24ncwogICAgICAgICAg
ICAgLy8gb3JpZ2luYWwgZXZlbnRCYXNlLiBTbywgd2UgYWxzbyBoYXZlIHRvIGRpc2Nvbm5lY3Qg
b3Vyc2VsdmVzIGZyb20KICAgICAgICAgICAgIC8vIG91ciBjb25kaXRpb24gZXZlbnQgbGlzdGVu
ZXIsIGluIGNhc2UgaXQgbGF0ZXIgZmlyZXMuCi0gICAgICAgICAgICBFbGVtZW50KiBldmVudEJh
c2UgPSBldmVudEJhc2VGb3IoY29uZGl0aW9uKTsKKyAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBldmVudEJhc2UgPSBldmVudEJhc2VGb3IoY29uZGl0aW9uKTsKICAgICAgICAgICAgIGlmIChl
dmVudEJhc2UpCiAgICAgICAgICAgICAgICAgZXZlbnRCYXNlLT5yZW1vdmVFdmVudExpc3RlbmVy
KGNvbmRpdGlvbi5tX25hbWUsICpjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAg
ICAgICAgICAgICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLT5kaXNjb25uZWN0QW5pbWF0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBmMzc2YTNj
MmQxMzI4ZWQwOGFiYjdiMmIyZDZhZDY1NjgwODhkMjg1Li44OTIyM2UzOTcwY2YxY2Y1ODg4ODNl
NmQyNjFmOTYyNDg0NzE2NDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgU1ZHSW1hZ2U6On5TVkdJbWFnZSgpCiAgICAgQVNTRVJU
KCFtX2Nocm9tZUNsaWVudCB8fCAhbV9jaHJvbWVDbGllbnQtPmltYWdlKCkpOwogfQogCi1pbmxp
bmUgU1ZHU1ZHRWxlbWVudCogU1ZHSW1hZ2U6OnJvb3RFbGVtZW50KCkgY29uc3QKK2lubGluZSBS
ZWZQdHI8U1ZHU1ZHRWxlbWVudD4gU1ZHSW1hZ2U6OnJvb3RFbGVtZW50KCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05Myw3ICs5Myw3IEBA
IGlubGluZSBTVkdTVkdFbGVtZW50KiBTVkdJbWFnZTo6cm9vdEVsZW1lbnQoKSBjb25zdAogCiBi
b29sIFNWR0ltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1dG8g
cm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMjIsMTQgKzEyMiwxNCBAQCB2b2lkIFNWR0lt
YWdlOjpzZXRDb250YWluZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBpZiAoIXVz
ZXNDb250YWluZXJTaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNWR1NWR0VsZW1lbnQq
IHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKKyAgICBhdXRvIHJvb3RFbGVtZW50
ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAgICAgYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdSb290Pihyb290
RWxlbWVudC0+cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWVWaWV3KCk7CisgICAgUmVmUHRyPEZyYW1l
Vmlldz4gdmlldyA9IGZyYW1lVmlldygpOwogICAgIHZpZXctPnJlc2l6ZSh0aGlzLT5jb250YWlu
ZXJTaXplKCkpOwogCiAgICAgcmVuZGVyZXItPnNldENvbnRhaW5lclNpemUoSW50U2l6ZShzaXpl
KSk7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZShj
b25zdCBGbG9hdFNpemUmIHNpemUpCiAKIEludFNpemUgU1ZHSW1hZ2U6OmNvbnRhaW5lclNpemUo
KSBjb25zdAogewotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVs
ZW1lbnQoKTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKICAg
ICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCkBAIC0yODUs
NyArMjg1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWMKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIEZyYW1lVmll
dyogdmlldyA9IGZyYW1lVmlldygpOworICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcgPSBmcmFt
ZVZpZXcoKTsKICAgICBBU1NFUlQodmlldyk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWMKIAogUmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkg
Y29uc3QKIHsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVt
ZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAg
aWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlckJveD4ocm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkpOwpAQCAtMzQ3LDcgKzM0
Nyw3IEBAIEZyYW1lVmlldyogU1ZHSW1hZ2U6OmZyYW1lVmlldygpIGNvbnN0CiAKIGJvb2wgU1ZH
SW1hZ2U6Omhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdAogewotICAgIFNWR1NWR0VsZW1lbnQqIHJv
b3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0g
dGhpcy0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJvb3RFbGVtZW50LT5pbnRyaW5zaWNXaWR0aCgpLmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpOwpAQCAtMzU1LDcgKzM1NSw3IEBAIGJvb2wgU1ZHSW1hZ2U6Omhh
c1JlbGF0aXZlV2lkdGgoKSBjb25zdAogCiBib29sIFNWR0ltYWdlOjpoYXNSZWxhdGl2ZUhlaWdo
dCgpIGNvbnN0CiB7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290
RWxlbWVudCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwog
ICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4g
cm9vdEVsZW1lbnQtPmludHJpbnNpY0hlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOwpA
QCAtMzYzLDcgKzM2Myw3IEBAIGJvb2wgU1ZHSW1hZ2U6Omhhc1JlbGF0aXZlSGVpZ2h0KCkgY29u
c3QKIAogdm9pZCBTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBp
bnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmlu
c2ljUmF0aW8pCiB7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290
RWxlbWVudCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwog
ICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzc5LDcgKzM3OSw3
IEBAIHZvaWQgU1ZHSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50
cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluCiAKIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0
aW9uKCkKIHsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVt
ZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAg
aWYgKCFyb290RWxlbWVudCB8fCAhcm9vdEVsZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygpOwpAQCAt
Mzg4LDcgKzM4OCw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKIAogdm9pZCBT
VkdJbWFnZTo6c3RvcEFuaW1hdGlvbigpCiB7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1l
bnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5y
b290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAg
ICByb290RWxlbWVudC0+cGF1c2VBbmltYXRpb25zKCk7CkBAIC00MDEsNyArNDAxLDcgQEAgdm9p
ZCBTVkdJbWFnZTo6cmVzZXRBbmltYXRpb24oKQogCiBib29sIFNWR0ltYWdlOjppc0FuaW1hdGlu
ZygpIGNvbnN0CiB7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290
RWxlbWVudCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwog
ICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4g
cm9vdEVsZW1lbnQtPmhhc0FjdGl2ZUFuaW1hdGlvbigpOwpAQCAtNDA5LDEwICs0MDksMTAgQEAg
Ym9vbCBTVkdJbWFnZTo6aXNBbmltYXRpbmcoKSBjb25zdAogCiB2b2lkIFNWR0ltYWdlOjpyZXBv
cnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+
IGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIHNpemVfdCBk
ZWNvZGVkSW1hZ2VNZW1vcnlDb3N0ID0gMDsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3Vt
ZW50OyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpCisgICAgZm9yIChS
ZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3VtZW50OyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6
bmV4dCgqbm9kZSkpCiAgICAgICAgIGRlY29kZWRJbWFnZU1lbW9yeUNvc3QgKz0gbm9kZS0+YXBw
cm94aW1hdGVNZW1vcnlDb3N0KCk7CiAKICAgICBKU0M6OlZNJiB2bSA9IGNvbW1vblZNKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDRlZmZlNTc5YjVjYWE1ZWZj
YjVhOTNmNWYyZjM5MmM3OGM0OTRkMzAuLjg4Zjc2Mjc1NDk2NDRkYjE3NTk0YzNkOGM3YjI3ODNk
ZGQyZDQxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC05NSw3
ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRh
aW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBj
b25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwogCi0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVs
ZW1lbnQoKSBjb25zdDsKKyAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gcm9vdEVsZW1lbnQoKSBj
b25zdDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdJbWFnZUNocm9tZUNsaWVudD4gbV9jaHJv
bWVDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IG1fcGFnZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKaW5kZXggYmZl
NzYzOWIzMTQ1MDgwM2Y5ZTIzYTA1Yzc3OTAzYTk4ZjIyYWNiMi4uNWQ0MDE4MWQzNzFiNTU2ZmQ3
OWJmNjk3ODM1ZDlkYjk3OTdjMGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTExOCw5ICsxMTgsOSBAQCB2b2lkIEZF
SW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpOwog
ICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9y
bSk7CiAKLSAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dE5vZGUgPSBkb3duY2FzdDxTVkdFbGVt
ZW50PihyZW5kZXJlci0+ZWxlbWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IGNv
bnRleHROb2RlID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXItPmVsZW1lbnQoKSk7CiAg
ICAgICAgIGlmIChjb250ZXh0Tm9kZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCkpIHsKLSAgICAgICAg
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0Tm9kZSk7CisgICAgICAg
ICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoY29udGV4dE5vZGUuZ2V0KCkpOwog
ICAgICAgICAgICAgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZTsKIAogICAgICAgICAgICAgLy8gSWYg
d2UncmUgcmVmZXJlbmNpbmcgYW4gZWxlbWVudCB3aXRoIHBlcmNlbnRhZ2UgdW5pdHMsIGVnLiA8
cmVjdCB3aXRoPSIzMCUiPiB0aG9zZSB2YWx1ZXMgd2VyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSB2
aWV3cG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXggNGY2YTgyNzcxNGE2Y2FlOTBkZjEyZWZhOGMx
M2UxYTQ1M2JlNzYyNC4uOTdlYTU1ZThjMDg3OTc4YmRlZjViODJkZTg1N2U3MGY5ZjdmNTIyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5jcHAKQEAgLTQ3LDExICs0NywxMSBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxk
ZXI6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QpCiAgICAgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLCBtX2xhc3RFZmZlY3QpOwogfQogCi1GaWx0
ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCkgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZpbHRlckJ1aWxkZXI6Omdl
dEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBpZiAoaWQu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX2xhc3RFZmZlY3QpCi0gICAgICAgICAgICByZXR1
cm4gbV9sYXN0RWZmZWN0LmdldCgpOworICAgICAgICAgICAgcmV0dXJuIG1fbGFzdEVmZmVjdDsK
IAogICAgICAgICByZXR1cm4gbV9idWlsdGluRWZmZWN0cy5nZXQoU291cmNlR3JhcGhpYzo6ZWZm
ZWN0TmFtZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5kZXggYzVlNDBhODA4ZGUwYzZmZjEzNjQ1
ZWZlOTFjZjY1ZWI3ZmVkYzY3Yy4uNWU3ZDM4YjZiMDc5MjM0NDQxODVmNTVmM2ZkYmQwMDA0NTkz
YmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0Pik7CiAKLSAg
ICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29u
c3Q7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZ2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGlkKSBjb25zdDsKICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KIAogICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9F
ZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYsIFJlbmRlck9iamVjdCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCmluZGV4IDVhYjFhNDNmMDY5
ZWRhZTRkZDliMTEwYjVlOTZiNTA3MzJjODQ4YjQuLmU5ZGE4ZThhNDQzNGZmMDc4MGZjYmE5YjA5
NWYwMGFlMjA4YzQwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2Zm
LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZSgp
CiAgICAgewogICAgICAgICBBU1NFUlQobV9hbmltYXRlZFBhdGhCeXRlU3RyZWFtKTsKLSAgICAg
ICAgU1ZHUGF0aEVsZW1lbnQqIHBhdGhFbGVtZW50ID0gZG93bmNhc3Q8U1ZHUGF0aEVsZW1lbnQ+
KGNvbnRleHRFbGVtZW50KCkpOworICAgICAgICBSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IHBhdGhF
bGVtZW50ID0gZG93bmNhc3Q8U1ZHUGF0aEVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KCkpOwogCiAg
ICAgICAgIC8vIElmIHRoZSBhbmltVmFsIGlzIG9ic2VydmVkIGZyb20gSlMsIHdlIGhhdmUgdG8g
dXBkYXRlIGl0IG9uIGVhY2ggYW5pbWF0aW9uIHN0ZXAuCiAgICAgICAgIC8vIFRoaXMgaXMgYW4g
ZXhwZW5zaXZlIG9wZXJhdGlvbiBhbmQgb25seSBkb25lLCBpZiBzb21lb25lIGFjdHVhbGx5IG9i
c2VydmVzIHRoZSBhbmltYXRlZFBhdGhTZWdMaXN0KCkgd2hpbGUgYW4gYW5pbWF0aW9uIGlzIHJ1
bm5pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0
UHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0
UHJvcGVydHlUZWFyT2ZmLmgKaW5kZXggYjgzMWQ0NzY2NDEyY2E3ZGY0NTQ0MDU5NTQ1OGNhZWUw
NmU4ODI5ZS4uY2ZiN2U0MmNkODlkNDdkYzVhOTdhN2FjM2M0NmU5YWNhYmZlZmQ2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9m
Zi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdW5zaWduZWQg
c2l6ZSA9IG1fd3JhcHBlcnMtPnNpemUoKTsKICAgICAgICAgQVNTRVJUKHNpemUgPT0gbV92YWx1
ZXMtPnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKLSAgICAgICAgICAgIExpc3RJdGVtVGVhck9mZiogaXRlbSA9IG1fd3JhcHBlcnMtPmF0KGkp
OworICAgICAgICAgICAgUmVmUHRyPExpc3RJdGVtVGVhck9mZj4gaXRlbSA9IG1fd3JhcHBlcnMt
PmF0KGkpOwogICAgICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaXRlbS0+c2V0QW5pbWF0ZWRQcm9wZXJ0eShtX2FuaW1hdGVkUHJvcGVy
dHkucHRyKCkpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgcHJv
Y2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKFJlZjxMaXN0SXRlbVRlYXJPZmY+JiBuZXdJdGVt
LCB1bnNpZ25lZCogaW5kZXhUb01vZGlmeSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIFNWR0Fu
aW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0gPSBuZXdJdGVtLT5hbmltYXRl
ZFByb3BlcnR5KCk7CisgICAgICAgIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBhbmltYXRl
ZFByb3BlcnR5T2ZJdGVtID0gbmV3SXRlbS0+YW5pbWF0ZWRQcm9wZXJ0eSgpOwogCiAgICAgICAg
IC8vIG5ld0l0ZW0gaGFzIGJlZW4gY3JlYXRlZCBtYW51YWxseSwgaXQgZG9lc24ndCBiZWxvbmcg
dG8gYW55IFNWR0VsZW1lbnQuCiAgICAgICAgIC8vIChmb3IgZXhhbXBsZTogInRleHRFbGVtZW50
LnguYmFzZVZhbC5hcHBlbmRJdGVtKHN2Z3N2Z0VsZW1lbnQuY3JlYXRlU1ZHTGVuZ3RoKCkpIikK
QEAgLTE4MSw3ICsxODEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIC8vIFNwZWM6IElmIG5ld0l0
ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMg
bGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3QuCiAgICAgICAgIC8vICdu
ZXdJdGVtJyBpcyBhbHJlYWR5IGxpdmluZyBpbiBhbm90aGVyIGxpc3QuIElmIGl0J3Mgbm90IG91
ciBsaXN0LCBzeW5jaHJvbml6ZSB0aGUgb3RoZXIgbGlzdHMgd3JhcHBlcnMgYWZ0ZXIgdGhlIHJl
bW92YWwuCiAgICAgICAgIGJvb2wgbGl2ZXNJbk90aGVyTGlzdCA9IGFuaW1hdGVkUHJvcGVydHlP
Zkl0ZW0gIT0gbV9hbmltYXRlZFByb3BlcnR5LnB0cigpOwotICAgICAgICBBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmYqIHByb3BlcnR5VGVhck9mZiA9IHN0YXRpY19jYXN0PEFuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZio+KGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0pOworICAgICAgICBBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIHByb3BlcnR5VGVhck9mZiA9IHN0YXRpY19jYXN0PEFu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZio+KGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0uZ2V0KCkp
OwogICAgICAgICBpbnQgaW5kZXhUb1JlbW92ZSA9IHByb3BlcnR5VGVhck9mZi0+ZmluZEl0ZW0o
bmV3SXRlbS5wdHIoKSk7CiAgICAgICAgIEFTU0VSVChpbmRleFRvUmVtb3ZlICE9IC0xKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326159</attachid>
            <date>2017-11-06 14:55:54 -0800</date>
            <delta_ts>2017-11-06 16:40:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179314-20171106145553.patch</filename>
            <type>text/plain</type>
            <size>82636</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0M2ZhMTJlNzk3NzM1
ZGJiOThiN2VhNDEwZDBmMTE5NTFkYzc0My4uMzI3YjBlY2IwZDIwNmU2YThlZTU5MzkyZjViYzU1
M2EzYTE1OGNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNy0xMS0wNiAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBz
dGFjayByYXcgcG9pbnRlcnMgd2l0aCBSZWZQdHJzIHdpdGhpbiBXZWJDb3JlL3N2ZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MzE0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNDg0MjIwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCZXNpZGVzIHJlcGxhY2luZyBwb2ludGVycyBkaXJlY3RseSwg
c29tZSBvZiB0aGUgbWV0aG9kcyBhcmUgY2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAgUmVmUHRy
cyBhcyB3ZWxsLgorCisgICAgICAgIE5vIGNoYW5nZXMgaW4gYmVoYXZpb3JzLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jvb3RFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKiBkb20vRXZlbnRQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFBhdGg6OmV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRv
QW5jaG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEVsZW1lbnRDVE0pOgorICAgICAgICAqIHN2Zy9TVkdB
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6Omhhc1ZhbGlkR2x5cGhFbGVtZW50cyBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxh
dGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudEJhc2U6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlTW90aW9uRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb25QYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldEFuaW1hdGVk
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxl
bWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpy
ZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFkanVzdEZvcklu
aGVyaXRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50Ojpyb290RWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdEb2N1bWVudDo6em9vbUFuZFBhbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OnN0YXJ0UGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50Ojp1cGRhdGVQYW4gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJj
ZXNGb3JSZW1vdmFsTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg6
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxl
bWVudDo6flNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y29ycmVz
cG9uZGluZ1VzZUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbXB1
dGVkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVz
b3VyY2VzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6dXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
aW52YWxpZGF0ZUluc3RhbmNlcyk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVC
bGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VFbGVt
ZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVP
ZmZzZXRFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQpOgorICAgICAgICAqIHN2Zy9TVkdGb250
RmFjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50Ojpy
ZWJ1aWxkRm9udEZhY2UpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAg
ICogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3Ro
Q29udGV4dDo6ZGV0ZXJtaW5lVmlld3BvcnQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZH
TVBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6YnVp
bGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTVBhdGhFbGVtZW50Ojpw
YXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVt
ZW50OjpmcmFtZUZvckN1cnJlbnRTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50OjpjdXJyZW50U2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZH
RWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmRlc2VsZWN0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmxvY2Fs
Q29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnNjcm9sbFRvQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5
bGVFbGVtZW50OjpzZXREaXNhYmxlZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQpOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBz
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRo
RWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0
dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxl
bWVudDo6dGFyZ2V0Q2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVu
dDo6dG9DbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpyZW5kZXJl
ckNsaXBDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpmaW5k
VGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmludmFsaWRh
dGVEZXBlbmRlbnRTaGFkb3dUcmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50
OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMpOgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NNSUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RDb25kaXRpb25zKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnJv
b3RFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c2V0Q29u
dGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlOjpoYXNSZWxhdGl2ZVdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpoYXNSZWxhdGl2ZUhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpz
dG9wQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjppc0FuaW1hdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6cmVwb3J0QXBwcm94aW1hdGVNZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKwogMjAxNy0xMS0wNiAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNobWVudCBT
dXBwb3J0XSBJbXBsZW1lbnQgZGVsZWdhdGUgaG9va3MgZm9yIGF0dGFjaG1lbnQgZWxlbWVudCBp
bnNlcnRpb24gYW5kIHJlbW92YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGI5ZGM4ZDNjOWI1
NWM0MDVjZWIxNmU4OTFhYzM1MTFhODViMzBiNjQuLmVkZjM5NzBlNGI4OWVkMmZiNDdjMDdkN2Iw
YjAzMmI4OWNlYzdlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzA3Miw3ICszMDcyLDcg
QEAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90
ZVNWR1Jvb3RFbGVtZW50KENyZWF0aW9uQ2gKICAgICBpZiAoIWlzPFNWR0RvY3VtZW50Pihkb2N1
bWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIFNWR1NWR0VsZW1lbnQq
IHJvb3RFbGVtZW50ID0gU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KCpkb2N1bWVudCk7CisgICAg
YXV0byByb290RWxlbWVudCA9IFNWR0RvY3VtZW50Ojpyb290RWxlbWVudCgqZG9jdW1lbnQpOwog
ICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXJSb290ID0gcm9vdEVsZW1lbnQtPnJlbmRlcmVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRQYXRoLmgKaW5kZXggNWNjYmE5OTBiZmMzY2MyNTk5MjY0ZDQxZjk1ZTBkNDZhODM3NmZi
NS4uYWQ3YzJiNDdmY2E4MWY1Mjc1N2E5YmMxZWI4NGVjY2Q5MjBlYWM2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFBhdGguaApAQCAtNjMsOCArNjMsOCBAQCBpbmxpbmUgTm9kZSogRXZlbnRQYXRoOjpldmVu
dFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQogCiAgICAg
Ly8gRXZlbnRzIHNlbnQgdG8gZWxlbWVudHMgaW5zaWRlIGFuIFNWRyB1c2UgZWxlbWVudCdzIHNo
YWRvdyB0cmVlIGdvIHRvIHRoZSB1c2UgZWxlbWVudC4KICAgICBpZiAoaXM8U1ZHRWxlbWVudD4o
cmVmZXJlbmNlTm9kZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHVzZUVsZW1lbnQgPSBkb3duY2Fz
dDxTVkdFbGVtZW50PihyZWZlcmVuY2VOb2RlKS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHVzZUVsZW1lbnQ7CisgICAgICAgIGlmIChhdXRvIHVzZUVsZW1l
bnQgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZWZlcmVuY2VOb2RlKS5jb3JyZXNwb25kaW5nVXNl
RWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIHVzZUVsZW1lbnQuZ2V0KCk7CiAgICAgfQog
CiAgICAgcmV0dXJuICZyZWZlcmVuY2VOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDYxZWY1OWFmM2MyOGNkOTkzYTRhNGQ1YjMwMzBmNjAzMmM2Nzk1ODcuLmE4M2VhYTU2YjY1
NGYwMjgxMzU3ZDM4OWNiMjgxMzUxMTdmYzIyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTIxMjYsNyArMjEyNiw3IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvcihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgZG9jdW1lbnQuc2V0Q1NTVGFyZ2V0KGFuY2hvckVsZW1l
bnQpOwogCiAgICAgaWYgKGlzPFNWR0RvY3VtZW50Pihkb2N1bWVudCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHJvb3RFbGVtZW50ID0gU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KGRvY3VtZW50KSkg
eworICAgICAgICBpZiAoYXV0byByb290RWxlbWVudCA9IFNWR0RvY3VtZW50Ojpyb290RWxlbWVu
dChkb2N1bWVudCkpIHsKICAgICAgICAgICAgIHJvb3RFbGVtZW50LT5zY3JvbGxUb0FuY2hvcihu
YW1lLCBhbmNob3JFbGVtZW50KTsKICAgICAgICAgICAgIGlmICghYW5jaG9yRWxlbWVudCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggY2FhNzRlZjM1Yzg2ZTEx
NWQ3ZGIzNmM2MDcwNmVmZTg4MzdjMDExMy4uMTc4MDFlMmUwNWM4ZTM3NWRkOGYzOTJmMjhkYTk2
ZGIyZWM0ZjNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgdm9pZCBn
ZXRFbGVtZW50Q1RNKFNWR0VsZW1lbnQqIGVsZW1lbnQsIEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtKQogewogICAgIEFTU0VSVChlbGVtZW50KTsKIAotICAgIFNWR0VsZW1lbnQqIHN0b3BBdEVs
ZW1lbnQgPSBTVkdMb2NhdGFibGU6Om5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoZWxlbWVudCk7Cisg
ICAgYXV0byBzdG9wQXRFbGVtZW50ID0gU1ZHTG9jYXRhYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVt
ZW50KGVsZW1lbnQpOwogICAgIEFTU0VSVChzdG9wQXRFbGVtZW50KTsKIAogICAgIEFmZmluZVRy
YW5zZm9ybSBsb2NhbFRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4
IDcxMGRlY2U4MThmYjQ5NjgyNTI2OTBhZWIwOGMyODgyZmUwZmI3MjcuLjMzN2I4ZDgwYzY1ZTBh
YWE1NDQxN2E1MDA4MmU3NDE3N2Y2NTY1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNw
cApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhocmVmKCkpOwogCiAgICAgICAgICAgICBpZiAodXJsWzBdID09
ICcjJykgewotICAgICAgICAgICAgICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0cmVlU2Nv
cGUoKS5nZXRFbGVtZW50QnlJZCh1cmwuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMSkpOworICAgICAg
ICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiB0YXJnZXRFbGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0
RWxlbWVudEJ5SWQodXJsLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDEpKTsKICAgICAgICAgICAgICAg
ICBpZiAoaXM8U1ZHU01JTEVsZW1lbnQ+KHRhcmdldEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGRvd25jYXN0PFNWR1NNSUxFbGVtZW50PigqdGFyZ2V0RWxlbWVudCkuYmVnaW5CeUxp
bmtBY3RpdmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5k
bGVkKCk7CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gIl9ibGFuayI7
CiAgICAgICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogCi0gICAgICAgICAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJh
bWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkudXJs
U2VsZWN0ZWQoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpLCB0YXJnZXQsICZldmVudCwgTG9j
a0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIs
IGRvY3VtZW50KCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAppbmRleCA1Yzg5YTAxYTdl
YmE2OTM2NWQxODYwYTZmMGJlZjMyZjFlNzUzYjAyLi45YzZkYmUyZDk3MTU2MmMxODYxZGQ1MDA0
MzM5NWNmMTExNzI3ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5
cGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50
LmNwcApAQCAtODcsNyArODcsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQWx0R2x5
cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJgogYm9vbCBTVkdB
bHRHbHlwaEVsZW1lbnQ6Omhhc1ZhbGlkR2x5cGhFbGVtZW50cyhWZWN0b3I8U3RyaW5nPiYgZ2x5
cGhOYW1lcykgY29uc3QKIHsKICAgICBTdHJpbmcgdGFyZ2V0OwotICAgIGF1dG8qIGVsZW1lbnQg
PSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhnZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJl
ZkF0dHIpLCBkb2N1bWVudCgpLCAmdGFyZ2V0KTsKKyAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVm
UHRyKHRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpo
cmVmQXR0ciksIGRvY3VtZW50KCksICZ0YXJnZXQpKTsKIAogICAgIGlmIChpczxTVkdHbHlwaEVs
ZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgIGdseXBoTmFtZXMuYXBwZW5kKHRhcmdldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IDdjNmFi
ZjQ1MTg4Mjk0ZDk3ZmZkODNjOTZjZmJkYmIwNzViMTJmNmMuLmIyYmFlYWUxZjJjOTFlZmM2MmQ2
OGQ2NjdhYmNjNGZkYmFhNzgyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudEJhc2UuY3BwCkBAIC00Niw4ICs0Niw3IEBAIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6
flNWR0FuaW1hdGVFbGVtZW50QmFzZSgpID0gZGVmYXVsdDsKIAogYm9vbCBTVkdBbmltYXRlRWxl
bWVudEJhc2U6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpCiB7Ci0gICAgU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1l
bnQpCisgICAgaWYgKCF0aGlzLT50YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJldHVybiBtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFuaW1hdGVkVW5rbm93
biAmJiAhaGFzSW52YWxpZENTU0F0dHJpYnV0ZVR5cGUoKTsKQEAgLTg1LDcgKzg0LDcgQEAgQW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpkZXRlcm1pbmVBbmltYXRl
ZFByb3BlcnR5VHlwZShTVkdFbGUKIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBT
VkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkKIHsKICAgICBBU1NFUlQocmVzdWx0RWxlbWVu
dCk7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQo
KTsKKyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVs
ZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTExLDcgKzExMCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlCiAgICAgICAgIHBlcmNlbnRh
Z2UgPSBwZXJjZW50YWdlIDwgMC41ID8gMCA6IDE7CiAKICAgICAvLyBUYXJnZXQgZWxlbWVudCBt
aWdodCBoYXZlIGNoYW5nZWQuCi0gICAgbV9hbmltYXRvci0+c2V0Q29udGV4dEVsZW1lbnQodGFy
Z2V0RWxlbWVudCk7CisgICAgbV9hbmltYXRvci0+c2V0Q29udGV4dEVsZW1lbnQodGFyZ2V0RWxl
bWVudC5nZXQoKSk7CiAKICAgICAvLyBCZSBzdXJlIHRvIGRldGFjaCBsaXN0IHdyYXBwZXJzIGJl
Zm9yZSB3ZSBtb2RmaXkgdGhlaXIgdW5kZXJseWluZyB2YWx1ZS4gSWYgd2UnZCBkbwogICAgIC8v
IGlmIGFmdGVyIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoKSByYW4gdGhlIGNhY2hlZCBwb2ludGVy
cyBpbiB0aGUgbGlzdCBwcm9wZXJ5IHRlYXIKQEAgLTEzNSw4ICsxMzQsNyBAQCBib29sIFNWR0Fu
aW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBT
dHJpbmcmIHRvQXRFbgogCiBib29sIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlRnJv
bUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykKIHsKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxl
bWVudCgpOwotICAgIGlmICghdGFyZ2V0RWxlbWVudCkKKyAgICBpZiAoIXRoaXMtPnRhcmdldEVs
ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZGV0ZXJtaW5lUHJvcGVydHlW
YWx1ZVR5cGVzKGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKQEAgLTE0Nyw4ICsxNDUsNyBAQCBib29s
IFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgYwogCiBib29sIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiBieVN0cmluZykKIHsKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFy
Z2V0RWxlbWVudCgpOwotICAgIGlmICghdGFyZ2V0RWxlbWVudCkKKyAgICBpZiAoIXRoaXMtPnRh
cmdldEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGFuaW1hdGlv
bk1vZGUoKSA9PSBCeUFuaW1hdGlvbiAmJiAhaXNBZGRpdGl2ZSgpKQpAQCAtMTg5LDEyICsxODYs
MTIgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnJlc2V0QW5pbWF0ZWRUeXBlKCkKICAg
ICBTVkdBbmltYXRlZFR5cGVBbmltYXRvciogYW5pbWF0b3IgPSBlbnN1cmVBbmltYXRvcigpOwog
ICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlID09IGFuaW1hdG9yLT50eXBlKCkpOwog
Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsK
KyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1l
bnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLT5hdHRyaWJ1dGVOYW1lKCk7
Ci0gICAgU2hvdWxkQXBwbHlBbmltYXRpb24gc2hvdWxkQXBwbHkgPSBzaG91bGRBcHBseUFuaW1h
dGlvbih0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTsKKyAgICBTaG91bGRBcHBseUFuaW1h
dGlvbiBzaG91bGRBcHBseSA9IHNob3VsZEFwcGx5QW5pbWF0aW9uKHRhcmdldEVsZW1lbnQuZ2V0
KCksIGF0dHJpYnV0ZU5hbWUpOwogCiAgICAgaWYgKHNob3VsZEFwcGx5ID09IERvbnRBcHBseUFu
aW1hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjIwLDggKzIxNyw4IEBAIHZvaWQgU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSgpCiAgICAgU3RyaW5nIGJhc2VWYWx1
ZTsKIAogICAgIGlmIChzaG91bGRBcHBseSA9PSBBcHBseUNTU0FuaW1hdGlvbikgewotICAgICAg
ICBBU1NFUlQoU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNUYXJnZXRBdHRyaWJ1dGVDU1NQcm9wZXJ0
eSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7Ci0gICAgICAgIGNvbXB1dGVDU1NQcm9w
ZXJ0eVZhbHVlKHRhcmdldEVsZW1lbnQsIGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2Nh
bE5hbWUoKSksIGJhc2VWYWx1ZSk7CisgICAgICAgIEFTU0VSVChTVkdBbmltYXRpb25FbGVtZW50
Ojppc1RhcmdldEF0dHJpYnV0ZUNTU1Byb3BlcnR5KHRhcmdldEVsZW1lbnQuZ2V0KCksIGF0dHJp
YnV0ZU5hbWUpKTsKKyAgICAgICAgY29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUodGFyZ2V0RWxlbWVu
dC5nZXQoKSwgY3NzUHJvcGVydHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSwgYmFzZVZh
bHVlKTsKICAgICB9CiAKICAgICBpZiAoIW1fYW5pbWF0ZWRUeXBlKQpAQCAtMzM5LDcgKzMzNiw3
IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAg
ICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZH
RWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gdGhpcy0+YXR0cmlidXRlTmFtZSgpOwog
CiAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwpAQCAtMzUyLDcgKzM0OSw3IEBAIHZvaWQgU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlOjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgfQogCiAgICAg
Ly8gV2UgZG8gdXBkYXRlIHRoZSBzdHlsZSBhbmQgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0eSBpbmRl
cGVuZGVudCBvZiBlYWNoIG90aGVyLgotICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFw
cGx5ID0gc2hvdWxkQXBwbHlBbmltYXRpb24odGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7
CisgICAgU2hvdWxkQXBwbHlBbmltYXRpb24gc2hvdWxkQXBwbHkgPSBzaG91bGRBcHBseUFuaW1h
dGlvbih0YXJnZXRFbGVtZW50LmdldCgpLCBhdHRyaWJ1dGVOYW1lKTsKICAgICBpZiAoc2hvdWxk
QXBwbHkgPT0gQXBwbHlYTUxhbmRDU1NBbmltYXRpb24pCiAgICAgICAgIGFwcGx5Q1NTUHJvcGVy
dHlUb1RhcmdldEFuZEluc3RhbmNlcygqdGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgbV9h
bmltYXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKSk7CiAKQEAgLTQwNiw4ICs0MDMsNyBAQCBib29s
IFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6aXNBZGRpdGl2ZSgpIGNvbnN0CiBmbG9hdCBTVkdBbmlt
YXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKICAgICAvLyBGSVhNRTogQSByZXR1cm4gdmFs
dWUgb2YgZmxvYXQgaXMgbm90IGVub3VnaCB0byBzdXBwb3J0IHBhY2VkIGFuaW1hdGlvbnMgb24g
bGlzdHMuCi0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1l
bnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQpCisgICAgaWYgKCF0aGlzLT50YXJnZXRFbGVt
ZW50KCkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIHJldHVybiBlbnN1cmVBbmltYXRvcigp
LT5jYWxjdWxhdGVEaXN0YW5jZShmcm9tU3RyaW5nLCB0b1N0cmluZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAppbmRleCAwYzc0MTZkZGQ1OTkw
ZDNkYzU2MDAyNGNkZDNkZWE0NGZmZTg1NWJhLi4xYmIwNzQ0ZjEyMzcxNWE2MGFiZDM5ZDk0ZTk3
MzJkMWM2ODhiYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9u
RWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgUmVmPFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
PiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUKIAog
Ym9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkKIHsK
LSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwor
ICAgIFJlZlB0cjxTVkdFbGVtZW50PiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVu
dCgpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMjIsOSArMTIyLDkgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6dXBkYXRlQW5p
bWF0aW9uUGF0aCgpCiAgICAgYm9vbCBmb3VuZE1QYXRoID0gZmFsc2U7CiAKICAgICBmb3IgKGF1
dG8mIG1QYXRoIDogY2hpbGRyZW5PZlR5cGU8U1ZHTVBhdGhFbGVtZW50PigqdGhpcykpIHsKLSAg
ICAgICAgU1ZHUGF0aEVsZW1lbnQqIHBhdGhFbGVtZW50ID0gbVBhdGgucGF0aEVsZW1lbnQoKTsK
KyAgICAgICAgYXV0byBwYXRoRWxlbWVudCA9IG1QYXRoLnBhdGhFbGVtZW50KCk7CiAgICAgICAg
IGlmIChwYXRoRWxlbWVudCkgewotICAgICAgICAgICAgbV9hbmltYXRpb25QYXRoID0gcGF0aEZy
b21HcmFwaGljc0VsZW1lbnQocGF0aEVsZW1lbnQpOworICAgICAgICAgICAgbV9hbmltYXRpb25Q
YXRoID0gcGF0aEZyb21HcmFwaGljc0VsZW1lbnQocGF0aEVsZW1lbnQuZ2V0KCkpOwogICAgICAg
ICAgICAgZm91bmRNUGF0aCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJlc2V0QW5p
bWF0ZWRUeXBlKCkKIHsKICAgICBpZiAoIWhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVs
ZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRh
cmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zvcm0gPSB0YXJnZXRFbGVtZW50LT5zdXBw
bGVtZW50YWxUcmFuc2Zvcm0oKSkKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjpidWlsZFRyYW5zZm9ybUZvclByb2dyZXNzKEFmZmluZVRyYW5zZm9ybSog
dHJhbnNmbwogCiB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxl
bWVudCopCiB7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVs
ZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRh
cmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm9ybSA9IHRhcmdldEVsZW1lbnQtPnN1cHBsZW1l
bnRhbFRyYW5zZm9ybSgpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQKIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkK
IHsKICAgICAvLyBXZSBhY2N1bXVsYXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0g
bGlzdCBzbyB0aGVyZSBpcyBub3QgbXVjaCB0byBkbyBoZXJlLgotICAgIFNWR0VsZW1lbnQqIHRh
cmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR0VsZW1l
bnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJn
ZXRFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCmluZGV4IDcyZWI3NzIwY2U1YTVkY2M5MDIz
ZDJjYzQ4N2ZhMGNjZWQ4MzA2OTMuLjhkZjg1OWQ5OWY2ZDViYzFmMWRiMjAwNTkyYTE2NzRkZDc2
NTgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1F
bGVtZW50LmNwcApAQCAtNDIsOCArNDIsNyBAQCBSZWY8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ+IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaQogCiBi
b29sIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKQog
ewotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7
Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50KQorICAgIGlmICghdGhpcy0+dGFyZ2V0RWxlbWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYXR0cmlidXRlVHlwZSgpID09IEF0
dHJpYnV0ZVR5cGU6OkNTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKaW5k
ZXggMjllMjQ5YmM4MWFkMjE1ZjY0NmZjMTI5YTQ1NzE2N2ZlMDliYjc2Ny4uYTMzYTE0OWQ3MGJk
ZmQ2YWVjODFkY2FlZmE2YTYwZjViOTdiODczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUGF0aC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRv
cjo6c3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGUKIAog
dm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHUGF0aEJ5
dGVTdHJlYW0qIGJ5dGVTdHJlYW0pCiB7Ci0gICAgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZiogcHJvcGVydHkgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxT
VkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihhbmltYXRlZFR5cGVzWzBdLnBy
b3BlcnRpZXNbMF0uZ2V0KCkpOworICAgIFJlZlB0cjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmPiBwcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBl
PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGFuaW1hdGVkVHlwZXNbMF0u
cHJvcGVydGllc1swXS5nZXQoKSk7CiAgICAgY29uc3QgYXV0byYgYmFzZVZhbHVlID0gcHJvcGVy
dHktPmN1cnJlbnRCYXNlVmFsdWUoKTsKIAogICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9t
U1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoYmFzZVZhbHVlLCAqYnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFy
c2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKaW5kZXgg
MDVhOTNjYmU5ODc0Mzk1MzQ3YTAzZjIxM2VkYjgyMWVkZjE3YjUyZi4uZDEyMGY5NTc4NTkyYzk2
MTI1ZWU2OWJkMjRkYWY0YmZkY2E1NmZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcApAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxl
bWVudDo6YWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29u
c3QKICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IHdhbnQgdG8gd29yayB3aXRoIHRoZSB2
YWx1ZSB0eXBlIGRpcmVjdGx5IHRvIGF2b2lkIHRoZSBTdHJpbmcgcGFyc2luZy4KICAgICBBU1NF
UlQodGFyZ2V0RWxlbWVudCk7CiAKLSAgICBFbGVtZW50KiBwYXJlbnQgPSB0YXJnZXRFbGVtZW50
LT5wYXJlbnRFbGVtZW50KCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCA9IHRhcmdldEVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5pc1NW
R0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02NjIsMTMgKzY2MiwxMyBAQCBzdGF0
aWMgYm9vbCBpbmhlcml0c0Zyb21Qcm9wZXJ0eShTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZQogCiB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmRldGVybWlu
ZVByb3BlcnR5VmFsdWVUeXBlcyhjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8p
CiB7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQo
KTsKKyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVs
ZW1lbnQoKTsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAKICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gdGhpcy0+YXR0cmlidXRlTmFtZSgpOwotICAgIGlmIChp
bmhlcml0c0Zyb21Qcm9wZXJ0eSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBmcm9tKSkK
KyAgICBpZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0RWxlbWVudC5nZXQoKSwgYXR0cmli
dXRlTmFtZSwgZnJvbSkpCiAgICAgICAgIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlID0gSW5oZXJp
dFZhbHVlOwotICAgIGlmIChpbmhlcml0c0Zyb21Qcm9wZXJ0eSh0YXJnZXRFbGVtZW50LCBhdHRy
aWJ1dGVOYW1lLCB0bykpCisgICAgaWYgKGluaGVyaXRzRnJvbVByb3BlcnR5KHRhcmdldEVsZW1l
bnQuZ2V0KCksIGF0dHJpYnV0ZU5hbWUsIHRvKSkKICAgICAgICAgbV90b1Byb3BlcnR5VmFsdWVU
eXBlID0gSW5oZXJpdFZhbHVlOwogfQogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpyZXNldEFu
aW1hdGVkUHJvcGVydHlUeXBlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDM5
MWUwNDk0ZmRhZDI4MjlmMmE4NzYyOGI4OGQ1MDE0MzI2N2ZmNGMuLjJjOTUwNWMxMzgzNGU0YzE3
OWRmYTU0YzNhNzFmZTRjZmIyNDRiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcApA
QCAtMzIsNyArMzIsNyBAQCBTVkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKIHsKIH0KIAotU1ZHU1ZHRWxlbWVudCogU1ZHRG9jdW1lbnQ6OnJvb3RF
bGVtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxTVkdTVkdFbGVtZW50PiBT
VkdEb2N1bWVudDo6cm9vdEVsZW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIWlz
PFNWR1NWR0VsZW1lbnQ+KGVsZW1lbnQpKQpAQCAtNDIsNyArNDIsNyBAQCBTVkdTVkdFbGVtZW50
KiBTVkdEb2N1bWVudDo6cm9vdEVsZW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogCiBi
b29sIFNWR0RvY3VtZW50Ojp6b29tQW5kUGFuRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgYXV0byog
ZWxlbWVudCA9IHJvb3RFbGVtZW50KCp0aGlzKTsKKyAgICBhdXRvIGVsZW1lbnQgPSByb290RWxl
bWVudCgqdGhpcyk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIChlbGVtZW50LT51c2VDdXJyZW50VmlldygpID8gZWxlbWVudC0+Y3VycmVudFZp
ZXcoKS56b29tQW5kUGFuKCkgOiBlbGVtZW50LT56b29tQW5kUGFuKCkpID09IFNWR1pvb21BbmRQ
YW5NYWduaWZ5OwpAQCAtNTAsNyArNTAsNyBAQCBib29sIFNWR0RvY3VtZW50Ojp6b29tQW5kUGFu
RW5hYmxlZCgpIGNvbnN0CiAKIHZvaWQgU1ZHRG9jdW1lbnQ6OnN0YXJ0UGFuKGNvbnN0IEZsb2F0
UG9pbnQmIHN0YXJ0KQogewotICAgIGF1dG8qIGVsZW1lbnQgPSByb290RWxlbWVudCgqdGhpcyk7
CisgICAgYXV0byBlbGVtZW50ID0gcm9vdEVsZW1lbnQoKnRoaXMpOwogICAgIGlmICghZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcGFubmluZ09mZnNldCA9IHN0YXJ0IC0gZWxlbWVu
dC0+Y3VycmVudFRyYW5zbGF0ZVZhbHVlKCk7CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgU1ZHRG9j
dW1lbnQ6OnN0YXJ0UGFuKGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0KQogCiB2b2lkIFNWR0RvY3Vt
ZW50Ojp1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0CiB7Ci0gICAg
YXV0byogZWxlbWVudCA9IHJvb3RFbGVtZW50KCp0aGlzKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBy
b290RWxlbWVudCgqdGhpcyk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAg
ICAgZWxlbWVudC0+c2V0Q3VycmVudFRyYW5zbGF0ZShwb3NpdGlvbiAtIG1fcGFubmluZ09mZnNl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCmluZGV4IDIzM2YxMWI3NDNjMzUzZjU1NDc0ZjFl
YjkxZTZiMWY1NjJhZGNkODguLmVlOTUzZmNjN2U3MThlNjBlYjYxOTVjNzc0ZmM4ZDY5MjNiY2E5
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIFNW
R0RvY3VtZW50IGZpbmFsIDogcHVibGljIFhNTERvY3VtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFNWR0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAotICAgIHN0
YXRpYyBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudChjb25zdCBEb2N1bWVudCYpOworICAgIHN0
YXRpYyBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gcm9vdEVsZW1lbnQoY29uc3QgRG9jdW1lbnQmKTsK
IAogICAgIGJvb2wgem9vbUFuZFBhbkVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0UGFu
KGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggNzU4YTBkYTk1ZmRkMmMyOGRkMWQ2MWM1MjRkMGQ2YmIx
YmJkY2M5Yi4uNjVlMjQ2ZDk3Nzg4YTkyYzE0NjNiZDE1YTgxMWM3MTlhMWExODllMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTI2Miw3ICsy
NjIsNyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6bWFya1BlbmRpbmdSZXNvdXJjZXNG
b3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmluZyYgaQogICAgICAgICBtX3BlbmRpbmdSZXNvdXJj
ZXNGb3JSZW1vdmFsLmFkZChpZCwgV1RGTW92ZShleGlzdGluZykpOwogfQogCi1FbGVtZW50KiBT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0Zv
clJlbW92YWxNYXAoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK1JlZlB0cjxFbGVtZW50PiBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJl
bW92YWxNYXAoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTI3Miw3ICsyNzIsNyBAQCBFbGVtZW50KiBTVkdEb2N1
bWVudEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92
YWxNYXAoYwogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8gZmlyc3RFbGVtZW50ID0gcmVz
b3VyY2VTZXQtPmJlZ2luKCk7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9ICpmaXJzdEVsZW1lbnQ7
CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSAqZmlyc3RFbGVtZW50OwogCiAgICAgcmVz
b3VyY2VTZXQtPnJlbW92ZShmaXJzdEVsZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmgKaW5kZXggNmE1Mjc3MDQ5YzViMjU1MDI1Zjk5YTcyZTE5ZjJj
ZTA4MWJkMWRlYi4uZWY3MmU5NzY1ZWM2N2MxODIzYjBjM2RkM2ZkNTc0MzY1ZTc5NTBlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaApAQCAtMTA0LDcgKzEw
NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUg
dXNlZCBmb3Igc2NoZWR1bGluZyBhIHBlbmRpbmcgcmVzb3VyY2UgdG8gYmUgcmVtb3ZlZC4KICAg
ICB2b2lkIG1hcmtQZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcm
KTsKLSAgICBFbGVtZW50KiByZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1v
dmFsTWFwKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZlB0cjxFbGVtZW50PiByZW1vdmVF
bGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNFbGVtZW50V2l0aFBlbmRpbmdSZXNvdXJjZXMo
RWxlbWVudCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDk4OTcyYzVk
ODI0NGMyYTRjMDBkMjhhOGM4Y2RlMTIwY2MzODc1ZjIuLjE2MTA3NmQzNzU4Y2Q0MjEzOGExMDcw
NTlkZGRiNWQzNTc5ZTEwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTI4OCw3
ICsyODgsNyBAQCBTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCgpCiAgICAgaWYgKG1fc3ZnUmFyZURh
dGEpIHsKICAgICAgICAgZm9yIChTVkdFbGVtZW50KiBpbnN0YW5jZSA6IG1fc3ZnUmFyZURhdGEt
Pmluc3RhbmNlcygpKQogICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3ZnUmFyZURhdGEtPnNldENv
cnJlc3BvbmRpbmdFbGVtZW50KG51bGxwdHIpOwotICAgICAgICBpZiAoU1ZHRWxlbWVudCogY29y
cmVzcG9uZGluZ0VsZW1lbnQgPSBtX3N2Z1JhcmVEYXRhLT5jb3JyZXNwb25kaW5nRWxlbWVudCgp
KQorICAgICAgICBpZiAoUmVmUHRyPFNWR0VsZW1lbnQ+IGNvcnJlc3BvbmRpbmdFbGVtZW50ID0g
bV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkKICAgICAgICAgICAgIGNvcnJl
c3BvbmRpbmdFbGVtZW50LT5tX3N2Z1JhcmVEYXRhLT5pbnN0YW5jZXMoKS5yZW1vdmUodGhpcyk7
CiAKICAgICAgICAgbV9zdmdSYXJlRGF0YSA9IG51bGxwdHI7CkBAIC00MzAsNyArNDMwLDcgQEAg
U1ZHRWxlbWVudCogU1ZHRWxlbWVudDo6Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSBjb25zdAogICAg
IHJldHVybiBtX3N2Z1JhcmVEYXRhID8gbV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1l
bnQoKSA6IG51bGxwdHI7CiB9CiAKLVNWR1VzZUVsZW1lbnQqIFNWR0VsZW1lbnQ6OmNvcnJlc3Bv
bmRpbmdVc2VFbGVtZW50KCkgY29uc3QKK1JlZlB0cjxTVkdVc2VFbGVtZW50PiBTVkdFbGVtZW50
Ojpjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogcm9vdCA9IGNv
bnRhaW5pbmdTaGFkb3dSb290KCk7CiAgICAgaWYgKCFyb290KQpAQCAtNDQ2LDcgKzQ0Niw3IEBA
IFNWR1VzZUVsZW1lbnQqIFNWR0VsZW1lbnQ6OmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkgY29u
c3QKIHZvaWQgU1ZHRWxlbWVudDo6c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQoU1ZHRWxlbWVudCog
Y29ycmVzcG9uZGluZ0VsZW1lbnQpCiB7CiAgICAgaWYgKG1fc3ZnUmFyZURhdGEpIHsKLSAgICAg
ICAgaWYgKFNWR0VsZW1lbnQqIG9sZENvcnJlc3BvbmRpbmdFbGVtZW50ID0gbV9zdmdSYXJlRGF0
YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkKKyAgICAgICAgaWYgKFJlZlB0cjxTVkdFbGVtZW50
PiBvbGRDb3JyZXNwb25kaW5nRWxlbWVudCA9IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdF
bGVtZW50KCkpCiAgICAgICAgICAgICBvbGRDb3JyZXNwb25kaW5nRWxlbWVudC0+bV9zdmdSYXJl
RGF0YS0+aW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwogICAgIH0KICAgICBpZiAobV9zdmdSYXJl
RGF0YSB8fCBjb3JyZXNwb25kaW5nRWxlbWVudCkKQEAgLTcyOSw3ICs3MjksNyBAQCB2b2lkIFNW
R0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpCiBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gU1ZHRWxlbWVudDo6cmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqKQogewogICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGluIGEgPHVzZT4gdHJlZSB3ZSBnZXQg
dGhlIHN0eWxlIGZyb20gdGhlIGRlZmluaXRpb24gdHJlZS4KLSAgICBpZiAoYXV0byogc3R5bGVF
bGVtZW50ID0gdGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkKKyAgICBpZiAoYXV0byBzdHls
ZUVsZW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpKQogICAg
ICAgICByZXR1cm4gc3R5bGVFbGVtZW50LT5yZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKIAog
ICAgIHJldHVybiByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKQEAgLTc1OSw3ICs3NTksNyBA
QCBjb25zdCBSZW5kZXJTdHlsZSogU1ZHRWxlbWVudDo6Y29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBw
c2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogICAgICAgICByZXR1cm4gRWxlbWVudDo6Y29tcHV0ZWRT
dHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSA9IG51bGxwdHI7Ci0gICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudE9y
U2hhZG93SG9zdEVsZW1lbnQoKSkgeworICAgIGlmIChSZWZQdHI8RWxlbWVudD4gcGFyZW50ID0g
cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gcGFyZW50LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcGFyZW50U3R5bGUgPSAmcmVuZGVy
ZXItPnN0eWxlKCk7CiAgICAgfQpAQCAtMTAwMywxMSArMTAwMywxMSBAQCB2b2lkIFNWR0VsZW1l
bnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVlZGVkKCkKICAgICBleHRlbnNpb25zLm1hcmtQ
ZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChyZXNvdXJjZUlkKTsKIAogICAgIC8vIFJlYnVpbGQg
cGVuZGluZyByZXNvdXJjZXMgZm9yIGVhY2ggY2xpZW50IG9mIGEgcGVuZGluZyByZXNvdXJjZSB0
aGF0IGlzIGJlaW5nIHJlbW92ZWQuCi0gICAgd2hpbGUgKEVsZW1lbnQqIGNsaWVudEVsZW1lbnQg
PSBleHRlbnNpb25zLnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWxN
YXAocmVzb3VyY2VJZCkpIHsKKyAgICB3aGlsZSAoYXV0byBjbGllbnRFbGVtZW50ID0gZXh0ZW5z
aW9ucy5yZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKHJlc291
cmNlSWQpKSB7CiAgICAgICAgIEFTU0VSVChjbGllbnRFbGVtZW50LT5oYXNQZW5kaW5nUmVzb3Vy
Y2VzKCkpOwogICAgICAgICBpZiAoY2xpZW50RWxlbWVudC0+aGFzUGVuZGluZ1Jlc291cmNlcygp
KSB7CiAgICAgICAgICAgICBjbGllbnRFbGVtZW50LT5idWlsZFBlbmRpbmdSZXNvdXJjZSgpOwot
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5jbGVhckhhc1BlbmRpbmdSZXNvdXJjZXNJZlBvc3NpYmxl
KGNsaWVudEVsZW1lbnQpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy5jbGVhckhhc1BlbmRpbmdS
ZXNvdXJjZXNJZlBvc3NpYmxlKGNsaWVudEVsZW1lbnQuZ2V0KCkpOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2
ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gRmluZCBmaXJzdCBzdHlsZWQgcGFyZW50IG5vZGUsIGFuZCBu
b3RpZnkgaXQgdGhhdCB3ZSd2ZSBjaGFuZ2VkIG91ciByZWxhdGl2ZSBsZW5ndGggc3RhdGUuCi0g
ICAgQ29udGFpbmVyTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKKyAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gbm9kZSA9IHBhcmVudE5vZGUoKTsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAg
ICBpZiAoIW5vZGUtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTI5
LDggKzExMjksOCBAQCB2b2lkIFNWR0VsZW1lbnQ6OmludmFsaWRhdGVJbnN0YW5jZXMoKQogCiAg
ICAgYXV0byYgaW5zdGFuY2VzID0gdGhpcy0+aW5zdGFuY2VzKCk7CiAgICAgd2hpbGUgKCFpbnN0
YW5jZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQqIGluc3RhbmNlID0gKmluc3Rh
bmNlcy5iZWdpbigpOwotICAgICAgICBpZiAoU1ZHVXNlRWxlbWVudCogdXNlRWxlbWVudCA9IGlu
c3RhbmNlLT5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKQorICAgICAgICBSZWZQdHI8U1ZHRWxl
bWVudD4gaW5zdGFuY2UgPSAqaW5zdGFuY2VzLmJlZ2luKCk7CisgICAgICAgIGlmIChhdXRvIHVz
ZUVsZW1lbnQgPSBpbnN0YW5jZS0+Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSkKICAgICAgICAg
ICAgIHVzZUVsZW1lbnQtPmludmFsaWRhdGVTaGFkb3dUcmVlKCk7CiAgICAgICAgIGluc3RhbmNl
LT5zZXRDb3JyZXNwb25kaW5nRWxlbWVudChudWxscHRyKTsKICAgICB9IHdoaWxlICghaW5zdGFu
Y2VzLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCBiYmRjYzVmMzUzMjhi
ZmZjZDY3OTRjMGIwZmQ0OTUyMDI1ZjFjNmYxLi5mODgyZDE0MDdhN2YxOGZiMmNlNDQ3YTFmNTJh
YTM4MzYwYzI2OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTk5LDcgKzk5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgZ2V0Qm91bmRpbmdCb3goRmxvYXRSZWN0JiwgU1ZHTG9jYXRhYmxl
OjpTdHlsZVVwZGF0ZVN0cmF0ZWd5ID0gU1ZHTG9jYXRhYmxlOjpBbGxvd1N0eWxlVXBkYXRlKTsK
IAogICAgIFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KCkgY29uc3Q7Ci0gICAgU1ZH
VXNlRWxlbWVudCogY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSBjb25zdDsKKyAgICBSZWZQdHI8
U1ZHVXNlRWxlbWVudD4gY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSBjb25zdDsKIAogICAgIHZv
aWQgc2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQoU1ZHRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCBlNmIyYTg5OTcyOGNkMDJhMzAzYTk0MTVj
MzRhZWY5ZDZkYzZmMzlkLi41M2MwODg4ZmFjOTNmODI1ODg3ZTU2OTZhNGViNTFiZDUwODI4OTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTEwNSw4ICsx
MDUsOCBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJs
ZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVy
JiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDIgPSBmaWx0ZXJCdWls
ZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKIAogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5jcHAKaW5kZXggODQxZjRmYWFhMzFjNDVlNGQxNDgwNjZiN2VkNTY1
ZWZiMWQ1NDZhMi4uODkxMTBhOTk2NmY2OWYwODlhYWE0NjJjYWQ3MzhiNjZkNWI2ZDBkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCkBAIC0x
MDgsNyArMTA4LDcgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQx
ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQx
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDVjMWQyNTAzY2RiYjliYjBm
ODQ0OTU2MTMzNDMzNzBlNzM3ZjkzMDQuLmFjMmQ2NDQ5ZTJkNzYxY2QzZGY2OTY3OTU2YjIwNDc0
MDVhOGM4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjbwogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIp
CiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOwogICAgIAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXgg
Y2QzZDVjNjFiMzc5NWM5NDE5OGUzYWZiNjUxYzg3NjdjMmE3MDkwZi4uYzUxMmE1OTM2NjAxMzI0
MDZmYWM0ZDQ4Y2M0NTcyNzFjMWY0ZmNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5jcHAKQEAgLTE0MCw4ICsxNDAsOCBAQCB2b2lkIFNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwotICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4yKCkpOwogICAgIAogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5jcHAKaW5kZXggOWNmMjhhYjc1MjMxMmM2ZDdlMzEzZDhjMDgyYWZkZDY3NTI5
NDM4OS4uYmMxN2Y3ZTkyZWQ3NDg3YzYyNzAxZjZmZGYxMmI4ZGFlMjRkYWU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0y
MzQsNyArMjM0LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmEKIAogUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIGF1dG8qIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmls
dGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGNhMGY2OGZhOWFiOTZmOTZhYzYzYmQ2ZWYx
NWIyMzYyY2FmYjA3YmIuLjNjMWU2YTA4ZGVkN2Q5ODdmYzEzNWM1MDU2YjFjMDAzNWU5MGQ0MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdodEUKIAogUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0
ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwor
ICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAK
ICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IGU5ODli
OWNlMzFkZjQ0NjZiMzFlMjdlMTY5MjY1NDQxN2IzZWI1ZmUuLjE1YmNiM2I3NjA4MmNjMzQ1OGI0
YzMzOTVmMTU2ZmNiYjE5YTExYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMjMsOCArMTIzLDggQEAgdm9pZCBTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck4KIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIm
IGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWls
ZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOwogICAgIAogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1
dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDMxOTM1ZTE3MGYzYzE3MDVmZTIxOTRmOTUzOWYx
NDc0MzVjMjZkZDAuLmVmNWZkY2RmZmJiZjBhZmY5MGJmZTE4YTljYjNlZmFjYmQzMzAxOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTEz
Myw3ICsxMzMsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAogICAgIGNvbnN0IENvbG9yJiBj
b2xvciA9IHN2Z1N0eWxlLmZsb29kQ29sb3IoKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gc3ZnU3R5
bGUuZmxvb2RPcGFjaXR5KCk7CiAKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCmluZGV4IDdiMjFkZTgzNmRmMTA5NzZhZjYyZTMzZWI0ODQyNzEzYTE1MDhl
Y2QuLmIyMmZmNDk5NGZlMDhmNmRjZmMzMTE2NDBiNjczY2I4ZDQ3ZmYyNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmls
dGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAppbmRleCA2ZjlhMjcxMGIzZTQ1M2M4OTJkMTE2ZTM0MzFiMGMxMjM2YjRkYTE0Li5kZDky
OTc4MDJlOTk3ZmFlODU1NWYxMTRjNTY3N2M2ODUwYTYxOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFN0cmluZyBpZDsKLSAgICBFbGVtZW50KiB0YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdl
dEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9jdW1lbnQoKSwgJmlkKTsKKyAgICBSZWZQ
dHI8RWxlbWVudD4gdGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlS
SVN0cmluZyhocmVmKCksIGRvY3VtZW50KCksICZpZCk7CiAgICAgaWYgKCF0YXJnZXQpIHsKICAg
ICAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlcXVlc3RJbWFnZVJlc291cmNl
KCk7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGRQZW5k
aW5nUmVzb3VyY2UoKQogICAgIH0gZWxzZSBpZiAodGFyZ2V0LT5pc1NWR0VsZW1lbnQoKSkgewog
ICAgICAgICAvLyBSZWdpc3RlciB1cyB3aXRoIHRoZSB0YXJnZXQgaW4gdGhlIGRlcGVuZGVuY2ll
cyBtYXAuIEFueSBjaGFuZ2Ugb2YgaHJlZkVsZW1lbnQKICAgICAgICAgLy8gdGhhdCBsZWFkcyB0
byByZWxheW91dC9yZXBhaW50aW5nIG5vdyBpbmZvcm1zIHVzLCBzbyB3ZSBjYW4gcmVhY3QgdG8g
aXQuCi0gICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZEVsZW1lbnRS
ZWZlcmVuY2luZ1RhcmdldCh0aGlzLCBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQpKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkRWxlbWVudFJlZmVyZW5j
aW5nVGFyZ2V0KHRoaXMsIGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldC5nZXQoKSkpOwogICAg
IH0KIAogICAgIGludmFsaWRhdGUoKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCiAgICAgaWYgKCFpc0Nv
bm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJl
bnRFbGVtZW50KCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCA9IHBhcmVudEVsZW1lbnQo
KTsKIAogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZp
bHRlclRhZykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwCmluZGV4IDM2ZjdmMDU4ZTAxY2MwMWM2ODNjNGQwMDQ4NDNkYTMwMjQ2Njc2Y2Iu
LjYyODViZjY5YzQzZWJhZWQ1M2FmZmMxYjgxYjg4NjZlYWJmNWJjZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcApAQCAtNzksNyArNzksNyBAQCBTVkdGRUxpZ2h0
RWxlbWVudCogU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQoY29uc3QgU1ZHRWxl
bWVudCogc3ZnRWxlbQogCiBSZWZQdHI8TGlnaHRTb3VyY2U+IFNWR0ZFTGlnaHRFbGVtZW50Ojpm
aW5kTGlnaHRTb3VyY2UoY29uc3QgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCkKIHsKLSAgICBTVkdG
RUxpZ2h0RWxlbWVudCogbGlnaHROb2RlID0gZmluZExpZ2h0RWxlbWVudChzdmdFbGVtZW50KTsK
KyAgICBSZWZQdHI8U1ZHRkVMaWdodEVsZW1lbnQ+IGxpZ2h0Tm9kZSA9IGZpbmRMaWdodEVsZW1l
bnQoc3ZnRWxlbWVudCk7CiAgICAgaWYgKCFsaWdodE5vZGUpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBsaWdodE5vZGUtPmxpZ2h0U291cmNlKCk7CkBAIC0xNDcsNyArMTQ3LDcgQEAg
dm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50
c0F0WEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1p
dGluZ0NvbmVBbmdsZUF0dHIpIHsKIAotICAgICAgICBhdXRvKiBwYXJlbnQgPSBwYXJlbnRFbGVt
ZW50KCk7CisgICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnRFbGVtZW50KCkp
OwogICAgICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTc1LDcg
KzE3NSw3IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFu
Z2VTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwotICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IHBhcmVudE5vZGUoKTsKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0g
cGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAgICAgUmVu
ZGVyRWxlbWVudCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA0MzNjNzQ1ZTdkOTM4YjVkYzBiNjFlN2Fk
YTU1NTc1NDI4NzkyZWViLi44NjdmOTNiNTUzYTkzZjYzNmE0Mzg1NmFkMjMyZWMyZTRiNmY0OTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ3LDEwICs0
NywxMCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRgogICAgIEZpbHRlckVmZmVjdFZlY3RvciYg
bWVyZ2VJbnB1dHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogCiAgICAgZm9yIChhdXRvJiBt
ZXJnZU5vZGUgOiBjaGlsZHJlbk9mVHlwZTxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ+KCp0aGlzKSkg
ewotICAgICAgICBGaWx0ZXJFZmZlY3QqIG1lcmdlRWZmZWN0ID0gZmlsdGVyQnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChtZXJnZU5vZGUuaW4xKCkpOworICAgICAgICBhdXRvIG1lcmdlRWZmZWN0ID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChtZXJnZU5vZGUuaW4xKCkpOwogICAgICAgICBp
ZiAoIW1lcmdlRWZmZWN0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIG1l
cmdlSW5wdXRzLmFwcGVuZChtZXJnZUVmZmVjdCk7CisgICAgICAgIG1lcmdlSW5wdXRzLmFwcGVu
ZChXVEZNb3ZlKG1lcmdlRWZmZWN0KSk7CiAgICAgfQogCiAgICAgaWYgKG1lcmdlSW5wdXRzLmlz
RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cAppbmRleCAzMzcwZTE4NTUyZmZkMDkyNGU0YTdlOTkzYWQ4NzQxZjAwOWI1NmYyLi42NDY5OWVj
OWY0MTU0MjQxYjg2MjEyYWEwZTZlNzg0ZmQ3YWE4OWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZp
bHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CiAgICAgZmxvYXQgeFJhZGl1cyA9IHJhZGl1c1goKTsKICAgICBmbG9h
dCB5UmFkaXVzID0gcmFkaXVzWSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuY3BwCmluZGV4IDZhYjY3YWZhYzY2NjcxNWVmZjZkMDIxN2ExMGEyYmVlOWZhOTAxMTQu
LjVkNGJhOTVjYzA2MzQ4MWUxOGM0NTc1OTVkOGE4ZjViZTI1N2I2OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgU1ZH
RkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewot
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKIAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApp
bmRleCAxNzA0MzdmMzJmYjMzYjRmZGVkNjNlNGNmOWNmYzE0OGQ5Y2ZkMWRlLi5kZDk4ZDhhYWQ2
OWExNjMwZjMwZTYwYmIwMDNmNGNkMWU4YTNmNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xODMsNyArMTgzLDcg
QEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFNWR0ZFTGlnaHQKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
CmluZGV4IDc1N2U1NTRkZDU1N2Y2MjFkMzZjYTU5ZTRjZTllMmJkNGNkZWJiZDEuLjQzYzc1ZTFj
ZDFjMjRmYTg1NzI4ZWJmZjA1ZjdjYjFkZDZkM2Q2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdGRVRpbGVFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8g
aW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAo
IWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCmlu
ZGV4IDc3YTNhOTcxYTZjNzJmMGJmOWYxYzg4YTNjMzNmNzA4NWZhYWJlN2EuLjlkMjI3NzkwOTA3
NTYyYTljMWVjYWRjMDg5NzUxMzU2OTM0MWYwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCkBA
IC0xNTQsNyArMTU0LDcgQEAgdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNW
R0VsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnROb2RlKCk7CisgICAg
UmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKIAog
ICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZUVsZW1lbnQuY3BwCmluZGV4IDdkYmUwMDBjMzM3NTA4YTc0YzQyMzk3YWEzNTg5NjFi
YjQ2ZDE3MzMuLmY1MWQzODNmYjgyYzVlYjEyMDVlYTQ1YWY4ODllMzczY2VlZWEyZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCkBAIC0yNjMsNyArMjYzLDcg
QEAgdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRGb250RmFjZSgpCiAKICAgICAgICAg
dW5zaWduZWQgc3JjTGVuZ3RoID0gc3JjTGlzdCA/IHNyY0xpc3QtPmxlbmd0aCgpIDogMDsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY0xlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoQ1NTRm9udEZhY2VTcmNWYWx1ZSogaXRlbSA9IGRvd25jYXN0PENTU0ZvbnRGYWNl
U3JjVmFsdWU+KHNyY0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpKQorICAgICAgICAg
ICAgaWYgKFJlZlB0cjxDU1NGb250RmFjZVNyY1ZhbHVlPiBpdGVtID0gZG93bmNhc3Q8Q1NTRm9u
dEZhY2VTcmNWYWx1ZT4oc3JjTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSkpCiAgICAg
ICAgICAgICAgICAgaXRlbS0+c2V0U1ZHRm9udEZhY2VFbGVtZW50KHRoaXMpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50
LmNwcAppbmRleCA1OTE2MDY1MzJmNWZmMDA4N2ZlZDk3MmI3NjM2OWM1ZDRmMGI1NDBmLi5mOWFk
ZDNjYTIyNTU3MjA4ZjdkY2RhODg3MGFmYTNiOWYzODNkOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQCB2
b2lkIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKCFwYXJlbnROb2RlKCkgfHwgIXBhcmVudE5vZGUoKS0+
aGFzVGFnTmFtZShmb250X2ZhY2VfdXJpVGFnKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gcGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCk7Cisg
ICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IGFuY2VzdG9yID0gcGFyZW50Tm9kZSgpLT5wYXJlbnRO
b2RlKCk7CiAgICAgaWYgKCFhbmNlc3RvciB8fCAhYW5jZXN0b3ItPmhhc1RhZ05hbWUoZm9udF9m
YWNlX3NyY1RhZykpCiAgICAgICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKaW5kZXggNDE0OWY2NjhiZTRjNjQ5Yzg0OGQyOTA2
YWQyNDA5M2VlMjgwMDQ2OC4uZDMwNDM1MTZkYmJjYjcwZTRhNTVlOGQ2YzdjNzY2MmQ4ODgwYjEz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmICghcGFyZW50Tm9kZSgpIHx8ICFw
YXJlbnROb2RlKCktPmhhc1RhZ05hbWUoZm9udF9mYWNlX3NyY1RhZykpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBDb250YWluZXJOb2RlKiBncmFuZHBhcmVudCA9IHBhcmVudE5vZGUoKS0+
cGFyZW50Tm9kZSgpOworICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBncmFuZHBhcmVudCA9IHBh
cmVudE5vZGUoKS0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChncmFuZHBhcmVudCAmJiBncmFuZHBh
cmVudC0+aGFzVGFnTmFtZShmb250X2ZhY2VUYWcpKQogICAgICAgICBkb3duY2FzdDxTVkdGb250
RmFjZUVsZW1lbnQ+KCpncmFuZHBhcmVudCkucmVidWlsZEZvbnRGYWNlKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRleCA1ZTYzZmI0
ZDg0ZjBiYWQyNmI3ZWNjOGE3MThjOGM5NDhlZDAyNWMzLi5hZDk0ZWVkNDdlOTcwOWQ5N2YwOWE2
YmIwZjQ3NDlkYWM4YThiYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAg
ICAvLyBOb3RlIHRoYXQgd2UgY3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IGZvcmVpZ25PYmplY3Qg
aW5zdGFudGlhdGlvbiB2aWEgPHVzZT4sIGhlbmNlIGl0IGlzIHNhZmUKICAgICAvLyB0byB1c2Ug
cGFyZW50RWxlbWVudCgpIGhlcmUuIElmIHRoYXQgY2hhbmdlcywgdGhpcyBtZXRob2Qgc2hvdWxk
IGJlIHVwZGF0ZWQgdG8gdXNlCiAgICAgLy8gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIGlu
c3RlYWQuCi0gICAgRWxlbWVudCogYW5jZXN0b3IgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgUmVm
UHRyPEVsZW1lbnQ+IGFuY2VzdG9yID0gcGFyZW50RWxlbWVudCgpOwogICAgIHdoaWxlIChhbmNl
c3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGFuY2VzdG9y
LT5yZW5kZXJlcigpICYmIGFuY2VzdG9yLT5yZW5kZXJlcigpLT5pc1NWR0hpZGRlbkNvbnRhaW5l
cigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aENvbnRleHQuY3BwCmluZGV4IDA5OTA2ZTczOThmMDBkZTZhYjYzNjk2MDBkZjM5NjQ4ZGYxNWM0
MmEuLmE5N2VjOWM4N2U0MjI2NGI1ODZmMTM0ODc3MjBiNGM2Y2NjMDgxMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAgLTMwMSw3ICszMDEsNyBAQCBib29sIFNW
R0xlbmd0aENvbnRleHQ6OmRldGVybWluZVZpZXdwb3J0KEZsb2F0U2l6ZSYgdmlld3BvcnRTaXpl
KSBjb25zdAogICAgIH0KIAogICAgIC8vIFRha2Ugc2l6ZSBmcm9tIG5lYXJlc3Qgdmlld3BvcnQg
ZWxlbWVudC4KLSAgICBTVkdFbGVtZW50KiB2aWV3cG9ydEVsZW1lbnQgPSBtX2NvbnRleHQtPnZp
ZXdwb3J0RWxlbWVudCgpOworICAgIFJlZlB0cjxTVkdFbGVtZW50PiB2aWV3cG9ydEVsZW1lbnQg
PSBtX2NvbnRleHQtPnZpZXdwb3J0RWxlbWVudCgpOwogICAgIGlmICghaXM8U1ZHU1ZHRWxlbWVu
dD4odmlld3BvcnRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGI3ZmY1YjRm
OGU2NzE3ZGFhNTJlZDg0YWYzYzQ4Yzk4OTY2MzQ3NWYuLmFlZGViMjg2OWFhOTM0NWQ5YzljODRm
MzlmNGJiYTUyOTY4ODZmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xNjIsOSArMTYyLDkgQEAgYm9vbCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGUKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIFJlc3BlY3QgeGxpbms6aHJl
ZiwgdGFrZSBhdHRyaWJ1dGVzIGZyb20gcmVmZXJlbmNlZCBlbGVtZW50Ci0gICAgICAgIE5vZGUq
IHJlZk5vZGUgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGN1
cnJlbnQtPmhyZWYoKSwgZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0cjxOb2RlPiByZWZOb2Rl
ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhjdXJyZW50LT5o
cmVmKCksIGRvY3VtZW50KCkpOwogICAgICAgICBpZiAoaXM8U1ZHR3JhZGllbnRFbGVtZW50Pihy
ZWZOb2RlKSkgewotICAgICAgICAgICAgY3VycmVudCA9IGRvd25jYXN0PFNWR0dyYWRpZW50RWxl
bWVudD4ocmVmTm9kZSk7CisgICAgICAgICAgICBjdXJyZW50ID0gZG93bmNhc3Q8U1ZHR3JhZGll
bnRFbGVtZW50PihyZWZOb2RlLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gQ3ljbGUgZGV0ZWN0
aW9uCiAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkR3JhZGllbnRzLmNvbnRhaW5zKGN1cnJlbnQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAppbmRleCAwZTAxYzdmZTlmZTc4
Mjg5NDcyMjE4NTQ1MmIyY2RmMTg3ZmM1MDZkLi5hNDJjNjMwODJjODZjNmRiMmNkYWVjNzQyYTA5
Zjk5MTczMTYwMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2Uo
KQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgaWQ7Ci0gICAgRWxlbWVudCogdGFyZ2V0
ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRv
Y3VtZW50KCksICZpZCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHRhcmdldCA9IFNWR1VSSVJlZmVy
ZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQp
OwogICAgIGlmICghdGFyZ2V0KSB7CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBhcyBwZW5k
aW5nIGlmIHdlIGFyZSBhbHJlYWR5IHBlbmRpbmcgdGhpcyByZXNvdXJjZS4KICAgICAgICAgaWYg
KGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmlzUGVuZGluZ1Jlc291cmNlKHRoaXMs
IGlkKSkKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OmJ1aWxkUGVuZGlu
Z1Jlc291cmNlKCkKICAgICB9IGVsc2UgaWYgKHRhcmdldC0+aXNTVkdFbGVtZW50KCkpIHsKICAg
ICAgICAgLy8gUmVnaXN0ZXIgdXMgd2l0aCB0aGUgdGFyZ2V0IGluIHRoZSBkZXBlbmRlbmNpZXMg
bWFwLiBBbnkgY2hhbmdlIG9mIGhyZWZFbGVtZW50CiAgICAgICAgIC8vIHRoYXQgbGVhZHMgdG8g
cmVsYXlvdXQvcmVwYWludGluZyBub3cgaW5mb3JtcyB1cywgc28gd2UgY2FuIHJlYWN0IHRvIGl0
LgotICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRFbGVtZW50UmVm
ZXJlbmNpbmdUYXJnZXQodGhpcywgZG93bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0KSk7CisgICAg
ICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZEVsZW1lbnRSZWZlcmVuY2lu
Z1RhcmdldCh0aGlzLCBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQuZ2V0KCkpKTsKICAgICB9
CiAKICAgICB0YXJnZXRQYXRoQ2hhbmdlZCgpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgU1ZH
TVBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogICAgIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwog
fQogCi1TVkdQYXRoRWxlbWVudCogU1ZHTVBhdGhFbGVtZW50OjpwYXRoRWxlbWVudCgpCitSZWZQ
dHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR01QYXRoRWxlbWVudDo6cGF0aEVsZW1lbnQoKQogewogICAg
IEVsZW1lbnQqIHRhcmdldCA9IHRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9j
dW1lbnQoKSk7CiAgICAgaWYgKGlzPFNWR1BhdGhFbGVtZW50Pih0YXJnZXQpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01QYXRoRWxlbWVudC5oCmluZGV4IDFhMmFjNmExMTFlNjIyOTJhMzI4NTY5NzVhMjQy
MWUwOTQ5YWE2NGMuLmJhMjRiNzMyYTk2NzkwYWVjMTkxN2M2ZjA4NjExNzhkMDQzMGUyNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+U1ZHTVBhdGhFbGVtZW50KCk7CiAKLSAgICBTVkdQYXRoRWxlbWVu
dCogcGF0aEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IHBhdGhFbGVtZW50
KCk7CiAKICAgICB2b2lkIHRhcmdldFBhdGhDaGFuZ2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggYzlkOWRjYzA5NDQ2MzIz
NGRkOTFkOTY3OTdiNGE1NTEzNzYzNGMyOC4uMGM0MGQ0OTU5ZWRkNjEzNTlmOTVmYTg1ZjY2MDY3
OTM1NDFkYjYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5jcHAKQEAgLTE3OCw5ICsxNzgsOSBAQCBib29sIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudDo6Y29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZQog
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgLy8gUmVzcGVjdCB4bGluazpocmVmLCB0YWtl
IGF0dHJpYnV0ZXMgZnJvbSByZWZlcmVuY2VkIGVsZW1lbnQKLSAgICAgICAgTm9kZSogcmVmTm9k
ZSA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY3VycmVudC0+
aHJlZigpLCBkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPE5vZGU+IHJlZk5vZGUgPSBTVkdV
UklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGN1cnJlbnQtPmhyZWYoKSwg
ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChpczxTVkdHcmFkaWVudEVsZW1lbnQ+KHJlZk5vZGUp
KSB7Ci0gICAgICAgICAgICBjdXJyZW50ID0gZG93bmNhc3Q8U1ZHR3JhZGllbnRFbGVtZW50Pihy
ZWZOb2RlKTsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBkb3duY2FzdDxTVkdHcmFkaWVudEVsZW1l
bnQ+KHJlZk5vZGUuZ2V0KCkpOwogCiAgICAgICAgICAgICAvLyBDeWNsZSBkZXRlY3Rpb24KICAg
ICAgICAgICAgIGlmIChwcm9jZXNzZWRHcmFkaWVudHMuY29udGFpbnMoY3VycmVudCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggYzVhZTE5NTAxN2U0OGZmNjE4OWYwYzUw
Y2Y0NzBmZmEyMzM5YmI2YS4uMWE2MmZkY2I5MDIyNTVmM2ZkZjFlN2JjNWYxZDVkMmZiMDIyOTBk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTY2LDEzICsxNjYsMTMg
QEAgU1ZHVmlld1NwZWMmIFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3KCkKICAgICByZXR1cm4g
Km1fdmlld1NwZWM7CiB9CiAKLUZyYW1lKiBTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJlbnRT
Y2FsZSgpIGNvbnN0CitSZWZQdHI8RnJhbWU+IFNWR1NWR0VsZW1lbnQ6OmZyYW1lRm9yQ3VycmVu
dFNjYWxlKCkgY29uc3QKIHsKICAgICAvLyBUaGUgYmVoYXZpb3Igb2YgY3VycmVudFNjYWxlKCkg
aXMgdW5kZWZpbmVkIHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIG5vbi1zdGFuZGFsb25lIFNWRyBk
b2N1bWVudHMuCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGVtYmVkZGVkLCB0aGUgc2NhbGlu
ZyBpcyBoYW5kbGVkIGJ5IHRoZSBob3N0IHJlbmRlcmVyLgogICAgIGlmICghaXNDb25uZWN0ZWQo
KSB8fCAhaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBSZWZQdHI8RnJh
bWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIHJldHVybiBmcmFtZSAmJiBmcmFt
ZS0+aXNNYWluRnJhbWUoKSA/IGZyYW1lIDogbnVsbHB0cjsKIH0KIApAQCAtMTgwLDEzICsxODAs
MTMgQEAgZmxvYXQgU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFNjYWxlKCkgY29uc3QKIHsKICAgICAv
LyBXaGVuIGFza2luZyBmcm9tIGluc2lkZSBhbiBlbWJlZGRlZCBTVkcgZG9jdW1lbnQsIGEgc2Nh
bGUgdmFsdWUgb2YgMSBzZWVtcyByZWFzb25hYmxlLCBhcyBpdCBkb2Vzbid0CiAgICAgLy8ga25v
dyBhbnl0aGluZyBhYm91dCB0aGUgcGFyZW50IHNjYWxlLgotICAgIEZyYW1lKiBmcmFtZSA9IGZy
YW1lRm9yQ3VycmVudFNjYWxlKCk7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGZyYW1lRm9y
Q3VycmVudFNjYWxlKCk7CiAgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPnBhZ2Vab29tRmFjdG9y
KCkgOiAxOwogfQogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZShmbG9hdCBz
Y2FsZSkKIHsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZnJhbWVGb3JDdXJyZW50U2NhbGUoKSkK
KyAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGZyYW1lRm9yQ3VycmVudFNjYWxlKCkpCiAg
ICAgICAgIGZyYW1lLT5zZXRQYWdlWm9vbUZhY3RvcihzY2FsZSk7CiB9CiAKQEAgLTM3Myw3ICsz
NzMsNyBAQCBib29sIFNWR1NWR0VsZW1lbnQ6OmNoZWNrRW5jbG9zdXJlKFJlZlB0cjxTVkdFbGVt
ZW50PiYmIGVsZW1lbnQsIFNWR1JlY3QmIHJlY3QpCiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6ZGVz
ZWxlY3RBbGwoKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkp
CisgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAg
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5jbGVhcigpOwogfQogCkBAIC00NTMsNyArNDUzLDcgQEAg
QWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNm
b3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2MKICAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
bG9jYXRpb24ueCgpIC0gdmlld0JveFRyYW5zZm9ybS5lKCksIGxvY2F0aW9uLnkoKSAtIHZpZXdC
b3hUcmFuc2Zvcm0uZigpKTsKIAogICAgICAgICAgICAgLy8gUmVzcGVjdCBzY3JvbGwgb2Zmc2V0
LgotICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50KCkudmlldygpKSB7
CisgICAgICAgICAgICBpZiAoUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGRvY3VtZW50KCkudmll
dygpKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB2aWV3
LT5zY3JvbGxQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNjYWxl
KHpvb21GYWN0b3IpOwogICAgICAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXNjcm9s
bFBvc2l0aW9uKTsKQEAgLTYzOCw3ICs2MzgsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxl
bWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZQog
dm9pZCBTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0FuY2hvcihjb25zdCBTdHJpbmcmIGZyYWdtZW50
SWRlbnRpZmllciwgRWxlbWVudCogYW5jaG9yTm9kZSkKIHsKICAgICBhdXRvIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKLSAgICBTVkdWaWV3U3BlYyogdmlldyA9IG1fdmlld1NwZWMuZ2V0
KCk7CisgICAgUmVmUHRyPFNWR1ZpZXdTcGVjPiB2aWV3KG1fdmlld1NwZWMpOwogICAgIGlmICh2
aWV3KQogICAgICAgICB2aWV3LT5yZXNldCgpOwogCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBT
VkdTVkdFbGVtZW50OjpzY3JvbGxUb0FuY2hvcihjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRp
ZmllciwgRWxlbWVudCogYW4KICAgICAvLyBhdHRyaWJ1dGVzIG9uIHRoZSBjbG9zZXN0IGFuY2Vz
dG9yICJzdmciIGVsZW1lbnQuCiAgICAgaWYgKGlzPFNWR1ZpZXdFbGVtZW50PihhbmNob3JOb2Rl
KSkgewogICAgICAgICBhdXRvJiB2aWV3RWxlbWVudCA9IGRvd25jYXN0PFNWR1ZpZXdFbGVtZW50
PigqYW5jaG9yTm9kZSk7Ci0gICAgICAgIGF1dG8qIHZpZXdwb3J0RWxlbWVudCA9IFNWR0xvY2F0
YWJsZTo6bmVhcmVzdFZpZXdwb3J0RWxlbWVudCgmdmlld0VsZW1lbnQpOworICAgICAgICBhdXRv
IHZpZXdwb3J0RWxlbWVudCA9IG1ha2VSZWZQdHIoU1ZHTG9jYXRhYmxlOjpuZWFyZXN0Vmlld3Bv
cnRFbGVtZW50KCZ2aWV3RWxlbWVudCkpOwogICAgICAgICBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4o
dmlld3BvcnRFbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0
PFNWR1NWR0VsZW1lbnQ+KCp2aWV3cG9ydEVsZW1lbnQpOwogICAgICAgICAgICAgZWxlbWVudC5p
bmhlcml0Vmlld0F0dHJpYnV0ZXModmlld0VsZW1lbnQpOwpAQCAtNzIyLDkgKzcyMiw5IEBAIEVs
ZW1lbnQqIFNWR1NWR0VsZW1lbnQ6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQpCiAgICAgaWYgKGlkLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZCk7CisgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZCk7
CiAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoKnRoaXMpKQotICAg
ICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7CiAgICAg
aWYgKHRyZWVTY29wZSgpLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChpZCkpIHsKICAg
ICAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogKnRyZWVTY29wZSgpLmdldEFsbEVsZW1lbnRzQnlJ
ZChpZCkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZigqdGhpcykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCAzMjg4ZGVmY2ZlNjM0Njg3NDVkZjY2
MzkwOGE1MDY0NWMxMDE3NWUzLi4zZTE4NDE4NzJmODcwOTQ2YmRjYTQwYTI3MjBhN2NiOGU0ZTdk
ODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigpIG92ZXJyaWRl
OwogICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdM
b2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEZyYW1lKiBmcmFtZUZv
ckN1cnJlbnRTY2FsZSgpIGNvbnN0OworICAgIFJlZlB0cjxGcmFtZT4gZnJhbWVGb3JDdXJyZW50
U2NhbGUoKSBjb25zdDsKICAgICB2b2lkIGluaGVyaXRWaWV3QXR0cmlidXRlcyhjb25zdCBTVkdW
aWV3RWxlbWVudCYpOwogICAgIFJlZjxOb2RlTGlzdD4gY29sbGVjdEludGVyc2VjdGlvbk9yRW5j
bG9zdXJlTGlzdChTVkdSZWN0JiwgU1ZHRWxlbWVudCosIGJvb2wgKCpjaGVja0Z1bmN0aW9uKShT
VkdFbGVtZW50JiwgU1ZHUmVjdCYpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50
LmNwcAppbmRleCA5OWVhNGVkZWRkNzc5YmI0MTI2NTljNjk0MWU1ZmMwZGQyYzE5NGQ1Li40OTA2
YjYxYzQ3OTRjMzU3NWIxZmYyNjljMDczMTE1ZDgwYWI1ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVFbGVtZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29sIFNWR1N0eWxlRWxlbWVu
dDo6ZGlzYWJsZWQoKSBjb25zdAogCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0RGlzYWJsZWQo
Ym9vbCBzZXREaXNhYmxlZCkKIHsKLSAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9
IHNoZWV0KCkpCisgICAgaWYgKFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gc2hl
ZXQoKSkKICAgICAgICAgc3R5bGVTaGVldC0+c2V0RGlzYWJsZWQoc2V0RGlzYWJsZWQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBlM2M3N2U5ZGM4ZDUwMjUz
MDM4ZWViYTJiOTc3MjBhYTY0Y2E5YjBiLi40M2FmYmY4MWQyZjExODBhN2JkZDAyZmY0ODgyMTAz
ZDc4OGIxM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTE2Myw3
ICsxNjMsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQoKQogICAgIFN0cmlu
ZyBlbXB0eUNvbnRlbnQ7CiAKICAgICBBU1NFUlQoc2hhZG93Um9vdCgpKTsKLSAgICBOb2RlKiBj
b250YWluZXIgPSBzaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKTsKKyAgICBSZWZQdHI8Tm9kZT4g
Y29udGFpbmVyID0gc2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgaWYgKGNvbnRhaW5l
cikKICAgICAgICAgY29udGFpbmVyLT5zZXRUZXh0Q29udGVudChlbXB0eUNvbnRlbnQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IDJkOGM3
MGRmYzIyNmM5YzM3ZWM5ZjljOWMyNGYzZmVhZmJkYWY1YjQuLjNhOWVkODU2Y2E4ZDFlYjI4MTgw
ZDMwYTM3MThlYmIzYzMwOGJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgU1ZHVGV4dENvbnRlbnRFbGVtZW50
KiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIoUmVuZGVyT2JqZWN0
KgogICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZW5kZXJl
ci0+bm9kZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAKLSAgICBpZiAoIWlzPFNWR1RleHRD
b250ZW50RWxlbWVudD4oKmVsZW1lbnQpKQorICAgIGlmICghaXM8U1ZHVGV4dENvbnRlbnRFbGVt
ZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gZG93
bmNhc3Q8U1ZHVGV4dENvbnRlbnRFbGVtZW50PihlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggZThhYTg4NmYyN2RkZDk3MTMwZGM5OGNjYzM1
ZDQyYWUxZmUxNDE0Ni4uYmRhMGVkYzg0YjQ1YzAxNTk1Y2NjMzI0MGRiNzgyYWZkNTJlMTIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTE1Niw3ICsx
NTYsNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgaWQ7Ci0gICAgRWxlbWVudCogdGFyZ2V0ID0g
U1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRvY3Vt
ZW50KCksICZpZCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHRhcmdldCA9IFNWR1VSSVJlZmVyZW5j
ZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQpOwog
ICAgIGlmICghdGFyZ2V0KSB7CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBhcyBwZW5kaW5n
IGlmIHdlIGFyZSBhbHJlYWR5IHBlbmRpbmcgdGhpcyByZXNvdXJjZS4KICAgICAgICAgaWYgKGRv
Y3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmlzUGVuZGluZ1Jlc291cmNlKHRoaXMsIGlk
KSkKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6YnVpbGRQZW5k
aW5nUmVzb3VyY2UoKQogICAgIH0gZWxzZSBpZiAodGFyZ2V0LT5oYXNUYWdOYW1lKFNWR05hbWVz
OjpwYXRoVGFnKSkgewogICAgICAgICAvLyBSZWdpc3RlciB1cyB3aXRoIHRoZSB0YXJnZXQgaW4g
dGhlIGRlcGVuZGVuY2llcyBtYXAuIEFueSBjaGFuZ2Ugb2YgaHJlZkVsZW1lbnQKICAgICAgICAg
Ly8gdGhhdCBsZWFkcyB0byByZWxheW91dC9yZXBhaW50aW5nIG5vdyBpbmZvcm1zIHVzLCBzbyB3
ZSBjYW4gcmVhY3QgdG8gaXQuCi0gICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9u
cygpLmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCh0aGlzLCBkb3duY2FzdDxTVkdFbGVtZW50
Pih0YXJnZXQpKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRk
RWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KHRoaXMsIGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdl
dC5nZXQoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmlu
ZGV4IDZlMjg2MzQ4NDFjZTQ4NDI2MWQwZDdmZTM4ZTAxMjAyMGYzODVhYTIuLjZiZDE4MTA0YWUy
NDRkZDc0ZDlhMjVhOWE1OTI2YWJhYWQ1OTUwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVy
U2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogICAg
IH0gZWxzZSBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4oc2hhZG93RWxlbWVudCkpIHsKICAgICAgICAg
Ly8gU3BlYyAoPHVzZT4gb24gPHN2Zz4pOiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWln
aHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNlJyBlbGVtZW50LCB0aGVuIHRoZXNlCiAgICAgICAg
IC8vIHZhbHVlcyB3aWxsIG92ZXJyaWRlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgb24g
dGhlICdzdmcnIGluIHRoZSBnZW5lcmF0ZWQgdHJlZS4KLSAgICAgICAgU1ZHRWxlbWVudCogY29y
cmVzcG9uZGluZ0VsZW1lbnQgPSBzaGFkb3dFbGVtZW50LmNvcnJlc3BvbmRpbmdFbGVtZW50KCk7
CisgICAgICAgIFJlZlB0cjxTVkdFbGVtZW50PiBjb3JyZXNwb25kaW5nRWxlbWVudCA9IHNoYWRv
d0VsZW1lbnQuY29ycmVzcG9uZGluZ0VsZW1lbnQoKTsKICAgICAgICAgc2hhZG93RWxlbWVudC5z
ZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgKHdpZHRoSXNWYWxpZCgpICYmIHdpZHRo
KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkpID8gQXRvbWljU3RyaW5nKHdpZHRoKCkudmFsdWVB
c1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/IGNvcnJlc3BvbmRpbmdFbGVtZW50
LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0cikgOiBudWxsQXRvbSgpKSk7CiAgICAg
ICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCAoaGVp
Z2h0SXNWYWxpZCgpICYmIGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpKSA/IEF0b21p
Y1N0cmluZyhoZWlnaHQoKS52YWx1ZUFzU3RyaW5nKCkpIDogKGNvcnJlc3BvbmRpbmdFbGVtZW50
ID8gY29ycmVzcG9uZGluZ0VsZW1lbnQtPmdldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0
cikgOiBudWxsQXRvbSgpKSk7CiAgICAgfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgU1ZHVXNl
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKICAgICAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVubmVjZXNzYXJp
bHkgaW5lZmZpY2llbnQgdG8gdXBkYXRlIGJvdGggd2lkdGggYW5kIGhlaWdodCBlYWNoIHRpbWUg
ZWl0aGVyIGlzIGNoYW5nZWQuCi0gICAgICAgICAgICBpZiAoYXV0byogdGFyZ2V0Q2xvbmUgPSB0
aGlzLT50YXJnZXRDbG9uZSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gdGFyZ2V0Q2xvbmUgPSB0
aGlzLT50YXJnZXRDbG9uZSgpKQogICAgICAgICAgICAgICAgIHRyYW5zZmVyU2l6ZUF0dHJpYnV0
ZXNUb1RhcmdldENsb25lKCp0YXJnZXRDbG9uZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lk
IFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZVNoYWRvd1RyZWUoKQogICAgIG1fc2hhZG93VHJlZU5lZWRz
VXBkYXRlID0gZmFsc2U7CiB9CiAKLVNWR0VsZW1lbnQqIFNWR1VzZUVsZW1lbnQ6OnRhcmdldENs
b25lKCkgY29uc3QKK1JlZlB0cjxTVkdFbGVtZW50PiBTVkdVc2VFbGVtZW50Ojp0YXJnZXRDbG9u
ZSgpIGNvbnN0CiB7CiAgICAgYXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwogICAg
IGlmICghcm9vdCkKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgYm9vbCBpc0RpcmVjdFJlZmVy
ZW5jZShjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogCiBQYXRoIFNWR1VzZUVsZW1lbnQ6OnRv
Q2xpcFBhdGgoKQogewotICAgIGF1dG8qIHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUo
KTsKKyAgICBhdXRvIHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKTsKICAgICBpZiAo
IWlzPFNWR0dyYXBoaWNzRWxlbWVudD4odGFyZ2V0Q2xvbmUpKQogICAgICAgICByZXR1cm4geyB9
OwogCkBAIC0zMTMsNyArMzEzLDcgQEAgUGF0aCBTVkdVc2VFbGVtZW50Ojp0b0NsaXBQYXRoKCkK
IAogUmVuZGVyRWxlbWVudCogU1ZHVXNlRWxlbWVudDo6cmVuZGVyZXJDbGlwQ2hpbGQoKSBjb25z
dAogewotICAgIGF1dG8qIHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKTsKKyAgICBh
dXRvIHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKTsKICAgICBpZiAoIXRhcmdldENs
b25lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWlzRGlyZWN0UmVmZXJlbmNl
KCp0YXJnZXRDbG9uZSkpCkBAIC00MDUsNyArNDA1LDcgQEAgU1ZHRWxlbWVudCogU1ZHVXNlRWxl
bWVudDo6ZmluZFRhcmdldChTdHJpbmcqIHRhcmdldElEKSBjb25zdAogICAgIGF1dG8qIGNvcnJl
c3BvbmRpbmdFbGVtZW50ID0gdGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKTsKICAgICBhdXRv
JiBvcmlnaW5hbCA9IGNvcnJlc3BvbmRpbmdFbGVtZW50ID8gZG93bmNhc3Q8U1ZHVXNlRWxlbWVu
dD4oKmNvcnJlc3BvbmRpbmdFbGVtZW50KSA6ICp0aGlzOwogCi0gICAgYXV0byogdGFyZ2V0Q2Fu
ZGlkYXRlID0gdGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcob3JpZ2luYWwuaHJlZigpLCBvcmln
aW5hbC5kb2N1bWVudCgpLCB0YXJnZXRJRCwgb3JpZ2luYWwuZXh0ZXJuYWxEb2N1bWVudCgpKTsK
KyAgICBhdXRvIHRhcmdldENhbmRpZGF0ZSA9IG1ha2VSZWZQdHIodGFyZ2V0RWxlbWVudEZyb21J
UklTdHJpbmcob3JpZ2luYWwuaHJlZigpLCBvcmlnaW5hbC5kb2N1bWVudCgpLCB0YXJnZXRJRCwg
b3JpZ2luYWwuZXh0ZXJuYWxEb2N1bWVudCgpKSk7CiAgICAgaWYgKHRhcmdldElEICYmICF0YXJn
ZXRJRC0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBleHRlcm5h
bCwgZG9uJ3QgcmV0dXJuIHRoZSB0YXJnZXQgSUQgdG8gdGhlIGNhbGxlci4KICAgICAgICAgLy8g
VGhlIGNhbGxlciB3b3VsZCB1c2UgdGhlIHRhcmdldCBJRCB0byB3YWl0IGZvciBhIHBlbmRpbmcg
cmVzb3VyY2Ugb24gdGhlIHdyb25nIGRvY3VtZW50LgpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQg
U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1RyZWUoKQogdm9pZCBTVkdVc2VFbGVtZW50
OjppbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKQogewogICAgIGZvciAoYXV0byogaW5z
dGFuY2UgOiBpbnN0YW5jZXMoKSkgewotICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IGluc3Rh
bmNlLT5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byBlbGVtZW50
ID0gaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkpCiAgICAgICAgICAgICBlbGVt
ZW50LT5pbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAgIH0KIH0KQEAgLTU0OCw3ICs1NDgsNyBA
QCBib29sIFNWR1VzZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogICAg
IGlmICh4KCkuaXNSZWxhdGl2ZSgpIHx8IHkoKS5pc1JlbGF0aXZlKCkgfHwgd2lkdGgoKS5pc1Jl
bGF0aXZlKCkgfHwgaGVpZ2h0KCkuaXNSZWxhdGl2ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGF1dG8qIHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKTsKKyAgICBhdXRv
IHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKTsKICAgICByZXR1cm4gdGFyZ2V0Q2xv
bmUgJiYgdGFyZ2V0Q2xvbmUtPmhhc1JlbGF0aXZlTGVuZ3RocygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuaAppbmRleCAwYmNkMWJiNWYzZTBjYzNjMTgwNWUwNmExNWE1NzhiNGZh
MzlhNmQ0Li4zMWY2NDRkMTc4ZDgyYzNmOTUxOTRjOWQ5MTMwOGFlZmY5Y2MyNzk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBT
VkdFbGVtZW50KiBmaW5kVGFyZ2V0KFN0cmluZyogdGFyZ2V0SUQgPSBudWxscHRyKSBjb25zdDsK
IAogICAgIHZvaWQgY2xvbmVUYXJnZXQoQ29udGFpbmVyTm9kZSYsIFNWR0VsZW1lbnQmIHRhcmdl
dCkgY29uc3Q7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0Q2xvbmUoKSBjb25zdDsKKyAgICBSZWZQ
dHI8U1ZHRWxlbWVudD4gdGFyZ2V0Q2xvbmUoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlU2hh
ZG93VHJlZSgpOwogICAgIHZvaWQgZXhwYW5kVXNlRWxlbWVudHNJblNoYWRvd1RyZWUoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5l
ci5jcHAKaW5kZXggNDVjYWY5ZjRjYzUzNWY3Y2ZkNzlkNWQxNGI4ZjBiNzg2ODY1NGY1NS4uMzJi
ODExMGNiZTkyM2I5ZDQ3N2ZkMzRjMDMyOTc1YTJlYjVmOTU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKQEAgLTI4OCw3ICsy
ODgsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjp1cGRhdGVBbmltYXRpb25zKFNNSUxUaW1l
IGVsYXBzZWQsIGJvb2wgc2Vla1RvVGltZSkKICAgICAgICAgLy8gaGF2ZSBoaWdoZXIgcHJpb3Jp
dHkuCiAgICAgICAgIHNvcnRCeVByaW9yaXR5KCpzY2hlZHVsZWQsIGVsYXBzZWQpOwogCi0gICAg
ICAgIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgUmVm
UHRyPFNWR1NNSUxFbGVtZW50PiByZXN1bHRFbGVtZW50ID0gbnVsbHB0cjsKICAgICAgICAgZm9y
IChhdXRvJiBhbmltYXRpb24gOiAqc2NoZWR1bGVkKSB7CiAgICAgICAgICAgICBBU1NFUlQoYW5p
bWF0aW9uLT50aW1lQ29udGFpbmVyKCkgPT0gdGhpcyk7CiAgICAgICAgICAgICBBU1NFUlQoYW5p
bWF0aW9uLT50YXJnZXRFbGVtZW50KCkpOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgU01JTFRp
bWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMoU01JTFRpbWUgZWxhcHNlZCwgYm9vbCBzZWVr
VG9UaW1lKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgY2FsY3Vs
YXRlIHRoZSBjb250cmlidXRpb24gZnJvbSB0aGUgYW5pbWF0aW9uIGFuZCBhZGQgaXQgdG8gdGhl
IHJlc3VsdHNFbGVtZW50LgotICAgICAgICAgICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVs
YXBzZWQsIHJlc3VsdEVsZW1lbnQsIHNlZWtUb1RpbWUpICYmIHJlc3VsdEVsZW1lbnQgPT0gYW5p
bWF0aW9uKQorICAgICAgICAgICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVsYXBzZWQsIHJl
c3VsdEVsZW1lbnQuZ2V0KCksIHNlZWtUb1RpbWUpICYmIHJlc3VsdEVsZW1lbnQgPT0gYW5pbWF0
aW9uKQogICAgICAgICAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBudWxscHRyOwogCiAgICAgICAg
ICAgICBTTUlMVGltZSBuZXh0RmlyZVRpbWUgPSBhbmltYXRpb24tPm5leHRQcm9ncmVzc1RpbWUo
KTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjp1cGRhdGVBbmlt
YXRpb25zKFNNSUxUaW1lIGVsYXBzZWQsIGJvb2wgc2Vla1RvVGltZSkKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChyZXN1bHRFbGVtZW50KQotICAgICAgICAgICAgYW5pbWF0aW9uc1RvQXBwbHku
YXBwZW5kKHJlc3VsdEVsZW1lbnQpOworICAgICAgICAgICAgYW5pbWF0aW9uc1RvQXBwbHkuYXBw
ZW5kKHJlc3VsdEVsZW1lbnQuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmIChhbmltYXRpb25zVG9B
cHBseS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAKaW5kZXggM2VlNjk3ZjUzOTg1OTdjM2NkYzNjYTM2OWIwMmFkYzdjYzNl
MjdmNC4uM2I0YTk4NmE4ZGM0MTI1ZTk3ZWYyZDRjM2ZmMDBlODRiYjNlNDUyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTE3Niwx
MyArMTc2LDEzIEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkK
ICAgICB9CiAKICAgICBTdHJpbmcgaWQ7Ci0gICAgRWxlbWVudCogdGFyZ2V0OworICAgIFJlZlB0
cjxFbGVtZW50PiB0YXJnZXQ7CiAgICAgYXV0byYgaHJlZiA9IGdldEF0dHJpYnV0ZShYTGlua05h
bWVzOjpocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNFbXB0eSgpKQogICAgICAgICB0YXJnZXQg
PSBwYXJlbnRFbGVtZW50KCk7CiAgICAgZWxzZQogICAgICAgICB0YXJnZXQgPSBTVkdVUklSZWZl
cmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYuc3RyaW5nKCksIGRvY3VtZW50
KCksICZpZCk7Ci0gICAgU1ZHRWxlbWVudCogc3ZnVGFyZ2V0ID0gaXM8U1ZHRWxlbWVudD4odGFy
Z2V0KSA/IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldCkgOiBudWxscHRyOworICAgIFNWR0Vs
ZW1lbnQqIHN2Z1RhcmdldCA9IGlzPFNWR0VsZW1lbnQ+KHRhcmdldCkgPyBkb3duY2FzdDxTVkdF
bGVtZW50Pih0YXJnZXQuZ2V0KCkpIDogbnVsbHB0cjsKIAogICAgIGlmIChzdmdUYXJnZXQgJiYg
IXN2Z1RhcmdldC0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgc3ZnVGFyZ2V0ID0gbnVsbHB0cjsK
QEAgLTI2Myw3ICsyNjMsNyBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBTVkdT
TUlMRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVAogCiAgICAgdXBkYXRl
QXR0cmlidXRlTmFtZSgpOwogCi0gICAgU1ZHU1ZHRWxlbWVudCogb3duZXIgPSBvd25lclNWR0Vs
ZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gb3duZXIgPSBvd25lclNWR0VsZW1l
bnQoKTsKICAgICBpZiAoIW93bmVyKQogICAgICAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0
b3JSZXN1bHQ6OkRvbmU7CiAKQEAgLTU0NCw3ICs1NDQsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50
Ojpjb25uZWN0Q29uZGl0aW9ucygpCiAgICAgZm9yIChhdXRvJiBjb25kaXRpb24gOiBtX2NvbmRp
dGlvbnMpIHsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpFdmVu
dEJhc2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fc3luY2Jhc2UpOwotICAg
ICAgICAgICAgRWxlbWVudCogZXZlbnRCYXNlID0gZXZlbnRCYXNlRm9yKGNvbmRpdGlvbik7Cisg
ICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZXZlbnRCYXNlID0gZXZlbnRCYXNlRm9yKGNvbmRp
dGlvbik7CiAgICAgICAgICAgICBpZiAoIWV2ZW50QmFzZSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lcik7CkBA
IC01NzksNyArNTc5LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlv
bnMoKQogICAgICAgICAgICAgLy8gbm8gZ3VhcmFudGVlIHRoYXQgZXZlbnRCYXNlRm9yKCkgd2ls
bCBiZSBhYmxlIHRvIGZpbmQgb3VyIGNvbmRpdGlvbidzCiAgICAgICAgICAgICAvLyBvcmlnaW5h
bCBldmVudEJhc2UuIFNvLCB3ZSBhbHNvIGhhdmUgdG8gZGlzY29ubmVjdCBvdXJzZWx2ZXMgZnJv
bQogICAgICAgICAgICAgLy8gb3VyIGNvbmRpdGlvbiBldmVudCBsaXN0ZW5lciwgaW4gY2FzZSBp
dCBsYXRlciBmaXJlcy4KLSAgICAgICAgICAgIEVsZW1lbnQqIGV2ZW50QmFzZSA9IGV2ZW50QmFz
ZUZvcihjb25kaXRpb24pOworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGV2ZW50QmFzZSA9
IGV2ZW50QmFzZUZvcihjb25kaXRpb24pOwogICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkKICAg
ICAgICAgICAgICAgICBldmVudEJhc2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1f
bmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICAgICAgICAgIGNv
bmRpdGlvbi5tX2V2ZW50TGlzdGVuZXItPmRpc2Nvbm5lY3RBbmltYXRpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGYzNzZhM2MyZDEzMjhlZDA4YWJi
N2IyYjJkNmFkNjU2ODA4OGQyODUuLjg5MjIzZTM5NzBjZjFjZjU4ODg4M2U2ZDI2MWY5NjI0ODQ3
MTY0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtODQs
NyArODQsNyBAQCBTVkdJbWFnZTo6flNWR0ltYWdlKCkKICAgICBBU1NFUlQoIW1fY2hyb21lQ2xp
ZW50IHx8ICFtX2Nocm9tZUNsaWVudC0+aW1hZ2UoKSk7CiB9CiAKLWlubGluZSBTVkdTVkdFbGVt
ZW50KiBTVkdJbWFnZTo6cm9vdEVsZW1lbnQoKSBjb25zdAoraW5saW5lIFJlZlB0cjxTVkdTVkdF
bGVtZW50PiBTVkdJbWFnZTo6cm9vdEVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkzLDcgKzkzLDcgQEAgaW5saW5lIFNWR1NW
R0VsZW1lbnQqIFNWR0ltYWdlOjpyb290RWxlbWVudCgpIGNvbnN0CiAKIGJvb2wgU1ZHSW1hZ2U6
Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICBTVkdTVkdFbGVtZW50KiBy
b290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9
IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKQEAgLTEyMiwxNCArMTIyLDE0IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRh
aW5lclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGlmICghdXNlc0NvbnRhaW5lclNp
emUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQg
PSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290
RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBh
dXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KHJvb3RFbGVtZW50LT5yZW5k
ZXJlcigpKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBmcmFtZVZpZXcoKTsKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3ID0g
ZnJhbWVWaWV3KCk7CiAgICAgdmlldy0+cmVzaXplKHRoaXMtPmNvbnRhaW5lclNpemUoKSk7CiAK
ICAgICByZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShJbnRTaXplKHNpemUpKTsKQEAgLTEzNyw3
ICsxMzcsNyBAQCB2b2lkIFNWR0ltYWdlOjpzZXRDb250YWluZXJTaXplKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKIAogSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiB7Ci0g
ICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAg
IGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKQEAgLTI4NSw3ICsyODUsNyBAQCBJ
bWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJh
bWVWaWV3KCk7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGZyYW1lVmlldygpOwogICAg
IEFTU0VSVCh2aWV3KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKQEAgLTMzMiw3ICszMzIsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwog
CiBSZW5kZXJCb3gqIFNWR0ltYWdlOjplbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdAogewotICAg
IFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKKyAgICBh
dXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVt
ZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
Qm94Pihyb290RWxlbWVudC0+cmVuZGVyZXIoKSk7CkBAIC0zNDcsNyArMzQ3LDcgQEAgRnJhbWVW
aWV3KiBTVkdJbWFnZTo6ZnJhbWVWaWV3KCkgY29uc3QKIAogYm9vbCBTVkdJbWFnZTo6aGFzUmVs
YXRpdmVXaWR0aCgpIGNvbnN0CiB7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0
aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxl
bWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJpbnNpY1dpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCk7CkBAIC0zNTUsNyArMzU1LDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFzUmVsYXRpdmVXaWR0
aCgpIGNvbnN0CiAKIGJvb2wgU1ZHSW1hZ2U6Omhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QKIHsK
LSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7Cisg
ICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiByb290RWxlbWVudC0+
aW50cmluc2ljSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCk7CkBAIC0zNjMsNyArMzYz
LDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdAogCiB2b2lkIFNW
R0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRo
LCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykKIHsK
LSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7Cisg
ICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290
RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBTVkdJ
bWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwg
TGVuZ3RoJiBpbnRyaW4KIAogdm9pZCBTVkdJbWFnZTo6c3RhcnRBbmltYXRpb24oKQogewotICAg
IFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKKyAgICBh
dXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVt
ZW50IHx8ICFyb290RWxlbWVudC0+YW5pbWF0aW9uc1BhdXNlZCgpKQogICAgICAgICByZXR1cm47
CiAgICAgcm9vdEVsZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7CkBAIC0zODgsNyArMzg4LDcg
QEAgdm9pZCBTVkdJbWFnZTo6c3RhcnRBbmltYXRpb24oKQogCiB2b2lkIFNWR0ltYWdlOjpzdG9w
QW5pbWF0aW9uKCkKIHsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJv
b3RFbGVtZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7
CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHJvb3RFbGVtZW50
LT5wYXVzZUFuaW1hdGlvbnMoKTsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIFNWR0ltYWdlOjpy
ZXNldEFuaW1hdGlvbigpCiAKIGJvb2wgU1ZHSW1hZ2U6OmlzQW5pbWF0aW5nKCkgY29uc3QKIHsK
LSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7Cisg
ICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiByb290RWxlbWVudC0+
aGFzQWN0aXZlQW5pbWF0aW9uKCk7CkBAIC00MDksMTAgKzQwOSwxMCBAQCBib29sIFNWR0ltYWdl
Ojppc0FuaW1hdGluZygpIGNvbnN0CiAKIHZvaWQgU1ZHSW1hZ2U6OnJlcG9ydEFwcHJveGltYXRl
TWVtb3J5Q29zdCgpIGNvbnN0CiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdlLT5t
YWluRnJhbWUoKS5kb2N1bWVudCgpOworICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgc2l6ZV90IGRlY29kZWRJbWFnZU1l
bW9yeUNvc3QgPSAwOwogCi0gICAgZm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQ7IG5vZGU7IG5v
ZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBu
b2RlID0gZG9jdW1lbnQ7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkK
ICAgICAgICAgZGVjb2RlZEltYWdlTWVtb3J5Q29zdCArPSBub2RlLT5hcHByb3hpbWF0ZU1lbW9y
eUNvc3QoKTsKIAogICAgIEpTQzo6Vk0mIHZtID0gY29tbW9uVk0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggNGVmZmU1NzliNWNhYTVlZmNiNWE5M2Y1ZjJmMzky
Yzc4YzQ5NGQzMC4uODhmNzYyNzU0OTY0NGRiMTc1OTRjM2Q4YzdiMjc4M2RkZDJkNDEwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29u
c3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVj
dCYsIEJsZW5kTW9kZSk7CiAKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCgpIGNvbnN0
OworICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiByb290RWxlbWVudCgpIGNvbnN0OwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFNWR0ltYWdlQ2hyb21lQ2xpZW50PiBtX2Nocm9tZUNsaWVudDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCBiZmU3NjM5YjMxNDUwODAz
ZjllMjNhMDVjNzc5MDNhOThmMjJhY2IyLi41ZDQwMTgxZDM3MWI1NTZmZDc5YmY2OTc4MzVkOWRi
OTc5N2MwYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUltYWdlLmNwcApAQCAtMTE4LDkgKzExOCw5IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0
ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCk7CiAgICAgICAgIHJlc3Vs
dEltYWdlLT5jb250ZXh0KCkuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAotICAgICAg
ICBTVkdFbGVtZW50KiBjb250ZXh0Tm9kZSA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVy
LT5lbGVtZW50KCkpOworICAgICAgICBSZWZQdHI8U1ZHRWxlbWVudD4gY29udGV4dE5vZGUgPSBk
b3duY2FzdDxTVkdFbGVtZW50PihyZW5kZXJlci0+ZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGNv
bnRleHROb2RlLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKSkgewotICAgICAgICAgICAgU1ZHTGVuZ3Ro
Q29udGV4dCBsZW5ndGhDb250ZXh0KGNvbnRleHROb2RlKTsKKyAgICAgICAgICAgIFNWR0xlbmd0
aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgICAgICBG
bG9hdFNpemUgdmlld3BvcnRTaXplOwogCiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSByZWZlcmVu
Y2luZyBhbiBlbGVtZW50IHdpdGggcGVyY2VudGFnZSB1bml0cywgZWcuIDxyZWN0IHdpdGg9IjMw
JSI+IHRob3NlIHZhbHVlcyB3ZXJlIHJlc29sdmVkIGFnYWluc3QgdGhlIHZpZXdwb3J0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJC
dWlsZGVyLmNwcAppbmRleCA0ZjZhODI3NzE0YTZjYWU5MGRmMTJlZmE4YzEzZTFhNDUzYmU3NjI0
Li45N2VhNTVlOGMwODc5NzhiZGVmNWI4MmRlODU3ZTcwZjlmN2Y1MjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmNwcApAQCAtNDcsMTEgKzQ3LDExIEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YWRkKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkKICAgICBtX25h
bWVkRWZmZWN0cy5zZXQoaWQsIG1fbGFzdEVmZmVjdCk7CiB9CiAKLUZpbHRlckVmZmVjdCogU1ZH
RmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25z
dAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChj
b25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGlmIChpZC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgaWYgKG1fbGFzdEVmZmVjdCkKLSAgICAgICAgICAgIHJldHVybiBtX2xhc3RFZmZl
Y3QuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gbV9sYXN0RWZmZWN0OwogCiAgICAgICAgIHJl
dHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckJ1aWxkZXIuaAppbmRleCBjNWU0MGE4MDhkZTBjNmZmMTM2NDVlZmU5MWNmNjVlYjdm
ZWRjNjdjLi41ZTdkMzhiNmIwNzkyMzQ0NDE4NWY1NWYzZmRiZDAwMDQ1OTNiYzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKIAotICAgIEZpbHRlckVmZmVj
dCogZ2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNv
bnN0OwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dEVmZmVjdC5nZXQoKTsgfQogCiAgICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5j
ZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4mJiwgUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKaW5kZXggNWFiMWE0M2YwNjllZGFlNGRkOWIxMTBi
NWU5NmI1MDczMmM4NDhiNC4uZTlkYThlOGE0NDM0ZmYwNzgwZmNiYTliMDk1ZjAwYWUyMDhjNDBm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaApAQCAtOTAsNyAr
OTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX2FuaW1hdGVkUGF0aEJ5dGVTdHJlYW0pOwotICAgICAgICBTVkdQYXRoRWxl
bWVudCogcGF0aEVsZW1lbnQgPSBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4oY29udGV4dEVsZW1l
bnQoKSk7CisgICAgICAgIFJlZlB0cjxTVkdQYXRoRWxlbWVudD4gcGF0aEVsZW1lbnQgPSBkb3du
Y2FzdDxTVkdQYXRoRWxlbWVudD4oY29udGV4dEVsZW1lbnQoKSk7CiAKICAgICAgICAgLy8gSWYg
dGhlIGFuaW1WYWwgaXMgb2JzZXJ2ZWQgZnJvbSBKUywgd2UgaGF2ZSB0byB1cGRhdGUgaXQgb24g
ZWFjaCBhbmltYXRpb24gc3RlcC4KICAgICAgICAgLy8gVGhpcyBpcyBhbiBleHBlbnNpdmUgb3Bl
cmF0aW9uIGFuZCBvbmx5IGRvbmUsIGlmIHNvbWVvbmUgYWN0dWFsbHkgb2JzZXJ2ZXMgdGhlIGFu
aW1hdGVkUGF0aFNlZ0xpc3QoKSB3aGlsZSBhbiBhbmltYXRpb24gaXMgcnVubmluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaAppbmRleCBiODMxZDQ3NjY0MTJjYTdkZjQ1NDQwNTk1NDU4Y2FlZTA2ZTg4MjllLi5jZmI3
ZTQyY2Q4OWQ0N2RjNWE5N2E3YWMzYzQ2ZTlhY2FiZmVmZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC0x
NDEsNyArMTQxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB1bnNpZ25lZCBzaXplID0gbV93cmFw
cGVycy0+c2l6ZSgpOwogICAgICAgICBBU1NFUlQoc2l6ZSA9PSBtX3ZhbHVlcy0+c2l6ZSgpKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAg
ICAgTGlzdEl0ZW1UZWFyT2ZmKiBpdGVtID0gbV93cmFwcGVycy0+YXQoaSk7CisgICAgICAgICAg
ICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiBpdGVtID0gbV93cmFwcGVycy0+YXQoaSk7CiAgICAg
ICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpdGVtLT5zZXRBbmltYXRlZFByb3BlcnR5KG1fYW5pbWF0ZWRQcm9wZXJ0eS5wdHIoKSk7CkBA
IC0xNTksNyArMTU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBwcm9jZXNzSW5jb21pbmdM
aXN0SXRlbVdyYXBwZXIoUmVmPExpc3RJdGVtVGVhck9mZj4mIG5ld0l0ZW0sIHVuc2lnbmVkKiBp
bmRleFRvTW9kaWZ5KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSogYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSA9IG5ld0l0ZW0tPmFuaW1hdGVkUHJvcGVydHkoKTsK
KyAgICAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGFuaW1hdGVkUHJvcGVydHlPZkl0
ZW0gPSBuZXdJdGVtLT5hbmltYXRlZFByb3BlcnR5KCk7CiAKICAgICAgICAgLy8gbmV3SXRlbSBo
YXMgYmVlbiBjcmVhdGVkIG1hbnVhbGx5LCBpdCBkb2Vzbid0IGJlbG9uZyB0byBhbnkgU1ZHRWxl
bWVudC4KICAgICAgICAgLy8gKGZvciBleGFtcGxlOiAidGV4dEVsZW1lbnQueC5iYXNlVmFsLmFw
cGVuZEl0ZW0oc3Znc3ZnRWxlbWVudC5jcmVhdGVTVkdMZW5ndGgoKSkiKQpAQCAtMTgxLDcgKzE4
MSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLy8gU3BlYzogSWYgbmV3SXRlbSBpcyBhbHJlYWR5
IGluIGEgbGlzdCwgaXQgaXMgcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBsaXN0IGJlZm9yZSBp
dCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMgbGlzdC4KICAgICAgICAgLy8gJ25ld0l0ZW0nIGlzIGFs
cmVhZHkgbGl2aW5nIGluIGFub3RoZXIgbGlzdC4gSWYgaXQncyBub3Qgb3VyIGxpc3QsIHN5bmNo
cm9uaXplIHRoZSBvdGhlciBsaXN0cyB3cmFwcGVycyBhZnRlciB0aGUgcmVtb3ZhbC4KICAgICAg
ICAgYm9vbCBsaXZlc0luT3RoZXJMaXN0ID0gYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSAhPSBtX2Fu
aW1hdGVkUHJvcGVydHkucHRyKCk7Ci0gICAgICAgIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZiogcHJvcGVydHlUZWFyT2ZmID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmKj4oYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSk7CisgICAgICAgIEFuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZiogcHJvcGVydHlUZWFyT2ZmID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmKj4oYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbS5nZXQoKSk7CiAgICAgICAgIGlu
dCBpbmRleFRvUmVtb3ZlID0gcHJvcGVydHlUZWFyT2ZmLT5maW5kSXRlbShuZXdJdGVtLnB0cigp
KTsKICAgICAgICAgQVNTRVJUKGluZGV4VG9SZW1vdmUgIT0gLTEpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326168</attachid>
            <date>2017-11-06 16:40:25 -0800</date>
            <delta_ts>2017-11-07 22:09:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179314-20171106164024.patch</filename>
            <type>text/plain</type>
            <size>82609</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0M2ZhMTJlNzk3NzM1
ZGJiOThiN2VhNDEwZDBmMTE5NTFkYzc0My4uMzI3YjBlY2IwZDIwNmU2YThlZTU5MzkyZjViYzU1
M2EzYTE1OGNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNy0xMS0wNiAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBz
dGFjayByYXcgcG9pbnRlcnMgd2l0aCBSZWZQdHJzIHdpdGhpbiBXZWJDb3JlL3N2ZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MzE0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNDg0MjIwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCZXNpZGVzIHJlcGxhY2luZyBwb2ludGVycyBkaXJlY3RseSwg
c29tZSBvZiB0aGUgbWV0aG9kcyBhcmUgY2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAgUmVmUHRy
cyBhcyB3ZWxsLgorCisgICAgICAgIE5vIGNoYW5nZXMgaW4gYmVoYXZpb3JzLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jvb3RFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKiBkb20vRXZlbnRQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFBhdGg6OmV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRv
QW5jaG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEVsZW1lbnRDVE0pOgorICAgICAgICAqIHN2Zy9TVkdB
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6Omhhc1ZhbGlkR2x5cGhFbGVtZW50cyBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxh
dGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudEJhc2U6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlTW90aW9uRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb25QYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldEFuaW1hdGVk
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxl
bWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpy
ZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFkanVzdEZvcklu
aGVyaXRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50Ojpyb290RWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdEb2N1bWVudDo6em9vbUFuZFBhbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OnN0YXJ0UGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50Ojp1cGRhdGVQYW4gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJj
ZXNGb3JSZW1vdmFsTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg6
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxl
bWVudDo6flNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y29ycmVz
cG9uZGluZ1VzZUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbXB1
dGVkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVz
b3VyY2VzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6dXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
aW52YWxpZGF0ZUluc3RhbmNlcyk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVC
bGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VFbGVt
ZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVP
ZmZzZXRFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQpOgorICAgICAgICAqIHN2Zy9TVkdGb250
RmFjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50Ojpy
ZWJ1aWxkRm9udEZhY2UpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAg
ICogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3Ro
Q29udGV4dDo6ZGV0ZXJtaW5lVmlld3BvcnQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZH
TVBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6YnVp
bGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTVBhdGhFbGVtZW50Ojpw
YXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVt
ZW50OjpmcmFtZUZvckN1cnJlbnRTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50OjpjdXJyZW50U2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZH
RWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmRlc2VsZWN0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmxvY2Fs
Q29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnNjcm9sbFRvQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5
bGVFbGVtZW50OjpzZXREaXNhYmxlZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQpOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBz
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRo
RWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0
dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxl
bWVudDo6dGFyZ2V0Q2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVu
dDo6dG9DbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpyZW5kZXJl
ckNsaXBDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpmaW5k
VGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmludmFsaWRh
dGVEZXBlbmRlbnRTaGFkb3dUcmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50
OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMpOgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NNSUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RDb25kaXRpb25zKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnJv
b3RFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c2V0Q29u
dGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlOjpoYXNSZWxhdGl2ZVdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpoYXNSZWxhdGl2ZUhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpz
dG9wQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjppc0FuaW1hdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6cmVwb3J0QXBwcm94aW1hdGVNZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKwogMjAxNy0xMS0wNiAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNobWVudCBT
dXBwb3J0XSBJbXBsZW1lbnQgZGVsZWdhdGUgaG9va3MgZm9yIGF0dGFjaG1lbnQgZWxlbWVudCBp
bnNlcnRpb24gYW5kIHJlbW92YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGI5ZGM4ZDNjOWI1
NWM0MDVjZWIxNmU4OTFhYzM1MTFhODViMzBiNjQuLmVkZjM5NzBlNGI4OWVkMmZiNDdjMDdkN2Iw
YjAzMmI4OWNlYzdlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzA3Miw3ICszMDcyLDcg
QEAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90
ZVNWR1Jvb3RFbGVtZW50KENyZWF0aW9uQ2gKICAgICBpZiAoIWlzPFNWR0RvY3VtZW50Pihkb2N1
bWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIFNWR1NWR0VsZW1lbnQq
IHJvb3RFbGVtZW50ID0gU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KCpkb2N1bWVudCk7CisgICAg
YXV0byByb290RWxlbWVudCA9IFNWR0RvY3VtZW50Ojpyb290RWxlbWVudCgqZG9jdW1lbnQpOwog
ICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXJSb290ID0gcm9vdEVsZW1lbnQtPnJlbmRlcmVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRQYXRoLmgKaW5kZXggNWNjYmE5OTBiZmMzY2MyNTk5MjY0ZDQxZjk1ZTBkNDZhODM3NmZi
NS4uYWQ3YzJiNDdmY2E4MWY1Mjc1N2E5YmMxZWI4NGVjY2Q5MjBlYWM2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFBhdGguaApAQCAtNjMsOCArNjMsOCBAQCBpbmxpbmUgTm9kZSogRXZlbnRQYXRoOjpldmVu
dFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQogCiAgICAg
Ly8gRXZlbnRzIHNlbnQgdG8gZWxlbWVudHMgaW5zaWRlIGFuIFNWRyB1c2UgZWxlbWVudCdzIHNo
YWRvdyB0cmVlIGdvIHRvIHRoZSB1c2UgZWxlbWVudC4KICAgICBpZiAoaXM8U1ZHRWxlbWVudD4o
cmVmZXJlbmNlTm9kZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHVzZUVsZW1lbnQgPSBkb3duY2Fz
dDxTVkdFbGVtZW50PihyZWZlcmVuY2VOb2RlKS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHVzZUVsZW1lbnQ7CisgICAgICAgIGlmIChhdXRvIHVzZUVsZW1l
bnQgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZWZlcmVuY2VOb2RlKS5jb3JyZXNwb25kaW5nVXNl
RWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIHVzZUVsZW1lbnQuZ2V0KCk7CiAgICAgfQog
CiAgICAgcmV0dXJuICZyZWZlcmVuY2VOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDYxZWY1OWFmM2MyOGNkOTkzYTRhNGQ1YjMwMzBmNjAzMmM2Nzk1ODcuLmE4M2VhYTU2YjY1
NGYwMjgxMzU3ZDM4OWNiMjgxMzUxMTdmYzIyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTIxMjYsNyArMjEyNiw3IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvcihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgZG9jdW1lbnQuc2V0Q1NTVGFyZ2V0KGFuY2hvckVsZW1l
bnQpOwogCiAgICAgaWYgKGlzPFNWR0RvY3VtZW50Pihkb2N1bWVudCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHJvb3RFbGVtZW50ID0gU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KGRvY3VtZW50KSkg
eworICAgICAgICBpZiAoYXV0byByb290RWxlbWVudCA9IFNWR0RvY3VtZW50Ojpyb290RWxlbWVu
dChkb2N1bWVudCkpIHsKICAgICAgICAgICAgIHJvb3RFbGVtZW50LT5zY3JvbGxUb0FuY2hvcihu
YW1lLCBhbmNob3JFbGVtZW50KTsKICAgICAgICAgICAgIGlmICghYW5jaG9yRWxlbWVudCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggY2FhNzRlZjM1Yzg2ZTEx
NWQ3ZGIzNmM2MDcwNmVmZTg4MzdjMDExMy4uYmM5MGQxMjJmYjk0NTUzNDE0YjM2OTdiNjFjNDlm
NDU4Y2IwNGE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgdm9pZCBn
ZXRFbGVtZW50Q1RNKFNWR0VsZW1lbnQqIGVsZW1lbnQsIEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtKQogewogICAgIEFTU0VSVChlbGVtZW50KTsKIAotICAgIFNWR0VsZW1lbnQqIHN0b3BBdEVs
ZW1lbnQgPSBTVkdMb2NhdGFibGU6Om5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoZWxlbWVudCk7Cisg
ICAgYXV0byogc3RvcEF0RWxlbWVudCA9IFNWR0xvY2F0YWJsZTo6bmVhcmVzdFZpZXdwb3J0RWxl
bWVudChlbGVtZW50KTsKICAgICBBU1NFUlQoc3RvcEF0RWxlbWVudCk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAppbmRl
eCA3MTBkZWNlODE4ZmI0OTY4MjUyNjkwYWViMDhjMjg4MmZlMGZiNzI3Li4zMzdiOGQ4MGM2NWUw
YWFhNTQ0MTdhNTAwODJlNzQxNzdmNjU2NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoaHJlZigpKTsKIAogICAgICAgICAgICAgaWYgKHVybFswXSA9
PSAnIycpIHsKLSAgICAgICAgICAgICAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdHJlZVNj
b3BlKCkuZ2V0RWxlbWVudEJ5SWQodXJsLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDEpKTsKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRyZWVTY29wZSgpLmdl
dEVsZW1lbnRCeUlkKHVybC5zdWJzdHJpbmdTaGFyaW5nSW1wbCgxKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzPFNWR1NNSUxFbGVtZW50Pih0YXJnZXRFbGVtZW50KSkgewogICAgICAgICAgICAg
ICAgICAgICBkb3duY2FzdDxTVkdTTUlMRWxlbWVudD4oKnRhcmdldEVsZW1lbnQpLmJlZ2luQnlM
aW5rQWN0aXZhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICBldmVudC5zZXREZWZhdWx0SGFu
ZGxlZCgpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgIHRhcmdldCA9ICJfYmxhbmsi
OwogICAgICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIAotICAgICAgICAgICAg
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOworICAgICAgICAgICAgUmVmUHRyPEZy
YW1lPiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICAgICAgICAgIGlmICghZnJhbWUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnVy
bFNlbGVjdGVkKGRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsKSwgdGFyZ2V0LCAmZXZlbnQsIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVy
LCBkb2N1bWVudCgpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKaW5kZXggNWM4OWEwMWE3
ZWJhNjkzNjVkMTg2MGE2ZjBiZWYzMmYxZTc1M2IwMi4uOWM2ZGJlMmQ5NzE1NjJjMTg2MWRkNTAw
NDMzOTVjZjExMTcyN2QwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVu
dC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FsdEds
eXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKIGJvb2wgU1ZH
QWx0R2x5cGhFbGVtZW50OjpoYXNWYWxpZEdseXBoRWxlbWVudHMoVmVjdG9yPFN0cmluZz4mIGds
eXBoTmFtZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRhcmdldDsKLSAgICBhdXRvKiBlbGVtZW50
ID0gdGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoZ2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6Omhy
ZWZBdHRyKSwgZG9jdW1lbnQoKSwgJnRhcmdldCk7CisgICAgYXV0byBlbGVtZW50ID0gbWFrZVJl
ZlB0cih0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhnZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6
aHJlZkF0dHIpLCBkb2N1bWVudCgpLCAmdGFyZ2V0KSk7CiAKICAgICBpZiAoaXM8U1ZHR2x5cGhF
bGVtZW50PihlbGVtZW50KSkgewogICAgICAgICBnbHlwaE5hbWVzLmFwcGVuZCh0YXJnZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAppbmRleCA3YzZh
YmY0NTE4ODI5NGQ5N2ZmZDgzYzk2Y2ZiZGJiMDc1YjEyZjZjLi5iMmJhZWFlMWYyYzkxZWZjNjJk
NjhkNjY3YWJjYzRmZGJhYTc4MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmNwcApAQCAtNDYsOCArNDYsNyBAQCBTVkdBbmltYXRlRWxlbWVudEJhc2U6
On5TVkdBbmltYXRlRWxlbWVudEJhc2UoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlOjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKQogewotICAgIFNWR0VsZW1lbnQqIHRh
cmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7Ci0gICAgaWYgKCF0YXJnZXRFbGVt
ZW50KQorICAgIGlmICghdGhpcy0+dGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFVua25v
d24gJiYgIWhhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlKCk7CkBAIC04NSw3ICs4NCw3IEBAIEFu
aW1hdGVkUHJvcGVydHlUeXBlIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6ZGV0ZXJtaW5lQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwg
U1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHJlc3VsdEVsZW1l
bnQpOwotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50
KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRF
bGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKQEAg
LTExMSw3ICsxMTAsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZQogICAgICAgICBwZXJjZW50
YWdlID0gcGVyY2VudGFnZSA8IDAuNSA/IDAgOiAxOwogCiAgICAgLy8gVGFyZ2V0IGVsZW1lbnQg
bWlnaHQgaGF2ZSBjaGFuZ2VkLgotICAgIG1fYW5pbWF0b3ItPnNldENvbnRleHRFbGVtZW50KHRh
cmdldEVsZW1lbnQpOworICAgIG1fYW5pbWF0b3ItPnNldENvbnRleHRFbGVtZW50KHRhcmdldEVs
ZW1lbnQuZ2V0KCkpOwogCiAgICAgLy8gQmUgc3VyZSB0byBkZXRhY2ggbGlzdCB3cmFwcGVycyBi
ZWZvcmUgd2UgbW9kZml5IHRoZWlyIHVuZGVybHlpbmcgdmFsdWUuIElmIHdlJ2QgZG8KICAgICAv
LyBpZiBhZnRlciBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKCkgcmFuIHRoZSBjYWNoZWQgcG9pbnRl
cnMgaW4gdGhlIGxpc3QgcHJvcGVyeSB0ZWFyCkBAIC0xMzUsOCArMTM0LDcgQEAgYm9vbCBTVkdB
bmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3Qg
U3RyaW5nJiB0b0F0RW4KIAogYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZy
b21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9T
dHJpbmcpCiB7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVs
ZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQpCisgICAgaWYgKCF0aGlzLT50YXJnZXRF
bGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRldGVybWluZVByb3BlcnR5
VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7CkBAIC0xNDcsOCArMTQ1LDcgQEAgYm9v
bCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGMKIAogYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1
bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYnlTdHJpbmcpCiB7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRh
cmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQpCisgICAgaWYgKCF0aGlzLT50
YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChhbmltYXRp
b25Nb2RlKCkgPT0gQnlBbmltYXRpb24gJiYgIWlzQWRkaXRpdmUoKSkKQEAgLTE4OSwxMiArMTg2
LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSgpCiAg
ICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIGFuaW1hdG9yID0gZW5zdXJlQW5pbWF0b3IoKTsK
ICAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBhbmltYXRvci0+dHlwZSgpKTsK
IAotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7
CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVt
ZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gdGhpcy0+YXR0cmlidXRlTmFtZSgp
OwotICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gc2hvdWxkQXBwbHlBbmlt
YXRpb24odGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7CisgICAgU2hvdWxkQXBwbHlBbmlt
YXRpb24gc2hvdWxkQXBwbHkgPSBzaG91bGRBcHBseUFuaW1hdGlvbih0YXJnZXRFbGVtZW50Lmdl
dCgpLCBhdHRyaWJ1dGVOYW1lKTsKIAogICAgIGlmIChzaG91bGRBcHBseSA9PSBEb250QXBwbHlB
bmltYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIyMCw4ICsyMTcsOCBAQCB2b2lkIFNWR0Fu
aW1hdGVFbGVtZW50QmFzZTo6cmVzZXRBbmltYXRlZFR5cGUoKQogICAgIFN0cmluZyBiYXNlVmFs
dWU7CiAKICAgICBpZiAoc2hvdWxkQXBwbHkgPT0gQXBwbHlDU1NBbmltYXRpb24pIHsKLSAgICAg
ICAgQVNTRVJUKFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzVGFyZ2V0QXR0cmlidXRlQ1NTUHJvcGVy
dHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSkpOwotICAgICAgICBjb21wdXRlQ1NTUHJv
cGVydHlWYWx1ZSh0YXJnZXRFbGVtZW50LCBjc3NQcm9wZXJ0eUlEKGF0dHJpYnV0ZU5hbWUubG9j
YWxOYW1lKCkpLCBiYXNlVmFsdWUpOworICAgICAgICBBU1NFUlQoU1ZHQW5pbWF0aW9uRWxlbWVu
dDo6aXNUYXJnZXRBdHRyaWJ1dGVDU1NQcm9wZXJ0eSh0YXJnZXRFbGVtZW50LmdldCgpLCBhdHRy
aWJ1dGVOYW1lKSk7CisgICAgICAgIGNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKHRhcmdldEVsZW1l
bnQuZ2V0KCksIGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSksIGJhc2VW
YWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKQEAgLTMzOSw3ICszMzYs
NyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQog
ICAgIGlmICghbV9hbmltYXRlZFR5cGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CisgICAgUmVmUHRyPFNW
R0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9IHRoaXMtPmF0dHJpYnV0ZU5hbWUoKTsK
IAogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKQEAgLTM1Miw3ICszNDksNyBAQCB2b2lkIFNW
R0FuaW1hdGVFbGVtZW50QmFzZTo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgIH0KIAogICAg
IC8vIFdlIGRvIHVwZGF0ZSB0aGUgc3R5bGUgYW5kIHRoZSBhbmltYXRpb24gcHJvcGVydHkgaW5k
ZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KLSAgICBTaG91bGRBcHBseUFuaW1hdGlvbiBzaG91bGRB
cHBseSA9IHNob3VsZEFwcGx5QW5pbWF0aW9uKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUp
OworICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gc2hvdWxkQXBwbHlBbmlt
YXRpb24odGFyZ2V0RWxlbWVudC5nZXQoKSwgYXR0cmlidXRlTmFtZSk7CiAgICAgaWYgKHNob3Vs
ZEFwcGx5ID09IEFwcGx5WE1MYW5kQ1NTQW5pbWF0aW9uKQogICAgICAgICBhcHBseUNTU1Byb3Bl
cnR5VG9UYXJnZXRBbmRJbnN0YW5jZXMoKnRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIG1f
YW5pbWF0ZWRUeXBlLT52YWx1ZUFzU3RyaW5nKCkpOwogCkBAIC00MDYsOCArNDAzLDcgQEAgYm9v
bCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmlzQWRkaXRpdmUoKSBjb25zdAogZmxvYXQgU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CiAgICAgLy8gRklYTUU6IEEgcmV0dXJuIHZh
bHVlIG9mIGZsb2F0IGlzIG5vdCBlbm91Z2ggdG8gc3VwcG9ydCBwYWNlZCBhbmltYXRpb25zIG9u
IGxpc3RzLgotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVt
ZW50KCk7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50KQorICAgIGlmICghdGhpcy0+dGFyZ2V0RWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICByZXR1cm4gZW5zdXJlQW5pbWF0b3Io
KS0+Y2FsY3VsYXRlRGlzdGFuY2UoZnJvbVN0cmluZywgdG9TdHJpbmcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggMGM3NDE2ZGRkNTk5
MGQzZGM1NjAwMjRjZGQzZGVhNDRmZmU4NTViYS4uMWJiMDc0NGYxMjM3MTVhNjBhYmQzOWQ5NGU5
NzMyZDFjNjg4YmM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFJlZjxTVkdBbmltYXRlTW90aW9uRWxlbWVu
dD4gU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lCiAK
IGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpCiB7
Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsK
KyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1l
bnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnVwZGF0ZUFu
aW1hdGlvblBhdGgoKQogICAgIGJvb2wgZm91bmRNUGF0aCA9IGZhbHNlOwogCiAgICAgZm9yIChh
dXRvJiBtUGF0aCA6IGNoaWxkcmVuT2ZUeXBlPFNWR01QYXRoRWxlbWVudD4oKnRoaXMpKSB7Ci0g
ICAgICAgIFNWR1BhdGhFbGVtZW50KiBwYXRoRWxlbWVudCA9IG1QYXRoLnBhdGhFbGVtZW50KCk7
CisgICAgICAgIGF1dG8gcGF0aEVsZW1lbnQgPSBtUGF0aC5wYXRoRWxlbWVudCgpOwogICAgICAg
ICBpZiAocGF0aEVsZW1lbnQpIHsKLSAgICAgICAgICAgIG1fYW5pbWF0aW9uUGF0aCA9IHBhdGhG
cm9tR3JhcGhpY3NFbGVtZW50KHBhdGhFbGVtZW50KTsKKyAgICAgICAgICAgIG1fYW5pbWF0aW9u
UGF0aCA9IHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHBhdGhFbGVtZW50LmdldCgpKTsKICAgICAg
ICAgICAgIGZvdW5kTVBhdGggPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldEFu
aW1hdGVkVHlwZSgpCiB7CiAgICAgaWYgKCFoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRF
bGVtZW50KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50
YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKEFmZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gdGFyZ2V0RWxlbWVudC0+c3Vw
cGxlbWVudGFsVHJhbnNmb3JtKCkpCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6YnVpbGRUcmFuc2Zvcm1Gb3JQcm9ncmVzcyhBZmZpbmVUcmFuc2Zvcm0q
IHRyYW5zZm8KIAogdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVs
ZW1lbnQqKQogewotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRF
bGVtZW50KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50
YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm47
CiAgICAgQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zvcm0gPSB0YXJnZXRFbGVtZW50LT5zdXBwbGVt
ZW50YWxUcmFuc2Zvcm0oKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkCiB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgp
CiB7CiAgICAgLy8gV2UgYWNjdW11bGF0ZSB0byB0aGUgdGFyZ2V0IGVsZW1lbnQgdHJhbnNmb3Jt
IGxpc3Qgc28gdGhlcmUgaXMgbm90IG11Y2ggdG8gZG8gaGVyZS4KLSAgICBTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOworICAgIFJlZlB0cjxTVkdFbGVt
ZW50PiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICghdGFy
Z2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAppbmRleCA3MmViNzcyMGNlNWE1ZGNjOTAy
M2QyY2M0ODdmYTBjY2VkODMwNjkzLi44ZGY4NTlkOTlmNmQ1YmMxZjFkYjIwMDU5MmExNjc0ZGQ3
NjU4MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudC5jcHAKQEAgLTQyLDggKzQyLDcgQEAgUmVmPFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50PiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmkKIAog
Ym9vbCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkK
IHsKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgp
OwotICAgIGlmICghdGFyZ2V0RWxlbWVudCkKKyAgICBpZiAoIXRoaXMtPnRhcmdldEVsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGF0dHJpYnV0ZVR5cGUoKSA9PSBB
dHRyaWJ1dGVUeXBlOjpDU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCmlu
ZGV4IDI5ZTI0OWJjODFhZDIxNWY2NDZmYzEyOWE0NTcxNjdmZTA5YmI3NjcuLmEzM2ExNDlkNzBi
ZGZkNmFlYzgxZGNhZWZhNmE2MGY1Yjk3Yjg3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBhdGguY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0
b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlCiAK
IHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR1BhdGhC
eXRlU3RyZWFtKiBieXRlU3RyZWFtKQogewotICAgIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYqIHByb3BlcnR5ID0gY2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5cGU8
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4oYW5pbWF0ZWRUeXBlc1swXS5w
cm9wZXJ0aWVzWzBdLmdldCgpKTsKKyAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZj4gcHJvcGVydHkgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlw
ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihhbmltYXRlZFR5cGVzWzBd
LnByb3BlcnRpZXNbMF0uZ2V0KCkpOwogICAgIGNvbnN0IGF1dG8mIGJhc2VWYWx1ZSA9IHByb3Bl
cnR5LT5jdXJyZW50QmFzZVZhbHVlKCk7CiAKICAgICBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJv
bVNWR1BhdGhTZWdMaXN0VmFsdWVzKGJhc2VWYWx1ZSwgKmJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBh
cnNpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCmluZGV4
IDA1YTkzY2JlOTg3NDM5NTM0N2EwM2YyMTNlZGI4MjFlZGYxN2I1MmYuLmQxMjBmOTU3ODU5MmM5
NjEyNWVlNjliZDI0ZGFmNGJmZGNhNTZmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmFkanVzdEZvckluaGVyaXRhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNv
bnN0CiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCB3YW50IHRvIHdvcmsgd2l0aCB0aGUg
dmFsdWUgdHlwZSBkaXJlY3RseSB0byBhdm9pZCB0aGUgU3RyaW5nIHBhcnNpbmcuCiAgICAgQVNT
RVJUKHRhcmdldEVsZW1lbnQpOwogCi0gICAgRWxlbWVudCogcGFyZW50ID0gdGFyZ2V0RWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpOworICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQgPSB0YXJnZXRF
bGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNT
VkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjYyLDEzICs2NjIsMTMgQEAgc3Rh
dGljIGJvb2wgaW5oZXJpdHNGcm9tUHJvcGVydHkoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUKIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpkZXRlcm1p
bmVQcm9wZXJ0eVZhbHVlVHlwZXMoY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRv
KQogewotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50
KCk7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRF
bGVtZW50KCk7CiAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwogCiAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9IHRoaXMtPmF0dHJpYnV0ZU5hbWUoKTsKLSAgICBpZiAo
aW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgZnJvbSkp
CisgICAgaWYgKGluaGVyaXRzRnJvbVByb3BlcnR5KHRhcmdldEVsZW1lbnQuZ2V0KCksIGF0dHJp
YnV0ZU5hbWUsIGZyb20pKQogICAgICAgICBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZSA9IEluaGVy
aXRWYWx1ZTsKLSAgICBpZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0
cmlidXRlTmFtZSwgdG8pKQorICAgIGlmIChpbmhlcml0c0Zyb21Qcm9wZXJ0eSh0YXJnZXRFbGVt
ZW50LmdldCgpLCBhdHRyaWJ1dGVOYW1lLCB0bykpCiAgICAgICAgIG1fdG9Qcm9wZXJ0eVZhbHVl
VHlwZSA9IEluaGVyaXRWYWx1ZTsKIH0KIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cmVzZXRB
bmltYXRlZFByb3BlcnR5VHlwZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAppbmRleCAz
OTFlMDQ5NGZkYWQyODI5ZjJhODc2MjhiODhkNTAxNDMyNjdmZjRjLi4yYzk1MDVjMTM4MzRlNGMx
NzlkZmE1NGMzYTcxZmU0Y2ZiMjQ0YmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAgU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCiB7CiB9CiAKLVNWR1NWR0VsZW1lbnQqIFNWR0RvY3VtZW50Ojpyb290
RWxlbWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8U1ZHU1ZHRWxlbWVudD4g
U1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICBhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFp
czxTVkdTVkdFbGVtZW50PihlbGVtZW50KSkKQEAgLTQyLDcgKzQyLDcgQEAgU1ZHU1ZHRWxlbWVu
dCogU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIAog
Ym9vbCBTVkdEb2N1bWVudDo6em9vbUFuZFBhbkVuYWJsZWQoKSBjb25zdAogewotICAgIGF1dG8q
IGVsZW1lbnQgPSByb290RWxlbWVudCgqdGhpcyk7CisgICAgYXV0byBlbGVtZW50ID0gcm9vdEVs
ZW1lbnQoKnRoaXMpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiAoZWxlbWVudC0+dXNlQ3VycmVudFZpZXcoKSA/IGVsZW1lbnQtPmN1cnJlbnRW
aWV3KCkuem9vbUFuZFBhbigpIDogZWxlbWVudC0+em9vbUFuZFBhbigpKSA9PSBTVkdab29tQW5k
UGFuTWFnbmlmeTsKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBTVkdEb2N1bWVudDo6em9vbUFuZFBh
bkVuYWJsZWQoKSBjb25zdAogCiB2b2lkIFNWR0RvY3VtZW50OjpzdGFydFBhbihjb25zdCBGbG9h
dFBvaW50JiBzdGFydCkKIHsKLSAgICBhdXRvKiBlbGVtZW50ID0gcm9vdEVsZW1lbnQoKnRoaXMp
OworICAgIGF1dG8gZWxlbWVudCA9IHJvb3RFbGVtZW50KCp0aGlzKTsKICAgICBpZiAoIWVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Bhbm5pbmdPZmZzZXQgPSBzdGFydCAtIGVsZW1l
bnQtPmN1cnJlbnRUcmFuc2xhdGVWYWx1ZSgpOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFNWR0Rv
Y3VtZW50OjpzdGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFydCkKIAogdm9pZCBTVkdEb2N1
bWVudDo6dXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdAogewotICAg
IGF1dG8qIGVsZW1lbnQgPSByb290RWxlbWVudCgqdGhpcyk7CisgICAgYXV0byBlbGVtZW50ID0g
cm9vdEVsZW1lbnQoKnRoaXMpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
ICAgIGVsZW1lbnQtPnNldEN1cnJlbnRUcmFuc2xhdGUocG9zaXRpb24gLSBtX3Bhbm5pbmdPZmZz
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRleCAyMzNmMTFiNzQzYzM1M2Y1NTQ3NGYx
ZWI5MWU2YjFmNTYyYWRjZDg4Li5lZTk1M2ZjYzdlNzE4ZTYwZWI2MTk1Yzc3NGZjOGQ2OTIzYmNh
OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBT
VkdEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBYTUxEb2N1bWVudCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiwgY29uc3QgVVJMJik7CiAKLSAgICBz
dGF0aWMgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPFNWR1NWR0VsZW1lbnQ+IHJvb3RFbGVtZW50KGNvbnN0IERvY3VtZW50Jik7
CiAKICAgICBib29sIHpvb21BbmRQYW5FbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzdGFydFBh
bihjb25zdCBGbG9hdFBvaW50JiBzdGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDc1OGEwZGE5NWZkZDJjMjhkZDFkNjFjNTI0ZDBkNmJi
MWJiZGNjOWIuLjY1ZTI0NmQ5Nzc4OGE5MmMxNDYzYmQxNWE4MTFjNzE5YTFhMTg5ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0yNjIsNyAr
MjYyLDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6Om1hcmtQZW5kaW5nUmVzb3VyY2Vz
Rm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmIGkKICAgICAgICAgbV9wZW5kaW5nUmVzb3Vy
Y2VzRm9yUmVtb3ZhbC5hZGQoaWQsIFdURk1vdmUoZXhpc3RpbmcpKTsKIH0KIAotRWxlbWVudCog
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNG
b3JSZW1vdmFsTWFwKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitSZWZQdHI8RWxlbWVudD4gU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JS
ZW1vdmFsTWFwKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiB7CiAgICAgaWYgKGlkLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzIsNyArMjcyLDcgQEAgRWxlbWVudCogU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1v
dmFsTWFwKGMKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBhdXRvIGZpcnN0RWxlbWVudCA9IHJl
c291cmNlU2V0LT5iZWdpbigpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAqZmlyc3RFbGVtZW50
OworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gKmZpcnN0RWxlbWVudDsKIAogICAgIHJl
c291cmNlU2V0LT5yZW1vdmUoZmlyc3RFbGVtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5oCmluZGV4IDZhNTI3NzA0OWM1YjI1NTAyNWY5OWE3MmUxOWYy
Y2UwODFiZDFkZWIuLmVmNzJlOTc2NWVjNjdjMTgyM2IwYzNkZDNmZDU3NDM2NWU3OTUwZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKQEAgLTEwNCw3ICsx
MDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJl
IHVzZWQgZm9yIHNjaGVkdWxpbmcgYSBwZW5kaW5nIHJlc291cmNlIHRvIGJlIHJlbW92ZWQuCiAg
ICAgdm9pZCBtYXJrUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5n
Jik7Ci0gICAgRWxlbWVudCogcmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9yUmVt
b3ZhbE1hcChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gcmVtb3Zl
RWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbE1hcChjb25zdCBBdG9taWNTdHJp
bmcmKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzRWxlbWVudFdpdGhQZW5kaW5nUmVzb3VyY2Vz
KEVsZW1lbnQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA5ODk3MmM1
ZDgyNDRjMmE0YzAwZDI4YThjOGNkZTEyMGNjMzg3NWYyLi4xNjEwNzZkMzc1OGNkNDIxMzhhMTA3
MDU5ZGRkYjVkMzU3OWUxMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0yODgs
NyArMjg4LDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQogICAgIGlmIChtX3N2Z1JhcmVE
YXRhKSB7CiAgICAgICAgIGZvciAoU1ZHRWxlbWVudCogaW5zdGFuY2UgOiBtX3N2Z1JhcmVEYXRh
LT5pbnN0YW5jZXMoKSkKICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N2Z1JhcmVEYXRhLT5zZXRD
b3JyZXNwb25kaW5nRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgaWYgKFNWR0VsZW1lbnQqIGNv
cnJlc3BvbmRpbmdFbGVtZW50ID0gbV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQo
KSkKKyAgICAgICAgaWYgKFJlZlB0cjxTVkdFbGVtZW50PiBjb3JyZXNwb25kaW5nRWxlbWVudCA9
IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCiAgICAgICAgICAgICBjb3Jy
ZXNwb25kaW5nRWxlbWVudC0+bV9zdmdSYXJlRGF0YS0+aW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMp
OwogCiAgICAgICAgIG1fc3ZnUmFyZURhdGEgPSBudWxscHRyOwpAQCAtNDMwLDcgKzQzMCw3IEBA
IFNWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6OmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gbV9zdmdSYXJlRGF0YSA/IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVt
ZW50KCkgOiBudWxscHRyOwogfQogCi1TVkdVc2VFbGVtZW50KiBTVkdFbGVtZW50Ojpjb3JyZXNw
b25kaW5nVXNlRWxlbWVudCgpIGNvbnN0CitSZWZQdHI8U1ZHVXNlRWxlbWVudD4gU1ZHRWxlbWVu
dDo6Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSBjb25zdAogewogICAgIGF1dG8qIHJvb3QgPSBj
b250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIGlmICghcm9vdCkKQEAgLTQ0Niw3ICs0NDYsNyBA
QCBTVkdVc2VFbGVtZW50KiBTVkdFbGVtZW50Ojpjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNv
bnN0CiB2b2lkIFNWR0VsZW1lbnQ6OnNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQq
IGNvcnJlc3BvbmRpbmdFbGVtZW50KQogewogICAgIGlmIChtX3N2Z1JhcmVEYXRhKSB7Ci0gICAg
ICAgIGlmIChTVkdFbGVtZW50KiBvbGRDb3JyZXNwb25kaW5nRWxlbWVudCA9IG1fc3ZnUmFyZURh
dGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCisgICAgICAgIGlmIChSZWZQdHI8U1ZHRWxlbWVu
dD4gb2xkQ29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtX3N2Z1JhcmVEYXRhLT5jb3JyZXNwb25kaW5n
RWxlbWVudCgpKQogICAgICAgICAgICAgb2xkQ29ycmVzcG9uZGluZ0VsZW1lbnQtPm1fc3ZnUmFy
ZURhdGEtPmluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKICAgICB9CiAgICAgaWYgKG1fc3ZnUmFy
ZURhdGEgfHwgY29ycmVzcG9uZGluZ0VsZW1lbnQpCkBAIC03MjksNyArNzI5LDcgQEAgdm9pZCBT
VkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KQogc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKikKIHsKICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBpbiBhIDx1c2U+IHRyZWUgd2UgZ2V0
IHRoZSBzdHlsZSBmcm9tIHRoZSBkZWZpbml0aW9uIHRyZWUuCi0gICAgaWYgKGF1dG8qIHN0eWxl
RWxlbWVudCA9IHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCisgICAgaWYgKGF1dG8gc3R5
bGVFbGVtZW50ID0gbWFrZVJlZlB0cih0aGlzLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKSkKICAg
ICAgICAgcmV0dXJuIHN0eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAK
ICAgICByZXR1cm4gcmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CkBAIC03NTksNyArNzU5LDcg
QEAgY29uc3QgUmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQg
cHNldWRvRWxlbWVudFNwZWNpZmllcikKICAgICAgICAgcmV0dXJuIEVsZW1lbnQ6OmNvbXB1dGVk
U3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUgPSBudWxscHRyOwotICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRP
clNoYWRvd0hvc3RFbGVtZW50KCkpIHsKKyAgICBpZiAoUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCA9
IHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoYXV0byByZW5kZXJl
ciA9IHBhcmVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHBhcmVudFN0eWxlID0gJnJlbmRl
cmVyLT5zdHlsZSgpOwogICAgIH0KQEAgLTEwMDMsMTEgKzEwMDMsMTEgQEAgdm9pZCBTVkdFbGVt
ZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpCiAgICAgZXh0ZW5zaW9ucy5tYXJr
UGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwocmVzb3VyY2VJZCk7CiAKICAgICAvLyBSZWJ1aWxk
IHBlbmRpbmcgcmVzb3VyY2VzIGZvciBlYWNoIGNsaWVudCBvZiBhIHBlbmRpbmcgcmVzb3VyY2Ug
dGhhdCBpcyBiZWluZyByZW1vdmVkLgotICAgIHdoaWxlIChFbGVtZW50KiBjbGllbnRFbGVtZW50
ID0gZXh0ZW5zaW9ucy5yZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFs
TWFwKHJlc291cmNlSWQpKSB7CisgICAgd2hpbGUgKGF1dG8gY2xpZW50RWxlbWVudCA9IGV4dGVu
c2lvbnMucmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbE1hcChyZXNv
dXJjZUlkKSkgewogICAgICAgICBBU1NFUlQoY2xpZW50RWxlbWVudC0+aGFzUGVuZGluZ1Jlc291
cmNlcygpKTsKICAgICAgICAgaWYgKGNsaWVudEVsZW1lbnQtPmhhc1BlbmRpbmdSZXNvdXJjZXMo
KSkgewogICAgICAgICAgICAgY2xpZW50RWxlbWVudC0+YnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsK
LSAgICAgICAgICAgIGV4dGVuc2lvbnMuY2xlYXJIYXNQZW5kaW5nUmVzb3VyY2VzSWZQb3NzaWJs
ZShjbGllbnRFbGVtZW50KTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuY2xlYXJIYXNQZW5kaW5n
UmVzb3VyY2VzSWZQb3NzaWJsZShjbGllbnRFbGVtZW50LmdldCgpKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6dXBkYXRlUmVsYXRp
dmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0VsCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIEZpbmQgZmlyc3Qgc3R5bGVkIHBhcmVudCBub2RlLCBhbmQg
bm90aWZ5IGl0IHRoYXQgd2UndmUgY2hhbmdlZCBvdXIgcmVsYXRpdmUgbGVuZ3RoIHN0YXRlLgot
ICAgIENvbnRhaW5lck5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7CisgICAgUmVmUHRyPENvbnRh
aW5lck5vZGU+IG5vZGUgPSBwYXJlbnROb2RlKCk7CiAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAg
ICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEy
OSw4ICsxMTI5LDggQEAgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlSW5zdGFuY2VzKCkKIAog
ICAgIGF1dG8mIGluc3RhbmNlcyA9IHRoaXMtPmluc3RhbmNlcygpOwogICAgIHdoaWxlICghaW5z
dGFuY2VzLmlzRW1wdHkoKSkgewotICAgICAgICBTVkdFbGVtZW50KiBpbnN0YW5jZSA9ICppbnN0
YW5jZXMuYmVnaW4oKTsKLSAgICAgICAgaWYgKFNWR1VzZUVsZW1lbnQqIHVzZUVsZW1lbnQgPSBp
bnN0YW5jZS0+Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSkKKyAgICAgICAgUmVmUHRyPFNWR0Vs
ZW1lbnQ+IGluc3RhbmNlID0gKmluc3RhbmNlcy5iZWdpbigpOworICAgICAgICBpZiAoYXV0byB1
c2VFbGVtZW50ID0gaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkpCiAgICAgICAg
ICAgICB1c2VFbGVtZW50LT5pbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAgICAgICBpbnN0YW5j
ZS0+c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQobnVsbHB0cik7CiAgICAgfSB3aGlsZSAoIWluc3Rh
bmNlcy5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggYmJkY2M1ZjM1MzI4
YmZmY2Q2Nzk0YzBiMGZkNDk1MjAyNWYxYzZmMS4uZjg4MmQxNDA3YTdmMThmYjJjZTQ0N2ExZjUy
YWEzODM2MGMyNjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC05OSw3ICs5OSw3IEBA
IHB1YmxpYzoKICAgICBib29sIGdldEJvdW5kaW5nQm94KEZsb2F0UmVjdCYsIFNWR0xvY2F0YWJs
ZTo6U3R5bGVVcGRhdGVTdHJhdGVneSA9IFNWR0xvY2F0YWJsZTo6QWxsb3dTdHlsZVVwZGF0ZSk7
CiAKICAgICBTVkdFbGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVudCgpIGNvbnN0OwotICAgIFNW
R1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkgY29uc3Q7CisgICAgUmVmUHRy
PFNWR1VzZUVsZW1lbnQ+IGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkgY29uc3Q7CiAKICAgICB2
b2lkIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggZTZiMmE4OTk3MjhjZDAyYTMwM2E5NDE1
YzM0YWVmOWQ2ZGM2ZjM5ZC4uNTNjMDg4OGZhYzkzZjgyNTg4N2U1Njk2YTRlYjUxYmQ1MDgyODkx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC0xMDUsOCAr
MTA1LDggQEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVC
bGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRl
ciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+
Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBmaWx0ZXJC
dWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDg0MWY0ZmFhYTMxYzQ1ZTRkMTQ4MDY2YjdlZDU2
NWVmYjFkNTQ2YTIuLjg5MTEwYTk5NjZmNjlmMDg5YWFhNDYyY2FkNzM4YjY2ZDViNmQwZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAt
MTA4LDcgKzEwOCw3IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQx
ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0
MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAppbmRleCA1YzFkMjUwM2NkYmI5YmIw
Zjg0NDk1NjEzMzQzMzcwZTczN2Y5MzA0Li5hYzJkNjQ0OWUyZDc2MWNkM2RmNjk2Nzk1NmIyMDQ3
NDA1YThjODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY28KIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVy
KQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4
IGNkM2Q1YzYxYjM3OTVjOTQxOThlM2FmYjY1MWM4NzY3YzJhNzA5MGYuLmM1MTJhNTkzNjYwMTMy
NDA2ZmFjNGQ0OGNjNDU3MjcxYzFmNGZjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xNDAsOCArMTQwLDggQEAgdm9pZCBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0g
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDIgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMigpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwCmluZGV4IDljZjI4YWI3NTIzMTJjNmQ3ZTMxM2Q4YzA4MmFmZGQ2NzUy
OTQzODkuLmJjMTdmN2U5MmVkNzQ4N2M2MjcwMWY2ZmRmMTJiOGRhZTI0ZGFlNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAt
MjM0LDcgKzIzNCw3IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hCiAKIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBhdXRvKiBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBjYTBmNjhmYTlhYjk2Zjk2YWM2M2JkNmVm
MTViMjM2MmNhZmIwN2JiLi4zYzFlNmEwOGRlZDdkOTg3ZmMxMzVjNTA1NmIxYzAwMzVlOTBkNDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZFTGlnaHRFCiAKIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmls
dGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
KyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwog
CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCBlOTg5
YjljZTMxZGY0NDY2YjMxZTI3ZTE2OTI2NTQ0MTdiM2ViNWZlLi4xNWJjYjNiNzYwODJjYzM0NThi
NGMzMzk1ZjE1NmZjYmIxOWExMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtMTIzLDggKzEyMyw4IEBAIHZvaWQgU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVy
JiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDIgPSBmaWx0ZXJCdWls
ZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5w
dXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCAzMTkzNWUxNzBmM2MxNzA1ZmUyMTk0Zjk1Mzlm
MTQ3NDM1YzI2ZGQwLi5lZjVmZGNkZmZiYmYwYWZmOTBiZmUxOGE5Y2IzZWZhY2JkMzMwMThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0x
MzMsNyArMTMzLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBjb25zdCBDb2xvciYg
Y29sb3IgPSBzdmdTdHlsZS5mbG9vZENvbG9yKCk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IHN2Z1N0
eWxlLmZsb29kT3BhY2l0eSgpOwogCi0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJC
dWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIGlmICghaW5wdXQxKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcAppbmRleCA3YjIxZGU4MzZkZjEwOTc2YWY2MmUzM2ViNDg0MjcxM2ExNTA4
ZWNkLi5iMjJmZjQ5OTRmZTA4ZjZkY2ZjMzExNjQwYjY3M2NiOGQ0N2ZmMjUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAKaW5kZXggNmY5YTI3MTBiM2U0NTNjODkyZDExNmUzNDMxYjBjMTIzNmI0ZGExNC4uZGQ5
Mjk3ODAyZTk5N2ZhZTg1NTVmMTE0YzU2NzdjNjg1MGE2MThkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBTVkdGRUlt
YWdlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBTdHJpbmcgaWQ7Ci0gICAgRWxlbWVudCogdGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJn
ZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRvY3VtZW50KCksICZpZCk7CisgICAgUmVm
UHRyPEVsZW1lbnQ+IHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21J
UklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQpOwogICAgIGlmICghdGFyZ2V0KSB7CiAg
ICAgICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXF1ZXN0SW1hZ2VSZXNvdXJj
ZSgpOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVu
ZGluZ1Jlc291cmNlKCkKICAgICB9IGVsc2UgaWYgKHRhcmdldC0+aXNTVkdFbGVtZW50KCkpIHsK
ICAgICAgICAgLy8gUmVnaXN0ZXIgdXMgd2l0aCB0aGUgdGFyZ2V0IGluIHRoZSBkZXBlbmRlbmNp
ZXMgbWFwLiBBbnkgY2hhbmdlIG9mIGhyZWZFbGVtZW50CiAgICAgICAgIC8vIHRoYXQgbGVhZHMg
dG8gcmVsYXlvdXQvcmVwYWludGluZyBub3cgaW5mb3JtcyB1cywgc28gd2UgY2FuIHJlYWN0IHRv
IGl0LgotICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRFbGVtZW50
UmVmZXJlbmNpbmdUYXJnZXQodGhpcywgZG93bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0KSk7Cisg
ICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZEVsZW1lbnRSZWZlcmVu
Y2luZ1RhcmdldCh0aGlzLCBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQuZ2V0KCkpKTsKICAg
ICB9CiAKICAgICBpbnZhbGlkYXRlKCk7CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBTVkdGRUlt
YWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQogICAgIGlmICghaXND
b25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRWxlbWVudCogcGFyZW50ID0gcGFy
ZW50RWxlbWVudCgpOworICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50
KCk7CiAKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpm
aWx0ZXJUYWcpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmNwcAppbmRleCAzNmY3ZjA1OGUwMWNjMDFjNjgzYzRkMDA0ODQzZGEzMDI0NjY3NmNi
Li42Mjg1YmY2OWM0M2ViYWVkNTNhZmZjMWI4MWI4ODY2ZWFiZjViY2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgU1ZHRkVMaWdo
dEVsZW1lbnQqIFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KGNvbnN0IFNWR0Vs
ZW1lbnQqIHN2Z0VsZW0KIAogUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRUxpZ2h0RWxlbWVudDo6
ZmluZExpZ2h0U291cmNlKGNvbnN0IFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQpCiB7Ci0gICAgU1ZH
RkVMaWdodEVsZW1lbnQqIGxpZ2h0Tm9kZSA9IGZpbmRMaWdodEVsZW1lbnQoc3ZnRWxlbWVudCk7
CisgICAgUmVmUHRyPFNWR0ZFTGlnaHRFbGVtZW50PiBsaWdodE5vZGUgPSBmaW5kTGlnaHRFbGVt
ZW50KHN2Z0VsZW1lbnQpOwogICAgIGlmICghbGlnaHROb2RlKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gbGlnaHROb2RlLT5saWdodFNvdXJjZSgpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2lu
dHNBdFhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6bGlt
aXRpbmdDb25lQW5nbGVBdHRyKSB7CiAKLSAgICAgICAgYXV0byogcGFyZW50ID0gcGFyZW50RWxl
bWVudCgpOworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50RWxlbWVudCgp
KTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE3NSw3
ICsxNzUsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKIAogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hh
bmdlU291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBwYXJlbnROb2RlKCk7CisgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9
IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKaW5kZXggNDMzYzc0NWU3ZDkzOGI1ZGMwYjYxZTdh
ZGE1NTU3NTQyODc5MmVlYi4uODY3ZjkzYjU1M2E5M2Y2MzZhNDM4NTZhZDIzMmVjMmU0YjZmNDk1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCkBAIC00NywxMCAr
NDcsMTAgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3Im
IG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKIAogICAgIGZvciAoYXV0byYg
bWVyZ2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PigqdGhpcykp
IHsKLSAgICAgICAgRmlsdGVyRWZmZWN0KiBtZXJnZUVmZmVjdCA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgpKTsKKyAgICAgICAgYXV0byBtZXJnZUVmZmVjdCA9
IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgpKTsKICAgICAgICAg
aWYgKCFtZXJnZUVmZmVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBt
ZXJnZUlucHV0cy5hcHBlbmQobWVyZ2VFZmZlY3QpOworICAgICAgICBtZXJnZUlucHV0cy5hcHBl
bmQoV1RGTW92ZShtZXJnZUVmZmVjdCkpOwogICAgIH0KIAogICAgIGlmIChtZXJnZUlucHV0cy5p
c0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5j
cHAKaW5kZXggMzM3MGUxODU1MmZmZDA5MjRlNGE3ZTk5M2FkODc0MWYwMDliNTZmMi4uNjQ2OTll
YzlmNDE1NDI0MWI4NjIxMmFhMGU2ZTc4NGZkN2FhODllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQg
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBm
aWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwogICAgIGZsb2F0IHhSYWRpdXMgPSByYWRpdXNYKCk7CiAgICAgZmxv
YXQgeVJhZGl1cyA9IHJhZGl1c1koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRF
bGVtZW50LmNwcAppbmRleCA2YWI2N2FmYWM2NjY3MTVlZmY2ZDAyMTdhMTBhMmJlZTlmYTkwMTE0
Li41ZDRiYTk1Y2MwNjM0ODFlMThjNDU3NTk1ZDhhOGY1YmUyNTdiNjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIFNW
R0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsK
LSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQo
aW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAK
aW5kZXggMTcwNDM3ZjMyZmIzM2I0ZmRlZDYzZTRjZjljZmMxNDhkOWNmZDFkZS4uZGQ5OGQ4YWFk
NjlhMTYzMGYzMGU2MGJiMDAzZjRjZDFlOGEzZjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTgzLDcgKzE4Myw3
IEBAIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bGlnaHRFbGVtZW50QXR0cmli
dXRlQ2hhbmdlZChjb25zdCBTVkdGRUxpZ2h0CiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1
aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmls
dGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQxKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNw
cAppbmRleCA3NTdlNTU0ZGQ1NTdmNjIxZDM2Y2E1OWU0Y2U5ZTJiZDRjZGViYmQxLi40M2M3NWUx
Y2QxYzI0ZmE4NTcyOGViZmYwNWY3Y2IxZGQ2ZDNkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAog
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0
KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRv
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYg
KCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApp
bmRleCA3N2EzYTk3MWE2YzcyZjBiZjlmMWM4OGEzYzMzZjcwODVmYWFiZTdhLi45ZDIyNzc5MDkw
NzU2MmE5YzFlY2FkYzA4OTc1MTM1NjkzNDFmMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApA
QCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChT
VkdFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOworICAg
IFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnROb2RlKCk7CiAK
ICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VFbGVtZW50LmNwcAppbmRleCA3ZGJlMDAwYzMzNzUwOGE3NGM0MjM5N2FhMzU4OTYx
YmI0NmQxNzMzLi5mNTFkMzgzZmI4MmM1ZWIxMjA1ZWE0NWFmODg5ZTM3M2NlZWVhMmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtMjYzLDcgKzI2Myw3
IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2UoKQogCiAgICAgICAg
IHVuc2lnbmVkIHNyY0xlbmd0aCA9IHNyY0xpc3QgPyBzcmNMaXN0LT5sZW5ndGgoKSA6IDA7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNMZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgaWYgKENTU0ZvbnRGYWNlU3JjVmFsdWUqIGl0ZW0gPSBkb3duY2FzdDxDU1NGb250RmFj
ZVNyY1ZhbHVlPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKSkKKyAgICAgICAg
ICAgIGlmIChSZWZQdHI8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gaXRlbSA9IGRvd25jYXN0PENTU0Zv
bnRGYWNlU3JjVmFsdWU+KHNyY0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpKQogICAg
ICAgICAgICAgICAgIGl0ZW0tPnNldFNWR0ZvbnRGYWNlRWxlbWVudCh0aGlzKTsKICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1h
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVu
dC5jcHAKaW5kZXggNTkxNjA2NTMyZjVmZjAwODdmZWQ5NzJiNzYzNjljNWQ0ZjBiNTQwZi4uZjlh
ZGQzY2EyMjU1NzIwOGY3ZGNkYTg4NzBhZmEzYjlmMzgzZDlkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
dm9pZCBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYgY2hhbmdlKQogICAgIGlmICghcGFyZW50Tm9kZSgpIHx8ICFwYXJlbnROb2RlKCkt
Pmhhc1RhZ05hbWUoZm9udF9mYWNlX3VyaVRhZykpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKS0+cGFyZW50Tm9kZSgpOwor
ICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKS0+cGFyZW50
Tm9kZSgpOwogICAgIGlmICghYW5jZXN0b3IgfHwgIWFuY2VzdG9yLT5oYXNUYWdOYW1lKGZvbnRf
ZmFjZV9zcmNUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IDQxNDlmNjY4YmU0YzY0OWM4NDhkMjkw
NmFkMjQwOTNlZTI4MDA0NjguLmQzMDQzNTE2ZGJiY2I3MGU0YTU1ZThkNmM3Yzc2NjJkODg4MGIx
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoIXBhcmVudE5vZGUoKSB8fCAh
cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgQ29udGFpbmVyTm9kZSogZ3JhbmRwYXJlbnQgPSBwYXJlbnROb2RlKCkt
PnBhcmVudE5vZGUoKTsKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gZ3JhbmRwYXJlbnQgPSBw
YXJlbnROb2RlKCktPnBhcmVudE5vZGUoKTsKICAgICBpZiAoZ3JhbmRwYXJlbnQgJiYgZ3JhbmRw
YXJlbnQtPmhhc1RhZ05hbWUoZm9udF9mYWNlVGFnKSkKICAgICAgICAgZG93bmNhc3Q8U1ZHRm9u
dEZhY2VFbGVtZW50PigqZ3JhbmRwYXJlbnQpLnJlYnVpbGRGb250RmFjZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggNWU2M2Zi
NGQ4NGYwYmFkMjZiN2VjYzhhNzE4YzhjOTQ4ZWQwMjVjMy4uYWQ5NGVlZDQ3ZTk3MDlkOTdmMDlh
NmJiMGY0NzQ5ZGFjOGE4YmIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAg
ICAgLy8gTm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBmb3JlaWduT2JqZWN0
IGluc3RhbnRpYXRpb24gdmlhIDx1c2U+LCBoZW5jZSBpdCBpcyBzYWZlCiAgICAgLy8gdG8gdXNl
IHBhcmVudEVsZW1lbnQoKSBoZXJlLiBJZiB0aGF0IGNoYW5nZXMsIHRoaXMgbWV0aG9kIHNob3Vs
ZCBiZSB1cGRhdGVkIHRvIHVzZQogICAgIC8vIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSBp
bnN0ZWFkLgotICAgIEVsZW1lbnQqIGFuY2VzdG9yID0gcGFyZW50RWxlbWVudCgpOworICAgIFJl
ZlB0cjxFbGVtZW50PiBhbmNlc3RvciA9IHBhcmVudEVsZW1lbnQoKTsKICAgICB3aGlsZSAoYW5j
ZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhbmNlc3Rv
ci0+cmVuZGVyZXIoKSAmJiBhbmNlc3Rvci0+cmVuZGVyZXIoKS0+aXNTVkdIaWRkZW5Db250YWlu
ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5n
dGhDb250ZXh0LmNwcAppbmRleCAwOTkwNmU3Mzk4ZjAwZGU2YWI2MzY5NjAwZGYzOTY0OGRmMTVj
NDJhLi5hOTdlYzljODdlNDIyNjRiNTg2ZjEzNDg3NzIwYjRjNmNjYzA4MTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgYm9vbCBT
VkdMZW5ndGhDb250ZXh0OjpkZXRlcm1pbmVWaWV3cG9ydChGbG9hdFNpemUmIHZpZXdwb3J0U2l6
ZSkgY29uc3QKICAgICB9CiAKICAgICAvLyBUYWtlIHNpemUgZnJvbSBuZWFyZXN0IHZpZXdwb3J0
IGVsZW1lbnQuCi0gICAgU1ZHRWxlbWVudCogdmlld3BvcnRFbGVtZW50ID0gbV9jb250ZXh0LT52
aWV3cG9ydEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gdmlld3BvcnRFbGVtZW50
ID0gbV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKTsKICAgICBpZiAoIWlzPFNWR1NWR0VsZW1l
bnQ+KHZpZXdwb3J0RWxlbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCBiN2ZmNWI0
ZjhlNjcxN2RhYTUyZWQ4NGFmM2M0OGM5ODk2NjM0NzVmLi5hZWRlYjI4NjlhYTkzNDVkOWM5Yzg0
ZjM5ZjRiYmE1Mjk2ODg2ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTYyLDkgKzE2Miw5IEBAIGJvb2wgU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKExpbmVhckdyYWRpZW50QXR0
cmlidXRlCiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAvLyBSZXNwZWN0IHhsaW5rOmhy
ZWYsIHRha2UgYXR0cmlidXRlcyBmcm9tIHJlZmVyZW5jZWQgZWxlbWVudAotICAgICAgICBOb2Rl
KiByZWZOb2RlID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhj
dXJyZW50LT5ocmVmKCksIGRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHI8Tm9kZT4gcmVmTm9k
ZSA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY3VycmVudC0+
aHJlZigpLCBkb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGlzPFNWR0dyYWRpZW50RWxlbWVudD4o
cmVmTm9kZSkpIHsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBkb3duY2FzdDxTVkdHcmFkaWVudEVs
ZW1lbnQ+KHJlZk5vZGUpOworICAgICAgICAgICAgY3VycmVudCA9IGRvd25jYXN0PFNWR0dyYWRp
ZW50RWxlbWVudD4ocmVmTm9kZS5nZXQoKSk7CiAKICAgICAgICAgICAgIC8vIEN5Y2xlIGRldGVj
dGlvbgogICAgICAgICAgICAgaWYgKHByb2Nlc3NlZEdyYWRpZW50cy5jb250YWlucyhjdXJyZW50
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKaW5kZXggMGUwMWM3ZmU5ZmU3
ODI4OTQ3MjIxODU0NTJiMmNkZjE4N2ZjNTA2ZC4uYTQyYzYzMDgyYzg2YzZkYjJjZGFlYzc0MmEw
OWY5OTE3MzE2MDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNl
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGlkOwotICAgIEVsZW1lbnQqIHRhcmdl
dCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBk
b2N1bWVudCgpLCAmaWQpOworICAgIFJlZlB0cjxFbGVtZW50PiB0YXJnZXQgPSBTVkdVUklSZWZl
cmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9jdW1lbnQoKSwgJmlk
KTsKICAgICBpZiAoIXRhcmdldCkgewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgYXMgcGVu
ZGluZyBpZiB3ZSBhcmUgYWxyZWFkeSBwZW5kaW5nIHRoaXMgcmVzb3VyY2UuCiAgICAgICAgIGlm
IChkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5pc1BlbmRpbmdSZXNvdXJjZSh0aGlz
LCBpZCkpCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRp
bmdSZXNvdXJjZSgpCiAgICAgfSBlbHNlIGlmICh0YXJnZXQtPmlzU1ZHRWxlbWVudCgpKSB7CiAg
ICAgICAgIC8vIFJlZ2lzdGVyIHVzIHdpdGggdGhlIHRhcmdldCBpbiB0aGUgZGVwZW5kZW5jaWVz
IG1hcC4gQW55IGNoYW5nZSBvZiBocmVmRWxlbWVudAogICAgICAgICAvLyB0aGF0IGxlYWRzIHRv
IHJlbGF5b3V0L3JlcGFpbnRpbmcgbm93IGluZm9ybXMgdXMsIHNvIHdlIGNhbiByZWFjdCB0byBp
dC4KLSAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkRWxlbWVudFJl
ZmVyZW5jaW5nVGFyZ2V0KHRoaXMsIGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldCkpOworICAg
ICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRFbGVtZW50UmVmZXJlbmNp
bmdUYXJnZXQodGhpcywgZG93bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0LmdldCgpKSk7CiAgICAg
fQogCiAgICAgdGFyZ2V0UGF0aENoYW5nZWQoKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNW
R01QYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKICAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
IH0KIAotU1ZHUGF0aEVsZW1lbnQqIFNWR01QYXRoRWxlbWVudDo6cGF0aEVsZW1lbnQoKQorUmVm
UHRyPFNWR1BhdGhFbGVtZW50PiBTVkdNUGF0aEVsZW1lbnQ6OnBhdGhFbGVtZW50KCkKIHsKICAg
ICBFbGVtZW50KiB0YXJnZXQgPSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRv
Y3VtZW50KCkpOwogICAgIGlmIChpczxTVkdQYXRoRWxlbWVudD4odGFyZ2V0KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAppbmRleCAxYTJhYzZhMTExZTYyMjkyYTMyODU2OTc1YTI0
MjFlMDk0OWFhNjRjLi5iYTI0YjczMmE5Njc5MGFlYzE5MTdjNmYwODYxMTc4ZDA0MzBlMjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgflNWR01QYXRoRWxlbWVudCgpOwogCi0gICAgU1ZHUGF0aEVsZW1l
bnQqIHBhdGhFbGVtZW50KCk7CisgICAgUmVmUHRyPFNWR1BhdGhFbGVtZW50PiBwYXRoRWxlbWVu
dCgpOwogCiAgICAgdm9pZCB0YXJnZXRQYXRoQ2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGM5ZDlkY2MwOTQ0NjMy
MzRkZDkxZDk2Nzk3YjRhNTUxMzc2MzRjMjguLjBjNDBkNDk1OWVkZDYxMzU5Zjk1ZmE4NWY2NjA2
NzkzNTQxZGI2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwCkBAIC0xNzgsOSArMTc4LDkgQEAgYm9vbCBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGUK
IAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIFJlc3BlY3QgeGxpbms6aHJlZiwgdGFr
ZSBhdHRyaWJ1dGVzIGZyb20gcmVmZXJlbmNlZCBlbGVtZW50Ci0gICAgICAgIE5vZGUqIHJlZk5v
ZGUgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGN1cnJlbnQt
PmhyZWYoKSwgZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0cjxOb2RlPiByZWZOb2RlID0gU1ZH
VVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhjdXJyZW50LT5ocmVmKCks
IGRvY3VtZW50KCkpOwogICAgICAgICBpZiAoaXM8U1ZHR3JhZGllbnRFbGVtZW50PihyZWZOb2Rl
KSkgewotICAgICAgICAgICAgY3VycmVudCA9IGRvd25jYXN0PFNWR0dyYWRpZW50RWxlbWVudD4o
cmVmTm9kZSk7CisgICAgICAgICAgICBjdXJyZW50ID0gZG93bmNhc3Q8U1ZHR3JhZGllbnRFbGVt
ZW50PihyZWZOb2RlLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gQ3ljbGUgZGV0ZWN0aW9uCiAg
ICAgICAgICAgICBpZiAocHJvY2Vzc2VkR3JhZGllbnRzLmNvbnRhaW5zKGN1cnJlbnQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGM1YWUxOTUwMTdlNDhmZjYxODlmMGM1
MGNmNDcwZmZhMjMzOWJiNmEuLmIwM2I1N2IzOTAyZGRlODFkNTAwNDNlMmE2Mzc1OGZjYTI1MjAy
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTE2NiwxMyArMTY2LDEz
IEBAIFNWR1ZpZXdTcGVjJiBTVkdTVkdFbGVtZW50OjpjdXJyZW50VmlldygpCiAgICAgcmV0dXJu
ICptX3ZpZXdTcGVjOwogfQogCi1GcmFtZSogU1ZHU1ZHRWxlbWVudDo6ZnJhbWVGb3JDdXJyZW50
U2NhbGUoKSBjb25zdAorUmVmUHRyPEZyYW1lPiBTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJl
bnRTY2FsZSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGJlaGF2aW9yIG9mIGN1cnJlbnRTY2FsZSgp
IGlzIHVuZGVmaW5lZCB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCBub24tc3RhbmRhbG9uZSBTVkcg
ZG9jdW1lbnRzLgogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBlbWJlZGRlZCwgdGhlIHNjYWxp
bmcgaXMgaGFuZGxlZCBieSB0aGUgaG9zdCByZW5kZXJlci4KICAgICBpZiAoIWlzQ29ubmVjdGVk
KCkgfHwgIWlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CisgICAgUmVmUHRyPEZy
YW1lPiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICByZXR1cm4gZnJhbWUgJiYgZnJh
bWUtPmlzTWFpbkZyYW1lKCkgPyBmcmFtZSA6IG51bGxwdHI7CiB9CiAKQEAgLTE4MCwxMyArMTgw
LDEzIEBAIGZsb2F0IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRTY2FsZSgpIGNvbnN0CiB7CiAgICAg
Ly8gV2hlbiBhc2tpbmcgZnJvbSBpbnNpZGUgYW4gZW1iZWRkZWQgU1ZHIGRvY3VtZW50LCBhIHNj
YWxlIHZhbHVlIG9mIDEgc2VlbXMgcmVhc29uYWJsZSwgYXMgaXQgZG9lc24ndAogICAgIC8vIGtu
b3cgYW55dGhpbmcgYWJvdXQgdGhlIHBhcmVudCBzY2FsZS4KLSAgICBGcmFtZSogZnJhbWUgPSBm
cmFtZUZvckN1cnJlbnRTY2FsZSgpOworICAgIGF1dG8gZnJhbWUgPSBmcmFtZUZvckN1cnJlbnRT
Y2FsZSgpOwogICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpIDogMTsK
IH0KIAogdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2NhbGUpCiB7
Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGZyYW1lRm9yQ3VycmVudFNjYWxlKCkpCisgICAgaWYg
KGF1dG8gZnJhbWUgPSBmcmFtZUZvckN1cnJlbnRTY2FsZSgpKQogICAgICAgICBmcmFtZS0+c2V0
UGFnZVpvb21GYWN0b3Ioc2NhbGUpOwogfQogCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBTVkdT
VkdFbGVtZW50OjpjaGVja0VuY2xvc3VyZShSZWZQdHI8U1ZHRWxlbWVudD4mJiBlbGVtZW50LCBT
VkdSZWN0JiByZWN0KQogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OmRlc2VsZWN0QWxsKCkKIHsKLSAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgIGlmIChSZWZQdHI8
RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBmcmFtZS0+c2VsZWN0
aW9uKCkuY2xlYXIoKTsKIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIEFmZmluZVRyYW5zZm9ybSBT
VkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6
OkNUTVNjCiAgICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGxvY2F0aW9uLngoKSAtIHZp
ZXdCb3hUcmFuc2Zvcm0uZSgpLCBsb2NhdGlvbi55KCkgLSB2aWV3Qm94VHJhbnNmb3JtLmYoKSk7
CiAKICAgICAgICAgICAgIC8vIFJlc3BlY3Qgc2Nyb2xsIG9mZnNldC4KLSAgICAgICAgICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudCgpLnZpZXcoKSkgeworICAgICAgICAgICAgaWYg
KFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcgPSBkb2N1bWVudCgpLnZpZXcoKSkgewogICAgICAgICAg
ICAgICAgIExheW91dFBvaW50IHNjcm9sbFBvc2l0aW9uID0gdmlldy0+c2Nyb2xsUG9zaXRpb24o
KTsKICAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbi5zY2FsZSh6b29tRmFjdG9yKTsKICAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1zY3JvbGxQb3NpdGlvbik7CkBAIC02
MzgsNyArNjM4LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OnZpZXdCb3hUb1Zp
ZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWUKIHZvaWQgU1ZHU1ZHRWxlbWVu
dDo6c2Nyb2xsVG9BbmNob3IoY29uc3QgU3RyaW5nJiBmcmFnbWVudElkZW50aWZpZXIsIEVsZW1l
bnQqIGFuY2hvck5vZGUpCiB7CiAgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7
Ci0gICAgU1ZHVmlld1NwZWMqIHZpZXcgPSBtX3ZpZXdTcGVjLmdldCgpOworICAgIFJlZlB0cjxT
VkdWaWV3U3BlYz4gdmlldyhtX3ZpZXdTcGVjKTsKICAgICBpZiAodmlldykKICAgICAgICAgdmll
dy0+cmVzZXQoKTsKIApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2Ny
b2xsVG9BbmNob3IoY29uc3QgU3RyaW5nJiBmcmFnbWVudElkZW50aWZpZXIsIEVsZW1lbnQqIGFu
CiAgICAgLy8gYXR0cmlidXRlcyBvbiB0aGUgY2xvc2VzdCBhbmNlc3RvciAic3ZnIiBlbGVtZW50
LgogICAgIGlmIChpczxTVkdWaWV3RWxlbWVudD4oYW5jaG9yTm9kZSkpIHsKICAgICAgICAgYXV0
byYgdmlld0VsZW1lbnQgPSBkb3duY2FzdDxTVkdWaWV3RWxlbWVudD4oKmFuY2hvck5vZGUpOwot
ICAgICAgICBhdXRvKiB2aWV3cG9ydEVsZW1lbnQgPSBTVkdMb2NhdGFibGU6Om5lYXJlc3RWaWV3
cG9ydEVsZW1lbnQoJnZpZXdFbGVtZW50KTsKKyAgICAgICAgYXV0byB2aWV3cG9ydEVsZW1lbnQg
PSBtYWtlUmVmUHRyKFNWR0xvY2F0YWJsZTo6bmVhcmVzdFZpZXdwb3J0RWxlbWVudCgmdmlld0Vs
ZW1lbnQpKTsKICAgICAgICAgaWYgKGlzPFNWR1NWR0VsZW1lbnQ+KHZpZXdwb3J0RWxlbWVudCkp
IHsKICAgICAgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxTVkdTVkdFbGVtZW50Pigq
dmlld3BvcnRFbGVtZW50KTsKICAgICAgICAgICAgIGVsZW1lbnQuaW5oZXJpdFZpZXdBdHRyaWJ1
dGVzKHZpZXdFbGVtZW50KTsKQEAgLTcyMiw5ICs3MjIsOSBAQCBFbGVtZW50KiBTVkdTVkdFbGVt
ZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKQogICAgIGlmIChpZC5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFbGVtZW50KiBlbGVtZW50
ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIFJlZlB0cjxFbGVtZW50PiBl
bGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGlmIChlbGVtZW50
ICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7CisgICAgICAgIHJldHVybiBlbGVtZW50LmdldCgpOwogICAgIGlmICh0cmVlU2NvcGUoKS5j
b250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoaWQpKSB7CiAgICAgICAgIGZvciAoYXV0byog
ZWxlbWVudCA6ICp0cmVlU2NvcGUoKS5nZXRBbGxFbGVtZW50c0J5SWQoaWQpKSB7CiAgICAgICAg
ICAgICBpZiAoZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgKaW5kZXggMzI4OGRlZmNmZTYzNDY4NzQ1ZGY2NjM5MDhhNTA2NDVjMTAxNzVl
My4uM2UxODQxODcyZjg3MDk0NmJkY2E0MGEyNzIwYTdjYjhlNGU3ZDgzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKSBvdmVycmlkZTsKICAgICBBZmZpbmVUcmFu
c2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29w
ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBGcmFtZSogZnJhbWVGb3JDdXJyZW50U2NhbGUoKSBj
b25zdDsKKyAgICBSZWZQdHI8RnJhbWU+IGZyYW1lRm9yQ3VycmVudFNjYWxlKCkgY29uc3Q7CiAg
ICAgdm9pZCBpbmhlcml0Vmlld0F0dHJpYnV0ZXMoY29uc3QgU1ZHVmlld0VsZW1lbnQmKTsKICAg
ICBSZWY8Tm9kZUxpc3Q+IGNvbGxlY3RJbnRlcnNlY3Rpb25PckVuY2xvc3VyZUxpc3QoU1ZHUmVj
dCYsIFNWR0VsZW1lbnQqLCBib29sICgqY2hlY2tGdW5jdGlvbikoU1ZHRWxlbWVudCYsIFNWR1Jl
Y3QmKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXggOTllYTRl
ZGVkZDc3OWJiNDEyNjU5YzY5NDFlNWZjMGRkMmMxOTRkNS4uNDkwNmI2MWM0Nzk0YzM1NzViMWZm
MjY5YzA3MzExNWQ4MGFiNWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBTVkdTdHlsZUVsZW1lbnQ6OmRpc2FibGVkKCkgY29u
c3QKIAogdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQp
CiB7Ci0gICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBzaGVldCgpKQorICAgIGlm
IChSZWZQdHI8Q1NTU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IHNoZWV0KCkpCiAgICAgICAgIHN0
eWxlU2hlZXQtPnNldERpc2FibGVkKHNldERpc2FibGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZTNjNzdlOWRjOGQ1MDI1MzAzOGVlYmEyYjk3NzIwYWE2
NGNhOWIwYi4uNDNhZmJmODFkMmYxMTgwYTdiZGQwMmZmNDg4MjEwM2Q3ODhiMTNmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBT
VkdUUmVmRWxlbWVudDo6ZGV0YWNoVGFyZ2V0KCkKICAgICBTdHJpbmcgZW1wdHlDb250ZW50Owog
CiAgICAgQVNTRVJUKHNoYWRvd1Jvb3QoKSk7Ci0gICAgTm9kZSogY29udGFpbmVyID0gc2hhZG93
Um9vdCgpLT5maXJzdENoaWxkKCk7CisgICAgUmVmUHRyPE5vZGU+IGNvbnRhaW5lciA9IHNoYWRv
d1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIGNvbnRh
aW5lci0+c2V0VGV4dENvbnRlbnQoZW1wdHlDb250ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCAyZDhjNzBkZmMyMjZjOWMzN2VjOWY5
YzljMjRmM2ZlYWZiZGFmNWI0Li4zYTllZDg1NmNhOGQxZWIyODE4MGQzMGEzNzE4ZWJiM2MzMDhi
ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApA
QCAtMjcyLDcgKzI3Miw3IEBAIFNWR1RleHRDb250ZW50RWxlbWVudCogU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCoKICAgICBTVkdFbGVtZW50
KiBlbGVtZW50ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXItPm5vZGUoKSk7CiAgICAg
QVNTRVJUKGVsZW1lbnQpOwogCi0gICAgaWYgKCFpczxTVkdUZXh0Q29udGVudEVsZW1lbnQ+KCpl
bGVtZW50KSkKKyAgICBpZiAoIWlzPFNWR1RleHRDb250ZW50RWxlbWVudD4oZWxlbWVudCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGRvd25jYXN0PFNWR1RleHRDb250
ZW50RWxlbWVudD4oZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwCmluZGV4IGU4YWE4ODZmMjdkZGQ5NzEzMGRjOThjY2MzNWQ0MmFlMWZlMTQxNDYuLmJk
YTBlZGM4NGI0NWMwMTU5NWNjYzMyNDBkYjc4MmFmZDUyZTEyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBTVkdU
ZXh0UGF0aEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgU3RyaW5nIGlkOwotICAgIEVsZW1lbnQqIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6
dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQpOworICAg
IFJlZlB0cjxFbGVtZW50PiB0YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRG
cm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9jdW1lbnQoKSwgJmlkKTsKICAgICBpZiAoIXRhcmdldCkg
ewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgYXMgcGVuZGluZyBpZiB3ZSBhcmUgYWxyZWFk
eSBwZW5kaW5nIHRoaXMgcmVzb3VyY2UuCiAgICAgICAgIGlmIChkb2N1bWVudCgpLmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKS5pc1BlbmRpbmdSZXNvdXJjZSh0aGlzLCBpZCkpCkBAIC0xNjksNyArMTY5
LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAg
ICB9IGVsc2UgaWYgKHRhcmdldC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cGF0aFRhZykpIHsKICAg
ICAgICAgLy8gUmVnaXN0ZXIgdXMgd2l0aCB0aGUgdGFyZ2V0IGluIHRoZSBkZXBlbmRlbmNpZXMg
bWFwLiBBbnkgY2hhbmdlIG9mIGhyZWZFbGVtZW50CiAgICAgICAgIC8vIHRoYXQgbGVhZHMgdG8g
cmVsYXlvdXQvcmVwYWludGluZyBub3cgaW5mb3JtcyB1cywgc28gd2UgY2FuIHJlYWN0IHRvIGl0
LgotICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRFbGVtZW50UmVm
ZXJlbmNpbmdUYXJnZXQodGhpcywgZG93bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0KSk7CisgICAg
ICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZEVsZW1lbnRSZWZlcmVuY2lu
Z1RhcmdldCh0aGlzLCBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQuZ2V0KCkpKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA2ZTI4NjM0ODQxY2U0
ODQyNjFkMGQ3ZmUzOGUwMTIwMjBmMzg1YWEyLi42YmQxODEwNGFlMjQ0ZGQ3NGQ5YTI1YTlhNTky
NmFiYWFkNTk1MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xNDIs
NyArMTQyLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp0cmFuc2ZlclNpemVBdHRyaWJ1dGVzVG9U
YXJnZXRDbG9uZShTVkdFbGVtZW50JiBzaGFkb3dFbGVtZW4KICAgICB9IGVsc2UgaWYgKGlzPFNW
R1NWR0VsZW1lbnQ+KHNoYWRvd0VsZW1lbnQpKSB7CiAgICAgICAgIC8vIFNwZWMgKDx1c2U+IG9u
IDxzdmc+KTogSWYgYXR0cmlidXRlcyB3aWR0aCBhbmQvb3IgaGVpZ2h0IGFyZSBwcm92aWRlZCBv
biB0aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0aGVzZQogICAgICAgICAvLyB2YWx1ZXMgd2lsbCBv
dmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGVzIG9uIHRoZSAnc3ZnJyBpbiB0aGUg
Z2VuZXJhdGVkIHRyZWUuCi0gICAgICAgIFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50
ID0gc2hhZG93RWxlbWVudC5jb3JyZXNwb25kaW5nRWxlbWVudCgpOworICAgICAgICBSZWZQdHI8
U1ZHRWxlbWVudD4gY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBzaGFkb3dFbGVtZW50LmNvcnJlc3Bv
bmRpbmdFbGVtZW50KCk7CiAgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05h
bWVzOjp3aWR0aEF0dHIsICh3aWR0aElzVmFsaWQoKSAmJiB3aWR0aCgpLnZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpKSA/IEF0b21pY1N0cmluZyh3aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAoY29y
cmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNwb25kaW5nRWxlbWVudC0+Z2V0QXR0cmlidXRlKFNW
R05hbWVzOjp3aWR0aEF0dHIpIDogbnVsbEF0b20oKSkpOwogICAgICAgICBzaGFkb3dFbGVtZW50
LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgKGhlaWdodElzVmFsaWQoKSAmJiBo
ZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSkgPyBBdG9taWNTdHJpbmcoaGVpZ2h0KCku
dmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/IGNvcnJlc3BvbmRpbmdF
bGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIpIDogbnVsbEF0b20oKSkp
OwogICAgIH0KQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHVwZGF0
ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogSXQncyB1bm5lY2Vzc2FyaWx5IGluZWZmaWNpZW50IHRv
IHVwZGF0ZSBib3RoIHdpZHRoIGFuZCBoZWlnaHQgZWFjaCB0aW1lIGVpdGhlciBpcyBjaGFuZ2Vk
LgotICAgICAgICAgICAgaWYgKGF1dG8qIHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUo
KSkKKyAgICAgICAgICAgIGlmIChhdXRvIHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUo
KSkKICAgICAgICAgICAgICAgICB0cmFuc2ZlclNpemVBdHRyaWJ1dGVzVG9UYXJnZXRDbG9uZSgq
dGFyZ2V0Q2xvbmUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCkpCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1
cGRhdGVTaGFkb3dUcmVlKCkKICAgICBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOwog
fQogCi1TVkdFbGVtZW50KiBTVkdVc2VFbGVtZW50Ojp0YXJnZXRDbG9uZSgpIGNvbnN0CitSZWZQ
dHI8U1ZHRWxlbWVudD4gU1ZHVXNlRWxlbWVudDo6dGFyZ2V0Q2xvbmUoKSBjb25zdAogewogICAg
IGF1dG8gcm9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICBpZiAoIXJvb3QpCkBAIC0y
OTMsNyArMjkzLDcgQEAgc3RhdGljIGJvb2wgaXNEaXJlY3RSZWZlcmVuY2UoY29uc3QgU1ZHRWxl
bWVudCYgZWxlbWVudCkKIAogUGF0aCBTVkdVc2VFbGVtZW50Ojp0b0NsaXBQYXRoKCkKIHsKLSAg
ICBhdXRvKiB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CisgICAgYXV0byB0YXJn
ZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CiAgICAgaWYgKCFpczxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KHRhcmdldENsb25lKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMzEzLDcgKzMx
Myw3IEBAIFBhdGggU1ZHVXNlRWxlbWVudDo6dG9DbGlwUGF0aCgpCiAKIFJlbmRlckVsZW1lbnQq
IFNWR1VzZUVsZW1lbnQ6OnJlbmRlcmVyQ2xpcENoaWxkKCkgY29uc3QKIHsKLSAgICBhdXRvKiB0
YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CisgICAgYXV0byB0YXJnZXRDbG9uZSA9
IHRoaXMtPnRhcmdldENsb25lKCk7CiAgICAgaWYgKCF0YXJnZXRDbG9uZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgaWYgKCFpc0RpcmVjdFJlZmVyZW5jZSgqdGFyZ2V0Q2xvbmUpKQpA
QCAtNDA1LDcgKzQwNSw3IEBAIFNWR0VsZW1lbnQqIFNWR1VzZUVsZW1lbnQ6OmZpbmRUYXJnZXQo
U3RyaW5nKiB0YXJnZXRJRCkgY29uc3QKICAgICBhdXRvKiBjb3JyZXNwb25kaW5nRWxlbWVudCA9
IHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCk7CiAgICAgYXV0byYgb3JpZ2luYWwgPSBjb3Jy
ZXNwb25kaW5nRWxlbWVudCA/IGRvd25jYXN0PFNWR1VzZUVsZW1lbnQ+KCpjb3JyZXNwb25kaW5n
RWxlbWVudCkgOiAqdGhpczsKIAotICAgIGF1dG8qIHRhcmdldENhbmRpZGF0ZSA9IHRhcmdldEVs
ZW1lbnRGcm9tSVJJU3RyaW5nKG9yaWdpbmFsLmhyZWYoKSwgb3JpZ2luYWwuZG9jdW1lbnQoKSwg
dGFyZ2V0SUQsIG9yaWdpbmFsLmV4dGVybmFsRG9jdW1lbnQoKSk7CisgICAgYXV0byB0YXJnZXRD
YW5kaWRhdGUgPSBtYWtlUmVmUHRyKHRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKG9yaWdpbmFs
LmhyZWYoKSwgb3JpZ2luYWwuZG9jdW1lbnQoKSwgdGFyZ2V0SUQsIG9yaWdpbmFsLmV4dGVybmFs
RG9jdW1lbnQoKSkpOwogICAgIGlmICh0YXJnZXRJRCAmJiAhdGFyZ2V0SUQtPmlzTnVsbCgpKSB7
CiAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgZXh0ZXJuYWwsIGRvbid0IHJldHVybiB0
aGUgdGFyZ2V0IElEIHRvIHRoZSBjYWxsZXIuCiAgICAgICAgIC8vIFRoZSBjYWxsZXIgd291bGQg
dXNlIHRoZSB0YXJnZXQgSUQgdG8gd2FpdCBmb3IgYSBwZW5kaW5nIHJlc291cmNlIG9uIHRoZSB3
cm9uZyBkb2N1bWVudC4KQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6Omlu
dmFsaWRhdGVTaGFkb3dUcmVlKCkKIHZvaWQgU1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZURlcGVu
ZGVudFNoYWRvd1RyZWVzKCkKIHsKICAgICBmb3IgKGF1dG8qIGluc3RhbmNlIDogaW5zdGFuY2Vz
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSBpbnN0YW5jZS0+Y29ycmVzcG9uZGlu
Z1VzZUVsZW1lbnQoKSkKKyAgICAgICAgaWYgKGF1dG8gZWxlbWVudCA9IGluc3RhbmNlLT5jb3Jy
ZXNwb25kaW5nVXNlRWxlbWVudCgpKQogICAgICAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVNo
YWRvd1RyZWUoKTsKICAgICB9CiB9CkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBTVkdVc2VFbGVt
ZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICBpZiAoeCgpLmlzUmVsYXRp
dmUoKSB8fCB5KCkuaXNSZWxhdGl2ZSgpIHx8IHdpZHRoKCkuaXNSZWxhdGl2ZSgpIHx8IGhlaWdo
dCgpLmlzUmVsYXRpdmUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBhdXRvKiB0YXJn
ZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CisgICAgYXV0byB0YXJnZXRDbG9uZSA9IHRo
aXMtPnRhcmdldENsb25lKCk7CiAgICAgcmV0dXJuIHRhcmdldENsb25lICYmIHRhcmdldENsb25l
LT5oYXNSZWxhdGl2ZUxlbmd0aHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgK
aW5kZXggMGJjZDFiYjVmM2UwY2MzYzE4MDVlMDZhMTVhNTc4YjRmYTM5YTZkNC4uMzFmNjQ0ZDE3
OGQ4MmMzZjk1MTk0YzlkOTEzMDhhZWZmOWNjMjc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRWxlbWVudCogZmluZFRh
cmdldChTdHJpbmcqIHRhcmdldElEID0gbnVsbHB0cikgY29uc3Q7CiAKICAgICB2b2lkIGNsb25l
VGFyZ2V0KENvbnRhaW5lck5vZGUmLCBTVkdFbGVtZW50JiB0YXJnZXQpIGNvbnN0OwotICAgIFNW
R0VsZW1lbnQqIHRhcmdldENsb25lKCkgY29uc3Q7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRh
cmdldENsb25lKCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZVNoYWRvd1RyZWUoKTsKICAgICB2
b2lkIGV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCmluZGV4IDQ1Y2Fm
OWY0Y2M1MzVmN2NmZDc5ZDVkMTRiOGYwYjc4Njg2NTRmNTUuLmI3M2I1NmQ0YTYxZThkZGY3OTU0
ODI3OWZkZTE2ODM3NDE1ODNkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTTUlM
VGltZUNvbnRhaW5lcjo6dXBkYXRlQW5pbWF0aW9ucyhTTUlMVGltZSBlbGFwc2VkLCBib29sIHNl
ZWtUb1RpbWUpCiAgICAgICAgIC8vIGhhdmUgaGlnaGVyIHByaW9yaXR5LgogICAgICAgICBzb3J0
QnlQcmlvcml0eSgqc2NoZWR1bGVkLCBlbGFwc2VkKTsKIAotICAgICAgICBTVkdTTUlMRWxlbWVu
dCogcmVzdWx0RWxlbWVudCA9IG51bGxwdHI7CisgICAgICAgIFJlZlB0cjxTVkdTTUlMRWxlbWVu
dD4gcmVzdWx0RWxlbWVudDsKICAgICAgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiAqc2NoZWR1
bGVkKSB7CiAgICAgICAgICAgICBBU1NFUlQoYW5pbWF0aW9uLT50aW1lQ29udGFpbmVyKCkgPT0g
dGhpcyk7CiAgICAgICAgICAgICBBU1NFUlQoYW5pbWF0aW9uLT50YXJnZXRFbGVtZW50KCkpOwpA
QCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgU01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlv
bnMoU01JTFRpbWUgZWxhcHNlZCwgYm9vbCBzZWVrVG9UaW1lKQogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAvLyBUaGlzIHdpbGwgY2FsY3VsYXRlIHRoZSBjb250cmlidXRpb24gZnJvbSB0
aGUgYW5pbWF0aW9uIGFuZCBhZGQgaXQgdG8gdGhlIHJlc3VsdHNFbGVtZW50LgotICAgICAgICAg
ICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVsYXBzZWQsIHJlc3VsdEVsZW1lbnQsIHNlZWtU
b1RpbWUpICYmIHJlc3VsdEVsZW1lbnQgPT0gYW5pbWF0aW9uKQorICAgICAgICAgICAgaWYgKCFh
bmltYXRpb24tPnByb2dyZXNzKGVsYXBzZWQsIHJlc3VsdEVsZW1lbnQuZ2V0KCksIHNlZWtUb1Rp
bWUpICYmIHJlc3VsdEVsZW1lbnQgPT0gYW5pbWF0aW9uKQogICAgICAgICAgICAgICAgIHJlc3Vs
dEVsZW1lbnQgPSBudWxscHRyOwogCiAgICAgICAgICAgICBTTUlMVGltZSBuZXh0RmlyZVRpbWUg
PSBhbmltYXRpb24tPm5leHRQcm9ncmVzc1RpbWUoKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lk
IFNNSUxUaW1lQ29udGFpbmVyOjp1cGRhdGVBbmltYXRpb25zKFNNSUxUaW1lIGVsYXBzZWQsIGJv
b2wgc2Vla1RvVGltZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChyZXN1bHRFbGVtZW50KQot
ICAgICAgICAgICAgYW5pbWF0aW9uc1RvQXBwbHkuYXBwZW5kKHJlc3VsdEVsZW1lbnQpOworICAg
ICAgICAgICAgYW5pbWF0aW9uc1RvQXBwbHkuYXBwZW5kKHJlc3VsdEVsZW1lbnQuZ2V0KCkpOwog
ICAgIH0KIAogICAgIGlmIChhbmltYXRpb25zVG9BcHBseS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggM2VlNjk3
ZjUzOTg1OTdjM2NkYzNjYTM2OWIwMmFkYzdjYzNlMjdmNC4uM2I0YTk4NmE4ZGM0MTI1ZTk3ZWYy
ZDRjM2ZmMDBlODRiYjNlNDUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTE3NiwxMyArMTc2LDEzIEBAIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICB9CiAKICAgICBTdHJpbmcgaWQ7Ci0g
ICAgRWxlbWVudCogdGFyZ2V0OworICAgIFJlZlB0cjxFbGVtZW50PiB0YXJnZXQ7CiAgICAgYXV0
byYgaHJlZiA9IGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiAgICAgaWYgKGhy
ZWYuaXNFbXB0eSgpKQogICAgICAgICB0YXJnZXQgPSBwYXJlbnRFbGVtZW50KCk7CiAgICAgZWxz
ZQogICAgICAgICB0YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJ
U3RyaW5nKGhyZWYuc3RyaW5nKCksIGRvY3VtZW50KCksICZpZCk7Ci0gICAgU1ZHRWxlbWVudCog
c3ZnVGFyZ2V0ID0gaXM8U1ZHRWxlbWVudD4odGFyZ2V0KSA/IGRvd25jYXN0PFNWR0VsZW1lbnQ+
KHRhcmdldCkgOiBudWxscHRyOworICAgIFNWR0VsZW1lbnQqIHN2Z1RhcmdldCA9IGlzPFNWR0Vs
ZW1lbnQ+KHRhcmdldCkgPyBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQuZ2V0KCkpIDogbnVs
bHB0cjsKIAogICAgIGlmIChzdmdUYXJnZXQgJiYgIXN2Z1RhcmdldC0+aXNDb25uZWN0ZWQoKSkK
ICAgICAgICAgc3ZnVGFyZ2V0ID0gbnVsbHB0cjsKQEAgLTI2Myw3ICsyNjMsNyBAQCBOb2RlOjpJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBTVkdTTUlMRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IoSW5zZXJ0aW9uVAogCiAgICAgdXBkYXRlQXR0cmlidXRlTmFtZSgpOwogCi0gICAgU1ZH
U1ZHRWxlbWVudCogb3duZXIgPSBvd25lclNWR0VsZW1lbnQoKTsKKyAgICBSZWZQdHI8U1ZHU1ZH
RWxlbWVudD4gb3duZXIgPSBvd25lclNWR0VsZW1lbnQoKTsKICAgICBpZiAoIW93bmVyKQogICAg
ICAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6OkRvbmU7CiAKQEAgLTU0NCw3
ICs1NDQsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucygpCiAgICAg
Zm9yIChhdXRvJiBjb25kaXRpb24gOiBtX2NvbmRpdGlvbnMpIHsKICAgICAgICAgaWYgKGNvbmRp
dGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpFdmVudEJhc2UpIHsKICAgICAgICAgICAgIEFTU0VS
VCghY29uZGl0aW9uLm1fc3luY2Jhc2UpOwotICAgICAgICAgICAgRWxlbWVudCogZXZlbnRCYXNl
ID0gZXZlbnRCYXNlRm9yKGNvbmRpdGlvbik7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZXZlbnRCYXNlID0gZXZlbnRCYXNlRm9yKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoIWV2
ZW50QmFzZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEFTU0VSVCgh
Y29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lcik7CkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBTVkdT
TUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMoKQogICAgICAgICAgICAgLy8gbm8gZ3Vh
cmFudGVlIHRoYXQgZXZlbnRCYXNlRm9yKCkgd2lsbCBiZSBhYmxlIHRvIGZpbmQgb3VyIGNvbmRp
dGlvbidzCiAgICAgICAgICAgICAvLyBvcmlnaW5hbCBldmVudEJhc2UuIFNvLCB3ZSBhbHNvIGhh
dmUgdG8gZGlzY29ubmVjdCBvdXJzZWx2ZXMgZnJvbQogICAgICAgICAgICAgLy8gb3VyIGNvbmRp
dGlvbiBldmVudCBsaXN0ZW5lciwgaW4gY2FzZSBpdCBsYXRlciBmaXJlcy4KLSAgICAgICAgICAg
IEVsZW1lbnQqIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihjb25kaXRpb24pOworICAgICAgICAg
ICAgUmVmUHRyPEVsZW1lbnQ+IGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihjb25kaXRpb24pOwog
ICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkKICAgICAgICAgICAgICAgICBldmVudEJhc2UtPnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlz
dGVuZXIsIGZhbHNlKTsKICAgICAgICAgICAgIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXItPmRp
c2Nvbm5lY3RBbmltYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCmluZGV4IGYzNzZhM2MyZDEzMjhlZDA4YWJiN2IyYjJkNmFkNjU2ODA4OGQyODUuLjg5MjIz
ZTM5NzBjZjFjZjU4ODg4M2U2ZDI2MWY5NjI0ODQ3MTY0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtODQsNyArODQsNyBAQCBTVkdJbWFnZTo6flNWR0lt
YWdlKCkKICAgICBBU1NFUlQoIW1fY2hyb21lQ2xpZW50IHx8ICFtX2Nocm9tZUNsaWVudC0+aW1h
Z2UoKSk7CiB9CiAKLWlubGluZSBTVkdTVkdFbGVtZW50KiBTVkdJbWFnZTo6cm9vdEVsZW1lbnQo
KSBjb25zdAoraW5saW5lIFJlZlB0cjxTVkdTVkdFbGVtZW50PiBTVkdJbWFnZTo6cm9vdEVsZW1l
bnQoKSBjb25zdAogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTkzLDcgKzkzLDcgQEAgaW5saW5lIFNWR1NWR0VsZW1lbnQqIFNWR0ltYWdlOjpyb290RWxl
bWVudCgpIGNvbnN0CiAKIGJvb2wgU1ZHSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKIHsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVt
ZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAg
aWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTEyMiwxNCArMTIy
LDE0IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29uc3QgRmxvYXRTaXplJiBz
aXplKQogICAgIGlmICghdXNlc0NvbnRhaW5lclNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAg
IGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVs
ZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlclNWR1Jvb3Q+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKICAgICBpZiAoIXJlbmRlcmVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZVZpZXcoKTsK
KyAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3ID0gZnJhbWVWaWV3KCk7CiAgICAgdmlldy0+cmVz
aXplKHRoaXMtPmNvbnRhaW5lclNpemUoKSk7CiAKICAgICByZW5kZXJlci0+c2V0Q29udGFpbmVy
U2l6ZShJbnRTaXplKHNpemUpKTsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFNWR0ltYWdlOjpz
ZXRDb250YWluZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIAogSW50U2l6ZSBTVkdJbWFn
ZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiB7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1l
bnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5y
b290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBJbnRT
aXplKCk7CiAKQEAgLTI4NSw3ICsyODUsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5n
OwogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWVWaWV3KCk7CisgICAgUmVmUHRyPEZyYW1l
Vmlldz4gdmlldyA9IGZyYW1lVmlldygpOwogICAgIEFTU0VSVCh2aWV3KTsKIAogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKQEAgLTMzMiw3ICszMzIs
NyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogCiBSZW5kZXJCb3gqIFNWR0ltYWdlOjplbWJl
ZGRlZENvbnRlbnRCb3goKSBjb25zdAogewotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50
ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9v
dEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94Pihyb290RWxlbWVudC0+cmVuZGVyZXIo
KSk7CkBAIC0zNDcsNyArMzQ3LDcgQEAgRnJhbWVWaWV3KiBTVkdJbWFnZTo6ZnJhbWVWaWV3KCkg
Y29uc3QKIAogYm9vbCBTVkdJbWFnZTo6aGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0CiB7Ci0gICAg
U1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1
dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJp
bnNpY1dpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCk7CkBAIC0zNTUsNyArMzU1LDcgQEAg
Ym9vbCBTVkdJbWFnZTo6aGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0CiAKIGJvb2wgU1ZHSW1hZ2U6
Omhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QKIHsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxl
bWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMt
PnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiByb290RWxlbWVudC0+aW50cmluc2ljSGVpZ2h0KCkuaXNQZXJjZW50
T3JDYWxjdWxhdGVkKCk7CkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdAogCiB2b2lkIFNWR0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwg
RmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykKIHsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxl
bWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMt
PnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVu
c2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW4KIAogdm9pZCBTVkdJ
bWFnZTo6c3RhcnRBbmltYXRpb24oKQogewotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50
ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9v
dEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50IHx8ICFyb290RWxlbWVudC0+YW5pbWF0
aW9uc1BhdXNlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgcm9vdEVsZW1lbnQtPnVucGF1c2VB
bmltYXRpb25zKCk7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBTVkdJbWFnZTo6c3RhcnRBbmlt
YXRpb24oKQogCiB2b2lkIFNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKCkKIHsKLSAgICBTVkdTVkdF
bGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byByb290
RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwogICAgIHJvb3RFbGVtZW50LT5wYXVzZUFuaW1hdGlvbnMoKTsKQEAgLTQw
MSw3ICs0MDEsNyBAQCB2b2lkIFNWR0ltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAKIGJvb2wgU1ZH
SW1hZ2U6OmlzQW5pbWF0aW5nKCkgY29uc3QKIHsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxl
bWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMt
PnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiByb290RWxlbWVudC0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7CkBAIC00
MDksMTAgKzQwOSwxMCBAQCBib29sIFNWR0ltYWdlOjppc0FuaW1hdGluZygpIGNvbnN0CiAKIHZv
aWQgU1ZHSW1hZ2U6OnJlcG9ydEFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNvbnN0CiB7Ci0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOworICAg
IFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50
KCk7CiAgICAgc2l6ZV90IGRlY29kZWRJbWFnZU1lbW9yeUNvc3QgPSAwOwogCi0gICAgZm9yIChO
b2RlKiBub2RlID0gZG9jdW1lbnQ7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpu
b2RlKSkKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gZG9jdW1lbnQ7IG5vZGU7IG5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkKICAgICAgICAgZGVjb2RlZEltYWdlTWVtb3J5
Q29zdCArPSBub2RlLT5hcHByb3hpbWF0ZU1lbW9yeUNvc3QoKTsKIAogICAgIEpTQzo6Vk0mIHZt
ID0gY29tbW9uVk0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXgg
NGVmZmU1NzliNWNhYTVlZmNiNWE5M2Y1ZjJmMzkyYzc4YzQ5NGQzMC4uODhmNzYyNzU0OTY0NGRi
MTc1OTRjM2Q4YzdiMjc4M2RkZDJkNDEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVy
U2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkws
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CiAKLSAgICBTVkdT
VkdFbGVtZW50KiByb290RWxlbWVudCgpIGNvbnN0OworICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50
PiByb290RWxlbWVudCgpIGNvbnN0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0ltYWdlQ2hy
b21lQ2xpZW50PiBtX2Nocm9tZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gbV9w
YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcAppbmRleCBiZmU3NjM5YjMxNDUwODAzZjllMjNhMDVjNzc5MDNhOThmMjJhY2IyLi41
ZDQwMTgxZDM3MWI1NTZmZDc5YmY2OTc4MzVkOWRiOTc5N2MwYjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMTE4LDkg
KzExOCw5IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29s
dXRlVHJhbnNmb3JtKCk7CiAgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuY29uY2F0Q1RN
KGFic29sdXRlVHJhbnNmb3JtKTsKIAotICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0Tm9kZSA9
IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkpOworICAgICAgICBSZWZQ
dHI8U1ZHRWxlbWVudD4gY29udGV4dE5vZGUgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZW5kZXJl
ci0+ZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGNvbnRleHROb2RlLT5oYXNSZWxhdGl2ZUxlbmd0
aHMoKSkgewotICAgICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGNvbnRl
eHROb2RlKTsKKyAgICAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250
ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplOwogCiAg
ICAgICAgICAgICAvLyBJZiB3ZSdyZSByZWZlcmVuY2luZyBhbiBlbGVtZW50IHdpdGggcGVyY2Vu
dGFnZSB1bml0cywgZWcuIDxyZWN0IHdpdGg9IjMwJSI+IHRob3NlIHZhbHVlcyB3ZXJlIHJlc29s
dmVkIGFnYWluc3QgdGhlIHZpZXdwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCA0ZjZhODI3NzE0
YTZjYWU5MGRmMTJlZmE4YzEzZTFhNDUzYmU3NjI0Li45N2VhNTVlOGMwODc5NzhiZGVmNWI4MmRl
ODU3ZTcwZjlmN2Y1MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtNDcsMTEgKzQ3LDExIEBAIHZv
aWQgU1ZHRmlsdGVyQnVpbGRlcjo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdCkKICAgICBtX25hbWVkRWZmZWN0cy5zZXQoaWQsIG1fbGFzdEVm
ZmVjdCk7CiB9CiAKLUZpbHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25z
dAogewogICAgIGlmIChpZC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fbGFzdEVmZmVjdCkK
LSAgICAgICAgICAgIHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7CisgICAgICAgICAgICByZXR1
cm4gbV9sYXN0RWZmZWN0OwogCiAgICAgICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChT
b3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRleCBjNWU0
MGE4MDhkZTBjNmZmMTM2NDVlZmU5MWNmNjVlYjdmZWRjNjdjLi41ZTdkMzhiNmIwNzkyMzQ0NDE4
NWY1NWYzZmRiZDAwMDQ1OTNiYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+KTsKIAotICAgIEZpbHRlckVmZmVjdCogZ2V0RWZmZWN0QnlJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBnZXRFZmZlY3RC
eUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogICAgIEZpbHRlckVmZmVjdCogbGFz
dEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQogCiAgICAgdm9p
ZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4mJiwg
UmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgK
aW5kZXggNWFiMWE0M2YwNjllZGFlNGRkOWIxMTBiNWU5NmI1MDczMmM4NDhiNC4uZTlkYThlOGE0
NDM0ZmYwNzgwZmNiYTliMDk1ZjAwYWUyMDhjNDBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
bmltVmFsRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2FuaW1hdGVkUGF0aEJ5
dGVTdHJlYW0pOwotICAgICAgICBTVkdQYXRoRWxlbWVudCogcGF0aEVsZW1lbnQgPSBkb3duY2Fz
dDxTVkdQYXRoRWxlbWVudD4oY29udGV4dEVsZW1lbnQoKSk7CisgICAgICAgIFJlZlB0cjxTVkdQ
YXRoRWxlbWVudD4gcGF0aEVsZW1lbnQgPSBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4oY29udGV4
dEVsZW1lbnQoKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIGFuaW1WYWwgaXMgb2JzZXJ2ZWQgZnJv
bSBKUywgd2UgaGF2ZSB0byB1cGRhdGUgaXQgb24gZWFjaCBhbmltYXRpb24gc3RlcC4KICAgICAg
ICAgLy8gVGhpcyBpcyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uIGFuZCBvbmx5IGRvbmUsIGlmIHNv
bWVvbmUgYWN0dWFsbHkgb2JzZXJ2ZXMgdGhlIGFuaW1hdGVkUGF0aFNlZ0xpc3QoKSB3aGlsZSBh
biBhbmltYXRpb24gaXMgcnVubmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAppbmRleCBiODMxZDQ3NjY0MTJjYTdk
ZjQ1NDQwNTk1NDU4Y2FlZTA2ZTg4MjllLi5jZmI3ZTQyY2Q4OWQ0N2RjNWE5N2E3YWMzYzQ2ZTlh
Y2FiZmVmZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdM
aXN0UHJvcGVydHlUZWFyT2ZmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICB1bnNpZ25lZCBzaXplID0gbV93cmFwcGVycy0+c2l6ZSgpOwogICAgICAgICBBU1NF
UlQoc2l6ZSA9PSBtX3ZhbHVlcy0+c2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgTGlzdEl0ZW1UZWFyT2ZmKiBpdGVtID0g
bV93cmFwcGVycy0+YXQoaSk7CisgICAgICAgICAgICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiBp
dGVtID0gbV93cmFwcGVycy0+YXQoaSk7CiAgICAgICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpdGVtLT5zZXRBbmltYXRlZFByb3BlcnR5
KG1fYW5pbWF0ZWRQcm9wZXJ0eS5wdHIoKSk7CkBAIC0xNTksNyArMTU5LDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgYm9vbCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIoUmVmPExpc3RJdGVt
VGVhck9mZj4mIG5ld0l0ZW0sIHVuc2lnbmVkKiBpbmRleFRvTW9kaWZ5KSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSA9
IG5ld0l0ZW0tPmFuaW1hdGVkUHJvcGVydHkoKTsKKyAgICAgICAgUmVmUHRyPFNWR0FuaW1hdGVk
UHJvcGVydHk+IGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0gPSBuZXdJdGVtLT5hbmltYXRlZFByb3Bl
cnR5KCk7CiAKICAgICAgICAgLy8gbmV3SXRlbSBoYXMgYmVlbiBjcmVhdGVkIG1hbnVhbGx5LCBp
dCBkb2Vzbid0IGJlbG9uZyB0byBhbnkgU1ZHRWxlbWVudC4KICAgICAgICAgLy8gKGZvciBleGFt
cGxlOiAidGV4dEVsZW1lbnQueC5iYXNlVmFsLmFwcGVuZEl0ZW0oc3Znc3ZnRWxlbWVudC5jcmVh
dGVTVkdMZW5ndGgoKSkiKQpAQCAtMTgxLDcgKzE4MSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
Ly8gU3BlYzogSWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgaXQgaXMgcmVtb3ZlZCBm
cm9tIGl0cyBwcmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMgbGlz
dC4KICAgICAgICAgLy8gJ25ld0l0ZW0nIGlzIGFscmVhZHkgbGl2aW5nIGluIGFub3RoZXIgbGlz
dC4gSWYgaXQncyBub3Qgb3VyIGxpc3QsIHN5bmNocm9uaXplIHRoZSBvdGhlciBsaXN0cyB3cmFw
cGVycyBhZnRlciB0aGUgcmVtb3ZhbC4KICAgICAgICAgYm9vbCBsaXZlc0luT3RoZXJMaXN0ID0g
YW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSAhPSBtX2FuaW1hdGVkUHJvcGVydHkucHRyKCk7Ci0gICAg
ICAgIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogcHJvcGVydHlUZWFyT2ZmID0gc3RhdGlj
X2Nhc3Q8QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKj4oYW5pbWF0ZWRQcm9wZXJ0eU9mSXRl
bSk7CisgICAgICAgIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogcHJvcGVydHlUZWFyT2Zm
ID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKj4oYW5pbWF0ZWRQcm9w
ZXJ0eU9mSXRlbS5nZXQoKSk7CiAgICAgICAgIGludCBpbmRleFRvUmVtb3ZlID0gcHJvcGVydHlU
ZWFyT2ZmLT5maW5kSXRlbShuZXdJdGVtLnB0cigpKTsKICAgICAgICAgQVNTRVJUKGluZGV4VG9S
ZW1vdmUgIT0gLTEpOwogCg==
</data>
<flag name="review"
          id="345521"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326380</attachid>
            <date>2017-11-08 14:42:09 -0800</date>
            <delta_ts>2017-11-08 19:55:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-179314-20171108144140.patch</filename>
            <type>text/plain</type>
            <size>81747</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0M2ZhMTJlNzk3NzM1
ZGJiOThiN2VhNDEwZDBmMTE5NTFkYzc0My4uM2NiMWRlYTQ4ZjJjMzZmYjdiMjE3N2UzYzFmNTIw
YzIzOGYyNWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAxNy0xMS0wOCAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBz
dGFjayByYXcgcG9pbnRlcnMgd2l0aCBSZWZQdHJzIHdpdGhpbiBXZWJDb3JlL3N2ZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MzE0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNDg0MjIwND4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCisKKyAgICAgICAgQmVzaWRlcyByZXBsYWNpbmcgcG9pbnRlcnMgZGlyZWN0bHksIHNv
bWUgb2YgdGhlIG1ldGhvZHMgYXJlIGNoYW5nZWQgdG8gcmV0dXJuCisgICAgICAgIFJlZlB0cnMg
YXMgd2VsbC4KKworICAgICAgICBObyBjaGFuZ2VzIGluIGJlaGF2aW9ycy4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudCBj
b25zdCk6CisgICAgICAgICogZG9tL0V2ZW50UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRQYXRoOjpldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb0Fu
Y2hvcik6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBzdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6
aGFzVmFsaWRHbHlwaEVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6
aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnJlc2V0QW5pbWF0ZWRU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6YXBwbHlSZXN1
bHRzVG9UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpj
YWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpoYXNWYWxp
ZEF0dHJpYnV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQ6OnVwZGF0ZUFuaW1hdGlvblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQ6OnJlc2V0QW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUp
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbCk6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0aW9uRWxlbWVudDo6YWRqdXN0Rm9ySW5oZXJpdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0aW9uRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKToKKyAgICAg
ICAgKiBzdmcvU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6
OnJvb3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50Ojp6b29tQW5kUGFu
RW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudDo6c3RhcnRQYW4p
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OnVwZGF0ZVBhbiBjb25zdCk6CisgICAg
ICAgICogc3ZnL1NWR0RvY3VtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92
ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWxNYXApOgorICAgICAgICAqIHN2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50Ojpjb3JyZXNwb25kaW5nVXNlRWxlbWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRDb3JyZXNwb25kaW5nRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudDo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnZhbGlkYXRlSW5zdGFuY2VzKToKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZCk6CisgICAgICAgICog
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1
aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdl
RWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJ
bWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdo
dFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6
YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVu
dCk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRGb250RmFjZSk6CisgICAgICAgICogc3Zn
L1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250
RmFjZUZvcm1hdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0Zv
bnRGYWNlVXJpRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZVVyaUVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0OjpkZXRlcm1pbmVWaWV3cG9ydCBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJp
YnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OnBhdGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
TVBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RH
cmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmZyYW1lRm9yQ3VycmVudFNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRTY2FsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6ZGVzZWxlY3RBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9BbmNob3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Z2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAq
IHN2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKToKKyAgICAg
ICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVs
ZW1lbnQ6OmRldGFjaFRhcmdldCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmVsZW1lbnRG
cm9tUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6
CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VXNlRWxlbWVudDo6dHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp0YXJnZXRDbG9uZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp0b0NsaXBQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1VzZUVsZW1lbnQ6OnJlbmRlcmVyQ2xpcENoaWxkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmZpbmRUYXJnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMgY29uc3Qp
OgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL2FuaW1hdGlv
bi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRh
aW5lcjo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6YnVpbGRQZW5k
aW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6Omluc2VydGVk
SW50b0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0
Q29uZGl0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVj
dENvbmRpdGlvbnMpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6cm9vdEVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpzZXRDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpjb250YWluZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjplbWJlZGRlZENvbnRlbnRC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Omhhc1JlbGF0aXZlV2lkdGgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Omhhc1JlbGF0aXZlSGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c3RhcnRBbmltYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnN0b3BBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6OmlzQW5pbWF0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQgY29u
c3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9m
Zi5oOgorCiAyMDE3LTExLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEltcGxlbWVudCBkZWxlZ2F0ZSBob29r
cyBmb3IgYXR0YWNobWVudCBlbGVtZW50IGluc2VydGlvbiBhbmQgcmVtb3ZhbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKaW5kZXggYjlkYzhkM2M5YjU1YzQwNWNlYjE2ZTg5MWFjMzUxMWE4NWIzMGI2NC4u
ZWRmMzk3MGU0Yjg5ZWQyZmI0N2MwN2Q3YjBiMDMyYjg5Y2VjN2U3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0zMDcyLDcgKzMwNzIsNyBAQCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRpb25DaAogICAg
IGlmICghaXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgCi0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBTVkdEb2N1bWVudDo6cm9v
dEVsZW1lbnQoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gU1ZHRG9jdW1lbnQ6
OnJvb3RFbGVtZW50KCpkb2N1bWVudCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlclJvb3QgPSByb290RWxl
bWVudC0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBh
dGguaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguaAppbmRleCA1Y2NiYTk5MGJmYzNj
YzI1OTkyNjRkNDFmOTVlMGQ0NmE4Mzc2ZmI1Li5hZDdjMmI0N2ZjYTgxZjUyNzU3YTliYzFlYjg0
ZWNjZDkyMGVhYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5oCkBAIC02Myw4ICs2Myw4IEBAIGlu
bGluZSBOb2RlKiBFdmVudFBhdGg6OmV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKE5v
ZGUmIHJlZmVyZW5jZU5vZGUpCiAKICAgICAvLyBFdmVudHMgc2VudCB0byBlbGVtZW50cyBpbnNp
ZGUgYW4gU1ZHIHVzZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUgZ28gdG8gdGhlIHVzZSBlbGVtZW50
LgogICAgIGlmIChpczxTVkdFbGVtZW50PihyZWZlcmVuY2VOb2RlKSkgewotICAgICAgICBpZiAo
YXV0byogdXNlRWxlbWVudCA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlZmVyZW5jZU5vZGUpLmNv
cnJlc3BvbmRpbmdVc2VFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdXNlRWxlbWVudDsK
KyAgICAgICAgaWYgKGF1dG8gdXNlRWxlbWVudCA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlZmVy
ZW5jZU5vZGUpLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4g
dXNlRWxlbWVudC5nZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gJnJlZmVyZW5jZU5vZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNjFlZjU5YWYzYzI4Y2Q5OTNhNGE0ZDViMzAz
MGY2MDMyYzY3OTU4Ny4uYTgzZWFhNTZiNjU0ZjAyODEzNTdkMzg5Y2IyODEzNTExN2ZjMjI3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjEyNiw3ICsyMTI2LDcgQEAgYm9vbCBG
cmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBkb2N1bWVu
dC5zZXRDU1NUYXJnZXQoYW5jaG9yRWxlbWVudCk7CiAKICAgICBpZiAoaXM8U1ZHRG9jdW1lbnQ+
KGRvY3VtZW50KSkgewotICAgICAgICBpZiAoYXV0byogcm9vdEVsZW1lbnQgPSBTVkdEb2N1bWVu
dDo6cm9vdEVsZW1lbnQoZG9jdW1lbnQpKSB7CisgICAgICAgIGlmIChhdXRvIHJvb3RFbGVtZW50
ID0gU1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KGRvY3VtZW50KSkgewogICAgICAgICAgICAgcm9v
dEVsZW1lbnQtPnNjcm9sbFRvQW5jaG9yKG5hbWUsIGFuY2hvckVsZW1lbnQpOwogICAgICAgICAg
ICAgaWYgKCFhbmNob3JFbGVtZW50KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggNzEwZGVjZTgxOGZiNDk2ODI1MjY5MGFlYjA4
YzI4ODJmZTBmYjcyNy4uNzk0MmFjNTVlMzRhZGNlNGFiMGIxNmNlZWE5NzZlNDM3MWQ5NjExMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBT
VkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgICAgICAg
ICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGhyZWYoKSk7
CiAKICAgICAgICAgICAgIGlmICh1cmxbMF0gPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgRWxl
bWVudCogdGFyZ2V0RWxlbWVudCA9IHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKHVybC5zdWJz
dHJpbmdTaGFyaW5nSW1wbCgxKSk7CisgICAgICAgICAgICAgICAgYXV0byB0YXJnZXRFbGVtZW50
ID0gbWFrZVJlZlB0cih0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZCh1cmwuc3Vic3RyaW5nU2hh
cmluZ0ltcGwoMSkpKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8U1ZHU01JTEVsZW1lbnQ+KHRh
cmdldEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFNWR1NNSUxFbGVt
ZW50PigqdGFyZ2V0RWxlbWVudCkuYmVnaW5CeUxpbmtBY3RpdmF0aW9uKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CkBAIC0xNDEsNyArMTQxLDcgQEAg
dm9pZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAg
ICAgICAgICAgICAgdGFyZ2V0ID0gIl9ibGFuayI7CiAgICAgICAgICAgICBldmVudC5zZXREZWZh
dWx0SGFuZGxlZCgpOwogCi0gICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZy
YW1lKCk7CisgICAgICAgICAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZy
YW1lKCkpOwogICAgICAgICAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTCh1cmwpLCB0YXJnZXQsICZldmVudCwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIGRvY3VtZW50KCkuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmNwcAppbmRleCA1Yzg5YTAxYTdlYmE2OTM2NWQxODYwYTZmMGJlZjMyZjFl
NzUzYjAyLi45YzZkYmUyZDk3MTU2MmMxODYxZGQ1MDA0MzM5NWNmMTExNzI3ZDBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcApAQCAtODcsNyArODcsNyBAQCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQWx0R2x5cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJgogYm9vbCBTVkdBbHRHbHlwaEVsZW1lbnQ6Omhhc1ZhbGlk
R2x5cGhFbGVtZW50cyhWZWN0b3I8U3RyaW5nPiYgZ2x5cGhOYW1lcykgY29uc3QKIHsKICAgICBT
dHJpbmcgdGFyZ2V0OwotICAgIGF1dG8qIGVsZW1lbnQgPSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0
cmluZyhnZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpLCBkb2N1bWVudCgpLCAmdGFy
Z2V0KTsKKyAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHRhcmdldEVsZW1lbnRGcm9tSVJJ
U3RyaW5nKGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0ciksIGRvY3VtZW50KCksICZ0
YXJnZXQpKTsKIAogICAgIGlmIChpczxTVkdHbHlwaEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAg
ICAgIGdseXBoTmFtZXMuYXBwZW5kKHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IDdjNmFiZjQ1MTg4Mjk0ZDk3ZmZkODNjOTZjZmJk
YmIwNzViMTJmNmMuLmNiMzM2MmZkOTlkMTA3Yzc1Mjg4Y2FlY2UzMjFjZjUyZjY1MTY5MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC00Niw4
ICs0Niw3IEBAIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6flNWR0FuaW1hdGVFbGVtZW50QmFzZSgp
ID0gZGVmYXVsdDsKIAogYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6Omhhc1ZhbGlkQXR0cmli
dXRlVHlwZSgpCiB7Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdl
dEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQpCisgICAgaWYgKCF0aGlzLT50YXJn
ZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBtX2FuaW1h
dGVkUHJvcGVydHlUeXBlICE9IEFuaW1hdGVkVW5rbm93biAmJiAhaGFzSW52YWxpZENTU0F0dHJp
YnV0ZVR5cGUoKTsKQEAgLTg1LDcgKzg0LDcgQEAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZShTVkdFbGUKIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBl
cmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxl
bWVudCkKIHsKICAgICBBU1NFUlQocmVzdWx0RWxlbWVudCk7Ci0gICAgU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKKyAgICBhdXRvIHRhcmdldEVsZW1l
bnQgPSBtYWtlUmVmUHRyKHRoaXMtPnRhcmdldEVsZW1lbnQoKSk7CiAgICAgaWYgKCF0YXJnZXRF
bGVtZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTExMSw3ICsxMTAsNyBAQCB2b2lkIFNWR0Fu
aW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZQogICAgICAgICBwZXJjZW50YWdlID0gcGVyY2VudGFnZSA8IDAuNSA/IDAg
OiAxOwogCiAgICAgLy8gVGFyZ2V0IGVsZW1lbnQgbWlnaHQgaGF2ZSBjaGFuZ2VkLgotICAgIG1f
YW5pbWF0b3ItPnNldENvbnRleHRFbGVtZW50KHRhcmdldEVsZW1lbnQpOworICAgIG1fYW5pbWF0
b3ItPnNldENvbnRleHRFbGVtZW50KHRhcmdldEVsZW1lbnQuZ2V0KCkpOwogCiAgICAgLy8gQmUg
c3VyZSB0byBkZXRhY2ggbGlzdCB3cmFwcGVycyBiZWZvcmUgd2UgbW9kZml5IHRoZWlyIHVuZGVy
bHlpbmcgdmFsdWUuIElmIHdlJ2QgZG8KICAgICAvLyBpZiBhZnRlciBjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKCkgcmFuIHRoZSBjYWNoZWQgcG9pbnRlcnMgaW4gdGhlIGxpc3QgcHJvcGVyeSB0ZWFy
CkBAIC0xMzUsOCArMTM0LDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0
ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW4KIAogYm9vbCBTVkdB
bmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7Ci0gICAgU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVs
ZW1lbnQpCisgICAgaWYgKCF0aGlzLT50YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0
cmluZyk7CkBAIC0xNDcsOCArMTQ1LDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNh
bGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGMKIAogYm9v
bCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCiB7Ci0gICAgU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRh
cmdldEVsZW1lbnQpCisgICAgaWYgKCF0aGlzLT50YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChhbmltYXRpb25Nb2RlKCkgPT0gQnlBbmltYXRpb24gJiYg
IWlzQWRkaXRpdmUoKSkKQEAgLTE4OSwxMiArMTg2LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSgpCiAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iq
IGFuaW1hdG9yID0gZW5zdXJlQW5pbWF0b3IoKTsKICAgICBBU1NFUlQobV9hbmltYXRlZFByb3Bl
cnR5VHlwZSA9PSBhbmltYXRvci0+dHlwZSgpKTsKIAotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CisgICAgYXV0byB0YXJnZXRFbGVtZW50ID0g
bWFrZVJlZlB0cih0aGlzLT50YXJnZXRFbGVtZW50KCkpOwogICAgIGlmICghdGFyZ2V0RWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSA9IHRoaXMtPmF0dHJpYnV0ZU5hbWUoKTsKLSAgICBTaG91bGRBcHBseUFuaW1hdGlvbiBz
aG91bGRBcHBseSA9IHNob3VsZEFwcGx5QW5pbWF0aW9uKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0
ZU5hbWUpOworICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gc2hvdWxkQXBw
bHlBbmltYXRpb24odGFyZ2V0RWxlbWVudC5nZXQoKSwgYXR0cmlidXRlTmFtZSk7CiAKICAgICBp
ZiAoc2hvdWxkQXBwbHkgPT0gRG9udEFwcGx5QW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CkBA
IC0yMjAsOCArMjE3LDggQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnJlc2V0QW5pbWF0
ZWRUeXBlKCkKICAgICBTdHJpbmcgYmFzZVZhbHVlOwogCiAgICAgaWYgKHNob3VsZEFwcGx5ID09
IEFwcGx5Q1NTQW5pbWF0aW9uKSB7Ci0gICAgICAgIEFTU0VSVChTVkdBbmltYXRpb25FbGVtZW50
Ojppc1RhcmdldEF0dHJpYnV0ZUNTU1Byb3BlcnR5KHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5h
bWUpKTsKLSAgICAgICAgY29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUodGFyZ2V0RWxlbWVudCwgY3Nz
UHJvcGVydHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSwgYmFzZVZhbHVlKTsKKyAgICAg
ICAgQVNTRVJUKFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzVGFyZ2V0QXR0cmlidXRlQ1NTUHJvcGVy
dHkodGFyZ2V0RWxlbWVudC5nZXQoKSwgYXR0cmlidXRlTmFtZSkpOworICAgICAgICBjb21wdXRl
Q1NTUHJvcGVydHlWYWx1ZSh0YXJnZXRFbGVtZW50LmdldCgpLCBjc3NQcm9wZXJ0eUlEKGF0dHJp
YnV0ZU5hbWUubG9jYWxOYW1lKCkpLCBiYXNlVmFsdWUpOwogICAgIH0KIAogICAgIGlmICghbV9h
bmltYXRlZFR5cGUpCkBAIC0zMzksNyArMzM2LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudEJh
c2U6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKICAgICBpZiAoIW1fYW5pbWF0ZWRUeXBlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFy
Z2V0RWxlbWVudCgpOworICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VSZWZQdHIodGhpcy0+
dGFyZ2V0RWxlbWVudCgpKTsKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
ID0gdGhpcy0+YXR0cmlidXRlTmFtZSgpOwogCiAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwpA
QCAtMzUyLDcgKzM0OSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjphcHBseVJlc3Vs
dHNUb1RhcmdldCgpCiAgICAgfQogCiAgICAgLy8gV2UgZG8gdXBkYXRlIHRoZSBzdHlsZSBhbmQg
dGhlIGFuaW1hdGlvbiBwcm9wZXJ0eSBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgotICAgIFNo
b3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gc2hvdWxkQXBwbHlBbmltYXRpb24odGFy
Z2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7CisgICAgU2hvdWxkQXBwbHlBbmltYXRpb24gc2hv
dWxkQXBwbHkgPSBzaG91bGRBcHBseUFuaW1hdGlvbih0YXJnZXRFbGVtZW50LmdldCgpLCBhdHRy
aWJ1dGVOYW1lKTsKICAgICBpZiAoc2hvdWxkQXBwbHkgPT0gQXBwbHlYTUxhbmRDU1NBbmltYXRp
b24pCiAgICAgICAgIGFwcGx5Q1NTUHJvcGVydHlUb1RhcmdldEFuZEluc3RhbmNlcygqdGFyZ2V0
RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgbV9hbmltYXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKSk7
CiAKQEAgLTQwNiw4ICs0MDMsNyBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6aXNBZGRp
dGl2ZSgpIGNvbnN0CiBmbG9hdCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsK
ICAgICAvLyBGSVhNRTogQSByZXR1cm4gdmFsdWUgb2YgZmxvYXQgaXMgbm90IGVub3VnaCB0byBz
dXBwb3J0IHBhY2VkIGFuaW1hdGlvbnMgb24gbGlzdHMuCi0gICAgU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQp
CisgICAgaWYgKCF0aGlzLT50YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiAtMTsKIAog
ICAgIHJldHVybiBlbnN1cmVBbmltYXRvcigpLT5jYWxjdWxhdGVEaXN0YW5jZShmcm9tU3RyaW5n
LCB0b1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcAppbmRleCAwYzc0MTZkZGQ1OTkwZDNkYzU2MDAyNGNkZDNkZWE0NGZmZTg1NWJhLi45
NjZmNDYzNmFkYTVmNjBlODBkYTUyM2U5NjUxZjZjN2VkMGEwNzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAg
UmVmPFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50PiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUKIAogYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6
aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkKIHsKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50
ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOworICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VS
ZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQ6OnVwZGF0ZUFuaW1hdGlvblBhdGgoKQogICAgIGJvb2wgZm91bmRNUGF0
aCA9IGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBtUGF0aCA6IGNoaWxkcmVuT2ZUeXBlPFNWR01Q
YXRoRWxlbWVudD4oKnRoaXMpKSB7Ci0gICAgICAgIFNWR1BhdGhFbGVtZW50KiBwYXRoRWxlbWVu
dCA9IG1QYXRoLnBhdGhFbGVtZW50KCk7CisgICAgICAgIGF1dG8gcGF0aEVsZW1lbnQgPSBtUGF0
aC5wYXRoRWxlbWVudCgpOwogICAgICAgICBpZiAocGF0aEVsZW1lbnQpIHsKLSAgICAgICAgICAg
IG1fYW5pbWF0aW9uUGF0aCA9IHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHBhdGhFbGVtZW50KTsK
KyAgICAgICAgICAgIG1fYW5pbWF0aW9uUGF0aCA9IHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHBh
dGhFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGZvdW5kTVBhdGggPSB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpyZXNldEFuaW1hdGVkVHlwZSgpCiB7CiAgICAgaWYgKCFoYXNWYWxp
ZEF0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFNWR0VsZW1lbnQqIHRhcmdl
dEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CisgICAgYXV0byB0YXJnZXRFbGVtZW50
ID0gbWFrZVJlZlB0cih0aGlzLT50YXJnZXRFbGVtZW50KCkpOwogICAgIGlmICghdGFyZ2V0RWxl
bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm9y
bSA9IHRhcmdldEVsZW1lbnQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpKQpAQCAtMjMxLDcgKzIz
MSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmJ1aWxkVHJhbnNmb3JtRm9yUHJv
Z3Jlc3MoQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2ZvCiAKIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KikKIHsKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRF
bGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOworICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9
IG1ha2VSZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKICAgICBpZiAoIXRhcmdldEVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKICAgICBBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm9ybSA9IHRh
cmdldEVsZW1lbnQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwpAQCAtMjcxLDcgKzI3MSw3IEBA
IHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQKIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFw
cGx5UmVzdWx0c1RvVGFyZ2V0KCkKIHsKICAgICAvLyBXZSBhY2N1bXVsYXRlIHRvIHRoZSB0YXJn
ZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBpcyBub3QgbXVjaCB0byBkbyBoZXJl
LgotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7
CisgICAgYXV0byB0YXJnZXRFbGVtZW50ID0gbWFrZVJlZlB0cih0aGlzLT50YXJnZXRFbGVtZW50
KCkpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAppbmRleCA3
MmViNzcyMGNlNWE1ZGNjOTAyM2QyY2M0ODdmYTBjY2VkODMwNjkzLi44ZGY4NTlkOTlmNmQ1YmMx
ZjFkYjIwMDU5MmExNjc0ZGQ3NjU4MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKQEAgLTQyLDggKzQyLDcgQEAgUmVmPFNWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50PiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmkKIAogYm9vbCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFs
aWRBdHRyaWJ1dGVUeXBlKCkKIHsKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhp
cy0+dGFyZ2V0RWxlbWVudCgpOwotICAgIGlmICghdGFyZ2V0RWxlbWVudCkKKyAgICBpZiAoIXRo
aXMtPnRhcmdldEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGF0
dHJpYnV0ZVR5cGUoKSA9PSBBdHRyaWJ1dGVUeXBlOjpDU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFBhdGguY3BwCmluZGV4IDI5ZTI0OWJjODFhZDIxNWY2NDZmYzEyOWE0NTcxNjdmZTA5
YmI3NjcuLmEzM2ExNDlkNzBiZGZkNmFlYzgxZGNhZWZhNmE2MGY1Yjk3Yjg3MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgU1ZH
QW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlCiAKIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnJlc2V0QW5p
bVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1h
dGVkVHlwZXMsIFNWR1BhdGhCeXRlU3RyZWFtKiBieXRlU3RyZWFtKQogewotICAgIFNWR0FuaW1h
dGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIHByb3BlcnR5ID0gY2FzdEFuaW1hdGVkUHJv
cGVydHlUb0FjdHVhbFR5cGU8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4o
YW5pbWF0ZWRUeXBlc1swXS5wcm9wZXJ0aWVzWzBdLmdldCgpKTsKKyAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gcHJvcGVydHkgPSBjYXN0QW5pbWF0ZWRQ
cm9wZXJ0eVRvQWN0dWFsVHlwZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2Zm
PihhbmltYXRlZFR5cGVzWzBdLnByb3BlcnRpZXNbMF0uZ2V0KCkpOwogICAgIGNvbnN0IGF1dG8m
IGJhc2VWYWx1ZSA9IHByb3BlcnR5LT5jdXJyZW50QmFzZVZhbHVlKCk7CiAKICAgICBidWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0VmFsdWVzKGJhc2VWYWx1ZSwgKmJ5dGVT
dHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCmluZGV4IDA1YTkzY2JlOTg3NDM5NTM0N2EwM2YyMTNlZGI4MjFlZGYxN2I1
MmYuLmQ2ZmFjZjM1YWQ1NjFiM2VmY2JmZmI3OTdiZDM4ZDQ2MDQyYTgzNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCB2
b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFkanVzdEZvckluaGVyaXRhbmNlKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQsIGNvbnN0CiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCB3YW50
IHRvIHdvcmsgd2l0aCB0aGUgdmFsdWUgdHlwZSBkaXJlY3RseSB0byBhdm9pZCB0aGUgU3RyaW5n
IHBhcnNpbmcuCiAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwogCi0gICAgRWxlbWVudCogcGFy
ZW50ID0gdGFyZ2V0RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOworICAgIGF1dG8gcGFyZW50ID0g
bWFrZVJlZlB0cih0YXJnZXRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpOwogICAgIGlmICghcGFy
ZW50IHx8ICFwYXJlbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTY2
MiwxMyArNjYyLDEzIEBAIHN0YXRpYyBib29sIGluaGVyaXRzRnJvbVByb3BlcnR5KFNWR0VsZW1l
bnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lCiAKIHZvaWQgU1ZHQW5pbWF0
aW9uRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGNvbnN0IFN0cmluZyYgZnJv
bSwgY29uc3QgU3RyaW5nJiB0bykKIHsKLSAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0g
dGhpcy0+dGFyZ2V0RWxlbWVudCgpOworICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VSZWZQ
dHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAK
ICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gdGhpcy0+YXR0cmlidXRl
TmFtZSgpOwotICAgIGlmIChpbmhlcml0c0Zyb21Qcm9wZXJ0eSh0YXJnZXRFbGVtZW50LCBhdHRy
aWJ1dGVOYW1lLCBmcm9tKSkKKyAgICBpZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0RWxl
bWVudC5nZXQoKSwgYXR0cmlidXRlTmFtZSwgZnJvbSkpCiAgICAgICAgIG1fZnJvbVByb3BlcnR5
VmFsdWVUeXBlID0gSW5oZXJpdFZhbHVlOwotICAgIGlmIChpbmhlcml0c0Zyb21Qcm9wZXJ0eSh0
YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCB0bykpCisgICAgaWYgKGluaGVyaXRzRnJvbVBy
b3BlcnR5KHRhcmdldEVsZW1lbnQuZ2V0KCksIGF0dHJpYnV0ZU5hbWUsIHRvKSkKICAgICAgICAg
bV90b1Byb3BlcnR5VmFsdWVUeXBlID0gSW5oZXJpdFZhbHVlOwogfQogdm9pZCBTVkdBbmltYXRp
b25FbGVtZW50OjpyZXNldEFuaW1hdGVkUHJvcGVydHlUeXBlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnQuY3BwCmluZGV4IDM5MWUwNDk0ZmRhZDI4MjlmMmE4NzYyOGI4OGQ1MDE0MzI2N2ZmNGMu
LjJjOTUwNWMxMzgzNGU0YzE3OWRmYTU0YzNhNzFmZTRjZmIyNDRiZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQCBTVkdEb2N1bWVudDo6U1ZHRG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKIH0KIAotU1ZHU1ZHRWxlbWVudCog
U1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0
cjxTVkdTVkdFbGVtZW50PiBTVkdEb2N1bWVudDo6cm9vdEVsZW1lbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQoKTsKICAgICBpZiAoIWlzPFNWR1NWR0VsZW1lbnQ+KGVsZW1lbnQpKQpAQCAtNDIsNyArNDIs
NyBAQCBTVkdTVkdFbGVtZW50KiBTVkdEb2N1bWVudDo6cm9vdEVsZW1lbnQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50KQogCiBib29sIFNWR0RvY3VtZW50Ojp6b29tQW5kUGFuRW5hYmxlZCgpIGNv
bnN0CiB7Ci0gICAgYXV0byogZWxlbWVudCA9IHJvb3RFbGVtZW50KCp0aGlzKTsKKyAgICBhdXRv
IGVsZW1lbnQgPSByb290RWxlbWVudCgqdGhpcyk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIChlbGVtZW50LT51c2VDdXJyZW50VmlldygpID8g
ZWxlbWVudC0+Y3VycmVudFZpZXcoKS56b29tQW5kUGFuKCkgOiBlbGVtZW50LT56b29tQW5kUGFu
KCkpID09IFNWR1pvb21BbmRQYW5NYWduaWZ5OwpAQCAtNTAsNyArNTAsNyBAQCBib29sIFNWR0Rv
Y3VtZW50Ojp6b29tQW5kUGFuRW5hYmxlZCgpIGNvbnN0CiAKIHZvaWQgU1ZHRG9jdW1lbnQ6OnN0
YXJ0UGFuKGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0KQogewotICAgIGF1dG8qIGVsZW1lbnQgPSBy
b290RWxlbWVudCgqdGhpcyk7CisgICAgYXV0byBlbGVtZW50ID0gcm9vdEVsZW1lbnQoKnRoaXMp
OwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcGFubmluZ09mZnNl
dCA9IHN0YXJ0IC0gZWxlbWVudC0+Y3VycmVudFRyYW5zbGF0ZVZhbHVlKCk7CkBAIC01OCw3ICs1
OCw3IEBAIHZvaWQgU1ZHRG9jdW1lbnQ6OnN0YXJ0UGFuKGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
KQogCiB2b2lkIFNWR0RvY3VtZW50Ojp1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRp
b24pIGNvbnN0CiB7Ci0gICAgYXV0byogZWxlbWVudCA9IHJvb3RFbGVtZW50KCp0aGlzKTsKKyAg
ICBhdXRvIGVsZW1lbnQgPSByb290RWxlbWVudCgqdGhpcyk7CiAgICAgaWYgKCFlbGVtZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgZWxlbWVudC0+c2V0Q3VycmVudFRyYW5zbGF0ZShwb3NpdGlv
biAtIG1fcGFubmluZ09mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCmluZGV4IDIzM2Yx
MWI3NDNjMzUzZjU1NDc0ZjFlYjkxZTZiMWY1NjJhZGNkODguLmVlOTUzZmNjN2U3MThlNjBlYjYx
OTVjNzc0ZmM4ZDY5MjNiY2E5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCkBAIC0zMSw3
ICszMSw3IEBAIGNsYXNzIFNWR0RvY3VtZW50IGZpbmFsIDogcHVibGljIFhNTERvY3VtZW50IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqLCBjb25z
dCBVUkwmKTsKIAotICAgIHN0YXRpYyBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudChjb25zdCBE
b2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gcm9vdEVsZW1lbnQo
Y29uc3QgRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgem9vbUFuZFBhbkVuYWJsZWQoKSBjb25zdDsK
ICAgICB2b2lkIHN0YXJ0UGFuKGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggNzU4YTBkYTk1ZmRkMmMy
OGRkMWQ2MWM1MjRkMGQ2YmIxYmJkY2M5Yi4uNjVlMjQ2ZDk3Nzg4YTkyYzE0NjNiZDE1YTgxMWM3
MTlhMWExODllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6bWFy
a1BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmluZyYgaQogICAgICAg
ICBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsLmFkZChpZCwgV1RGTW92ZShleGlzdGluZykp
OwogfQogCi1FbGVtZW50KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9t
UGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWxNYXAoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK1Jl
ZlB0cjxFbGVtZW50PiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVu
ZGluZ1Jlc291cmNlc0ZvclJlbW92YWxNYXAoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKIHsKICAg
ICBpZiAoaWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI3Miw3ICsyNzIsNyBA
QCBFbGVtZW50KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGlu
Z1Jlc291cmNlc0ZvclJlbW92YWxNYXAoYwogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8g
Zmlyc3RFbGVtZW50ID0gcmVzb3VyY2VTZXQtPmJlZ2luKCk7Ci0gICAgRWxlbWVudCogZWxlbWVu
dCA9ICpmaXJzdEVsZW1lbnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSAqZmlyc3RF
bGVtZW50OwogCiAgICAgcmVzb3VyY2VTZXQtPnJlbW92ZShmaXJzdEVsZW1lbnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKaW5kZXggNmE1Mjc3MDQ5YzVi
MjU1MDI1Zjk5YTcyZTE5ZjJjZTA4MWJkMWRlYi4uZWY3MmU5NzY1ZWM2N2MxODIzYjBjM2RkM2Zk
NTc0MzY1ZTc5NTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcg
dHdvIGZ1bmN0aW9ucyBhcmUgdXNlZCBmb3Igc2NoZWR1bGluZyBhIHBlbmRpbmcgcmVzb3VyY2Ug
dG8gYmUgcmVtb3ZlZC4KICAgICB2b2lkIG1hcmtQZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChj
b25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBFbGVtZW50KiByZW1vdmVFbGVtZW50RnJvbVBlbmRp
bmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZlB0
cjxFbGVtZW50PiByZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFw
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNFbGVtZW50V2l0
aFBlbmRpbmdSZXNvdXJjZXMoRWxlbWVudCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCmluZGV4IDk4OTcyYzVkODI0NGMyYTRjMDBkMjhhOGM4Y2RlMTIwY2MzODc1ZjIuLjJlNGZh
ZDE2YWZkYjg1MzY3MDk0YjBjZTEwZjE1Yjg1MTdjN2ExYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCgpCiAg
ICAgaWYgKG1fc3ZnUmFyZURhdGEpIHsKICAgICAgICAgZm9yIChTVkdFbGVtZW50KiBpbnN0YW5j
ZSA6IG1fc3ZnUmFyZURhdGEtPmluc3RhbmNlcygpKQogICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3ZnUmFyZURhdGEtPnNldENvcnJlc3BvbmRpbmdFbGVtZW50KG51bGxwdHIpOwotICAgICAgICBp
ZiAoU1ZHRWxlbWVudCogY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtX3N2Z1JhcmVEYXRhLT5jb3Jy
ZXNwb25kaW5nRWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byBjb3JyZXNwb25kaW5nRWxlbWVu
dCA9IG1ha2VSZWZQdHIobV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpCiAg
ICAgICAgICAgICBjb3JyZXNwb25kaW5nRWxlbWVudC0+bV9zdmdSYXJlRGF0YS0+aW5zdGFuY2Vz
KCkucmVtb3ZlKHRoaXMpOwogCiAgICAgICAgIG1fc3ZnUmFyZURhdGEgPSBudWxscHRyOwpAQCAt
NDMwLDcgKzQzMCw3IEBAIFNWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6OmNvcnJlc3BvbmRpbmdFbGVt
ZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9zdmdSYXJlRGF0YSA/IG1fc3ZnUmFyZURhdGEtPmNv
cnJlc3BvbmRpbmdFbGVtZW50KCkgOiBudWxscHRyOwogfQogCi1TVkdVc2VFbGVtZW50KiBTVkdF
bGVtZW50Ojpjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0CitSZWZQdHI8U1ZHVXNlRWxl
bWVudD4gU1ZHRWxlbWVudDo6Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSBjb25zdAogewogICAg
IGF1dG8qIHJvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIGlmICghcm9vdCkKQEAg
LTQ0Niw3ICs0NDYsNyBAQCBTVkdVc2VFbGVtZW50KiBTVkdFbGVtZW50Ojpjb3JyZXNwb25kaW5n
VXNlRWxlbWVudCgpIGNvbnN0CiB2b2lkIFNWR0VsZW1lbnQ6OnNldENvcnJlc3BvbmRpbmdFbGVt
ZW50KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KQogewogICAgIGlmIChtX3N2Z1Jh
cmVEYXRhKSB7Ci0gICAgICAgIGlmIChTVkdFbGVtZW50KiBvbGRDb3JyZXNwb25kaW5nRWxlbWVu
dCA9IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCisgICAgICAgIGlmIChh
dXRvIG9sZENvcnJlc3BvbmRpbmdFbGVtZW50ID0gbWFrZVJlZlB0cihtX3N2Z1JhcmVEYXRhLT5j
b3JyZXNwb25kaW5nRWxlbWVudCgpKSkKICAgICAgICAgICAgIG9sZENvcnJlc3BvbmRpbmdFbGVt
ZW50LT5tX3N2Z1JhcmVEYXRhLT5pbnN0YW5jZXMoKS5yZW1vdmUodGhpcyk7CiAgICAgfQogICAg
IGlmIChtX3N2Z1JhcmVEYXRhIHx8IGNvcnJlc3BvbmRpbmdFbGVtZW50KQpAQCAtNzI5LDcgKzcy
OSw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCkKIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTVkdFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNl
PiB0cmVlIHdlIGdldCB0aGUgc3R5bGUgZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVlLgotICAgIGlm
IChhdXRvKiBzdHlsZUVsZW1lbnQgPSB0aGlzLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKQorICAg
IGlmIChhdXRvIHN0eWxlRWxlbWVudCA9IG1ha2VSZWZQdHIodGhpcy0+Y29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiBzdHlsZUVsZW1lbnQtPnJlc29sdmVTdHlsZSgmcGFy
ZW50U3R5bGUpOwogCiAgICAgcmV0dXJuIHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwpAQCAt
NzU5LDcgKzc1OSw3IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBTVkdFbGVtZW50Ojpjb21wdXRlZFN0
eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiAgICAgICAgIHJldHVybiBFbGVt
ZW50Ojpjb21wdXRlZFN0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwogCiAgICAgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gbnVsbHB0cjsKLSAgICBpZiAoRWxlbWVudCogcGFy
ZW50ID0gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CisgICAgaWYgKGF1dG8gcGFyZW50
ID0gbWFrZVJlZlB0cihwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpKSB7CiAgICAgICAgIGlm
IChhdXRvIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcGFyZW50
U3R5bGUgPSAmcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgfQpAQCAtMTAwMywxMSArMTAwMywxMSBA
QCB2b2lkIFNWR0VsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVlZGVkKCkKICAgICBl
eHRlbnNpb25zLm1hcmtQZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChyZXNvdXJjZUlkKTsKIAog
ICAgIC8vIFJlYnVpbGQgcGVuZGluZyByZXNvdXJjZXMgZm9yIGVhY2ggY2xpZW50IG9mIGEgcGVu
ZGluZyByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIHJlbW92ZWQuCi0gICAgd2hpbGUgKEVsZW1lbnQq
IGNsaWVudEVsZW1lbnQgPSBleHRlbnNpb25zLnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291
cmNlc0ZvclJlbW92YWxNYXAocmVzb3VyY2VJZCkpIHsKKyAgICB3aGlsZSAoYXV0byBjbGllbnRF
bGVtZW50ID0gZXh0ZW5zaW9ucy5yZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JS
ZW1vdmFsTWFwKHJlc291cmNlSWQpKSB7CiAgICAgICAgIEFTU0VSVChjbGllbnRFbGVtZW50LT5o
YXNQZW5kaW5nUmVzb3VyY2VzKCkpOwogICAgICAgICBpZiAoY2xpZW50RWxlbWVudC0+aGFzUGVu
ZGluZ1Jlc291cmNlcygpKSB7CiAgICAgICAgICAgICBjbGllbnRFbGVtZW50LT5idWlsZFBlbmRp
bmdSZXNvdXJjZSgpOwotICAgICAgICAgICAgZXh0ZW5zaW9ucy5jbGVhckhhc1BlbmRpbmdSZXNv
dXJjZXNJZlBvc3NpYmxlKGNsaWVudEVsZW1lbnQpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy5j
bGVhckhhc1BlbmRpbmdSZXNvdXJjZXNJZlBvc3NpYmxlKGNsaWVudEVsZW1lbnQuZ2V0KCkpOwog
ICAgICAgICB9CiAgICAgfQogfQpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBTVkdFbGVtZW50
Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3Ro
cywgU1ZHRWwKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRmluZCBmaXJzdCBzdHlsZWQgcGFy
ZW50IG5vZGUsIGFuZCBub3RpZnkgaXQgdGhhdCB3ZSd2ZSBjaGFuZ2VkIG91ciByZWxhdGl2ZSBs
ZW5ndGggc3RhdGUuCi0gICAgQ29udGFpbmVyTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKKyAg
ICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CiAgICAgd2hpbGUgKG5vZGUp
IHsKICAgICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTEyOSw4ICsxMTI5LDggQEAgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlSW5zdGFu
Y2VzKCkKIAogICAgIGF1dG8mIGluc3RhbmNlcyA9IHRoaXMtPmluc3RhbmNlcygpOwogICAgIHdo
aWxlICghaW5zdGFuY2VzLmlzRW1wdHkoKSkgewotICAgICAgICBTVkdFbGVtZW50KiBpbnN0YW5j
ZSA9ICppbnN0YW5jZXMuYmVnaW4oKTsKLSAgICAgICAgaWYgKFNWR1VzZUVsZW1lbnQqIHVzZUVs
ZW1lbnQgPSBpbnN0YW5jZS0+Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSkKKyAgICAgICAgYXV0
byBpbnN0YW5jZSA9IG1ha2VSZWZQdHIoKmluc3RhbmNlcy5iZWdpbigpKTsKKyAgICAgICAgaWYg
KGF1dG8gdXNlRWxlbWVudCA9IGluc3RhbmNlLT5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKQog
ICAgICAgICAgICAgdXNlRWxlbWVudC0+aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKICAgICAgICAg
aW5zdGFuY2UtPnNldENvcnJlc3BvbmRpbmdFbGVtZW50KG51bGxwdHIpOwogICAgIH0gd2hpbGUg
KCFpbnN0YW5jZXMuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IGJiZGNj
NWYzNTMyOGJmZmNkNjc5NGMwYjBmZDQ5NTIwMjVmMWM2ZjEuLmY4ODJkMTQwN2E3ZjE4ZmIyY2U0
NDdhMWY1MmFhMzgzNjBjMjY5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtOTksNyAr
OTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRCb3VuZGluZ0JveChGbG9hdFJlY3QmLCBTVkdM
b2NhdGFibGU6OlN0eWxlVXBkYXRlU3RyYXRlZ3kgPSBTVkdMb2NhdGFibGU6OkFsbG93U3R5bGVV
cGRhdGUpOwogCiAgICAgU1ZHRWxlbWVudCogY29ycmVzcG9uZGluZ0VsZW1lbnQoKSBjb25zdDsK
LSAgICBTVkdVc2VFbGVtZW50KiBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0OworICAg
IFJlZlB0cjxTVkdVc2VFbGVtZW50PiBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRDb3JyZXNwb25kaW5nRWxlbWVudChTVkdFbGVtZW50Kik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IGU2YjJhODk5NzI4Y2QwMmEz
MDNhOTQxNWMzNGFlZjlkNmRjNmYzOWQuLjUzYzA4ODhmYWM5M2Y4MjU4ODdlNTY5NmE0ZWI1MWJk
NTA4Mjg5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAt
MTA1LDggKzEwNSw4IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVy
LCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MiA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOwogCiAgICAgaWYgKCFpbnB1dDEgfHwg
IWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCA4NDFmNGZhYWEzMWM0NWU0ZDE0ODA2
NmI3ZWQ1NjVlZmIxZDU0NmEyLi44OTExMGE5OTY2ZjY5ZjA4OWFhYTQ2MmNhZDczOGI2NmQ1YjZk
MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0
KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRv
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYg
KCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKaW5kZXggNWMxZDI1MDNj
ZGJiOWJiMGY4NDQ5NTYxMzM0MzM3MGU3MzdmOTMwNC4uYWMyZDY0NDllMmQ3NjFjZDNkZjY5Njc5
NTZiMjA0NzQwNWE4Yzg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIm
IGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cAppbmRleCBjZDNkNWM2MWIzNzk1Yzk0MTk4ZTNhZmI2NTFjODc2N2MyYTcwOTBmLi5jNTEyYTU5
MzY2MDEzMjQwNmZhYzRkNDhjYzQ1NzI3MWMxZjRmY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTQwLDggKzE0MCw4IEBAIHZvaWQgU1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVy
KQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjEoKSk7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBmaWx0ZXJCdWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCA5Y2YyOGFiNzUyMzEyYzZkN2UzMTNkOGMwODJh
ZmRkNjc1Mjk0Mzg5Li5iYzE3ZjdlOTJlZDc0ODdjNjI3MDFmNmZkZjEyYjhkYWUyNGRhZTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5j
cHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYQogCiBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgYXV0byogaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5w
dXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggY2EwZjY4ZmE5YWI5NmY5NmFj
NjNiZDZlZjE1YjIzNjJjYWZiMDdiYi4uM2MxZTZhMDhkZWQ3ZDk4N2ZjMTM1YzUwNTZiMWMwMDM1
ZTkwZDQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6bGlnaHRFbGVtZW50QXR0cmlidXRlQ2hhbmdlZChjb25zdCBTVkdGRUxpZ2h0
RQogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewot
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKIAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5k
ZXggZTk4OWI5Y2UzMWRmNDQ2NmIzMWUyN2UxNjkyNjU0NDE3YjNlYjVmZS4uMTViY2IzYjc2MDgy
Y2MzNDU4YjRjMzM5NWYxNTZmY2JiMTlhMTFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTEyMyw4ICsxMjMsOCBAQCB2
b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTgogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQyID0gZmls
dGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEg
fHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggMzE5MzVlMTcwZjNjMTcwNWZlMjE5
NGY5NTM5ZjE0NzQzNWMyNmRkMC4uZWY1ZmRjZGZmYmJmMGFmZjkwYmZlMThhOWNiM2VmYWNiZDMz
MDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAgY29uc3Qg
Q29sb3ImIGNvbG9yID0gc3ZnU3R5bGUuZmxvb2RDb2xvcigpOwogICAgIGZsb2F0IG9wYWNpdHkg
PSBzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKTsKIAotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBpZiAoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggN2IyMWRlODM2ZGYxMDk3NmFmNjJlMzNlYjQ4NDI3
MTNhMTUwOGVjZC4uYjIyZmY0OTk0ZmUwOGY2ZGNmYzMxMTY0MGI2NzNjYjhkNDdmZjI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogCiBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCogaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5w
dXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCmluZGV4IDZmOWEyNzEwYjNlNDUzYzg5MmQxMTZlMzQzMWIwYzEyMzZiNGRh
MTQuLmM0YzlkMDVmZDU4N2YxNTA5YTAwMzcyNjkxMDgwMmJkZWJjZDJhYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgU3RyaW5nIGlkOwotICAgIEVsZW1lbnQqIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5j
ZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQpOwor
ICAgIGF1dG8gdGFyZ2V0ID0gbWFrZVJlZlB0cihTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1l
bnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9jdW1lbnQoKSwgJmlkKSk7CiAgICAgaWYgKCF0YXJn
ZXQpIHsKICAgICAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlcXVlc3RJbWFn
ZVJlc291cmNlKCk7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6
YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgIH0gZWxzZSBpZiAodGFyZ2V0LT5pc1NWR0VsZW1l
bnQoKSkgewogICAgICAgICAvLyBSZWdpc3RlciB1cyB3aXRoIHRoZSB0YXJnZXQgaW4gdGhlIGRl
cGVuZGVuY2llcyBtYXAuIEFueSBjaGFuZ2Ugb2YgaHJlZkVsZW1lbnQKICAgICAgICAgLy8gdGhh
dCBsZWFkcyB0byByZWxheW91dC9yZXBhaW50aW5nIG5vdyBpbmZvcm1zIHVzLCBzbyB3ZSBjYW4g
cmVhY3QgdG8gaXQuCi0gICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFk
ZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCh0aGlzLCBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJn
ZXQpKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkRWxlbWVu
dFJlZmVyZW5jaW5nVGFyZ2V0KHRoaXMsIGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldC5nZXQo
KSkpOwogICAgIH0KIAogICAgIGludmFsaWRhdGUoKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCiAgICAg
aWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFbGVtZW50KiBwYXJl
bnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVu
dEVsZW1lbnQoKSk7CiAKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpmaWx0ZXJUYWcpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTGlnaHRFbGVtZW50LmNwcAppbmRleCAzNmY3ZjA1OGUwMWNjMDFjNjgzYzRkMDA0ODQzZGEz
MDI0NjY3NmNiLi5mM2JhNGYyMjJlOTY2YThlMmJjYjg4YmJiMjA4OGVmNjg2ZWNhZGUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
U1ZHRkVMaWdodEVsZW1lbnQqIFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KGNv
bnN0IFNWR0VsZW1lbnQqIHN2Z0VsZW0KIAogUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRUxpZ2h0
RWxlbWVudDo6ZmluZExpZ2h0U291cmNlKGNvbnN0IFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQpCiB7
Ci0gICAgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0Tm9kZSA9IGZpbmRMaWdodEVsZW1lbnQoc3Zn
RWxlbWVudCk7CisgICAgYXV0byBsaWdodE5vZGUgPSBtYWtlUmVmUHRyKGZpbmRMaWdodEVsZW1l
bnQoc3ZnRWxlbWVudCkpOwogICAgIGlmICghbGlnaHROb2RlKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gbGlnaHROb2RlLT5saWdodFNvdXJjZSgpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2lu
dHNBdFhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6bGlt
aXRpbmdDb25lQW5nbGVBdHRyKSB7CiAKLSAgICAgICAgYXV0byogcGFyZW50ID0gcGFyZW50RWxl
bWVudCgpOworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50RWxlbWVudCgp
KTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE3NSw3
ICsxNzUsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKIAogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hh
bmdlU291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBwYXJlbnROb2RlKCk7CisgICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVu
dE5vZGUoKSk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKICAgICBSZW5kZXJF
bGVtZW50KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmluZGV4IDQzM2M3NDVlN2Q5MzhiNWRjMGI2MWU3YWRhNTU1
NzU0Mjg3OTJlZWIuLjg2N2Y5M2I1NTNhOTNmNjM2YTQzODU2YWQyMzJlYzJlNGI2ZjQ5NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcApAQCAtNDcsMTAgKzQ3LDEw
IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBtZXJn
ZUlucHV0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdl
Tm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7Ci0g
ICAgICAgIEZpbHRlckVmZmVjdCogbWVyZ2VFZmZlY3QgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKG1lcmdlTm9kZS5pbjEoKSk7CisgICAgICAgIGF1dG8gbWVyZ2VFZmZlY3QgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKG1lcmdlTm9kZS5pbjEoKSk7CiAgICAgICAgIGlmICgh
bWVyZ2VFZmZlY3QpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgbWVyZ2VJ
bnB1dHMuYXBwZW5kKG1lcmdlRWZmZWN0KTsKKyAgICAgICAgbWVyZ2VJbnB1dHMuYXBwZW5kKFdU
Rk1vdmUobWVyZ2VFZmZlY3QpKTsKICAgICB9CiAKICAgICBpZiAobWVyZ2VJbnB1dHMuaXNFbXB0
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmlu
ZGV4IDMzNzBlMTg1NTJmZmQwOTI0ZTRhN2U5OTNhZDg3NDFmMDA5YjU2ZjIuLjY0Njk5ZWM5ZjQx
NTQyNDFiODYyMTJhYTBlNmU3ODRmZDdhYTg5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFNWR0ZF
TW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVy
KQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKICAgICBmbG9hdCB4UmFkaXVzID0gcmFkaXVzWCgpOwogICAgIGZsb2F0IHlS
YWRpdXMgPSByYWRpdXNZKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAKaW5kZXggNmFiNjdhZmFjNjY2NzE1ZWZmNmQwMjE3YTEwYTJiZWU5ZmE5MDExNC4uNWQ0
YmE5NWNjMDYzNDgxZTE4YzQ1NzU5NWQ4YThmNWJlMjU3YjY5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBTVkdGRU9m
ZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OwogCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4
IDE3MDQzN2YzMmZiMzNiNGZkZWQ2M2U0Y2Y5Y2ZjMTQ4ZDljZmQxZGUuLmRkOThkOGFhZDY5YTE2
MzBmMzBlNjBiYjAwM2Y0Y2QxZThhM2Y2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2
b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgU1ZHRkVMaWdodAogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVy
LCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5k
ZXggNzU3ZTU1NGRkNTU3ZjYyMWQzNmNhNTllNGNlOWUyYmQ0Y2RlYmJkMS4uNDNjNzVlMWNkMWMy
NGZhODU3MjhlYmZmMDVmN2NiMWRkNmQzZDZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlckVmZmVjdCogaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5w
dXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXgg
NzdhM2E5NzFhNmM3MmYwYmY5ZjFjODhhM2MzM2Y3MDg1ZmFhYmU3YS4uMzJiZmViYmRjYjJkMzMy
YzhkOWM2Yzg3NTA3MGQxZGY3YjQxMmFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTE1
NCw3ICsxNTQsNyBAQCB2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxl
bWVudCogZWxlbWVudCkKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IENvbnRhaW5lck5vZGUqIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKKyAgICBhdXRv
IHBhcmVudCA9IG1ha2VSZWZQdHIoZWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKIAogICAgIGlmICgh
cGFyZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVs
ZW1lbnQuY3BwCmluZGV4IDdkYmUwMDBjMzM3NTA4YTc0YzQyMzk3YWEzNTg5NjFiYjQ2ZDE3MzMu
LjM3MTNmNGJmMmRjZTcwNmU1ZmUxZDRlZWVkYTFiMWIzOWY5NGRhNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBT
VkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRGb250RmFjZSgpCiAKICAgICAgICAgdW5zaWduZWQg
c3JjTGVuZ3RoID0gc3JjTGlzdCA/IHNyY0xpc3QtPmxlbmd0aCgpIDogMDsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY0xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
Q1NTRm9udEZhY2VTcmNWYWx1ZSogaXRlbSA9IGRvd25jYXN0PENTU0ZvbnRGYWNlU3JjVmFsdWU+
KHNyY0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpKQorICAgICAgICAgICAgaWYgKGF1
dG8gaXRlbSA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8Q1NTRm9udEZhY2VTcmNWYWx1ZT4oc3JjTGlz
dC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSkpKQogICAgICAgICAgICAgICAgIGl0ZW0tPnNl
dFNWR0ZvbnRGYWNlRWxlbWVudCh0aGlzKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKaW5kZXggNTkxNjA2NTMy
ZjVmZjAwODdmZWQ5NzJiNzYzNjljNWQ0ZjBiNTQwZi4uY2JkNzdhZDMzMDRlNjdhNjdhYzg2ZTU1
MjM2NzBkNjI2NTQwODI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRm9ybWF0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
Rm9ybWF0RWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBTVkdGb250RmFjZUZvcm1h
dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAg
IGlmICghcGFyZW50Tm9kZSgpIHx8ICFwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoZm9udF9mYWNl
X3VyaVRhZykpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBDb250YWluZXJOb2RlKiBhbmNl
c3RvciA9IHBhcmVudE5vZGUoKS0+cGFyZW50Tm9kZSgpOworICAgIGF1dG8gYW5jZXN0b3IgPSBt
YWtlUmVmUHRyKHBhcmVudE5vZGUoKS0+cGFyZW50Tm9kZSgpKTsKICAgICBpZiAoIWFuY2VzdG9y
IHx8ICFhbmNlc3Rvci0+aGFzVGFnTmFtZShmb250X2ZhY2Vfc3JjVGFnKSkKICAgICAgICAgcmV0
dXJuOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJp
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNw
cAppbmRleCA0MTQ5ZjY2OGJlNGM2NDljODQ4ZDI5MDZhZDI0MDkzZWUyODAwNDY4Li45ZDc2MTA1
N2JiNDlhOGMwNTRmZTYwMzZlMjhkOWFlODMzOTYyZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCiAgICAgaWYgKCFwYXJlbnROb2RlKCkgfHwgIXBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShm
b250X2ZhY2Vfc3JjVGFnKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIENvbnRhaW5lck5v
ZGUqIGdyYW5kcGFyZW50ID0gcGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCk7CisgICAgYXV0byBn
cmFuZHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCkpOwogICAg
IGlmIChncmFuZHBhcmVudCAmJiBncmFuZHBhcmVudC0+aGFzVGFnTmFtZShmb250X2ZhY2VUYWcp
KQogICAgICAgICBkb3duY2FzdDxTVkdGb250RmFjZUVsZW1lbnQ+KCpncmFuZHBhcmVudCkucmVi
dWlsZEZvbnRGYWNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcAppbmRleCA1ZTYzZmI0ZDg0ZjBiYWQyNmI3ZWNjOGE3MThjOGM5NDhlZDAy
NWMzLi5lMWE4NDE5Mzg5MjcxNTIwZjc2MWI2M2IxOTZjNmU2ZDFhNDhlN2JmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKQEAgLTE0Miw3ICsx
NDIsNyBAQCBib29sIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICAvLyBOb3RlIHRoYXQgd2UgY3VycmVudGx5IGRv
IG5vdCBzdXBwb3J0IGZvcmVpZ25PYmplY3QgaW5zdGFudGlhdGlvbiB2aWEgPHVzZT4sIGhlbmNl
IGl0IGlzIHNhZmUKICAgICAvLyB0byB1c2UgcGFyZW50RWxlbWVudCgpIGhlcmUuIElmIHRoYXQg
Y2hhbmdlcywgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gdXNlCiAgICAgLy8gcGFy
ZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIGluc3RlYWQuCi0gICAgRWxlbWVudCogYW5jZXN0b3Ig
PSBwYXJlbnRFbGVtZW50KCk7CisgICAgYXV0byBhbmNlc3RvciA9IG1ha2VSZWZQdHIocGFyZW50
RWxlbWVudCgpKTsKICAgICB3aGlsZSAoYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVu
dCgpKSB7CiAgICAgICAgIGlmIChhbmNlc3Rvci0+cmVuZGVyZXIoKSAmJiBhbmNlc3Rvci0+cmVu
ZGVyZXIoKS0+aXNTVkdIaWRkZW5Db250YWluZXIoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAppbmRleCAwOTkwNmU3Mzk4
ZjAwZGU2YWI2MzY5NjAwZGYzOTY0OGRmMTVjNDJhLi40ZDY4NWVlZGE4MmM4NTdhODc5NGIyODE2
OGUyYzllNTgxY2EyZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3Ro
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3Bw
CkBAIC0zMDEsNyArMzAxLDcgQEAgYm9vbCBTVkdMZW5ndGhDb250ZXh0OjpkZXRlcm1pbmVWaWV3
cG9ydChGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QKICAgICB9CiAKICAgICAvLyBUYWtl
IHNpemUgZnJvbSBuZWFyZXN0IHZpZXdwb3J0IGVsZW1lbnQuCi0gICAgU1ZHRWxlbWVudCogdmll
d3BvcnRFbGVtZW50ID0gbV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKTsKKyAgICBhdXRvIHZp
ZXdwb3J0RWxlbWVudCA9IG1ha2VSZWZQdHIobV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKSk7
CiAgICAgaWYgKCFpczxTVkdTVkdFbGVtZW50Pih2aWV3cG9ydEVsZW1lbnQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5jcHAKaW5kZXggYjdmZjViNGY4ZTY3MTdkYWE1MmVkODRhZjNjNDhjOTg5NjYzNDc1
Zi4uZTNmOTc5NTk4ODRiNDk0OThhZjQxYzJlODUxZTVmNmJmOWQxMmQwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTE2Miw5ICsx
NjIsOSBAQCBib29sIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y29sbGVjdEdyYWRpZW50QXR0
cmlidXRlcyhMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZQogCiAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgLy8gUmVzcGVjdCB4bGluazpocmVmLCB0YWtlIGF0dHJpYnV0ZXMgZnJvbSByZWZlcmVu
Y2VkIGVsZW1lbnQKLSAgICAgICAgTm9kZSogcmVmTm9kZSA9IFNWR1VSSVJlZmVyZW5jZTo6dGFy
Z2V0RWxlbWVudEZyb21JUklTdHJpbmcoY3VycmVudC0+aHJlZigpLCBkb2N1bWVudCgpKTsKKyAg
ICAgICAgYXV0byByZWZOb2RlID0gbWFrZVJlZlB0cihTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVs
ZW1lbnRGcm9tSVJJU3RyaW5nKGN1cnJlbnQtPmhyZWYoKSwgZG9jdW1lbnQoKSkpOwogICAgICAg
ICBpZiAoaXM8U1ZHR3JhZGllbnRFbGVtZW50PihyZWZOb2RlKSkgewotICAgICAgICAgICAgY3Vy
cmVudCA9IGRvd25jYXN0PFNWR0dyYWRpZW50RWxlbWVudD4ocmVmTm9kZSk7CisgICAgICAgICAg
ICBjdXJyZW50ID0gZG93bmNhc3Q8U1ZHR3JhZGllbnRFbGVtZW50PihyZWZOb2RlLmdldCgpKTsK
IAogICAgICAgICAgICAgLy8gQ3ljbGUgZGV0ZWN0aW9uCiAgICAgICAgICAgICBpZiAocHJvY2Vz
c2VkR3JhZGllbnRzLmNvbnRhaW5zKGN1cnJlbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhF
bGVtZW50LmNwcAppbmRleCAwZTAxYzdmZTlmZTc4Mjg5NDcyMjE4NTQ1MmIyY2RmMTg3ZmM1MDZk
Li4xNTZkN2FlYWE4NmM1ODdhZTZlN2NjMGRkMzNkOTE1NWNhZTA3N2M2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFNWR01QYXRo
RWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBT
dHJpbmcgaWQ7Ci0gICAgRWxlbWVudCogdGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRF
bGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRvY3VtZW50KCksICZpZCk7CisgICAgYXV0byB0
YXJnZXQgPSBtYWtlUmVmUHRyKFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklT
dHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQpKTsKICAgICBpZiAoIXRhcmdldCkgewogICAg
ICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgYXMgcGVuZGluZyBpZiB3ZSBhcmUgYWxyZWFkeSBwZW5k
aW5nIHRoaXMgcmVzb3VyY2UuCiAgICAgICAgIGlmIChkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5pc1BlbmRpbmdSZXNvdXJjZSh0aGlzLCBpZCkpCkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgU1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgfSBlbHNlIGlm
ICh0YXJnZXQtPmlzU1ZHRWxlbWVudCgpKSB7CiAgICAgICAgIC8vIFJlZ2lzdGVyIHVzIHdpdGgg
dGhlIHRhcmdldCBpbiB0aGUgZGVwZW5kZW5jaWVzIG1hcC4gQW55IGNoYW5nZSBvZiBocmVmRWxl
bWVudAogICAgICAgICAvLyB0aGF0IGxlYWRzIHRvIHJlbGF5b3V0L3JlcGFpbnRpbmcgbm93IGlu
Zm9ybXMgdXMsIHNvIHdlIGNhbiByZWFjdCB0byBpdC4KLSAgICAgICAgZG9jdW1lbnQoKS5hY2Nl
c3NTVkdFeHRlbnNpb25zKCkuYWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KHRoaXMsIGRvd25j
YXN0PFNWR0VsZW1lbnQ+KHRhcmdldCkpOworICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKS5hZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQodGhpcywgZG93bmNhc3Q8U1ZH
RWxlbWVudD4odGFyZ2V0LmdldCgpKSk7CiAgICAgfQogCiAgICAgdGFyZ2V0UGF0aENoYW5nZWQo
KTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotU1ZHUGF0aEVsZW1lbnQqIFNWR01Q
YXRoRWxlbWVudDo6cGF0aEVsZW1lbnQoKQorUmVmUHRyPFNWR1BhdGhFbGVtZW50PiBTVkdNUGF0
aEVsZW1lbnQ6OnBhdGhFbGVtZW50KCkKIHsKICAgICBFbGVtZW50KiB0YXJnZXQgPSB0YXJnZXRF
bGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRvY3VtZW50KCkpOwogICAgIGlmIChpczxTVkdQ
YXRoRWxlbWVudD4odGFyZ2V0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAppbmRl
eCAxYTJhYzZhMTExZTYyMjkyYTMyODU2OTc1YTI0MjFlMDk0OWFhNjRjLi5iYTI0YjczMmE5Njc5
MGFlYzE5MTdjNmYwODYxMTc4ZDA0MzBlMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTVBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxl
bWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflNWR01QYXRo
RWxlbWVudCgpOwogCi0gICAgU1ZHUGF0aEVsZW1lbnQqIHBhdGhFbGVtZW50KCk7CisgICAgUmVm
UHRyPFNWR1BhdGhFbGVtZW50PiBwYXRoRWxlbWVudCgpOwogCiAgICAgdm9pZCB0YXJnZXRQYXRo
Q2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuY3BwCmluZGV4IGM5ZDlkY2MwOTQ0NjMyMzRkZDkxZDk2Nzk3YjRhNTUxMzc2MzRjMjgu
Ljk0NTQ3YWRiOWZkYTlkYjk4MTk5ZDdiNjZiODZjMzY5OGZlYjNjYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xNzgsOSArMTc4
LDkgQEAgYm9vbCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJp
YnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGUKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgIC8vIFJlc3BlY3QgeGxpbms6aHJlZiwgdGFrZSBhdHRyaWJ1dGVzIGZyb20gcmVmZXJlbmNl
ZCBlbGVtZW50Ci0gICAgICAgIE5vZGUqIHJlZk5vZGUgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdl
dEVsZW1lbnRGcm9tSVJJU3RyaW5nKGN1cnJlbnQtPmhyZWYoKSwgZG9jdW1lbnQoKSk7CisgICAg
ICAgIGF1dG8gcmVmTm9kZSA9IG1ha2VSZWZQdHIoU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVt
ZW50RnJvbUlSSVN0cmluZyhjdXJyZW50LT5ocmVmKCksIGRvY3VtZW50KCkpKTsKICAgICAgICAg
aWYgKGlzPFNWR0dyYWRpZW50RWxlbWVudD4ocmVmTm9kZSkpIHsKLSAgICAgICAgICAgIGN1cnJl
bnQgPSBkb3duY2FzdDxTVkdHcmFkaWVudEVsZW1lbnQ+KHJlZk5vZGUpOworICAgICAgICAgICAg
Y3VycmVudCA9IGRvd25jYXN0PFNWR0dyYWRpZW50RWxlbWVudD4ocmVmTm9kZS5nZXQoKSk7CiAK
ICAgICAgICAgICAgIC8vIEN5Y2xlIGRldGVjdGlvbgogICAgICAgICAgICAgaWYgKHByb2Nlc3Nl
ZEdyYWRpZW50cy5jb250YWlucyhjdXJyZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcAppbmRleCBjNWFlMTk1MDE3ZTQ4ZmY2MTg5ZjBjNTBjZjQ3MGZmYTIzMzliYjZhLi44OTgy
Zjk4MWFkMTg0MTdhMGE0YmFjM2I0YjRjYTEzMzc2OWM4NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCkBAIC0xNjYsMTMgKzE2NiwxMyBAQCBTVkdWaWV3U3BlYyYgU1ZHU1ZH
RWxlbWVudDo6Y3VycmVudFZpZXcoKQogICAgIHJldHVybiAqbV92aWV3U3BlYzsKIH0KIAotRnJh
bWUqIFNWR1NWR0VsZW1lbnQ6OmZyYW1lRm9yQ3VycmVudFNjYWxlKCkgY29uc3QKK1JlZlB0cjxG
cmFtZT4gU1ZHU1ZHRWxlbWVudDo6ZnJhbWVGb3JDdXJyZW50U2NhbGUoKSBjb25zdAogewogICAg
IC8vIFRoZSBiZWhhdmlvciBvZiBjdXJyZW50U2NhbGUoKSBpcyB1bmRlZmluZWQgd2hlbiB3ZSdy
ZSBkZWFsaW5nIHdpdGggbm9uLXN0YW5kYWxvbmUgU1ZHIGRvY3VtZW50cy4KICAgICAvLyBJZiB0
aGUgZG9jdW1lbnQgaXMgZW1iZWRkZWQsIHRoZSBzY2FsaW5nIGlzIGhhbmRsZWQgYnkgdGhlIGhv
c3QgcmVuZGVyZXIuCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpIHx8ICFpc091dGVybW9zdFNWR1NW
R0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgRnJhbWUqIGZyYW1lID0g
ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50
KCkuZnJhbWUoKSk7CiAgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5pc01haW5GcmFtZSgpID8g
ZnJhbWUgOiBudWxscHRyOwogfQogCkBAIC0xODAsMTMgKzE4MCwxMyBAQCBmbG9hdCBTVkdTVkdF
bGVtZW50OjpjdXJyZW50U2NhbGUoKSBjb25zdAogewogICAgIC8vIFdoZW4gYXNraW5nIGZyb20g
aW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBkb2N1bWVudCwgYSBzY2FsZSB2YWx1ZSBvZiAxIHNlZW1z
IHJlYXNvbmFibGUsIGFzIGl0IGRvZXNuJ3QKICAgICAvLyBrbm93IGFueXRoaW5nIGFib3V0IHRo
ZSBwYXJlbnQgc2NhbGUuCi0gICAgRnJhbWUqIGZyYW1lID0gZnJhbWVGb3JDdXJyZW50U2NhbGUo
KTsKKyAgICBhdXRvIGZyYW1lID0gZnJhbWVGb3JDdXJyZW50U2NhbGUoKTsKICAgICByZXR1cm4g
ZnJhbWUgPyBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSA6IDE7CiB9CiAKIHZvaWQgU1ZHU1ZHRWxl
bWVudDo6c2V0Q3VycmVudFNjYWxlKGZsb2F0IHNjYWxlKQogewotICAgIGlmIChGcmFtZSogZnJh
bWUgPSBmcmFtZUZvckN1cnJlbnRTY2FsZSgpKQorICAgIGlmIChhdXRvIGZyYW1lID0gZnJhbWVG
b3JDdXJyZW50U2NhbGUoKSkKICAgICAgICAgZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHNjYWxl
KTsKIH0KIApAQCAtMzczLDcgKzM3Myw3IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6Y2hlY2tFbmNs
b3N1cmUoUmVmUHRyPFNWR0VsZW1lbnQ+JiYgZWxlbWVudCwgU1ZHUmVjdCYgcmVjdCkKIAogdm9p
ZCBTVkdTVkdFbGVtZW50OjpkZXNlbGVjdEFsbCgpCiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9j
dW1lbnQoKS5mcmFtZSgpKSkKICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7CiB9
CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6bG9j
YWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TYwogICAgICAgICAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShsb2NhdGlvbi54KCkgLSB2aWV3Qm94VHJhbnNmb3JtLmUo
KSwgbG9jYXRpb24ueSgpIC0gdmlld0JveFRyYW5zZm9ybS5mKCkpOwogCiAgICAgICAgICAgICAv
LyBSZXNwZWN0IHNjcm9sbCBvZmZzZXQuCi0gICAgICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3
ID0gZG9jdW1lbnQoKS52aWV3KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHZpZXcgPSBtYWtl
UmVmUHRyKGRvY3VtZW50KCkudmlldygpKSkgewogICAgICAgICAgICAgICAgIExheW91dFBvaW50
IHNjcm9sbFBvc2l0aW9uID0gdmlldy0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICAgICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbi5zY2FsZSh6b29tRmFjdG9yKTsKICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKC1zY3JvbGxQb3NpdGlvbik7CkBAIC02MzgsNyArNjM4LDcgQEAgQWZm
aW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQg
dmlld1dpZHRoLCBmbG9hdCB2aWUKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9BbmNob3Io
Y29uc3QgU3RyaW5nJiBmcmFnbWVudElkZW50aWZpZXIsIEVsZW1lbnQqIGFuY2hvck5vZGUpCiB7
CiAgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7Ci0gICAgU1ZHVmlld1NwZWMq
IHZpZXcgPSBtX3ZpZXdTcGVjLmdldCgpOworICAgIGF1dG8gdmlldyA9IG1fdmlld1NwZWM7CiAg
ICAgaWYgKHZpZXcpCiAgICAgICAgIHZpZXctPnJlc2V0KCk7CiAKQEAgLTY3MCw3ICs2NzAsNyBA
QCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IFN0cmluZyYgZnJhZ21l
bnRJZGVudGlmaWVyLCBFbGVtZW50KiBhbgogICAgIC8vIGF0dHJpYnV0ZXMgb24gdGhlIGNsb3Nl
c3QgYW5jZXN0b3IgInN2ZyIgZWxlbWVudC4KICAgICBpZiAoaXM8U1ZHVmlld0VsZW1lbnQ+KGFu
Y2hvck5vZGUpKSB7CiAgICAgICAgIGF1dG8mIHZpZXdFbGVtZW50ID0gZG93bmNhc3Q8U1ZHVmll
d0VsZW1lbnQ+KCphbmNob3JOb2RlKTsKLSAgICAgICAgYXV0byogdmlld3BvcnRFbGVtZW50ID0g
U1ZHTG9jYXRhYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCZ2aWV3RWxlbWVudCk7CisgICAg
ICAgIGF1dG8gdmlld3BvcnRFbGVtZW50ID0gbWFrZVJlZlB0cihTVkdMb2NhdGFibGU6Om5lYXJl
c3RWaWV3cG9ydEVsZW1lbnQoJnZpZXdFbGVtZW50KSk7CiAgICAgICAgIGlmIChpczxTVkdTVkdF
bGVtZW50Pih2aWV3cG9ydEVsZW1lbnQpKSB7CiAgICAgICAgICAgICBhdXRvJiBlbGVtZW50ID0g
ZG93bmNhc3Q8U1ZHU1ZHRWxlbWVudD4oKnZpZXdwb3J0RWxlbWVudCk7CiAgICAgICAgICAgICBl
bGVtZW50LmluaGVyaXRWaWV3QXR0cmlidXRlcyh2aWV3RWxlbWVudCk7CkBAIC03MjIsOSArNzIy
LDkgQEAgRWxlbWVudCogU1ZHU1ZHRWxlbWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKICAgICBpZiAoaWQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgRWxlbWVudCogZWxlbWVudCA9IHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKGlk
KTsKKyAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHRyZWVTY29wZSgpLmdldEVsZW1lbnRC
eUlkKGlkKSk7CiAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoKnRo
aXMpKQotICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0
KCk7CiAgICAgaWYgKHRyZWVTY29wZSgpLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChp
ZCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogKnRyZWVTY29wZSgpLmdldEFsbEVs
ZW1lbnRzQnlJZChpZCkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5pc0Rlc2NlbmRhbnRP
ZigqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCAzMjg4ZGVmY2ZlNjM0
Njg3NDVkZjY2MzkwOGE1MDY0NWMxMDE3NWUzLi4zZTE4NDE4NzJmODcwOTQ2YmRjYTQwYTI3MjBh
N2NiOGU0ZTdkODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTE1MSw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigp
IG92ZXJyaWRlOwogICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5z
Zm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEZyYW1l
KiBmcmFtZUZvckN1cnJlbnRTY2FsZSgpIGNvbnN0OworICAgIFJlZlB0cjxGcmFtZT4gZnJhbWVG
b3JDdXJyZW50U2NhbGUoKSBjb25zdDsKICAgICB2b2lkIGluaGVyaXRWaWV3QXR0cmlidXRlcyhj
b25zdCBTVkdWaWV3RWxlbWVudCYpOwogICAgIFJlZjxOb2RlTGlzdD4gY29sbGVjdEludGVyc2Vj
dGlvbk9yRW5jbG9zdXJlTGlzdChTVkdSZWN0JiwgU1ZHRWxlbWVudCosIGJvb2wgKCpjaGVja0Z1
bmN0aW9uKShTVkdFbGVtZW50JiwgU1ZHUmVjdCYpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVFbGVtZW50LmNwcAppbmRleCA5OWVhNGVkZWRkNzc5YmI0MTI2NTljNjk0MWU1ZmMwZGQyYzE5
NGQ1Li42NGM4ZDA3NDdiODQ2M2JkYTc2MGEzYTBjMjMxYWRmM2IzYzMwNzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29sIFNWR1N0
eWxlRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0
RGlzYWJsZWQoYm9vbCBzZXREaXNhYmxlZCkKIHsKLSAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5
bGVTaGVldCA9IHNoZWV0KCkpCisgICAgaWYgKGF1dG8gc3R5bGVTaGVldCA9IG1ha2VSZWZQdHIo
c2hlZXQoKSkpCiAgICAgICAgIHN0eWxlU2hlZXQtPnNldERpc2FibGVkKHNldERpc2FibGVkKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZTNjNzdlOWRjOGQ1
MDI1MzAzOGVlYmEyYjk3NzIwYWE2NGNhOWIwYi4uOWY4MzEyZWE4ZjVkMDllMzhjOTI1YWU1ODli
NTM2MmM5MmEyMmY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0x
NjMsNyArMTYzLDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6ZGV0YWNoVGFyZ2V0KCkKICAgICBT
dHJpbmcgZW1wdHlDb250ZW50OwogCiAgICAgQVNTRVJUKHNoYWRvd1Jvb3QoKSk7Ci0gICAgTm9k
ZSogY29udGFpbmVyID0gc2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CisgICAgYXV0byBjb250
YWluZXIgPSBtYWtlUmVmUHRyKHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsKICAgICBpZiAo
Y29udGFpbmVyKQogICAgICAgICBjb250YWluZXItPnNldFRleHRDb250ZW50KGVtcHR5Q29udGVu
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKaW5k
ZXggMmQ4YzcwZGZjMjI2YzljMzdlYzlmOWM5YzI0ZjNmZWFmYmRhZjViNC4uM2E5ZWQ4NTZjYThk
MWViMjgxODBkMzBhMzcxOGViYjNjMzA4YmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBTVkdUZXh0Q29udGVu
dEVsZW1lbnQqIFNWR1RleHRDb250ZW50RWxlbWVudDo6ZWxlbWVudEZyb21SZW5kZXJlcihSZW5k
ZXJPYmplY3QqCiAgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+
KHJlbmRlcmVyLT5ub2RlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KTsKIAotICAgIGlmICghaXM8
U1ZHVGV4dENvbnRlbnRFbGVtZW50PigqZWxlbWVudCkpCisgICAgaWYgKCFpczxTVkdUZXh0Q29u
dGVudEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJl
dHVybiBkb3duY2FzdDxTVkdUZXh0Q29udGVudEVsZW1lbnQ+KGVsZW1lbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCBlOGFhODg2ZjI3ZGRkOTcxMzBk
Yzk4Y2NjMzVkNDJhZTFmZTE0MTQ2Li4xYTIzMmVlZGQwMGM0NmQ1MjcyNzY0OTIwZjM1MjU5MzAw
N2RmODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAt
MTU2LDcgKzE1Niw3IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNv
dXJjZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBpZDsKLSAgICBFbGVtZW50KiB0
YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYo
KSwgZG9jdW1lbnQoKSwgJmlkKTsKKyAgICBhdXRvIHRhcmdldCA9IG1ha2VSZWZQdHIoU1ZHVVJJ
UmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRvY3VtZW50KCks
ICZpZCkpOwogICAgIGlmICghdGFyZ2V0KSB7CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBh
cyBwZW5kaW5nIGlmIHdlIGFyZSBhbHJlYWR5IHBlbmRpbmcgdGhpcyByZXNvdXJjZS4KICAgICAg
ICAgaWYgKGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmlzUGVuZGluZ1Jlc291cmNl
KHRoaXMsIGlkKSkKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6
YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgIH0gZWxzZSBpZiAodGFyZ2V0LT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpwYXRoVGFnKSkgewogICAgICAgICAvLyBSZWdpc3RlciB1cyB3aXRoIHRoZSB0
YXJnZXQgaW4gdGhlIGRlcGVuZGVuY2llcyBtYXAuIEFueSBjaGFuZ2Ugb2YgaHJlZkVsZW1lbnQK
ICAgICAgICAgLy8gdGhhdCBsZWFkcyB0byByZWxheW91dC9yZXBhaW50aW5nIG5vdyBpbmZvcm1z
IHVzLCBzbyB3ZSBjYW4gcmVhY3QgdG8gaXQuCi0gICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZH
RXh0ZW5zaW9ucygpLmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCh0aGlzLCBkb3duY2FzdDxT
VkdFbGVtZW50Pih0YXJnZXQpKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNp
b25zKCkuYWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KHRoaXMsIGRvd25jYXN0PFNWR0VsZW1l
bnQ+KHRhcmdldC5nZXQoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCmluZGV4IDZlMjg2MzQ4NDFjZTQ4NDI2MWQwZDdmZTM4ZTAxMjAyMGYzODVhYTIuLmVl
ZGY4NjZiNGVjNWU1NGM2ZDdiODc0MmRiZjgyOGQxNGJmZjcyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6
OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0Vs
ZW1lbgogICAgIH0gZWxzZSBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4oc2hhZG93RWxlbWVudCkpIHsK
ICAgICAgICAgLy8gU3BlYyAoPHVzZT4gb24gPHN2Zz4pOiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFu
ZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNlJyBlbGVtZW50LCB0aGVuIHRoZXNl
CiAgICAgICAgIC8vIHZhbHVlcyB3aWxsIG92ZXJyaWRlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJp
YnV0ZXMgb24gdGhlICdzdmcnIGluIHRoZSBnZW5lcmF0ZWQgdHJlZS4KLSAgICAgICAgU1ZHRWxl
bWVudCogY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBzaGFkb3dFbGVtZW50LmNvcnJlc3BvbmRpbmdF
bGVtZW50KCk7CisgICAgICAgIGF1dG8gY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtYWtlUmVmUHRy
KHNoYWRvd0VsZW1lbnQuY29ycmVzcG9uZGluZ0VsZW1lbnQoKSk7CiAgICAgICAgIHNoYWRvd0Vs
ZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIsICh3aWR0aElzVmFsaWQoKSAm
JiB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpKSA/IEF0b21pY1N0cmluZyh3aWR0aCgp
LnZhbHVlQXNTdHJpbmcoKSkgOiAoY29ycmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNwb25kaW5n
RWxlbWVudC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIpIDogbnVsbEF0b20oKSkp
OwogICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgKGhlaWdodElzVmFsaWQoKSAmJiBoZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSkg
PyBBdG9taWNTdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5n
RWxlbWVudCA/IGNvcnJlc3BvbmRpbmdFbGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6Omhl
aWdodEF0dHIpIDogbnVsbEF0b20oKSkpOwogICAgIH0KQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lk
IFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAg
ICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSXQncyB1bm5l
Y2Vzc2FyaWx5IGluZWZmaWNpZW50IHRvIHVwZGF0ZSBib3RoIHdpZHRoIGFuZCBoZWlnaHQgZWFj
aCB0aW1lIGVpdGhlciBpcyBjaGFuZ2VkLgotICAgICAgICAgICAgaWYgKGF1dG8qIHRhcmdldENs
b25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHRhcmdldENs
b25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKSkKICAgICAgICAgICAgICAgICB0cmFuc2ZlclNpemVB
dHRyaWJ1dGVzVG9UYXJnZXRDbG9uZSgqdGFyZ2V0Q2xvbmUpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCkBAIC0yNjYsNyArMjY2LDcg
QEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKCkKICAgICBtX3NoYWRvd1Ry
ZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOwogfQogCi1TVkdFbGVtZW50KiBTVkdVc2VFbGVtZW50Ojp0
YXJnZXRDbG9uZSgpIGNvbnN0CitSZWZQdHI8U1ZHRWxlbWVudD4gU1ZHVXNlRWxlbWVudDo6dGFy
Z2V0Q2xvbmUoKSBjb25zdAogewogICAgIGF1dG8gcm9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KTsKICAgICBpZiAoIXJvb3QpCkBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIGJvb2wgaXNEaXJl
Y3RSZWZlcmVuY2UoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkKIAogUGF0aCBTVkdVc2VFbGVt
ZW50Ojp0b0NsaXBQYXRoKCkKIHsKLSAgICBhdXRvKiB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdl
dENsb25lKCk7CisgICAgYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CiAg
ICAgaWYgKCFpczxTVkdHcmFwaGljc0VsZW1lbnQ+KHRhcmdldENsb25lKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIApAQCAtMzEzLDcgKzMxMyw3IEBAIFBhdGggU1ZHVXNlRWxlbWVudDo6dG9DbGlw
UGF0aCgpCiAKIFJlbmRlckVsZW1lbnQqIFNWR1VzZUVsZW1lbnQ6OnJlbmRlcmVyQ2xpcENoaWxk
KCkgY29uc3QKIHsKLSAgICBhdXRvKiB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7
CisgICAgYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CiAgICAgaWYgKCF0
YXJnZXRDbG9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFpc0RpcmVjdFJl
ZmVyZW5jZSgqdGFyZ2V0Q2xvbmUpKQpAQCAtNDA1LDcgKzQwNSw3IEBAIFNWR0VsZW1lbnQqIFNW
R1VzZUVsZW1lbnQ6OmZpbmRUYXJnZXQoU3RyaW5nKiB0YXJnZXRJRCkgY29uc3QKICAgICBhdXRv
KiBjb3JyZXNwb25kaW5nRWxlbWVudCA9IHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCk7CiAg
ICAgYXV0byYgb3JpZ2luYWwgPSBjb3JyZXNwb25kaW5nRWxlbWVudCA/IGRvd25jYXN0PFNWR1Vz
ZUVsZW1lbnQ+KCpjb3JyZXNwb25kaW5nRWxlbWVudCkgOiAqdGhpczsKIAotICAgIGF1dG8qIHRh
cmdldENhbmRpZGF0ZSA9IHRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKG9yaWdpbmFsLmhyZWYo
KSwgb3JpZ2luYWwuZG9jdW1lbnQoKSwgdGFyZ2V0SUQsIG9yaWdpbmFsLmV4dGVybmFsRG9jdW1l
bnQoKSk7CisgICAgYXV0byB0YXJnZXRDYW5kaWRhdGUgPSBtYWtlUmVmUHRyKHRhcmdldEVsZW1l
bnRGcm9tSVJJU3RyaW5nKG9yaWdpbmFsLmhyZWYoKSwgb3JpZ2luYWwuZG9jdW1lbnQoKSwgdGFy
Z2V0SUQsIG9yaWdpbmFsLmV4dGVybmFsRG9jdW1lbnQoKSkpOwogICAgIGlmICh0YXJnZXRJRCAm
JiAhdGFyZ2V0SUQtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMg
ZXh0ZXJuYWwsIGRvbid0IHJldHVybiB0aGUgdGFyZ2V0IElEIHRvIHRoZSBjYWxsZXIuCiAgICAg
ICAgIC8vIFRoZSBjYWxsZXIgd291bGQgdXNlIHRoZSB0YXJnZXQgSUQgdG8gd2FpdCBmb3IgYSBw
ZW5kaW5nIHJlc291cmNlIG9uIHRoZSB3cm9uZyBkb2N1bWVudC4KQEAgLTUzOCw3ICs1MzgsNyBA
QCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dUcmVlKCkKIHZvaWQgU1ZHVXNl
RWxlbWVudDo6aW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVzKCkKIHsKICAgICBmb3IgKGF1
dG8qIGluc3RhbmNlIDogaW5zdGFuY2VzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQg
PSBpbnN0YW5jZS0+Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSkKKyAgICAgICAgaWYgKGF1dG8g
ZWxlbWVudCA9IGluc3RhbmNlLT5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKQogICAgICAgICAg
ICAgZWxlbWVudC0+aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKICAgICB9CiB9CkBAIC01NDgsNyAr
NTQ4LDcgQEAgYm9vbCBTVkdVc2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3QKICAgICBpZiAoeCgpLmlzUmVsYXRpdmUoKSB8fCB5KCkuaXNSZWxhdGl2ZSgpIHx8IHdpZHRo
KCkuaXNSZWxhdGl2ZSgpIHx8IGhlaWdodCgpLmlzUmVsYXRpdmUoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBhdXRvKiB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7Cisg
ICAgYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCk7CiAgICAgcmV0dXJuIHRh
cmdldENsb25lICYmIHRhcmdldENsb25lLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggMGJjZDFiYjVmM2UwY2MzYzE4MDVlMDZhMTVh
NTc4YjRmYTM5YTZkNC4uMzFmNjQ0ZDE3OGQ4MmMzZjk1MTk0YzlkOTEzMDhhZWZmOWNjMjc5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6
CiAgICAgU1ZHRWxlbWVudCogZmluZFRhcmdldChTdHJpbmcqIHRhcmdldElEID0gbnVsbHB0cikg
Y29uc3Q7CiAKICAgICB2b2lkIGNsb25lVGFyZ2V0KENvbnRhaW5lck5vZGUmLCBTVkdFbGVtZW50
JiB0YXJnZXQpIGNvbnN0OwotICAgIFNWR0VsZW1lbnQqIHRhcmdldENsb25lKCkgY29uc3Q7Cisg
ICAgUmVmUHRyPFNWR0VsZW1lbnQ+IHRhcmdldENsb25lKCkgY29uc3Q7CiAKICAgICB2b2lkIHVw
ZGF0ZVNoYWRvd1RyZWUoKTsKICAgICB2b2lkIGV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVD
b250YWluZXIuY3BwCmluZGV4IDQ1Y2FmOWY0Y2M1MzVmN2NmZDc5ZDVkMTRiOGYwYjc4Njg2NTRm
NTUuLmI3M2I1NmQ0YTYxZThkZGY3OTU0ODI3OWZkZTE2ODM3NDE1ODNkZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCkBAIC0y
ODgsNyArMjg4LDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6dXBkYXRlQW5pbWF0aW9ucyhT
TUlMVGltZSBlbGFwc2VkLCBib29sIHNlZWtUb1RpbWUpCiAgICAgICAgIC8vIGhhdmUgaGlnaGVy
IHByaW9yaXR5LgogICAgICAgICBzb3J0QnlQcmlvcml0eSgqc2NoZWR1bGVkLCBlbGFwc2VkKTsK
IAotICAgICAgICBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCA9IG51bGxwdHI7CisgICAg
ICAgIFJlZlB0cjxTVkdTTUlMRWxlbWVudD4gcmVzdWx0RWxlbWVudDsKICAgICAgICAgZm9yIChh
dXRvJiBhbmltYXRpb24gOiAqc2NoZWR1bGVkKSB7CiAgICAgICAgICAgICBBU1NFUlQoYW5pbWF0
aW9uLT50aW1lQ29udGFpbmVyKCkgPT0gdGhpcyk7CiAgICAgICAgICAgICBBU1NFUlQoYW5pbWF0
aW9uLT50YXJnZXRFbGVtZW50KCkpOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgU01JTFRpbWVD
b250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMoU01JTFRpbWUgZWxhcHNlZCwgYm9vbCBzZWVrVG9U
aW1lKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgY2FsY3VsYXRl
IHRoZSBjb250cmlidXRpb24gZnJvbSB0aGUgYW5pbWF0aW9uIGFuZCBhZGQgaXQgdG8gdGhlIHJl
c3VsdHNFbGVtZW50LgotICAgICAgICAgICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVsYXBz
ZWQsIHJlc3VsdEVsZW1lbnQsIHNlZWtUb1RpbWUpICYmIHJlc3VsdEVsZW1lbnQgPT0gYW5pbWF0
aW9uKQorICAgICAgICAgICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVsYXBzZWQsIHJlc3Vs
dEVsZW1lbnQuZ2V0KCksIHNlZWtUb1RpbWUpICYmIHJlc3VsdEVsZW1lbnQgPT0gYW5pbWF0aW9u
KQogICAgICAgICAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBudWxscHRyOwogCiAgICAgICAgICAg
ICBTTUlMVGltZSBuZXh0RmlyZVRpbWUgPSBhbmltYXRpb24tPm5leHRQcm9ncmVzc1RpbWUoKTsK
QEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjp1cGRhdGVBbmltYXRp
b25zKFNNSUxUaW1lIGVsYXBzZWQsIGJvb2wgc2Vla1RvVGltZSkKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChyZXN1bHRFbGVtZW50KQotICAgICAgICAgICAgYW5pbWF0aW9uc1RvQXBwbHkuYXBw
ZW5kKHJlc3VsdEVsZW1lbnQpOworICAgICAgICAgICAgYW5pbWF0aW9uc1RvQXBwbHkuYXBwZW5k
KHJlc3VsdEVsZW1lbnQuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmIChhbmltYXRpb25zVG9BcHBs
eS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHAKaW5kZXggM2VlNjk3ZjUzOTg1OTdjM2NkYzNjYTM2OWIwMmFkYzdjYzNlMjdm
NC4uOTE4ZWVlMzExNDYwMDcyYzRkYzI2NGM3ZGM3ZTRlNTdkNDVmMzlmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTE3NiwxMyAr
MTc2LDEzIEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAg
ICB9CiAKICAgICBTdHJpbmcgaWQ7Ci0gICAgRWxlbWVudCogdGFyZ2V0OworICAgIFJlZlB0cjxF
bGVtZW50PiB0YXJnZXQ7CiAgICAgYXV0byYgaHJlZiA9IGdldEF0dHJpYnV0ZShYTGlua05hbWVz
OjpocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNFbXB0eSgpKQogICAgICAgICB0YXJnZXQgPSBw
YXJlbnRFbGVtZW50KCk7CiAgICAgZWxzZQogICAgICAgICB0YXJnZXQgPSBTVkdVUklSZWZlcmVu
Y2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYuc3RyaW5nKCksIGRvY3VtZW50KCks
ICZpZCk7Ci0gICAgU1ZHRWxlbWVudCogc3ZnVGFyZ2V0ID0gaXM8U1ZHRWxlbWVudD4odGFyZ2V0
KSA/IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldCkgOiBudWxscHRyOworICAgIFNWR0VsZW1l
bnQqIHN2Z1RhcmdldCA9IGlzPFNWR0VsZW1lbnQ+KHRhcmdldCkgPyBkb3duY2FzdDxTVkdFbGVt
ZW50Pih0YXJnZXQuZ2V0KCkpIDogbnVsbHB0cjsKIAogICAgIGlmIChzdmdUYXJnZXQgJiYgIXN2
Z1RhcmdldC0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgc3ZnVGFyZ2V0ID0gbnVsbHB0cjsKQEAg
LTI2Myw3ICsyNjMsNyBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBTVkdTTUlM
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVAogCiAgICAgdXBkYXRlQXR0
cmlidXRlTmFtZSgpOwogCi0gICAgU1ZHU1ZHRWxlbWVudCogb3duZXIgPSBvd25lclNWR0VsZW1l
bnQoKTsKKyAgICBhdXRvIG93bmVyID0gbWFrZVJlZlB0cihvd25lclNWR0VsZW1lbnQoKSk7CiAg
ICAgaWYgKCFvd25lcikKICAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0
OjpEb25lOwogCkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6Y29ubmVj
dENvbmRpdGlvbnMoKQogICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDogbV9jb25kaXRpb25zKSB7
CiAgICAgICAgIGlmIChjb25kaXRpb24ubV90eXBlID09IENvbmRpdGlvbjo6RXZlbnRCYXNlKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX3N5bmNiYXNlKTsKLSAgICAgICAgICAg
IEVsZW1lbnQqIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihjb25kaXRpb24pOworICAgICAgICAg
ICAgYXV0byBldmVudEJhc2UgPSBtYWtlUmVmUHRyKGV2ZW50QmFzZUZvcihjb25kaXRpb24pKTsK
ICAgICAgICAgICAgIGlmICghZXZlbnRCYXNlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgQVNTRVJUKCFjb25kaXRpb24ubV9ldmVudExpc3RlbmVyKTsKQEAgLTU3OSw3
ICs1NzksNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpkaXNjb25uZWN0Q29uZGl0aW9ucygpCiAg
ICAgICAgICAgICAvLyBubyBndWFyYW50ZWUgdGhhdCBldmVudEJhc2VGb3IoKSB3aWxsIGJlIGFi
bGUgdG8gZmluZCBvdXIgY29uZGl0aW9uJ3MKICAgICAgICAgICAgIC8vIG9yaWdpbmFsIGV2ZW50
QmFzZS4gU28sIHdlIGFsc28gaGF2ZSB0byBkaXNjb25uZWN0IG91cnNlbHZlcyBmcm9tCiAgICAg
ICAgICAgICAvLyBvdXIgY29uZGl0aW9uIGV2ZW50IGxpc3RlbmVyLCBpbiBjYXNlIGl0IGxhdGVy
IGZpcmVzLgotICAgICAgICAgICAgRWxlbWVudCogZXZlbnRCYXNlID0gZXZlbnRCYXNlRm9yKGNv
bmRpdGlvbik7CisgICAgICAgICAgICBhdXRvIGV2ZW50QmFzZSA9IG1ha2VSZWZQdHIoZXZlbnRC
YXNlRm9yKGNvbmRpdGlvbikpOwogICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkKICAgICAgICAg
ICAgICAgICBldmVudEJhc2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwg
KmNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICAgICAgICAgIGNvbmRpdGlv
bi5tX2V2ZW50TGlzdGVuZXItPmRpc2Nvbm5lY3RBbmltYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGYzNzZhM2MyZDEzMjhlZDA4YWJiN2IyYjJk
NmFkNjU2ODA4OGQyODUuLmE0ODEwMDUwYTA2M2UzZDk1ZTQyZWFlMGZkOGQ2MGUxNzBkYmZjNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtODQsNyArODQs
NyBAQCBTVkdJbWFnZTo6flNWR0ltYWdlKCkKICAgICBBU1NFUlQoIW1fY2hyb21lQ2xpZW50IHx8
ICFtX2Nocm9tZUNsaWVudC0+aW1hZ2UoKSk7CiB9CiAKLWlubGluZSBTVkdTVkdFbGVtZW50KiBT
VkdJbWFnZTo6cm9vdEVsZW1lbnQoKSBjb25zdAoraW5saW5lIFJlZlB0cjxTVkdTVkdFbGVtZW50
PiBTVkdJbWFnZTo6cm9vdEVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkzLDcgKzkzLDcgQEAgaW5saW5lIFNWR1NWR0VsZW1l
bnQqIFNWR0ltYWdlOjpyb290RWxlbWVudCgpIGNvbnN0CiAKIGJvb2wgU1ZHSW1hZ2U6Omhhc1Np
bmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxl
bWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMt
PnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKQEAgLTEyMiwxNCArMTIyLDE0IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNp
emUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGlmICghdXNlc0NvbnRhaW5lclNpemUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlz
LT5yb290RWxlbWVudCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVu
dCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvKiBy
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigp
KTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZVZpZXcq
IHZpZXcgPSBmcmFtZVZpZXcoKTsKKyAgICBhdXRvIHZpZXcgPSBtYWtlUmVmUHRyKGZyYW1lVmll
dygpKTsKICAgICB2aWV3LT5yZXNpemUodGhpcy0+Y29udGFpbmVyU2l6ZSgpKTsKIAogICAgIHJl
bmRlcmVyLT5zZXRDb250YWluZXJTaXplKEludFNpemUoc2l6ZSkpOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXpl
KQogCiBJbnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKIHsKLSAgICBTVkdT
VkdFbGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byBy
b290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIApAQCAtMjg1LDcgKzI4NSw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZVZpZXco
KTsKKyAgICBhdXRvIHZpZXcgPSBtYWtlUmVmUHRyKGZyYW1lVmlldygpKTsKICAgICBBU1NFUlQo
dmlldyk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWMKIAogUmVuZGVy
Qm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKIHsKLSAgICBTVkdTVkdF
bGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byByb290
RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJveD4ocm9v
dEVsZW1lbnQtPnJlbmRlcmVyKCkpOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIEZyYW1lVmlldyogU1ZH
SW1hZ2U6OmZyYW1lVmlldygpIGNvbnN0CiAKIGJvb2wgU1ZHSW1hZ2U6Omhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdAogewotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9v
dEVsZW1lbnQoKTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsK
ICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHJvb3RFbGVtZW50LT5pbnRyaW5zaWNXaWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOwpA
QCAtMzU1LDcgKzM1NSw3IEBAIGJvb2wgU1ZHSW1hZ2U6Omhhc1JlbGF0aXZlV2lkdGgoKSBjb25z
dAogCiBib29sIFNWR0ltYWdlOjpoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0CiB7Ci0gICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1dG8g
cm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJpbnNp
Y0hlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIGJv
b2wgU1ZHSW1hZ2U6Omhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QKIAogdm9pZCBTVkdJbWFnZTo6
Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3Ro
JiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCiB7Ci0gICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1dG8g
cm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmNv
bXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYg
aW50cmluCiAKIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKIHsKLSAgICBTVkdTVkdF
bGVtZW50KiByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgYXV0byByb290
RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCB8fCAh
cm9vdEVsZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJv
b3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQg
U1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKIAogdm9pZCBTVkdJbWFnZTo6c3RvcEFuaW1hdGlv
bigpCiB7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVu
dCgpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlm
ICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICByb290RWxlbWVudC0+cGF1c2VB
bmltYXRpb25zKCk7CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTVkdJbWFnZTo6cmVzZXRBbmlt
YXRpb24oKQogCiBib29sIFNWR0ltYWdlOjppc0FuaW1hdGluZygpIGNvbnN0CiB7Ci0gICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGF1dG8g
cm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmhhc0FjdGl2
ZUFuaW1hdGlvbigpOwpAQCAtNDA5LDEwICs0MDksMTAgQEAgYm9vbCBTVkdJbWFnZTo6aXNBbmlt
YXRpbmcoKSBjb25zdAogCiB2b2lkIFNWR0ltYWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNv
c3QoKSBjb25zdAogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCkpOwogICAgIHNpemVfdCBkZWNvZGVkSW1hZ2VNZW1vcnlDb3N0
ID0gMDsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3VtZW50OyBub2RlOyBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpCisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGRv
Y3VtZW50OyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpCiAgICAgICAg
IGRlY29kZWRJbWFnZU1lbW9yeUNvc3QgKz0gbm9kZS0+YXBwcm94aW1hdGVNZW1vcnlDb3N0KCk7
CiAKICAgICBKU0M6OlZNJiB2bSA9IGNvbW1vblZNKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oCmluZGV4IDRlZmZlNTc5YjVjYWE1ZWZjYjVhOTNmNWYyZjM5MmM3OGM0OTRk
MzAuLjg4Zjc2Mjc1NDk2NDRkYjE3NTk0YzNkOGM3YjI3ODNkZGQyZDQxMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYg
aW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVu
ZE1vZGUpOwogCi0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQoKSBjb25zdDsKKyAgICBS
ZWZQdHI8U1ZHU1ZHRWxlbWVudD4gcm9vdEVsZW1lbnQoKSBjb25zdDsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTVkdJbWFnZUNocm9tZUNsaWVudD4gbV9jaHJvbWVDbGllbnQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBhZ2U+IG1fcGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKaW5kZXggYmZlNzYzOWIzMTQ1MDgwM2Y5ZTIzYTA1
Yzc3OTAzYTk4ZjIyYWNiMi4uMjBjYmJkNGNiMzY1NjRmY2RhZmIwOWI4YmM2YTYyYTJiMzZhNjFm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHAKQEAgLTExOCw5ICsxMTgsOSBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpOwogICAgICAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKLSAgICAgICAgU1ZHRWxl
bWVudCogY29udGV4dE5vZGUgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZW5kZXJlci0+ZWxlbWVu
dCgpKTsKKyAgICAgICAgYXV0byBjb250ZXh0Tm9kZSA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8U1ZH
RWxlbWVudD4ocmVuZGVyZXItPmVsZW1lbnQoKSkpOwogICAgICAgICBpZiAoY29udGV4dE5vZGUt
Pmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7Ci0gICAgICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxl
bmd0aENvbnRleHQoY29udGV4dE5vZGUpOworICAgICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBs
ZW5ndGhDb250ZXh0KGNvbnRleHROb2RlLmdldCgpKTsKICAgICAgICAgICAgIEZsb2F0U2l6ZSB2
aWV3cG9ydFNpemU7CiAKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHJlZmVyZW5jaW5nIGFuIGVs
ZW1lbnQgd2l0aCBwZXJjZW50YWdlIHVuaXRzLCBlZy4gPHJlY3Qgd2l0aD0iMzAlIj4gdGhvc2Ug
dmFsdWVzIHdlcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgdmlld3BvcnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3Bw
CmluZGV4IDRmNmE4Mjc3MTRhNmNhZTkwZGYxMmVmYThjMTNlMWE0NTNiZTc2MjQuLjk3ZWE1NWU4
YzA4Nzk3OGJkZWY1YjgyZGU4NTdlNzBmOWY3ZjUyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCkBAIC00
NywxMSArNDcsMTEgQEAgdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphZGQoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KQogICAgIG1fbmFtZWRFZmZlY3Rz
LnNldChpZCwgbV9sYXN0RWZmZWN0KTsKIH0KIAotRmlsdGVyRWZmZWN0KiBTVkdGaWx0ZXJCdWls
ZGVyOjpnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CitSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkgewogICAgICAgICBp
ZiAobV9sYXN0RWZmZWN0KQotICAgICAgICAgICAgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsK
KyAgICAgICAgICAgIHJldHVybiBtX2xhc3RFZmZlY3Q7CiAKICAgICAgICAgcmV0dXJuIG1fYnVp
bHRpbkVmZmVjdHMuZ2V0KFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oCmluZGV4IGM1ZTQwYTgwOGRlMGM2ZmYxMzY0NWVmZTkxY2Y2NWViN2ZlZGM2N2MuLjVl
N2QzOGI2YjA3OTIzNDQ0MTg1ZjU1ZjNmZGJkMDAwNDU5M2JjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4pOwogCi0gICAgRmlsdGVyRWZmZWN0KiBnZXRFZmZl
Y3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OworICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAg
RmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0Lmdl
dCgpOyB9CiAKICAgICB2b2lkIGFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8
RmlsdGVyRWZmZWN0PiYmLCBSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaAppbmRleCA1YWIxYTQzZjA2OWVkYWU0ZGQ5YjExMGI1ZTk2YjUwNzMy
Yzg0OGI0Li5lZDYxM2Q5ZTU1MDQyYWU5MTVlMTFlZGJmMjVhOTQyYTAwZjMxYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC05MCw3ICs5MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fYW5pbWF0ZWRQYXRoQnl0ZVN0cmVhbSk7Ci0gICAgICAgIFNWR1BhdGhFbGVtZW50KiBwYXRo
RWxlbWVudCA9IGRvd25jYXN0PFNWR1BhdGhFbGVtZW50Pihjb250ZXh0RWxlbWVudCgpKTsKKyAg
ICAgICAgYXV0byBwYXRoRWxlbWVudCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8U1ZHUGF0aEVsZW1l
bnQ+KGNvbnRleHRFbGVtZW50KCkpKTsKIAogICAgICAgICAvLyBJZiB0aGUgYW5pbVZhbCBpcyBv
YnNlcnZlZCBmcm9tIEpTLCB3ZSBoYXZlIHRvIHVwZGF0ZSBpdCBvbiBlYWNoIGFuaW1hdGlvbiBz
dGVwLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24gYW5kIG9ubHkg
ZG9uZSwgaWYgc29tZW9uZSBhY3R1YWxseSBvYnNlcnZlcyB0aGUgYW5pbWF0ZWRQYXRoU2VnTGlz
dCgpIHdoaWxlIGFuIGFuaW1hdGlvbiBpcyBydW5uaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oCmluZGV4IGI4MzFk
NDc2NjQxMmNhN2RmNDU0NDA1OTU0NThjYWVlMDZlODgyOWUuLjUyNTc0ZGU4MTJiMTBmOGQ4MmJj
MzJjZmViNTU3Y2QwMjBjMzg2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBtX3dyYXBwZXJzLT5zaXplKCk7CiAg
ICAgICAgIEFTU0VSVChzaXplID09IG1fdmFsdWVzLT5zaXplKCkpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBMaXN0SXRlbVRlYXJP
ZmYqIGl0ZW0gPSBtX3dyYXBwZXJzLT5hdChpKTsKKyAgICAgICAgICAgIGF1dG8gaXRlbSA9IG1h
a2VSZWZQdHIobV93cmFwcGVycy0+YXQoaSkpOwogICAgICAgICAgICAgaWYgKCFpdGVtKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaXRlbS0+c2V0QW5pbWF0ZWRQcm9w
ZXJ0eShtX2FuaW1hdGVkUHJvcGVydHkucHRyKCkpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHByb3Rl
Y3RlZDoKIAogICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKFJlZjxMaXN0
SXRlbVRlYXJPZmY+JiBuZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhUb01vZGlmeSkgb3ZlcnJpZGUK
ICAgICB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHlPZkl0
ZW0gPSBuZXdJdGVtLT5hbmltYXRlZFByb3BlcnR5KCk7CisgICAgICAgIGF1dG8gYW5pbWF0ZWRQ
cm9wZXJ0eU9mSXRlbSA9IG1ha2VSZWZQdHIobmV3SXRlbS0+YW5pbWF0ZWRQcm9wZXJ0eSgpKTsK
IAogICAgICAgICAvLyBuZXdJdGVtIGhhcyBiZWVuIGNyZWF0ZWQgbWFudWFsbHksIGl0IGRvZXNu
J3QgYmVsb25nIHRvIGFueSBTVkdFbGVtZW50LgogICAgICAgICAvLyAoZm9yIGV4YW1wbGU6ICJ0
ZXh0RWxlbWVudC54LmJhc2VWYWwuYXBwZW5kSXRlbShzdmdzdmdFbGVtZW50LmNyZWF0ZVNWR0xl
bmd0aCgpKSIpCkBAIC0xODEsNyArMTgxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAvLyBTcGVj
OiBJZiBuZXdJdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBpcyByZW1vdmVkIGZyb20gaXRz
IHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgogICAg
ICAgICAvLyAnbmV3SXRlbScgaXMgYWxyZWFkeSBsaXZpbmcgaW4gYW5vdGhlciBsaXN0LiBJZiBp
dCdzIG5vdCBvdXIgbGlzdCwgc3luY2hyb25pemUgdGhlIG90aGVyIGxpc3RzIHdyYXBwZXJzIGFm
dGVyIHRoZSByZW1vdmFsLgogICAgICAgICBib29sIGxpdmVzSW5PdGhlckxpc3QgPSBhbmltYXRl
ZFByb3BlcnR5T2ZJdGVtICE9IG1fYW5pbWF0ZWRQcm9wZXJ0eS5wdHIoKTsKLSAgICAgICAgQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBwcm9wZXJ0eVRlYXJPZmYgPSBzdGF0aWNfY2FzdDxB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqPihhbmltYXRlZFByb3BlcnR5T2ZJdGVtKTsKKyAg
ICAgICAgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBwcm9wZXJ0eVRlYXJPZmYgPSBzdGF0
aWNfY2FzdDxBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqPihhbmltYXRlZFByb3BlcnR5T2ZJ
dGVtLmdldCgpKTsKICAgICAgICAgaW50IGluZGV4VG9SZW1vdmUgPSBwcm9wZXJ0eVRlYXJPZmYt
PmZpbmRJdGVtKG5ld0l0ZW0ucHRyKCkpOwogICAgICAgICBBU1NFUlQoaW5kZXhUb1JlbW92ZSAh
PSAtMSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>