<?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>174863</bug_id>
          
          <creation_ts>2017-07-26 08:41:04 -0700</creation_ts>
          <short_desc>WebDriver: use in-view center point for clicks instead of bounding box center point</short_desc>
          <delta_ts>2017-08-05 01:11:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1332346</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-26 08:41:04 -0700</bug_when>
    <thetext>The center of the element bounding box is not always part of the element, like in multiline links, for example.

https://w3c.github.io/webdriver/webdriver-spec.html#dfn-in-view-center-point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332347</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-26 08:42:40 -0700</bug_when>
    <thetext>This causes test testCanClickOnALinkThatOverflowsAndFollowIt to fail

___________________________________________________________________ testCanClickOnALinkThatOverflowsAndFollowIt[WebKitGTK] ___________________________________________________________________

driver = &lt;selenium.webdriver.webkitgtk.webdriver.WebDriver (session=&quot;074c8710-f8bd-429e-99e2-f4035435f0c8&quot;)&gt;

    def testCanClickOnALinkThatOverflowsAndFollowIt(driver):
        driver.find_element(By.ID, &quot;overflowLink&quot;).click()
&gt;       WebDriverWait(driver, 3).until(EC.title_is(&quot;XHTML Test Page&quot;))

&gt;       raise TimeoutException(message, screen, stacktrace)
E       TimeoutException: Message:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332348</commentid>
    <comment_count>2</comment_count>
      <attachid>316448</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-26 08:48:25 -0700</bug_when>
    <thetext>Created attachment 316448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332349</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-26 08:50:33 -0700</bug_when>
    <thetext>Attachment 316448 did not pass style-queue:


ERROR: Source/WebDriver/Session.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:583:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 9 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>1332466</commentid>
    <comment_count>4</comment_count>
      <attachid>316448</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-26 14:56:03 -0700</bug_when>
    <thetext>Comment on attachment 316448
Patch

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

r- while we figure out the details of &quot;in-view&quot; and &quot;obscured&quot;. For Mac/iOS, we need to make DOMRect.h a private header. I&apos;ll put up a revised patch that does that.

&gt; Source/WebKit/UIProcess/Automation/Automation.json:429
&gt; +                { &quot;name&quot;: &quot;inViewCenterPoint&quot;, &quot;$ref&quot;: &quot;Point&quot;, &quot;description&quot;: &quot;The in-view center point for the requested element. Specified in page or viewport coordinates based on the useViewportCoordinates rameter.&quot; }

Nit: rameter -&gt; parameter

I don&apos;t like this name, but &apos;interactableCenterPoint&apos; isn&apos;t much better. However, this directly maps to the spec concept, so maybe it should just be left alone. :|

My issue is that the name is inaccurate. For a &lt;span&gt; of text that line wraps, the entire element could be &quot;in-view&quot; and yet the center of the bounding box (i.e., the center point of part of an element that is inside the viewport-in this case) may not necessarily intersect one of the element&apos;s client rects.  So it&apos;s really inViewCenterPointOfFirstClientRect, or something.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:523
&gt; +    WebCore::IntPoint inViewCenter;

This is missing the check of whether the element is &quot;in view&quot; at all. According to the spec, if elementsFromPoint(inViewCenterPoint(elem.getClientRects()[0])) does not contain elem, then it is not considered in-view. There is some confusion of how to compute this since it seems kind of circular (the precondition of inViewCenterPoint(e) is that &apos;e&apos; is in view).

Alternatively, we could ignore this precondition and separately report in the command result whether
- the element is &quot;in view&quot; per spec
- the element is &quot;obscured&quot; per spec

Note: Element.elementsFromPoint just landed in TOT. So we could use it. :)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:525
&gt; +    if (auto* clientRect = clientRectList-&gt;item(0)) {

Is it always the case that the first client rect is within the viewport?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332571</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-26 22:49:35 -0700</bug_when>
    <thetext>(In reply to Brian Burg from comment #4)
&gt; Comment on attachment 316448 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=316448&amp;action=review
&gt; 
&gt; r- while we figure out the details of &quot;in-view&quot; and &quot;obscured&quot;. For Mac/iOS,
&gt; we need to make DOMRect.h a private header. I&apos;ll put up a revised patch that
&gt; does that.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/Automation.json:429
&gt; &gt; +                { &quot;name&quot;: &quot;inViewCenterPoint&quot;, &quot;$ref&quot;: &quot;Point&quot;, &quot;description&quot;: &quot;The in-view center point for the requested element. Specified in page or viewport coordinates based on the useViewportCoordinates rameter.&quot; }
&gt; 
&gt; Nit: rameter -&gt; parameter
&gt; 
&gt; I don&apos;t like this name, but &apos;interactableCenterPoint&apos; isn&apos;t much better.
&gt; However, this directly maps to the spec concept, so maybe it should just be
&gt; left alone. :|

Yes, I simply used the spec name.

&gt; My issue is that the name is inaccurate. For a &lt;span&gt; of text that line
&gt; wraps, the entire element could be &quot;in-view&quot; and yet the center of the
&gt; bounding box (i.e., the center point of part of an element that is inside
&gt; the viewport-in this case) may not necessarily intersect one of the
&gt; element&apos;s client rects.  So it&apos;s really inViewCenterPointOfFirstClientRect,
&gt; or something.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:523
&gt; &gt; +    WebCore::IntPoint inViewCenter;
&gt; 
&gt; This is missing the check of whether the element is &quot;in view&quot; at all.

I know, for now I just wanted to get a better click point, and I planned to do the in-view in a follow up. I thought we would that in a previous step, maybe using an js atom to do the check, so I assumed at this point we would know the element is in view for sure.

&gt; According to the spec, if
&gt; elementsFromPoint(inViewCenterPoint(elem.getClientRects()[0])) does not
&gt; contain elem, then it is not considered in-view. There is some confusion of
&gt; how to compute this since it seems kind of circular (the precondition of
&gt; inViewCenterPoint(e) is that &apos;e&apos; is in view).

elementsFromPoint? Do you mean id the center point is obscured?

&gt; Alternatively, we could ignore this precondition and separately report in
&gt; the command result whether
&gt; - the element is &quot;in view&quot; per spec
&gt; - the element is &quot;obscured&quot; per spec
&gt; 
&gt; Note: Element.elementsFromPoint just landed in TOT. So we could use it. :)

Ah, I&apos;ll check it.

&gt; &gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:525
&gt; &gt; +    if (auto* clientRect = clientRectList-&gt;item(0)) {
&gt; 
&gt; Is it always the case that the first client rect is within the viewport?

I assumed that at this point scrollIntoView has always been called. Maybe we should only return the in view center point when scroll view parameter is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332963</commentid>
    <comment_count>6</comment_count>
      <attachid>316641</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-28 08:43:37 -0700</bug_when>
    <thetext>Created attachment 316641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332964</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-28 08:45:55 -0700</bug_when>
    <thetext>Attachment 316641 did not pass style-queue:


ERROR: Source/WebDriver/Session.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:493:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebDriver/Session.cpp:583:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 11 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>1332965</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-28 08:47:24 -0700</bug_when>
    <thetext>(In reply to Brian Burg from comment #4)
&gt; Comment on attachment 316448 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=316448&amp;action=review
&gt; 
&gt; r- while we figure out the details of &quot;in-view&quot; and &quot;obscured&quot;. For Mac/iOS,
&gt; we need to make DOMRect.h a private header. I&apos;ll put up a revised patch that
&gt; does that.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/Automation.json:429
&gt; &gt; +                { &quot;name&quot;: &quot;inViewCenterPoint&quot;, &quot;$ref&quot;: &quot;Point&quot;, &quot;description&quot;: &quot;The in-view center point for the requested element. Specified in page or viewport coordinates based on the useViewportCoordinates rameter.&quot; }
&gt; 
&gt; Nit: rameter -&gt; parameter
&gt; 
&gt; I don&apos;t like this name, but &apos;interactableCenterPoint&apos; isn&apos;t much better.
&gt; However, this directly maps to the spec concept, so maybe it should just be
&gt; left alone. :|
&gt; 
&gt; My issue is that the name is inaccurate. For a &lt;span&gt; of text that line
&gt; wraps, the entire element could be &quot;in-view&quot; and yet the center of the
&gt; bounding box (i.e., the center point of part of an element that is inside
&gt; the viewport-in this case) may not necessarily intersect one of the
&gt; element&apos;s client rects.  So it&apos;s really inViewCenterPointOfFirstClientRect,
&gt; or something.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:523
&gt; &gt; +    WebCore::IntPoint inViewCenter;
&gt; 
&gt; This is missing the check of whether the element is &quot;in view&quot; at all.
&gt; According to the spec, if
&gt; elementsFromPoint(inViewCenterPoint(elem.getClientRects()[0])) does not
&gt; contain elem, then it is not considered in-view. There is some confusion of
&gt; how to compute this since it seems kind of circular (the precondition of
&gt; inViewCenterPoint(e) is that &apos;e&apos; is in view).

Well, actually it&apos;s possible in case the element has a hidden visibility in its style. In that case we might have the client rect in the view, but elementsFromPoint() will not include the element in the list.

&gt; Alternatively, we could ignore this precondition and separately report in
&gt; the command result whether
&gt; - the element is &quot;in view&quot; per spec
&gt; - the element is &quot;obscured&quot; per spec

In the end I&apos;ve made the inViewCenterPoint optional, so when not present is because the element is not in the view (not interactable) and added isObscured to report the click intercepted error. This fixed several visibility tests too.

&gt; Note: Element.elementsFromPoint just landed in TOT. So we could use it. :)

Yes, perfect timing!

&gt; &gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:525
&gt; &gt; +    if (auto* clientRect = clientRectList-&gt;item(0)) {
&gt; 
&gt; Is it always the case that the first client rect is within the viewport?

This is now caught by elementsFromPoint() :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333410</commentid>
    <comment_count>9</comment_count>
      <attachid>316772</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-31 06:31:06 -0700</bug_when>
    <thetext>Created attachment 316772
Try to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333411</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-31 06:34:17 -0700</bug_when>
    <thetext>Attachment 316772 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:493:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebDriver/Session.cpp:583:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 16 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>1333447</commentid>
    <comment_count>11</comment_count>
      <attachid>316772</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-31 09:27:07 -0700</bug_when>
    <thetext>Comment on attachment 316772
Try to fix mac builds

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

r=me

Does this progress any Selenium python tests?

&gt; Source/WebDriver/Session.cpp:1043
&gt; +        if (!inViewCenter) {

Very nice!

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:477
&gt; +    // Â§11.1 Element Interactability.

Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333448</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-31 09:27:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/33626463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333465</commentid>
    <comment_count>13</comment_count>
      <attachid>316772</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-31 10:55:37 -0700</bug_when>
    <thetext>Comment on attachment 316772
Try to fix mac builds

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

&gt; Source/WebCore/page/FrameView.h:476
&gt; +    WEBCORE_EXPORT FloatSize documentToClientOffset() const;

I would prefer not to export this, but to export something that does the coordinate conversion you want (which I think is &quot;client to contents point&quot;).

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:553
&gt; +        centerPoint.move(-clientOffset);
&gt; +        inViewCenter = WebCore::IntPoint(centerPoint);
&gt; +
&gt; +        if (useViewportCoordinates)
&gt; +            inViewCenter = coreFrameView-&gt;contentsToRootView(inViewCenter.value());
&gt; +    }

I&apos;m not sure this is correct with page scale and page zoom. It&apos;s also worth testing in an RTL document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333682</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-01 00:09:55 -0700</bug_when>
    <thetext>(In reply to Brian Burg from comment #11)
&gt; Comment on attachment 316772 [details]
&gt; Try to fix mac builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=316772&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; Does this progress any Selenium python tests?

Indeed.

-FAIL test/selenium/webdriver/common/click_tests.py::testCanClickOnALinkThatOverflowsAndFollowIt[WebKitGTK]
-FAIL test/selenium/webdriver/common/click_tests.py::testShouldThrowExceptionIfElementIsObscured[WebKitGTK]

This is not part of selenium, I added it manually to check the isObscured. It uses the example from the spec and then tries to click the button checking that exception should be thrown.

-FAIL test/selenium/webdriver/common/form_handling_tests.py::testShouldThrowAnExceptionWhenSelectingAnUnselectableElement[WebKitGTK]
-FAIL test/selenium/webdriver/common/visibility_tests.py::testShouldNotBeAbleToClickOnAnElementThatIsNotDisplayed[WebKitGTK]
-FAIL test/selenium/webdriver/common/visibility_tests.py::testShouldNotBeAbleToToggleAnElementThatIsNotDisplayed[WebKitGTK]
-FAIL test/selenium/webdriver/common/visibility_tests.py::testShouldNotBeAbleToSelectAnElementThatIsNotDisplayed[WebKitGTK]
-FAIL test/selenium/webdriver/support/event_firing_webdriver_tests.py::test_should_fire_click_event[WebKitGTK]


&gt; &gt; Source/WebDriver/Session.cpp:1043
&gt; &gt; +        if (!inViewCenter) {
&gt; 
&gt; Very nice!
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:477
&gt; &gt; +    // Â§11.1 Element Interactability.
&gt; 
&gt; Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334132</commentid>
    <comment_count>15</comment_count>
      <attachid>316934</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-01 23:18:41 -0700</bug_when>
    <thetext>Created attachment 316934
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334133</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-01 23:20:08 -0700</bug_when>
    <thetext>Attachment 316934 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:493:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebDriver/Session.cpp:583:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 17 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>1335158</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-04 00:03:08 -0700</bug_when>
    <thetext>Brian, Simon, could you review this again, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335363</commentid>
    <comment_count>18</comment_count>
      <attachid>316934</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-08-04 11:37:24 -0700</bug_when>
    <thetext>Comment on attachment 316934
Updated patch

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

LGTM, Simon can you take another glance at coordinate-related code?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:498
&gt; +        // Element is not the first one in the list.

Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335677</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-05 01:11:21 -0700</bug_when>
    <thetext>Committed r220314: &lt;http://trac.webkit.org/changeset/220314&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316448</attachid>
            <date>2017-07-26 08:48:25 -0700</date>
            <delta_ts>2017-07-28 08:43:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wd-in-view-center.diff</filename>
            <type>text/plain</type>
            <size>18222</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggN2JjYzdiZmFkOTYuLjYzM2Q2NmQ2N2JmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDIzIEBACiAyMDE3LTA3LTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBXZWJEcml2ZXI6IHVzZSBpbi12aWV3IGNlbnRl
ciBwb2ludCBmb3IgY2xpY2tzIGluc3RlYWQgb2YgYm91bmRpbmcgYm94IGNlbnRlciBwb2ludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0ODYzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNlbnRl
ciBvZiB0aGUgZWxlbWVudCBib3VuZGluZyBib3ggaXMgbm90IGFsd2F5cyBwYXJ0IG9mIHRoZSBl
bGVtZW50LCBsaWtlIGluIG11bHRpbGluZSBsaW5rcywgZm9yIGV4YW1wbGUuCisKKyAgICAgICAg
MTEuMSBFbGVtZW50IEludGVyYWN0YWJpbGl0eS4KKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3Jn
L1RSL3dlYmRyaXZlci8jZGZuLWluLXZpZXctY2VudGVyLXBvaW50CisKKyAgICAgICAgKiBTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlv
dXQpOiBHZXQgdGhlIGluLXZpZXcgY2VudGVyIHBvaW50IGZyb20gdGhlIHJlc3VsdCB0b28uCisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRSZWN0KTogSWdub3JlIGluLXZp
ZXcgY2VudGVyIHBvaW50LgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjplbGVtZW50Q2xp
Y2spOiBQYXNzIGluLXZpZXcgY2VudGVyIHBvaW50IHRvIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9u
KCkuCisgICAgICAgICogU2Vzc2lvbi5oOgorCisyMDE3LTA3LTI2ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBXZWJEcml2ZXI6IGZpeCByZXR1
cm4gdmFsdWUgb2YgY2xvc2Ugd2luZG93IGNvbW1hbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDg2MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
RHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAppbmRleCAz
MTMwOWMxNDI5Ni4uNjg2NTM5MjI1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtNjEyLDcgKzYx
Miw3IEBAIFN0cmluZyBTZXNzaW9uOjpleHRyYWN0RWxlbWVudElEKEluc3BlY3RvclZhbHVlJiB2
YWx1ZSkKICAgICByZXR1cm4gZWxlbWVudElEOwogfQogCi12b2lkIFNlc3Npb246OmNvbXB1dGVF
bGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExh
eW91dE9wdGlvbj4gb3B0aW9ucywgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxSZWN0PiYm
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
U2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9w
dGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zLCBGdW5jdGlvbjx2b2lkIChzdGQ6
Om9wdGlvbmFsPFJlY3Q+JiYsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX3RvcGxl
dmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogCkBAIC02MjQsMTIgKzYyNCwxMiBAQCB2b2lk
IFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBP
cHRpb25TZXQ8RWxlbWVudExheQogICAgIHBhcmFtZXRlcnMtPnNldEJvb2xlYW4oQVNDSUlMaXRl
cmFsKCJ1c2VWaWV3cG9ydENvb3JkaW5hdGVzIiksIG9wdGlvbnMuY29udGFpbnMoRWxlbWVudExh
eW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGluYXRlcykpOwogICAgIG1faG9zdC0+c2VuZENv
bW1hbmRUb0JhY2tlbmQoQVNDSUlMaXRlcmFsKCJjb21wdXRlRWxlbWVudExheW91dCIpLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9z
dDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICBpZiAocmVz
cG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNwb25zZS5yZXNwb25z
ZU9iamVjdCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBy
ZWN0T2JqZWN0OwogICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmpl
Y3QoQVNDSUlMaXRlcmFsKCJyZWN0IiksIHJlY3RPYmplY3QpKSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIG51bGxwdHIpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIG51bGxwdHIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBlbGVt
ZW50WDsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5
b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghZWxlbWVudFggfHwgIWVsZW1lbnRZKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIG51bGxwdHIpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBlbGVtZW50V2lkdGg7CkBAIC02NTcsMTEgKzY1NywyNCBAQCB2b2lkIFNl
c3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRp
b25TZXQ8RWxlbWVudExheQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICgh
ZWxlbWVudFdpZHRoIHx8ICFlbGVtZW50SGVpZ2h0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQsIG51bGxwdHIpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIG51bGxwdHIpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIFJlY3QgcmVjdCA9IHsgeyBlbGVtZW50WC52YWx1
ZSgpLCBlbGVtZW50WS52YWx1ZSgpIH0sIHsgZWxlbWVudFdpZHRoLnZhbHVlKCksIGVsZW1lbnRI
ZWlnaHQudmFsdWUoKSB9IH07Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3QsIG51bGxw
dHIpOworCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGluVmlld0NlbnRlclBvaW50
T2JqZWN0OworICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3Qo
QVNDSUlMaXRlcmFsKCJpblZpZXdDZW50ZXJQb2ludCIpLCBpblZpZXdDZW50ZXJQb2ludE9iamVj
dCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpbnQgaW5WaWV3Q2VudGVyUG9pbnRYLCBpblZpZXdDZW50ZXJQb2ludFk7CisgICAgICAgIGlm
ICghaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ4Iiks
IGluVmlld0NlbnRlclBvaW50WCkKKyAgICAgICAgICAgIHx8ICFpblZpZXdDZW50ZXJQb2ludE9i
amVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInkiKSwgaW5WaWV3Q2VudGVyUG9pbnRZKSkg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFBv
aW50IGluVmlld0NlbnRlclBvaW50ID0geyBpblZpZXdDZW50ZXJQb2ludFgsIGluVmlld0NlbnRl
clBvaW50WSB9OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0LCBpblZpZXdDZW50ZXJQ
b2ludCwgbnVsbHB0cik7CiAgICAgfSk7CiB9CiAKQEAgLTg2Miw3ICs4NzUsNyBAQCB2b2lkIFNl
c3Npb246OmdldEVsZW1lbnRSZWN0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29tcHV0ZUVs
ZW1lbnRMYXlvdXQoZWxlbWVudElELCB7IH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGVy
cm9yKSB7CisgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCB7IH0sIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBzdGQ6Om9w
dGlvbmFsPFBvaW50PiYmLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGVycm9yKSB7CiAgICAg
ICAgIGlmICghcmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Q29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTAxOSwxNSArMTAzMiwxMyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGljayhjb25z
dCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdAogCiAgICAg
T3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMgPSBFbGVtZW50TGF5b3V0T3B0
aW9uOjpTY3JvbGxJbnRvVmlld0lmTmVlZGVkOwogICAgIG9wdGlvbnMgfD0gRWxlbWVudExheW91
dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGluYXRlczsKLSAgICBjb21wdXRlRWxlbWVudExheW91
dChlbGVtZW50SUQsIG9wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6
b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGVycm9yKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZWN0IHx8IGVycm9yKSB7CisgICAgY29tcHV0ZUVsZW1l
bnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiBpblZp
ZXdDZW50ZXIsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXJlY3QgfHwgIWluVmlld0NlbnRlciB8fCBlcnJvcikgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IHRoZSBj
ZW50ZXIgb2YgdGhlIGJvdW5kaW5nIGJveCBpcyBub3QgYWx3YXlzIHBhcnQgb2YgdGhlIGVsZW1l
bnQuCi0gICAgICAgIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKHJlY3QudmFsdWUoKS5vcmlnaW4u
eCArIHJlY3QudmFsdWUoKS5zaXplLndpZHRoIC8gMiwgcmVjdC52YWx1ZSgpLm9yaWdpbi55ICsg
cmVjdC52YWx1ZSgpLnNpemUuaGVpZ2h0IC8gMiwKLSAgICAgICAgICAgIE1vdXNlQnV0dG9uOjpM
ZWZ0LCBNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljaywgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICBwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihpblZpZXdDZW50ZXIudmFs
dWUoKS54LCBpblZpZXdDZW50ZXIudmFsdWUoKS55LCBNb3VzZUJ1dHRvbjo6TGVmdCwgTW91c2VJ
bnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAog
ICAgICAgICB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaAppbmRleCAyNDBjNDI1NTIyOC4uZDZjMGUxODAy
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbi5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9IDEgPDwgMCwKICAgICAgICAgVXNlVmlld3BvcnRDb29y
ZGluYXRlcyA9IDEgPDwgMSwKICAgICB9OwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiwg
RnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxSZWN0PiYmLCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+JiYpPiYmKTsKKyAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KGNv
bnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4sIEZ1
bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4m
JiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmKT4mJik7CiAKICAgICBlbnVt
IGNsYXNzIE1vdXNlQnV0dG9uIHsgTm9uZSwgTGVmdCwgTWlkZGxlLCBSaWdodCB9OwogICAgIGVu
dW0gY2xhc3MgTW91c2VJbnRlcmFjdGlvbiB7IE1vdmUsIERvd24sIFVwLCBTaW5nbGVDbGljaywg
RG91YmxlQ2xpY2sgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDQ3NzQ2Mjc3NzMuLjA3ZjUxMDI0Mjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA3LTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBXZWJEcml2ZXI6IHVzZSBpbi12aWV3IGNl
bnRlciBwb2ludCBmb3IgY2xpY2tzIGluc3RlYWQgb2YgYm91bmRpbmcgYm94IGNlbnRlciBwb2lu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0ODYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IGNvbXB1dGVFbGVtZW50TGF5b3V0IHRvIGFsc28gcmV0dXJuIHRoZSBpbi12aWV3IGNlbnRlciBw
b2ludC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxlbWVu
dExheW91dCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KToKKworMjAxNy0wNy0yNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgV2ViRHJpdmVy
OiBmaXggcmV0dXJuIHZhbHVlIG9mIGNsb3NlIHdpbmRvdyBjb21tYW5kCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4NjEKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgppbmRleCBlYmMz
MWIwMTA1Mi4uZTFjY2VjY2RhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC00MjUsNyArNDI1LDggQEAKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMiLCAib3B0aW9uYWwiOiB0
cnVlLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRoZSByZXN1bHQgY29v
cmRpbmF0ZXMgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGFzIHZpZXdwb3J0IGNvb3JkaW5hdGVzIG9y
IG5vdC4gRGVmYXVsdHMgdG8gZmFsc2UsIHdoaWNoIG1lYW5zIGNvb3JkaW5hdGVzIHNob3VsZCBi
ZSByZXByZXNlbnRlZCBhcyBwYWdlIGNvb3JkaW5hdGVzLiIgfQogICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVjdCIs
ICIkcmVmIjogIlJlY3QiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGxheW91dCByZWN0IGZvciB0aGUg
cmVxdWVzdGVkIGVsZW1lbnQuIFNwZWNpZmllZCBpbiBwYWdlIG9yIHZpZXdwb3J0IGNvb3JkaW5h
dGVzIGJhc2VkIG9uIHRoZSB1c2VWaWV3cG9ydENvb3JkaW5hdGVzIHBhcmFtZXRlci4iIH0KKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlY3QiLCAiJHJlZiI6ICJSZWN0IiwgImRlc2NyaXB0
aW9uIjogIlRoZSBsYXlvdXQgcmVjdCBmb3IgdGhlIHJlcXVlc3RlZCBlbGVtZW50LiBTcGVjaWZp
ZWQgaW4gcGFnZSBvciB2aWV3cG9ydCBjb29yZGluYXRlcyBiYXNlZCBvbiB0aGUgdXNlVmlld3Bv
cnRDb29yZGluYXRlcyBwYXJhbWV0ZXIuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aW5WaWV3Q2VudGVyUG9pbnQiLCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUg
aW4tdmlldyBjZW50ZXIgcG9pbnQgZm9yIHRoZSByZXF1ZXN0ZWQgZWxlbWVudC4gU3BlY2lmaWVk
IGluIHBhZ2Ugb3Igdmlld3BvcnQgY29vcmRpbmF0ZXMgYmFzZWQgb24gdGhlIHVzZVZpZXdwb3J0
Q29vcmRpbmF0ZXMgcmFtZXRlci4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiYXN5
bmMiOiB0cnVlCiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDM0NGJkMGM5
ZTQ1Li42NzkyNjg1YWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTY4NSw3ICs2ODUs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cgogICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVudExheW91dChw
YWdlLT5wYWdlSUQoKSwgZnJhbWVJRC52YWx1ZSgpLCBub2RlSGFuZGxlLCBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCB1c2VWaWV3cG9ydENvb3JkaW5hdGVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAK
LXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2
NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgY29uc3QgU3RyaW5nJiBlcnJv
clR5cGUpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6Oklu
dFBvaW50IGluVmlld0NlbnRlclBvaW50LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKIHsKICAg
ICBhdXRvIGNhbGxiYWNrID0gbV9jb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrcy50YWtlKGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC03MTEsNyArNzExLDEyIEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNh
bGxiYWNrSUQsIFdlYkNvcmU6CiAgICAgICAgIC5zZXRTaXplKFdURk1vdmUoc2l6ZU9iamVjdCkp
CiAgICAgICAgIC5yZWxlYXNlKCk7CiAKLSAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92
ZShyZWN0T2JqZWN0KSk7CisgICAgYXV0byBpblZpZXdDZW50ZXJQb2ludE9iamVjdCA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBvaW50OjpjcmVhdGUoKQorICAgICAgICAuc2V0
WChpblZpZXdDZW50ZXJQb2ludC54KCkpCisgICAgICAgIC5zZXRZKGluVmlld0NlbnRlclBvaW50
LnkoKSkKKyAgICAgICAgLnJlbGVhc2UoKTsKKworICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhX
VEZNb3ZlKHJlY3RPYmplY3QpLCBXVEZNb3ZlKGluVmlld0NlbnRlclBvaW50T2JqZWN0KSk7CiB9
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2co
SW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3Np
bmdDb250ZXh0SGFuZGxlLCBib29sKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggN2Rh
ZjRkZGI3ZjkuLmI4ODMzNDgxYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xNzMsNyArMTcz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVp
bnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVy
cm9yVHlwZSk7CiAgICAgdm9pZCBkaWRSZXNvbHZlQ2hpbGRGcmFtZSh1aW50NjRfdCBjYWxsYmFj
a0lELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9p
ZCBkaWRSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwotICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1l
bnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgY29uc3QgU3Ry
aW5nJiBlcnJvclR5cGUpOworICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0
X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50UG9pbnQsIGNvbnN0
IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3QgU3RyaW5n
JiBlcnJvclR5cGUpOwogICAgIHZvaWQgZGlkR2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+LCBjb25zdCBTdHJpbmcmIGVycm9yVHlw
ZSk7CiAgICAgdm9pZCBkaWREZWxldGVDb29raWUodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3Qg
U3RyaW5nJiBlcnJvclR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4K
aW5kZXggY2I0ZDU2Mjg4MzAuLmJhYzlmMzVhZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24ubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlv
blNlc3Npb24gewogICAgIERpZFJlc29sdmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJvclR5cGUpCiAgICAgRGlkUmVzb2x2ZVBhcmVu
dEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJv
clR5cGUpCiAKLSAgICBEaWRDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lE
LCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFN0cmluZyBlcnJvclR5cGUpCisgICAgRGlkQ29tcHV0
ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCByZWN0
LCBXZWJDb3JlOjpJbnRQb2ludCBpblZpZXdDZW50ZXJQb2ludCwgU3RyaW5nIGVycm9yVHlwZSkK
IAogICAgIERpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2VEYXRhSGFuZGxlLCBTdHJpbmcgZXJyb3JUeXBlKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDhlZTQyNzQyNzg2Li42MjAw
ZGM0MTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTQxLDYgKzQx
LDggQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZlByaXZhdGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29va2llSmFyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01SZWN0Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9ET01SZWN0TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVUcmVlLmg+
CkBAIC00NzUsNyArNDc3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21w
dXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKICAgICBXZWJQYWdl
KiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlm
ICghcGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRFcnJvclR5cGUgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUo
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RG
b3VuZCk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRl
RWxlbWVudExheW91dChjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0KCksIHdpbmRvd05vdEZv
dW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCB7IH0sIHsgfSwgd2luZG93Tm90
Rm91bmRFcnJvclR5cGUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDg0LDEz
ICs0ODYsMTMgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVu
dExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKIAogICAgIFdlYkZyYW1lKiBmcmFt
ZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSA6
IHBhZ2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNr
SUQsIFdlYkNvcmU6OkludFJlY3QoKSwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlv
dXQoY2FsbGJhY2tJRCwgeyB9LCB7IH0sIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkVsZW1lbnQqIGNvcmVFbGVtZW50
ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoKmZyYW1lLCBub2RlSGFuZGxlKTsKICAgICBpZiAoIWNv
cmVFbGVtZW50KSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRD
b21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0KCksIG5vZGVO
b3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgeyB9LCB7IH0sIG5vZGVO
b3RGb3VuZEVycm9yVHlwZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MDEs
MTMgKzUwMywxMyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVt
ZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogCiAgICAgV2ViQ29yZTo6RnJh
bWUqIGNvcmVGcmFtZSA9IGZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZSkg
ewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1l
bnRMYXlvdXQoY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCgpLCBmcmFtZU5vdEZvdW5kRXJy
b3JUeXBlKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRD
b21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCB7IH0sIHsgfSwgZnJhbWVOb3RGb3VuZEVy
cm9yVHlwZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RnJh
bWVWaWV3ICpjb3JlRnJhbWVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFjb3Jl
RnJhbWVWaWV3KSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRD
b21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0KCksIGZyYW1l
Tm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHsgfSwgeyB9LCBmcmFt
ZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUx
Niw3ICs1MTgsMjAgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxl
bWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKICAgICBlbHNlCiAgICAgICAg
IHJlY3QgPSBjb3JlRnJhbWVWaWV3LT5yb290Vmlld1RvQ29udGVudHMocmVjdCk7CiAKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2Fs
bGJhY2tJRCwgcmVjdCwgU3RyaW5nKCkpLCAwKTsKKyAgICAvLyDCpzExLjEgRWxlbWVudCBJbnRl
cmFjdGFiaWxpdHkuCisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZu
LWluLXZpZXctY2VudGVyLXBvaW50CisgICAgV2ViQ29yZTo6SW50UG9pbnQgaW5WaWV3Q2VudGVy
OworICAgIGF1dG8gY2xpZW50UmVjdExpc3QgPSBjb3JlRWxlbWVudC0+Z2V0Q2xpZW50UmVjdHMo
KTsKKyAgICBpZiAoYXV0byogY2xpZW50UmVjdCA9IGNsaWVudFJlY3RMaXN0LT5pdGVtKDApKSB7
CisgICAgICAgIGluVmlld0NlbnRlci5zZXRYKDAuNSAqIChjbGllbnRSZWN0LT5sZWZ0KCkgKyBj
bGllbnRSZWN0LT5yaWdodCgpKSk7CisgICAgICAgIGluVmlld0NlbnRlci5zZXRZKDAuNSAqIChj
bGllbnRSZWN0LT50b3AoKSArIGNsaWVudFJlY3QtPmJvdHRvbSgpKSk7CisgICAgICAgIGF1dG8g
Y2xpZW50T2Zmc2V0ID0gV2ViQ29yZTo6SW50U2l6ZShjb3JlRnJhbWVWaWV3LT5kb2N1bWVudFRv
Q2xpZW50T2Zmc2V0KCkpOworICAgICAgICBpblZpZXdDZW50ZXIubW92ZSgtY2xpZW50T2Zmc2V0
KTsKKyAgICAgICAgaWYgKHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMpCisgICAgICAgICAgICBpblZp
ZXdDZW50ZXIgPSBjb3JlRnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcoaW5WaWV3Q2VudGVy
KTsKKyAgICB9CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0
ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgcmVjdCwgaW5WaWV3Q2VudGVyLCBTdHJpbmcoKSks
IDApOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
</data>
<flag name="review"
          id="337144"
          type_id="1"
          status="-"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316641</attachid>
            <date>2017-07-28 08:43:37 -0700</date>
            <delta_ts>2017-07-31 06:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wd-click-point.diff</filename>
            <type>text/plain</type>
            <size>23161</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggMDNhNzgyNmQ0ZDQuLjg4OWM3MDZjZDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDI3IEBACiAyMDE3LTA3LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBXZWJEcml2ZXI6IHVzZSBpbi12aWV3IGNlbnRl
ciBwb2ludCBmb3IgY2xpY2tzIGluc3RlYWQgb2YgYm91bmRpbmcgYm94IGNlbnRlciBwb2ludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0ODYzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNlbnRl
ciBvZiB0aGUgZWxlbWVudCBib3VuZGluZyBib3ggaXMgbm90IGFsd2F5cyBwYXJ0IG9mIHRoZSBl
bGVtZW50LCBsaWtlIGluIG11bHRpbGluZSBsaW5rcywgZm9yIGV4YW1wbGUuCisKKyAgICAgICAg
MTEuMSBFbGVtZW50IEludGVyYWN0YWJpbGl0eS4KKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3Jn
L1RSL3dlYmRyaXZlci8jZGZuLWluLXZpZXctY2VudGVyLXBvaW50CisKKyAgICAgICAgKiBDb21t
YW5kUmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6Q29tbWFuZFJlc3VsdDo6aHR0cFN0
YXR1c0NvZGUpOiBBZGQgRWxlbWVudENsaWNrSW50ZXJjZXB0ZWQgYW5kIEVsZW1lbnROb3RJbnRl
cmFjdGFibGUgZXJyb3JzLgorICAgICAgICAoV2ViRHJpdmVyOjpDb21tYW5kUmVzdWx0OjplcnJv
clN0cmluZyk6IERpdHRvLgorICAgICAgICAqIENvbW1hbmRSZXN1bHQuaDogRGl0dG8uCisgICAg
ICAgICogU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmNvbXB1dGVF
bGVtZW50TGF5b3V0KTogR2V0IHRoZSBpbi12aWV3IGNlbnRlciBwb2ludCBhbmQgaXNPYnNjdXJl
ZCBmcm9tIHRoZSByZXN1bHQgdG9vLgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRF
bGVtZW50UmVjdCk6IElnbm9yZSBpbi12aWV3IGNlbnRlciBwb2ludCBhbmQgaXNPYnNjdXJlZC4K
KyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6ZWxlbWVudENsaWNrKTogRmFpbCBpbiBjYXNl
IHRoZSBlbGVtZW50IGlzIG5vdCBpbnRlcmFjdGFibGUgb3IgaXMgb2JzY3VyZWQuCisgICAgICAg
ICogU2Vzc2lvbi5oOgorCisyMDE3LTA3LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBXZWJEcml2ZXI6IGZpeCByZXR1cm4gdmFsdWUgb2Yg
Y2xvc2Ugd2luZG93IGNvbW1hbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDg2MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1h
bmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCAz
Nzk4YTE4MTJiMS4uNjMzYjg5OTViYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29t
bWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApA
QCAtMTIyLDYgKzEyMiw4IEBAIHVuc2lnbmVkIENvbW1hbmRSZXN1bHQ6Omh0dHBTdGF0dXNDb2Rl
KCkgY29uc3QKICAgICAvLyDCpzYuNiBIYW5kbGluZyBFcnJvcnMuCiAgICAgLy8gaHR0cHM6Ly93
d3cudzMub3JnL1RSL3dlYmRyaXZlci8jaGFuZGxpbmctZXJyb3JzCiAgICAgc3dpdGNoIChtX2Vy
cm9yQ29kZS52YWx1ZSgpKSB7CisgICAgY2FzZSBFcnJvckNvZGU6OkVsZW1lbnRDbGlja0ludGVy
Y2VwdGVkOgorICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlOgogICAg
IGNhc2UgRXJyb3JDb2RlOjpJbnZhbGlkQXJndW1lbnQ6CiAgICAgY2FzZSBFcnJvckNvZGU6Oklu
dmFsaWRFbGVtZW50U3RhdGU6CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRTZWxlY3RvcjoK
QEAgLTE1Miw2ICsxNTQsMTAgQEAgU3RyaW5nIENvbW1hbmRSZXN1bHQ6OmVycm9yU3RyaW5nKCkg
Y29uc3QKICAgICBBU1NFUlQoaXNFcnJvcigpKTsKIAogICAgIHN3aXRjaCAobV9lcnJvckNvZGUu
dmFsdWUoKSkgeworICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZDoK
KyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZWxlbWVudCBjbGljayBpbnRlcmNlcHRlZCIp
OworICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlOgorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJlbGVtZW50IG5vdCBpbnRlcmFjdGFibGUiKTsKICAgICBjYXNl
IEVycm9yQ29kZTo6SW52YWxpZEFyZ3VtZW50OgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJpbnZhbGlkIGFyZ3VtZW50Iik7CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRFbGVtZW50
U3RhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaCBiL1Nv
dXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oCmluZGV4IDI5NmU0YjcxMTE5Li5lYzUzMzk4
MDE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGlj
OgogICAgIC8vIMKnNi42IEhhbmRsaW5nIEVycm9ycy4KICAgICAvLyBodHRwczovL3d3dy53My5v
cmcvVFIvd2ViZHJpdmVyLyNoYW5kbGluZy1lcnJvcnMKICAgICBlbnVtIGNsYXNzIEVycm9yQ29k
ZSB7CisgICAgICAgIEVsZW1lbnRDbGlja0ludGVyY2VwdGVkLAorICAgICAgICBFbGVtZW50Tm90
SW50ZXJhY3RhYmxlLAogICAgICAgICBJbnZhbGlkQXJndW1lbnQsCiAgICAgICAgIEludmFsaWRF
bGVtZW50U3RhdGUsCiAgICAgICAgIEludmFsaWRTZWxlY3RvciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmlu
ZGV4IGUyZTM3NWIyZGU1Li45MDEyMTZkMmMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCkBAIC02MDYs
NyArNjA2LDcgQEAgU3RyaW5nIFNlc3Npb246OmV4dHJhY3RFbGVtZW50SUQoSW5zcGVjdG9yVmFs
dWUmIHZhbHVlKQogICAgIHJldHVybiBlbGVtZW50SUQ7CiB9CiAKLXZvaWQgU2Vzc2lvbjo6Y29t
cHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVt
ZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zLCBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJl
Y3Q+JiYsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
RCwgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQg
KHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAKQEAgLTYxOCwxMiArNjE4
LDEyIEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVh
bihBU0NJSUxpdGVyYWwoInVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMiKSwgb3B0aW9ucy5jb250YWlu
cyhFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzKSk7CiAgICAgbV9o
b3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZChBU0NJSUxpdGVyYWwoImNvbXB1dGVFbGVtZW50TGF5
b3V0IiksIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewot
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0KSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VP
YmplY3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiByZWN0T2JqZWN0OwogICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc3Bv
bnNlT2JqZWN0LT5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJyZWN0IiksIHJlY3RPYmplY3QpKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIG51bGxwdHIpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IGZhbHNlLCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gZWxlbWVudFg7CkBAIC02MzcsNyArNjM3LDcgQEAgdm9pZCBT
ZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0
aW9uU2V0PEVsZW1lbnRMYXkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAo
IWVsZW1lbnRYIHx8ICFlbGVtZW50WSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0LCBudWxscHRyKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbnVsbHB0cik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVsZW1lbnRXaWR0
aDsKQEAgLTY1MSwxMSArNjUxLDI5IEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlv
dXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFlbGVtZW50V2lkdGggfHwgIWVsZW1lbnRI
ZWlnaHQpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgbnVs
bHB0cik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgZmFsc2UsIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIFJlY3QgcmVjdCA9IHsgeyBlbGVtZW50WC52YWx1ZSgpLCBlbGVtZW50WS52YWx1
ZSgpIH0sIHsgZWxlbWVudFdpZHRoLnZhbHVlKCksIGVsZW1lbnRIZWlnaHQudmFsdWUoKSB9IH07
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3QsIG51bGxwdHIpOworCisgICAgICAgIGJv
b2wgaXNPYnNjdXJlZDsKKyAgICAgICAgaWYgKCFyZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0
Qm9vbGVhbihBU0NJSUxpdGVyYWwoImlzT2JzY3VyZWQiKSwgaXNPYnNjdXJlZCkpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxz
ZSwgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gaW5WaWV3Q2VudGVyUG9pbnRPYmplY3Q7CisgICAgICAgIGlm
ICghcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdChBU0NJSUxpdGVyYWwoImluVmll
d0NlbnRlclBvaW50IiksIGluVmlld0NlbnRlclBvaW50T2JqZWN0KSkgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVjdCwgc3RkOjpudWxsb3B0LCBpc09ic2N1cmVkLCBudWxscHRy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnQgaW5WaWV3Q2Vu
dGVyUG9pbnRYLCBpblZpZXdDZW50ZXJQb2ludFk7CisgICAgICAgIGlmICghaW5WaWV3Q2VudGVy
UG9pbnRPYmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ4IiksIGluVmlld0NlbnRlclBv
aW50WCkKKyAgICAgICAgICAgIHx8ICFpblZpZXdDZW50ZXJQb2ludE9iamVjdC0+Z2V0SW50ZWdl
cihBU0NJSUxpdGVyYWwoInkiKSwgaW5WaWV3Q2VudGVyUG9pbnRZKSkgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGlzT2JzY3VyZWQs
IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFBvaW50
IGluVmlld0NlbnRlclBvaW50ID0geyBpblZpZXdDZW50ZXJQb2ludFgsIGluVmlld0NlbnRlclBv
aW50WSB9OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0LCBpblZpZXdDZW50ZXJQb2lu
dCwgaXNPYnNjdXJlZCwgbnVsbHB0cik7CiAgICAgfSk7CiB9CiAKQEAgLTg1Niw3ICs4NzQsNyBA
QCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRSZWN0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBG
dW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCB7IH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIGVycm9yKSB7CisgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCB7IH0s
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0
LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYm
IGVycm9yKSB7CiAgICAgICAgIGlmICghcmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTAxMywxNSArMTAzMSwyMSBAQCB2b2lkIFNlc3Npb246OmVs
ZW1lbnRDbGljayhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdAogCiAgICAgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMgPSBF
bGVtZW50TGF5b3V0T3B0aW9uOjpTY3JvbGxJbnRvVmlld0lmTmVlZGVkOwogICAgIG9wdGlvbnMg
fD0gRWxlbWVudExheW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGluYXRlczsKLSAgICBjb21w
dXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIG9wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50
SUQsIG9wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8
UmVjdD4mJiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwgYm9vbCBp
c09ic2N1cmVkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFyZWN0IHx8IGVycm9yKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGlzT2JzY3VyZWQpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGlmICghaW5WaWV3Q2VudGVyKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6
RWxlbWVudE5vdEludGVyYWN0YWJsZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAKLSAgICAgICAgLy8gRklYTUU6IHRoZSBjZW50ZXIgb2YgdGhlIGJvdW5kaW5nIGJveCBpcyBu
b3QgYWx3YXlzIHBhcnQgb2YgdGhlIGVsZW1lbnQuCi0gICAgICAgIHBlcmZvcm1Nb3VzZUludGVy
YWN0aW9uKHJlY3QudmFsdWUoKS5vcmlnaW4ueCArIHJlY3QudmFsdWUoKS5zaXplLndpZHRoIC8g
MiwgcmVjdC52YWx1ZSgpLm9yaWdpbi55ICsgcmVjdC52YWx1ZSgpLnNpemUuaGVpZ2h0IC8gMiwK
LSAgICAgICAgICAgIE1vdXNlQnV0dG9uOjpMZWZ0LCBNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVD
bGljaywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwZXJmb3JtTW91c2VJ
bnRlcmFjdGlvbihpblZpZXdDZW50ZXIudmFsdWUoKS54LCBpblZpZXdDZW50ZXIudmFsdWUoKS55
LCBNb3VzZUJ1dHRvbjo6TGVmdCwgTW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2ssIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgICAgICB3YWl0Rm9yTmF2aWdhdGlvblRvQ29t
cGxldGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaApp
bmRleCA0MGIxOTkxNTRkNC4uZTFjNzFiOGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCkBAIC0xMzUsNyAr
MTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9IDEgPDwg
MCwKICAgICAgICAgVXNlVmlld3BvcnRDb29yZGluYXRlcyA9IDEgPDwgMSwKICAgICB9OwotICAg
IHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlv
blNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxS
ZWN0PiYmLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYpPiYmKTsKKyAgICB2
b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25T
ZXQ8RWxlbWVudExheW91dE9wdGlvbj4sIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVj
dD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmKT4mJik7CiAKICAgICBlbnVtIGNsYXNzIE1vdXNlQnV0dG9uIHsgTm9u
ZSwgTGVmdCwgTWlkZGxlLCBSaWdodCB9OwogICAgIGVudW0gY2xhc3MgTW91c2VJbnRlcmFjdGlv
biB7IE1vdmUsIERvd24sIFVwLCBTaW5nbGVDbGljaywgRG91YmxlQ2xpY2sgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggYzExNjgxMDEyZmMuLjMwMzdjYmM5ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisy
MDE3LTA3LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBXZWJEcml2ZXI6IHVzZSBpbi12aWV3IGNlbnRlciBwb2ludCBmb3IgY2xpY2tzIGlu
c3RlYWQgb2YgYm91bmRpbmcgYm94IGNlbnRlciBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGNvbXB1dGVFbGVtZW50TGF5b3V0IHRv
IGFsc28gcmV0dXJuIHRoZSBpbi12aWV3IGNlbnRlciBwb2ludCBhbmQgd2hldGhlciBpdCdzIG9i
c2N1cmVkIGJ5IGFub3RoZXIKKyAgICAgICAgZWxlbWVudC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG9wdGlvbmFsIGluVmlld0NlbnRlclBv
aW50IHRvIHRoZSByZXN1bHQgYW5kIGlzT2JzY3VyZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQpOiBIYW5kbGUgaW5WaWV3
Q2VudGVyUG9pbnQgYW5kIGlzT2JzY3VyZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmVsZW1lbnRJblZpZXdDbGllbnRDZW50ZXJQb2ludCk6IEdldCB0aGUgY2xpZW50IGluLXZp
ZXcgY2VudGVyIHBvaW50IGFuZCB3aGV0aGVyIGl0J3Mgb2JzY3VyZWQKKyAgICAgICAgYWNjb3Jk
aW5nIHRvIHRoZSBzcGVjLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Ojpjb21wdXRlRWxlbWVudExheW91dCk6IFBhc3MgaW5WaWV3Q2VudGVyUG9pbnQgYW5kIGlz
T2JzY3VyZWQgdG8KKyAgICAgICAgRGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQgbWVzc2FnZS4KKwog
MjAxNy0wNy0yNyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBSZS1hZGQgdGhlIFN0b3JhZ2VQcm9jZXNzIGV4ZWN1dGFibGUgdGFyZ2V0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24u
anNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CmluZGV4IDBmMjU5NjEyOGM2Li5mZTMxMDJiMmMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTQyMiw3ICs0MjIsOSBA
QAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXNlVmlld3BvcnRDb29yZGluYXRlcyIsICJv
cHRpb25hbCI6IHRydWUsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdGhl
IHJlc3VsdCBjb29yZGluYXRlcyBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYXMgdmlld3BvcnQgY29v
cmRpbmF0ZXMgb3Igbm90LiBEZWZhdWx0cyB0byBmYWxzZSwgd2hpY2ggbWVhbnMgY29vcmRpbmF0
ZXMgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGFzIHBhZ2UgY29vcmRpbmF0ZXMuIiB9CiAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJyZWN0IiwgIiRyZWYiOiAiUmVjdCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbGF5b3V0IHJl
Y3QgZm9yIHRoZSByZXF1ZXN0ZWQgZWxlbWVudC4gU3BlY2lmaWVkIGluIHBhZ2Ugb3Igdmlld3Bv
cnQgY29vcmRpbmF0ZXMgYmFzZWQgb24gdGhlIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMgcGFyYW1l
dGVyLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVjdCIsICIkcmVmIjogIlJlY3Qi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIGxheW91dCByZWN0IGZvciB0aGUgcmVxdWVzdGVkIGVsZW1l
bnQuIFNwZWNpZmllZCBpbiBwYWdlIG9yIHZpZXdwb3J0IGNvb3JkaW5hdGVzIGJhc2VkIG9uIHRo
ZSB1c2VWaWV3cG9ydENvb3JkaW5hdGVzIHBhcmFtZXRlci4iIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpblZpZXdDZW50ZXJQb2ludCIsICJvcHRpb25hbCI6IHRydWUsICIkcmVmIjog
IlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSBpbi12aWV3IGNlbnRlciBwb2ludCBmb3IgdGhl
IHJlcXVlc3RlZCBlbGVtZW50LiBTcGVjaWZpZWQgaW4gcGFnZSBvciB2aWV3cG9ydCBjb29yZGlu
YXRlcyBiYXNlZCBvbiB0aGUgdXNlVmlld3BvcnRDb29yZGluYXRlcyBwYXJhbWV0ZXIuIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNPYnNjdXJlZCIsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiSWYgdGhlIGluLXZpZXcgY2VudGVyIHBvaW50IG9mIHRoZSByZXF1
ZXN0ZWQgZWxlbWVudCBpcyBvYnNjdXJlZCBieSBhbm90aGVyIGVsZW1lbnQuIiB9CiAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQogICAgICAgICB9LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcAppbmRleCBlZjI2NWE4OTE1Ny4uZmI4ZjQ0ZGUwODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwCkBAIC02ODEsNyArNjgxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
Y29tcHV0ZUVsZW1lbnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHIKICAg
ICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6Q29tcHV0ZUVsZW1lbnRMYXlvdXQocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQudmFsdWUoKSwg
bm9kZUhhbmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgdXNlVmlld3BvcnRDb29yZGluYXRl
cywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRD
b21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0
IHJlY3QsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6ZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6
SW50UmVjdCByZWN0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50
ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKIHsKICAg
ICBhdXRvIGNhbGxiYWNrID0gbV9jb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrcy50YWtlKGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC03MDcsNyArNzA3LDE3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNh
bGxiYWNrSUQsIFdlYkNvcmU6CiAgICAgICAgIC5zZXRTaXplKFdURk1vdmUoc2l6ZU9iamVjdCkp
CiAgICAgICAgIC5yZWxlYXNlKCk7CiAKLSAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92
ZShyZWN0T2JqZWN0KSk7CisgICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludCkgeworICAgICAgICBj
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgbnVsbHB0ciwgaXNPYnNj
dXJlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGluVmlld0NlbnRlclBv
aW50T2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ6OmNyZWF0
ZSgpCisgICAgICAgIC5zZXRYKGluVmlld0NlbnRlclBvaW50LnZhbHVlKCkueCgpKQorICAgICAg
ICAuc2V0WShpblZpZXdDZW50ZXJQb2ludC52YWx1ZSgpLnkoKSkKKyAgICAgICAgLnJlbGVhc2Uo
KTsKKworICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKHJlY3RPYmplY3QpLCBXVEZN
b3ZlKGluVmlld0NlbnRlclBvaW50T2JqZWN0KSwgaXNPYnNjdXJlZCk7CiB9CiAKIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFu
ZGxlLCBib29sKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggNTIxYjQxOWIzMTAuLjZl
YWU2NDhlNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGNhbGxi
YWNrSUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAg
ICAgdm9pZCBkaWRSZXNvbHZlQ2hpbGRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRSZXNvbHZl
UGFyZW50RnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiBlcnJvclR5cGUpOwotICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWlu
dDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgY29uc3QgU3RyaW5nJiBlcnJvclR5
cGUpOworICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJ
RCwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJv
b2wgaXNPYnNjdXJlZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAgIHZvaWQgZGlkVGFr
ZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRHZXRDb29raWVz
Rm9yRnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4sIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZSh1aW50NjRf
dCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5tZXNzYWdlcy5pbgppbmRleCBjYjRkNTYyODgzMC4uZjM4YWM5NTNmNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQCBtZXNz
YWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbiB7CiAgICAgRGlkUmVzb2x2ZUNoaWxkRnJhbWUo
dWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGVycm9yVHlwZSkK
ICAgICBEaWRSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIGVycm9yVHlwZSkKIAotICAgIERpZENvbXB1dGVFbGVtZW50TGF5b3V0
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgU3RyaW5nIGVycm9y
VHlwZSkKKyAgICBEaWRDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGlu
Vmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQsIFN0cmluZyBlcnJvclR5cGUpCiAKICAg
ICBEaWRUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIGltYWdlRGF0YUhhbmRsZSwgU3RyaW5nIGVycm9yVHlwZSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA4ZWU0Mjc0Mjc4Ni4uMDMxNTNmYjVh
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC00MSw2ICs0MSw4IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZQcml2YXRlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
b2tpZUphci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NUmVjdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRE9NUmVjdExpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgpAQCAt
NDcwLDEyICs0NzIsNDMgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0Zy
YW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKICAgICBjb3JlRE9NV2luZG93
LT5mb2N1cyh0cnVlKTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQ
b2ludD4gZWxlbWVudEluVmlld0NsaWVudENlbnRlclBvaW50KFdlYkNvcmU6OkVsZW1lbnQmIGVs
ZW1lbnQsIGJvb2wmIGlzT2JzY3VyZWQpCit7CisgICAgLy8gwqcxMS4xIEVsZW1lbnQgSW50ZXJh
Y3RhYmlsaXR5LgorICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2Rmbi1p
bi12aWV3LWNlbnRlci1wb2ludAorICAgIGF1dG8qIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldENs
aWVudFJlY3RzKCktPml0ZW0oMCk7CisgICAgaWYgKCFjbGllbnRSZWN0KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBjbGllbnRDZW50ZXJQb2ludCA9IFdlYkNvcmU6
OkZsb2F0UG9pbnQ6Om5hcnJvd1ByZWNpc2lvbigwLjUgKiAoY2xpZW50UmVjdC0+bGVmdCgpICsg
Y2xpZW50UmVjdC0+cmlnaHQoKSksIDAuNSAqIChjbGllbnRSZWN0LT50b3AoKSArIGNsaWVudFJl
Y3QtPmJvdHRvbSgpKSk7CisgICAgYXV0byBlbGVtZW50TGlzdCA9IGVsZW1lbnQudHJlZVNjb3Bl
KCkuZWxlbWVudHNGcm9tUG9pbnQoY2xpZW50Q2VudGVyUG9pbnQueCgpLCBjbGllbnRDZW50ZXJQ
b2ludC55KCkpOworICAgIGlmIChlbGVtZW50TGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8g
QW4gZWxlbWVudCBpcyBvYnNjdXJlZCBpZiB0aGUgcG9pbnRlci1pbnRlcmFjdGFibGUgcGFpbnQg
dHJlZSBhdCBpdHMgY2VudGVyIHBvaW50IGlzIGVtcHR5LAorICAgICAgICAvLyBvciB0aGUgZmly
c3QgZWxlbWVudCBpbiB0aGlzIHRyZWUgaXMgbm90IGFuIGluY2x1c2l2ZSBkZXNjZW5kYW50IG9m
IGl0c2VsZi4KKyAgICAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci93ZWJk
cml2ZXItc3BlYy5odG1sI2Rmbi1vYnNjdXJlZAorICAgICAgICBpc09ic2N1cmVkID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIGNsaWVudENlbnRlclBvaW50OworICAgIH0KKworICAgIGF1dG8gaW5k
ZXggPSBlbGVtZW50TGlzdC5maW5kTWF0Y2hpbmcoWyZlbGVtZW50XSAoYXV0byYgaXRlbSkgeyBy
ZXR1cm4gaXRlbS5nZXQoKSA9PSAmZWxlbWVudDsgfSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZv
dW5kKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKGluZGV4KSB7Cisg
ICAgICAgIC8vIEVsZW1lbnQgaXMgbm90IHRoZSBmaXJzdCBvbmUgaW4gdGhlIGxpc3QuCisgICAg
ICAgIGF1dG8gZmlyc3RFbGVtZW50ID0gZWxlbWVudExpc3RbMF07CisgICAgICAgIGlzT2JzY3Vy
ZWQgPSAhZmlyc3RFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KTsKKyAgICB9CisKKyAg
ICByZXR1cm4gY2xpZW50Q2VudGVyUG9pbnQ7Cit9CisKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBi
b29sIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAg
V2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsK
ICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgU3RyaW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBl
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFu
dFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2lu
ZG93Tm90Rm91bmQpOwotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlk
Q29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCgpLCB3aW5k
b3dOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgeyB9LCBzdGQ6Om51
bGxvcHQsIGZhbHNlLCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00ODMsNDAgKzUxNiw0MyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZgogICAgIFN0cmluZyBub2RlTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOwogCiAgICAgV2Vi
RnJhbWUqIGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1l
KGZyYW1lSUQpIDogcGFnZS0+bWFpbldlYkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkgewotICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlv
dXQoY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCgpLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBl
KSwgMCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFmcmFtZS0+
Y29yZUZyYW1lKCktPnZpZXcoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgeyB9LCBzdGQ6Om51bGxv
cHQsIGZhbHNlLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBjb3JlRWxlbWVudCA9IGVsZW1lbnRGb3JO
b2RlSGFuZGxlKCpmcmFtZSwgbm9kZUhhbmRsZSk7CiAgICAgaWYgKCFjb3JlRWxlbWVudCkgewot
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRM
YXlvdXQoY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCgpLCBub2RlTm90Rm91bmRFcnJvclR5
cGUpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1
dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbm9k
ZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCkKKyAgICBpZiAoc2Nyb2xsSW50b1ZpZXdJZk5lZWRl
ZCkgeworICAgICAgICAvLyBGSVhNRTogV2FpdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi1zcGVjaWZp
YyB3YXkgdXAgdG8gdGhlIHNlc3Npb24gaW1wbGljaXQgd2FpdCB0aW1lb3V0IGZvciB0aGUgZWxl
bWVudCB0byBiZWNvbWUgaW4gdmlldy4KICAgICAgICAgY29yZUVsZW1lbnQtPnNjcm9sbEludG9W
aWV3SWZOZWVkZWQoZmFsc2UpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gY29yZUVs
ZW1lbnQtPmNsaWVudFJlY3QoKTsKLQotICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBm
cmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpIHsKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNr
SUQsIFdlYkNvcmU6OkludFJlY3QoKSwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOwotICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICpjb3JlRnJhbWVW
aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFjb3JlRnJhbWVWaWV3KSB7Ci0gICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91
dChjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0KCksIGZyYW1lTm90Rm91bmRFcnJvclR5cGUp
LCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qg
PSBjb3JlRWxlbWVudC0+Y2xpZW50UmVjdCgpOwogCisgICAgYXV0byogY29yZUZyYW1lVmlldyA9
IGZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpOwogICAgIGlmICh1c2VWaWV3cG9ydENvb3JkaW5h
dGVzKQogICAgICAgICByZWN0Lm1vdmVCeShXZWJDb3JlOjpJbnRQb2ludCgwLCAtY29yZUZyYW1l
Vmlldy0+dG9wQ29udGVudEluc2V0KCkpKTsKICAgICBlbHNlCiAgICAgICAgIHJlY3QgPSBjb3Jl
RnJhbWVWaWV3LT5yb290Vmlld1RvQ29udGVudHMocmVjdCk7CiAKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgcmVj
dCwgU3RyaW5nKCkpLCAwKTsKKyAgICBib29sIGlzT2JzY3VyZWQgPSBmYWxzZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXI7CisgICAgaWYgKGF1dG8g
Y2xpZW50Q2VudGVyUG9pbnQgPSBlbGVtZW50SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQoKmNvcmVF
bGVtZW50LCBpc09ic2N1cmVkKSkgeworICAgICAgICBhdXRvIGNlbnRlclBvaW50ID0gY2xpZW50
Q2VudGVyUG9pbnQudmFsdWUoKTsKKyAgICAgICAgYXV0byBjbGllbnRPZmZzZXQgPSBjb3JlRnJh
bWVWaWV3LT5kb2N1bWVudFRvQ2xpZW50T2Zmc2V0KCk7CisgICAgICAgIGNlbnRlclBvaW50Lm1v
dmUoLWNsaWVudE9mZnNldCk7CisgICAgICAgIGluVmlld0NlbnRlciA9IFdlYkNvcmU6OkludFBv
aW50KGNlbnRlclBvaW50KTsKKworICAgICAgICBpZiAodXNlVmlld3BvcnRDb29yZGluYXRlcykK
KyAgICAgICAgICAgIGluVmlld0NlbnRlciA9IGNvcmVGcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290
VmlldyhpblZpZXdDZW50ZXIudmFsdWUoKSk7CisgICAgfQorCisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0
b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHJlY3Qs
IGluVmlld0NlbnRlciwgaXNPYnNjdXJlZCwgU3RyaW5nKCkpLCAwKTsKIH0KIAogdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316772</attachid>
            <date>2017-07-31 06:31:06 -0700</date>
            <delta_ts>2017-08-01 23:18:41 -0700</delta_ts>
            <desc>Try to fix mac builds</desc>
            <filename>wd-click-point.diff</filename>
            <type>text/plain</type>
            <size>29130</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNjJmMDU3ZWFjNC4uZTEzMDIwYTdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wNy0zMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVyOiB1c2UgaW4tdmlldyBjZW50ZXIgcG9pbnQg
Zm9yIGNsaWNrcyBpbnN0ZWFkIG9mIGJvdW5kaW5nIGJveCBjZW50ZXIgcG9pbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgRE9NUmVjdCwgRnJh
bWVWaWV3Ojpkb2N1bWVudFRvQ2xpZW50T2Zmc2V0KCkgYW5kIEZsb2F0UG9pbnQ6Om5hcnJvd1By
ZWNpc2lvbigpIGF2YWlsYWJsZSB0byBXZWJLaXQgbGF5ZXIuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UG9pbnQuaDoKKwogMjAxNy0wNy0zMSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2
YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIENyZWF0ZWQgYSBib29sIHByZXR0eSBwcmludGVy
IGF0IFdURiBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmJmNzQyYWU5YjAuLmUxZjQxMzFk
MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00MzAsOSArNDMwLDkgQEAKIAkJMEYzRjBFNUExNTcwMzBDMzAwNkRBNTdGIC8q
IFJlbmRlckdlb21ldHJ5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjNGMEU1ODE1NzAzMEMzMDA2REE1N0YgLyogUmVuZGVyR2VvbWV0cnlNYXAu
aCAqLzsgfTsKIAkJMEY0M0M4NUQxODlFMTBDRjAwMDE5QUUyIC8qIFBlcmZvcm1hbmNlVGltaW5n
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDND
ODVDMTg5RTEwQ0YwMDAxOUFFMiAvKiBQZXJmb3JtYW5jZVRpbWluZy5jcHAgKi87IH07CiAJCTBG
NDNDODVGMTg5RTE1QTYwMDAxOUFFMiAvKiBKU1BlcmZvcm1hbmNlVGltaW5nLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDNDODVFMTg5RTE1QTYw
MDAxOUFFMiAvKiBKU1BlcmZvcm1hbmNlVGltaW5nLmNwcCAqLzsgfTsKLQkJMEY0NzEwQUYxREI1
NkFGQzAwMkRDRUMzIC8qIERPTVJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDcxMEE5MURCNTZBRkMwMDJEQ0VDMyAvKiBET01SZWN0LmggKi87
IH07Ci0JCTBGNDcxMEIxMURCNTZBRkMwMDJEQ0VDMyAvKiBET01SZWN0SW5pdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NzEwQUIxREI1NkFGQzAw
MkRDRUMzIC8qIERPTVJlY3RJbml0LmggKi87IH07Ci0JCTBGNDcxMEIzMURCNTZBRkMwMDJEQ0VD
MyAvKiBET01SZWN0UmVhZE9ubHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDcxMEFEMURCNTZBRkMwMDJEQ0VDMyAvKiBET01SZWN0UmVhZE9ubHku
aCAqLzsgfTsKKwkJMEY0NzEwQUYxREI1NkFGQzAwMkRDRUMzIC8qIERPTVJlY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDcxMEE5MURCNTZBRkMw
MDJEQ0VDMyAvKiBET01SZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NzEwQjExREI1NkFGQzAwMkRDRUMzIC8qIERPTVJlY3RJbml0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ3MTBBQjFE
QjU2QUZDMDAyRENFQzMgLyogRE9NUmVjdEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ3MTBCMzFEQjU2QUZDMDAyRENFQzMgLyogRE9N
UmVjdFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ3MTBBRDFEQjU2QUZDMDAyRENFQzMgLyogRE9NUmVjdFJlYWRPbmx5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NzEwQkIxREI1
NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ3MTBCNTFEQjU2QkU4MDAyRENFQzMgLyogSlNET01SZWN0
LmNwcCAqLzsgfTsKIAkJMEY0NzEwQkMxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NzEwQjYxREI1
NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdC5oICovOyB9OwogCQkwRjQ3MTBCRDFEQjU2QkU4MDAy
RENFQzMgLyogSlNET01SZWN0SW5pdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ3MTBCNzFEQjU2QkU4MDAyRENFQzMgLyogSlNET01SZWN0SW5p
dC5jcHAgKi87IH07CkBAIC0xOTUzLDcgKzE5NTMsNyBAQAogCQk0NjcxRTA2NjFENjdBNTk2MDBD
NkI0OTcgLyogQ2FudmFzUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY3MUUwNjQxRDY3QTU3QjAwQzZCNDk3IC8qIENhbnZhc1BhdGguaCAqLzsg
fTsKIAkJNDY3MzAyMDIxQzRFRkU3ODAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2Fk
Q291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5s
b2FkQ291bnRJbmNyZW1lbnRlci5oICovOyB9OwogCQk0NjgzNDRERjFFRERGQUFBMDBCNzc5NUIg
LyogRE9NUmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY4MzQ0REQxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLzsg
fTsKLQkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgfTsKKwkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVC
IC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg5RjFBRjEyNjdC
QUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFk
YXRhLmggKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1
RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCAzZmY1NTcwYWE0OS4uN2Y2YzNhZWIyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVjdCBib3VuZGluZ0Ns
aWVudFJlY3QoKTsKIAotICAgIFJlZjxET01SZWN0TGlzdD4gZ2V0Q2xpZW50UmVjdHMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8RE9NUmVjdExpc3Q+IGdldENsaWVudFJlY3RzKCk7CiAgICAg
UmVmPERPTVJlY3Q+IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAgLy8gUmV0dXJucyB0
aGUgYWJzb2x1dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0ZWQgaW50byBjbGllbnQgY29vcmRpbmF0
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAxOWYwMmY2ZDZhYy4uYjdkMzU0MDZkOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNDczLDcgKzQ3Myw3IEBAIHB1YmxpYzoKICAg
ICBGbG9hdFJlY3QgYWJzb2x1dGVUb0RvY3VtZW50UmVjdChGbG9hdFJlY3QsIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIEZsb2F0
UG9pbnQgYWJzb2x1dGVUb0RvY3VtZW50UG9pbnQoRmxvYXRQb2ludCwgc3RkOjpvcHRpb25hbDxm
bG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBGbG9hdFNp
emUgZG9jdW1lbnRUb0NsaWVudE9mZnNldCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZs
b2F0U2l6ZSBkb2N1bWVudFRvQ2xpZW50T2Zmc2V0KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IGRv
Y3VtZW50VG9DbGllbnRSZWN0KEZsb2F0UmVjdCkgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBkb2N1
bWVudFRvQ2xpZW50UG9pbnQoRmxvYXRQb2ludCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCA2ZWQ0ZDIxYTI5Mi4uMDdhNzli
NmMyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50
LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEZsb2F0UG9pbnQgemVy
bygpIHsgcmV0dXJuIEZsb2F0UG9pbnQoKTsgfQogCi0gICAgc3RhdGljIEZsb2F0UG9pbnQgbmFy
cm93UHJlY2lzaW9uKGRvdWJsZSB4LCBkb3VibGUgeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIEZsb2F0UG9pbnQgbmFycm93UHJlY2lzaW9uKGRvdWJsZSB4LCBkb3VibGUgeSk7CiAKICAg
ICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CiAgICAgZmxvYXQgeSgpIGNvbnN0IHsg
cmV0dXJuIG1feTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAwM2E3ODI2ZDRkNC4uNjJkNTBhYTgzZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTctMDctMzEgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFdlYkRyaXZlcjogdXNl
IGluLXZpZXcgY2VudGVyIHBvaW50IGZvciBjbGlja3MgaW5zdGVhZCBvZiBib3VuZGluZyBib3gg
Y2VudGVyIHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzQ4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgY2VudGVyIG9mIHRoZSBlbGVtZW50IGJvdW5kaW5nIGJveCBpcyBub3QgYWx3YXlz
IHBhcnQgb2YgdGhlIGVsZW1lbnQsIGxpa2UgaW4gbXVsdGlsaW5lIGxpbmtzLCBmb3IgZXhhbXBs
ZS4KKworICAgICAgICAxMS4xIEVsZW1lbnQgSW50ZXJhY3RhYmlsaXR5LgorICAgICAgICBodHRw
czovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4taW4tdmlldy1jZW50ZXItcG9pbnQKKwor
ICAgICAgICAqIENvbW1hbmRSZXN1bHQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpDb21tYW5k
UmVzdWx0OjpodHRwU3RhdHVzQ29kZSk6IEFkZCBFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZCBhbmQg
RWxlbWVudE5vdEludGVyYWN0YWJsZSBlcnJvcnMuCisgICAgICAgIChXZWJEcml2ZXI6OkNvbW1h
bmRSZXN1bHQ6OmVycm9yU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5o
OiBEaXR0by4KKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vz
c2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOiBHZXQgdGhlIGluLXZpZXcgY2VudGVyIHBvaW50
IGFuZCBpc09ic2N1cmVkIGZyb20gdGhlIHJlc3VsdCB0b28uCisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb246OmdldEVsZW1lbnRSZWN0KTogSWdub3JlIGluLXZpZXcgY2VudGVyIHBvaW50IGFu
ZCBpc09ic2N1cmVkLgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjplbGVtZW50Q2xpY2sp
OiBGYWlsIGluIGNhc2UgdGhlIGVsZW1lbnQgaXMgbm90IGludGVyYWN0YWJsZSBvciBpcyBvYnNj
dXJlZC4KKyAgICAgICAgKiBTZXNzaW9uLmg6CisKIDIwMTctMDctMjggIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogZml4IHJl
dHVybiB2YWx1ZSBvZiBjbG9zZSB3aW5kb3cgY29tbWFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3Vs
dC5jcHAKaW5kZXggMzc5OGExODEyYjEuLjYzM2I4OTk1YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFu
ZFJlc3VsdC5jcHAKQEAgLTEyMiw2ICsxMjIsOCBAQCB1bnNpZ25lZCBDb21tYW5kUmVzdWx0Ojpo
dHRwU3RhdHVzQ29kZSgpIGNvbnN0CiAgICAgLy8gwqc2LjYgSGFuZGxpbmcgRXJyb3JzLgogICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2hhbmRsaW5nLWVycm9ycwogICAg
IHN3aXRjaCAobV9lcnJvckNvZGUudmFsdWUoKSkgeworICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVt
ZW50Q2xpY2tJbnRlcmNlcHRlZDoKKyAgICBjYXNlIEVycm9yQ29kZTo6RWxlbWVudE5vdEludGVy
YWN0YWJsZToKICAgICBjYXNlIEVycm9yQ29kZTo6SW52YWxpZEFyZ3VtZW50OgogICAgIGNhc2Ug
RXJyb3JDb2RlOjpJbnZhbGlkRWxlbWVudFN0YXRlOgogICAgIGNhc2UgRXJyb3JDb2RlOjpJbnZh
bGlkU2VsZWN0b3I6CkBAIC0xNTIsNiArMTU0LDEwIEBAIFN0cmluZyBDb21tYW5kUmVzdWx0Ojpl
cnJvclN0cmluZygpIGNvbnN0CiAgICAgQVNTRVJUKGlzRXJyb3IoKSk7CiAKICAgICBzd2l0Y2gg
KG1fZXJyb3JDb2RlLnZhbHVlKCkpIHsKKyAgICBjYXNlIEVycm9yQ29kZTo6RWxlbWVudENsaWNr
SW50ZXJjZXB0ZWQ6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImVsZW1lbnQgY2xpY2sg
aW50ZXJjZXB0ZWQiKTsKKyAgICBjYXNlIEVycm9yQ29kZTo6RWxlbWVudE5vdEludGVyYWN0YWJs
ZToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZWxlbWVudCBub3QgaW50ZXJhY3RhYmxl
Iik7CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRBcmd1bWVudDoKICAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBhcmd1bWVudCIpOwogICAgIGNhc2UgRXJyb3JDb2RlOjpJ
bnZhbGlkRWxlbWVudFN0YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5k
UmVzdWx0LmggYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaAppbmRleCAyOTZlNGI3
MTExOS4uZWM1MzM5ODAxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJl
c3VsdC5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oCkBAIC0zOSw2ICsz
OSw4IEBAIHB1YmxpYzoKICAgICAvLyDCpzYuNiBIYW5kbGluZyBFcnJvcnMuCiAgICAgLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jaGFuZGxpbmctZXJyb3JzCiAgICAgZW51bSBj
bGFzcyBFcnJvckNvZGUgeworICAgICAgICBFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZCwKKyAgICAg
ICAgRWxlbWVudE5vdEludGVyYWN0YWJsZSwKICAgICAgICAgSW52YWxpZEFyZ3VtZW50LAogICAg
ICAgICBJbnZhbGlkRWxlbWVudFN0YXRlLAogICAgICAgICBJbnZhbGlkU2VsZWN0b3IsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcAppbmRleCBlMmUzNzViMmRlNS4uOTAxMjE2ZDJjMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9u
LmNwcApAQCAtNjA2LDcgKzYwNiw3IEBAIFN0cmluZyBTZXNzaW9uOjpleHRyYWN0RWxlbWVudElE
KEluc3BlY3RvclZhbHVlJiB2YWx1ZSkKICAgICByZXR1cm4gZWxlbWVudElEOwogfQogCi12b2lk
IFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBP
cHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucywgRnVuY3Rpb248dm9pZCAoc3Rk
OjpvcHRpb25hbDxSZWN0PiYmLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3Ry
aW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zLCBG
dW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+
JiYsIGJvb2wsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogCkBA
IC02MTgsMTIgKzYxOCwxMiBAQCB2b2lkIFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNv
bnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheQogICAgIHBhcmFtZXRl
cnMtPnNldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJ1c2VWaWV3cG9ydENvb3JkaW5hdGVzIiksIG9w
dGlvbnMuY29udGFpbnMoRWxlbWVudExheW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGluYXRl
cykpOwogICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoQVNDSUlMaXRlcmFsKCJjb21w
dXRlRWxlbWVudExheW91dCIpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11
dGFibGUgewogICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9u
c2VPYmplY3QpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwg
V1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBXVEZNb3ZlKHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjdE9iamVjdDsKICAgICAgICAgaWYgKCFy
ZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicmVjdCIpLCBy
ZWN0T2JqZWN0KSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0
LCBudWxscHRyKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBmYWxzZSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVsZW1lbnRYOwpAQCAtNjM3LDcgKzYz
Nyw3IEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKCFlbGVtZW50WCB8fCAhZWxlbWVudFkpIHsKLSAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgbnVsbHB0cik7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIG51bGxwdHIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBlbGVtZW50V2lkdGg7CkBAIC02NTEsMTEgKzY1MSwyOSBAQCB2b2lkIFNlc3Npb246OmNvbXB1
dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVu
dExheQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghZWxlbWVudFdpZHRo
IHx8ICFlbGVtZW50SGVpZ2h0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQsIG51bGxwdHIpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBSZWN0IHJlY3QgPSB7IHsgZWxlbWVudFgudmFsdWUoKSwg
ZWxlbWVudFkudmFsdWUoKSB9LCB7IGVsZW1lbnRXaWR0aC52YWx1ZSgpLCBlbGVtZW50SGVpZ2h0
LnZhbHVlKCkgfSB9OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0LCBudWxscHRyKTsK
KworICAgICAgICBib29sIGlzT2JzY3VyZWQ7CisgICAgICAgIGlmICghcmVzcG9uc2UucmVzcG9u
c2VPYmplY3QtPmdldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJpc09ic2N1cmVkIiksIGlzT2JzY3Vy
ZWQpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGluVmlld0NlbnRlclBvaW50T2JqZWN0
OworICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoQVNDSUlM
aXRlcmFsKCJpblZpZXdDZW50ZXJQb2ludCIpLCBpblZpZXdDZW50ZXJQb2ludE9iamVjdCkpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3QsIHN0ZDo6bnVsbG9wdCwgaXNPYnNj
dXJlZCwgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
aW50IGluVmlld0NlbnRlclBvaW50WCwgaW5WaWV3Q2VudGVyUG9pbnRZOworICAgICAgICBpZiAo
IWluVmlld0NlbnRlclBvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieCIpLCBp
blZpZXdDZW50ZXJQb2ludFgpCisgICAgICAgICAgICB8fCAhaW5WaWV3Q2VudGVyUG9pbnRPYmpl
Y3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ5IiksIGluVmlld0NlbnRlclBvaW50WSkpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBpc09ic2N1cmVkLCBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBQb2ludCBpblZpZXdDZW50ZXJQb2ludCA9IHsgaW5WaWV3Q2VudGVyUG9pbnRYLCBp
blZpZXdDZW50ZXJQb2ludFkgfTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdCwgaW5W
aWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQsIG51bGxwdHIpOwogICAgIH0pOwogfQogCkBAIC04
NTYsNyArODc0LDcgQEAgdm9pZCBTZXNzaW9uOjpnZXRFbGVtZW50UmVjdChjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgeyB9LCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJiBlcnJvcikgeworICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVs
ZW1lbnRJRCwgeyB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFs
PFJlY3Q+JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mJiBlcnJvcikgewogICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShl
cnJvcikpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMTMsMTUgKzEwMzEsMjEgQEAgdm9p
ZCBTZXNzaW9uOjplbGVtZW50Q2xpY2soY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQKIAogICAgIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9u
PiBvcHRpb25zID0gRWxlbWVudExheW91dE9wdGlvbjo6U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDsK
ICAgICBvcHRpb25zIHw9IEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdwb3J0Q29vcmRpbmF0
ZXM7Ci0gICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgY29tcHV0ZUVsZW1lbnRM
YXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShz
dGQ6Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiBpblZpZXdD
ZW50ZXIsIGJvb2wgaXNPYnNjdXJlZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGlmIChpc09ic2N1cmVkKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRS
ZXN1bHQ6OkVycm9yQ29kZTo6RWxlbWVudENsaWNrSW50ZXJjZXB0ZWQpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWluVmlld0NlbnRlcikgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0
OjpFcnJvckNvZGU6OkVsZW1lbnROb3RJbnRlcmFjdGFibGUpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiB0aGUgY2VudGVyIG9mIHRoZSBib3Vu
ZGluZyBib3ggaXMgbm90IGFsd2F5cyBwYXJ0IG9mIHRoZSBlbGVtZW50LgotICAgICAgICBwZXJm
b3JtTW91c2VJbnRlcmFjdGlvbihyZWN0LnZhbHVlKCkub3JpZ2luLnggKyByZWN0LnZhbHVlKCku
c2l6ZS53aWR0aCAvIDIsIHJlY3QudmFsdWUoKS5vcmlnaW4ueSArIHJlY3QudmFsdWUoKS5zaXpl
LmhlaWdodCAvIDIsCi0gICAgICAgICAgICBNb3VzZUJ1dHRvbjo6TGVmdCwgTW91c2VJbnRlcmFj
dGlvbjo6U2luZ2xlQ2xpY2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oaW5WaWV3Q2VudGVyLnZhbHVlKCkueCwgaW5WaWV3Q2Vu
dGVyLnZhbHVlKCkueSwgTW91c2VCdXR0b246OkxlZnQsIE1vdXNlSW50ZXJhY3Rpb246OlNpbmds
ZUNsaWNrLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICAgICAgd2FpdEZvck5h
dmlnYXRpb25Ub0NvbXBsZXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkRyaXZl
ci9TZXNzaW9uLmgKaW5kZXggNDBiMTk5MTU0ZDQuLmUxYzcxYjhlMjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24u
aApAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFNjcm9sbEludG9WaWV3SWZO
ZWVkZWQgPSAxIDw8IDAsCiAgICAgICAgIFVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMgPSAxIDw8IDEs
CiAgICAgfTsKLSAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxl
bWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4sIEZ1bmN0aW9uPHZvaWQgKHN0
ZDo6b3B0aW9uYWw8UmVjdD4mJiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYm
KT4mJik7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1l
bnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+LCBGdW5jdGlvbjx2b2lkIChzdGQ6
Om9wdGlvbmFsPFJlY3Q+JiYsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJik+JiYpOwogCiAgICAgZW51bSBjbGFzcyBNb3Vz
ZUJ1dHRvbiB7IE5vbmUsIExlZnQsIE1pZGRsZSwgUmlnaHQgfTsKICAgICBlbnVtIGNsYXNzIE1v
dXNlSW50ZXJhY3Rpb24geyBNb3ZlLCBEb3duLCBVcCwgU2luZ2xlQ2xpY2ssIERvdWJsZUNsaWNr
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGUyMDMyODM5ZWQ4Li5iZjE5ZjE0OTc0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNy0wNy0zMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVyOiB1c2UgaW4tdmlldyBjZW50ZXIgcG9pbnQg
Zm9yIGNsaWNrcyBpbnN0ZWFkIG9mIGJvdW5kaW5nIGJveCBjZW50ZXIgcG9pbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBjb21wdXRlRWxl
bWVudExheW91dCB0byBhbHNvIHJldHVybiB0aGUgaW4tdmlldyBjZW50ZXIgcG9pbnQgYW5kIHdo
ZXRoZXIgaXQncyBvYnNjdXJlZCBieSBhbm90aGVyCisgICAgICAgIGVsZW1lbnQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBvcHRpb25hbCBp
blZpZXdDZW50ZXJQb2ludCB0byB0aGUgcmVzdWx0IGFuZCBpc09ic2N1cmVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KTog
SGFuZGxlIGluVmlld0NlbnRlclBvaW50IGFuZCBpc09ic2N1cmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjplbGVtZW50SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQpOiBHZXQgdGhl
IGNsaWVudCBpbi12aWV3IGNlbnRlciBwb2ludCBhbmQgd2hldGhlciBpdCdzIG9ic2N1cmVkCisg
ICAgICAgIGFjY29yZGluZyB0byB0aGUgc3BlYy4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOiBQYXNzIGluVmlld0NlbnRl
clBvaW50IGFuZCBpc09ic2N1cmVkIHRvCisgICAgICAgIERpZENvbXB1dGVFbGVtZW50TGF5b3V0
IG1lc3NhZ2UuCisKIDIwMTctMDctMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBVUkxTY2hlbWVIYW5kbGVyIEFQSSB0ZXN0cyB0aGF0IHZlcmlmeSB0
aGUgbGFjayBvZiBVUkxTY2hlbWVUYXNrIG9iamVjdCBsZWFrcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KaW5kZXggMGYyNTk2MTI4
YzYuLmZlMzEwMmIyYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL0F1dG9tYXRpb24uanNvbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL0F1dG9tYXRpb24uanNvbgpAQCAtNDIyLDcgKzQyMiw5IEBACiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ1c2VWaWV3cG9ydENvb3JkaW5hdGVzIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
InR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0aGUgcmVzdWx0IGNvb3JkaW5h
dGVzIHNob3VsZCBiZSByZXByZXNlbnRlZCBhcyB2aWV3cG9ydCBjb29yZGluYXRlcyBvciBub3Qu
IERlZmF1bHRzIHRvIGZhbHNlLCB3aGljaCBtZWFucyBjb29yZGluYXRlcyBzaG91bGQgYmUgcmVw
cmVzZW50ZWQgYXMgcGFnZSBjb29yZGluYXRlcy4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlY3QiLCAiJHJl
ZiI6ICJSZWN0IiwgImRlc2NyaXB0aW9uIjogIlRoZSBsYXlvdXQgcmVjdCBmb3IgdGhlIHJlcXVl
c3RlZCBlbGVtZW50LiBTcGVjaWZpZWQgaW4gcGFnZSBvciB2aWV3cG9ydCBjb29yZGluYXRlcyBi
YXNlZCBvbiB0aGUgdXNlVmlld3BvcnRDb29yZGluYXRlcyBwYXJhbWV0ZXIuIiB9CisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZWN0IiwgIiRyZWYiOiAiUmVjdCIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgbGF5b3V0IHJlY3QgZm9yIHRoZSByZXF1ZXN0ZWQgZWxlbWVudC4gU3BlY2lmaWVkIGlu
IHBhZ2Ugb3Igdmlld3BvcnQgY29vcmRpbmF0ZXMgYmFzZWQgb24gdGhlIHVzZVZpZXdwb3J0Q29v
cmRpbmF0ZXMgcGFyYW1ldGVyLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImluVmll
d0NlbnRlclBvaW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIiRyZWYiOiAiUG9pbnQiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGluLXZpZXcgY2VudGVyIHBvaW50IGZvciB0aGUgcmVxdWVzdGVkIGVsZW1l
bnQuIFNwZWNpZmllZCBpbiBwYWdlIG9yIHZpZXdwb3J0IGNvb3JkaW5hdGVzIGJhc2VkIG9uIHRo
ZSB1c2VWaWV3cG9ydENvb3JkaW5hdGVzIHBhcmFtZXRlci4iIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc09ic2N1cmVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6
ICJJZiB0aGUgaW4tdmlldyBjZW50ZXIgcG9pbnQgb2YgdGhlIHJlcXVlc3RlZCBlbGVtZW50IGlz
IG9ic2N1cmVkIGJ5IGFub3RoZXIgZWxlbWVudC4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAiYXN5bmMiOiB0cnVlCiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4
IGVmMjY1YTg5MTU3Li5mYjhmNDRkZTA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTY4
MSw3ICs2ODEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExh
eW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cgogICAgIHBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVu
dExheW91dChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRC52YWx1ZSgpLCBub2RlSGFuZGxlLCBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkLCB1c2VWaWV3cG9ydENvb3JkaW5hdGVzLCBjYWxsYmFja0lEKSwg
MCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5
b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgY29uc3QgU3Ry
aW5nJiBlcnJvclR5cGUpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxl
bWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlz
T2JzY3VyZWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQogewogICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NvbXB1dGVFbGVtZW50TGF5b3V0Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykKQEAgLTcwNyw3ICs3MDcsMTcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6ZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29y
ZToKICAgICAgICAgLnNldFNpemUoV1RGTW92ZShzaXplT2JqZWN0KSkKICAgICAgICAgLnJlbGVh
c2UoKTsKIAotICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKHJlY3RPYmplY3QpKTsK
KyAgICBpZiAoIWluVmlld0NlbnRlclBvaW50KSB7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3Vj
Y2VzcyhXVEZNb3ZlKHJlY3RPYmplY3QpLCBudWxscHRyLCBpc09ic2N1cmVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQb2ludDo6Y3JlYXRlKCkKKyAgICAgICAgLnNl
dFgoaW5WaWV3Q2VudGVyUG9pbnQudmFsdWUoKS54KCkpCisgICAgICAgIC5zZXRZKGluVmlld0Nl
bnRlclBvaW50LnZhbHVlKCkueSgpKQorICAgICAgICAucmVsZWFzZSgpOworCisgICAgY2FsbGJh
Y2stPnNlbmRTdWNjZXNzKFdURk1vdmUocmVjdE9iamVjdCksIFdURk1vdmUoaW5WaWV3Q2VudGVy
UG9pbnRPYmplY3QpLCBpc09ic2N1cmVkKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6aXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJvb2wqIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uaAppbmRleCA1MjFiNDE5YjMxMC4uNmVhZTY0OGU1ZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3Ry
aW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZFJlc29s
dmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50
NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlw
ZSk7Ci0gICAgdm9pZCBkaWRDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lE
LCBXZWJDb3JlOjpJbnRSZWN0LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CisgICAgdm9pZCBk
aWRDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRS
ZWN0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCBpc09ic2N1cmVkLCBj
b25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRUYWtlU2NyZWVuc2hvdCh1aW50
NjRfdCBjYWxsYmFja0lELCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIGNvbnN0IFN0
cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRf
dCBjYWxsYmFja0lELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiwgY29uc3QgU3RyaW5nJiBlcnJv
clR5cGUpOwogICAgIHZvaWQgZGlkRGVsZXRlQ29va2llKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2Vz
LmluCmluZGV4IGNiNGQ1NjI4ODMwLi5mMzhhYzk1M2Y2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYkF1dG9t
YXRpb25TZXNzaW9uIHsKICAgICBEaWRSZXNvbHZlQ2hpbGRGcmFtZSh1aW50NjRfdCBjYWxsYmFj
a0lELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZXJyb3JUeXBlKQogICAgIERpZFJlc29sdmVQ
YXJlbnRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
ZXJyb3JUeXBlKQogCi0gICAgRGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJh
Y2tJRCwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBTdHJpbmcgZXJyb3JUeXBlKQorICAgIERpZENv
bXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3Qg
cmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQs
IGJvb2wgaXNPYnNjdXJlZCwgU3RyaW5nIGVycm9yVHlwZSkKIAogICAgIERpZFRha2VTY3JlZW5z
aG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
aW1hZ2VEYXRhSGFuZGxlLCBTdHJpbmcgZXJyb3JUeXBlKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCmluZGV4IDhlZTQyNzQyNzg2Li4wMzE1M2ZiNWEwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1N0cmluZ1JlZlByaXZhdGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PcGFxdWVKU1N0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9ET01SZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01SZWN0TGlzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVUcmVlLmg+CkBAIC00NzAsMTIgKzQ3Miw0MyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlEKQogICAgIGNvcmVET01XaW5kb3ctPmZvY3VzKHRydWUpOwog
fQogCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBlbGVtZW50SW5W
aWV3Q2xpZW50Q2VudGVyUG9pbnQoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgYm9vbCYgaXNP
YnNjdXJlZCkKK3sKKyAgICAvLyDCpzExLjEgRWxlbWVudCBJbnRlcmFjdGFiaWxpdHkuCisgICAg
Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLWluLXZpZXctY2VudGVyLXBv
aW50CisgICAgYXV0byogY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS0+aXRl
bSgwKTsKKyAgICBpZiAoIWNsaWVudFJlY3QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBhdXRvIGNsaWVudENlbnRlclBvaW50ID0gV2ViQ29yZTo6RmxvYXRQb2ludDo6bmFy
cm93UHJlY2lzaW9uKDAuNSAqIChjbGllbnRSZWN0LT5sZWZ0KCkgKyBjbGllbnRSZWN0LT5yaWdo
dCgpKSwgMC41ICogKGNsaWVudFJlY3QtPnRvcCgpICsgY2xpZW50UmVjdC0+Ym90dG9tKCkpKTsK
KyAgICBhdXRvIGVsZW1lbnRMaXN0ID0gZWxlbWVudC50cmVlU2NvcGUoKS5lbGVtZW50c0Zyb21Q
b2ludChjbGllbnRDZW50ZXJQb2ludC54KCksIGNsaWVudENlbnRlclBvaW50LnkoKSk7CisgICAg
aWYgKGVsZW1lbnRMaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBBbiBlbGVtZW50IGlzIG9i
c2N1cmVkIGlmIHRoZSBwb2ludGVyLWludGVyYWN0YWJsZSBwYWludCB0cmVlIGF0IGl0cyBjZW50
ZXIgcG9pbnQgaXMgZW1wdHksCisgICAgICAgIC8vIG9yIHRoZSBmaXJzdCBlbGVtZW50IGluIHRo
aXMgdHJlZSBpcyBub3QgYW4gaW5jbHVzaXZlIGRlc2NlbmRhbnQgb2YgaXRzZWxmLgorICAgICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVjLmh0bWwj
ZGZuLW9ic2N1cmVkCisgICAgICAgIGlzT2JzY3VyZWQgPSB0cnVlOworICAgICAgICByZXR1cm4g
Y2xpZW50Q2VudGVyUG9pbnQ7CisgICAgfQorCisgICAgYXV0byBpbmRleCA9IGVsZW1lbnRMaXN0
LmZpbmRNYXRjaGluZyhbJmVsZW1lbnRdIChhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmdldCgp
ID09ICZlbGVtZW50OyB9KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoaW5kZXgpIHsKKyAgICAgICAgLy8gRWxlbWVu
dCBpcyBub3QgdGhlIGZpcnN0IG9uZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgYXV0byBmaXJzdEVs
ZW1lbnQgPSBlbGVtZW50TGlzdFswXTsKKyAgICAgICAgaXNPYnNjdXJlZCA9ICFmaXJzdEVsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQpOworICAgIH0KKworICAgIHJldHVybiBjbGllbnRD
ZW50ZXJQb2ludDsKK30KKwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRl
RWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBu
b2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgdXNlVmlld3BvcnRD
b29yZGluYXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkg
ewogICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7Ci0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExh
eW91dChjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0KCksIHdpbmRvd05vdEZvdW5kRXJyb3JU
eXBlKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21w
dXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIHdp
bmRvd05vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQ4Myw0MCArNTE2LDQzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0
ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAgICAgU3RyaW5nIG5v
ZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7CiAKICAgICBXZWJGcmFtZSogZnJhbWUgPSBm
cmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkgOiBwYWdl
LT5tYWluV2ViRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCBX
ZWJDb3JlOjpJbnRSZWN0KCksIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKS0+dmll
dygpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRl
RWxlbWVudExheW91dChjYWxsYmFja0lELCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZyYW1l
Tm90Rm91bmRFcnJvclR5cGUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdl
YkNvcmU6OkVsZW1lbnQqIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoKmZyYW1l
LCBub2RlSGFuZGxlKTsKICAgICBpZiAoIWNvcmVFbGVtZW50KSB7Ci0gICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lE
LCBXZWJDb3JlOjpJbnRSZWN0KCksIG5vZGVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQo
Y2FsbGJhY2tJRCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBub2RlTm90Rm91bmRFcnJvclR5
cGUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzY3JvbGxJbnRvVmll
d0lmTmVlZGVkKQorICAgIGlmIChzY3JvbGxJbnRvVmlld0lmTmVlZGVkKSB7CisgICAgICAgIC8v
IEZJWE1FOiBXYWl0IGluIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHdheSB1cCB0byB0aGUg
c2Vzc2lvbiBpbXBsaWNpdCB3YWl0IHRpbWVvdXQgZm9yIHRoZSBlbGVtZW50IHRvIGJlY29tZSBp
biB2aWV3LgogICAgICAgICBjb3JlRWxlbWVudC0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxz
ZSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSBjb3JlRWxlbWVudC0+Y2xpZW50UmVj
dCgpOwotCi0gICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lLT5jb3JlRnJhbWUo
KTsKLSAgICBpZiAoIWNvcmVGcmFtZSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50
UmVjdCgpLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7Ci0gICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKmNvcmVGcmFtZVZpZXcgPSBjb3JlRnJhbWUt
PnZpZXcoKTsKLSAgICBpZiAoIWNvcmVGcmFtZVZpZXcpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
QXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIFdl
YkNvcmU6OkludFJlY3QoKSwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IGNvcmVFbGVtZW50LT5j
bGllbnRSZWN0KCk7CiAKKyAgICBhdXRvKiBjb3JlRnJhbWVWaWV3ID0gZnJhbWUtPmNvcmVGcmFt
ZSgpLT52aWV3KCk7CiAgICAgaWYgKHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMpCiAgICAgICAgIHJl
Y3QubW92ZUJ5KFdlYkNvcmU6OkludFBvaW50KDAsIC1jb3JlRnJhbWVWaWV3LT50b3BDb250ZW50
SW5zZXQoKSkpOwogICAgIGVsc2UKICAgICAgICAgcmVjdCA9IGNvcmVGcmFtZVZpZXctPnJvb3RW
aWV3VG9Db250ZW50cyhyZWN0KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCByZWN0LCBTdHJpbmcoKSksIDAp
OworICAgIGJvb2wgaXNPYnNjdXJlZCA9IGZhbHNlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlcjsKKyAgICBpZiAoYXV0byBjbGllbnRDZW50ZXJQb2lu
dCA9IGVsZW1lbnRJblZpZXdDbGllbnRDZW50ZXJQb2ludCgqY29yZUVsZW1lbnQsIGlzT2JzY3Vy
ZWQpKSB7CisgICAgICAgIGF1dG8gY2VudGVyUG9pbnQgPSBjbGllbnRDZW50ZXJQb2ludC52YWx1
ZSgpOworICAgICAgICBhdXRvIGNsaWVudE9mZnNldCA9IGNvcmVGcmFtZVZpZXctPmRvY3VtZW50
VG9DbGllbnRPZmZzZXQoKTsKKyAgICAgICAgY2VudGVyUG9pbnQubW92ZSgtY2xpZW50T2Zmc2V0
KTsKKyAgICAgICAgaW5WaWV3Q2VudGVyID0gV2ViQ29yZTo6SW50UG9pbnQoY2VudGVyUG9pbnQp
OworCisgICAgICAgIGlmICh1c2VWaWV3cG9ydENvb3JkaW5hdGVzKQorICAgICAgICAgICAgaW5W
aWV3Q2VudGVyID0gY29yZUZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGluVmlld0NlbnRl
ci52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgcmVjdCwgaW5WaWV3Q2VudGVyLCBp
c09ic2N1cmVkLCBTdHJpbmcoKSksIDApOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkK
</data>
<flag name="review"
          id="337409"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316934</attachid>
            <date>2017-08-01 23:18:41 -0700</date>
            <delta_ts>2017-08-04 11:47:21 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wd-clicks.diff</filename>
            <type>text/plain</type>
            <size>29530</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNjJmMDU3ZWFjNC4uZjYyYjQzNjZjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0wNy0zMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVyOiB1c2UgaW4tdmlldyBjZW50ZXIgcG9pbnQg
Zm9yIGNsaWNrcyBpbnN0ZWFkIG9mIGJvdW5kaW5nIGJveCBjZW50ZXIgcG9pbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgRE9NUmVjdCwgYW5k
IEZsb2F0UG9pbnQ6Om5hcnJvd1ByZWNpc2lvbigpIGF2YWlsYWJsZSB0byBXZWJLaXQgbGF5ZXIu
IEFsc28gYWRkCisgICAgICAgIEZyYW1lVmlldzo6Y2xpZW50VG9Eb2N1bWVudFBvaW50KCkuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaDoKKwogMjAxNy0wNy0zMSAgWGFiaWVyIFJvZHJp
Z3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIENyZWF0ZWQgYSBi
b29sIHByZXR0eSBwcmludGVyIGF0IFdURiBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmJm
NzQyYWU5YjAuLmUxZjQxMzFkMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MzAsOSArNDMwLDkgQEAKIAkJMEYzRjBFNUEx
NTcwMzBDMzAwNkRBNTdGIC8qIFJlbmRlckdlb21ldHJ5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNGMEU1ODE1NzAzMEMzMDA2REE1N0YgLyog
UmVuZGVyR2VvbWV0cnlNYXAuaCAqLzsgfTsKIAkJMEY0M0M4NUQxODlFMTBDRjAwMDE5QUUyIC8q
IFBlcmZvcm1hbmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDNDODVDMTg5RTEwQ0YwMDAxOUFFMiAvKiBQZXJmb3JtYW5jZVRpbWlu
Zy5jcHAgKi87IH07CiAJCTBGNDNDODVGMTg5RTE1QTYwMDAxOUFFMiAvKiBKU1BlcmZvcm1hbmNl
VGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDNDODVFMTg5RTE1QTYwMDAxOUFFMiAvKiBKU1BlcmZvcm1hbmNlVGltaW5nLmNwcCAqLzsg
fTsKLQkJMEY0NzEwQUYxREI1NkFGQzAwMkRDRUMzIC8qIERPTVJlY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDcxMEE5MURCNTZBRkMwMDJEQ0VD
MyAvKiBET01SZWN0LmggKi87IH07Ci0JCTBGNDcxMEIxMURCNTZBRkMwMDJEQ0VDMyAvKiBET01S
ZWN0SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NzEwQUIxREI1NkFGQzAwMkRDRUMzIC8qIERPTVJlY3RJbml0LmggKi87IH07Ci0JCTBGNDcx
MEIzMURCNTZBRkMwMDJEQ0VDMyAvKiBET01SZWN0UmVhZE9ubHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDcxMEFEMURCNTZBRkMwMDJEQ0VDMyAv
KiBET01SZWN0UmVhZE9ubHkuaCAqLzsgfTsKKwkJMEY0NzEwQUYxREI1NkFGQzAwMkRDRUMzIC8q
IERPTVJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDcxMEE5MURCNTZBRkMwMDJEQ0VDMyAvKiBET01SZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NzEwQjExREI1NkFGQzAwMkRDRUMz
IC8qIERPTVJlY3RJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ3MTBBQjFEQjU2QUZDMDAyRENFQzMgLyogRE9NUmVjdEluaXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ3MTBCMzFEQjU2
QUZDMDAyRENFQzMgLyogRE9NUmVjdFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ3MTBBRDFEQjU2QUZDMDAyRENFQzMgLyogRE9NUmVj
dFJlYWRPbmx5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY0NzEwQkIxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ3MTBCNTFEQjU2QkU4MDAy
RENFQzMgLyogSlNET01SZWN0LmNwcCAqLzsgfTsKIAkJMEY0NzEwQkMxREI1NkJFODAwMkRDRUMz
IC8qIEpTRE9NUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NzEwQjYxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdC5oICovOyB9OwogCQkw
RjQ3MTBCRDFEQjU2QkU4MDAyRENFQzMgLyogSlNET01SZWN0SW5pdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ3MTBCNzFEQjU2QkU4MDAyRENF
QzMgLyogSlNET01SZWN0SW5pdC5jcHAgKi87IH07CkBAIC0xOTUzLDcgKzE5NTMsNyBAQAogCQk0
NjcxRTA2NjFENjdBNTk2MDBDNkI0OTcgLyogQ2FudmFzUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MUUwNjQxRDY3QTU3QjAwQzZCNDk3IC8q
IENhbnZhc1BhdGguaCAqLzsgfTsKIAkJNDY3MzAyMDIxQzRFRkU3ODAwQkNCMzU3IC8qIElnbm9y
ZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIEln
bm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovOyB9OwogCQk0NjgzNDRE
RjFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REQxRURERkE1RjAwQjc3OTVCIC8qIERP
TVJlY3RMaXN0LmNwcCAqLzsgfTsKLQkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgfTsKKwkJNDY4MzQ0
RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEyNjdCQUUxMDBF
OEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0
QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdl
dEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5
MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAzZmY1NTcwYWE0OS4uN2Y2YzNhZWIyYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKIAogICAgIEZs
b2F0UmVjdCBib3VuZGluZ0NsaWVudFJlY3QoKTsKIAotICAgIFJlZjxET01SZWN0TGlzdD4gZ2V0
Q2xpZW50UmVjdHMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RE9NUmVjdExpc3Q+IGdldENs
aWVudFJlY3RzKCk7CiAgICAgUmVmPERPTVJlY3Q+IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwog
CiAgICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0ZWQgaW50
byBjbGllbnQgY29vcmRpbmF0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggN2I1
ZGM2Y2RlNDQuLmZjZTMzNDcyMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00
OTUyLDYgKzQ5NTIsMTIgQEAgRmxvYXRQb2ludCBGcmFtZVZpZXc6OmRvY3VtZW50VG9DbGllbnRQ
b2ludChGbG9hdFBvaW50IHApIGNvbnN0CiAgICAgcmV0dXJuIHA7CiB9CiAKK0Zsb2F0UG9pbnQg
RnJhbWVWaWV3OjpjbGllbnRUb0RvY3VtZW50UG9pbnQoRmxvYXRQb2ludCBwb2ludCkgY29uc3QK
K3sKKyAgICBwb2ludC5tb3ZlKC1kb2N1bWVudFRvQ2xpZW50T2Zmc2V0KCkpOworICAgIHJldHVy
biBwb2ludDsKK30KKwogRmxvYXRSZWN0IEZyYW1lVmlldzo6bGF5b3V0Vmlld3BvcnRUb0Fic29s
dXRlUmVjdChGbG9hdFJlY3QgcmVjdCkgY29uc3QKIHsKICAgICBBU1NFUlQoZnJhbWUoKS5zZXR0
aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmlu
ZGV4IDE5ZjAyZjZkNmFjLi42MzZhMThmZjIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBA
IC00NzYsNiArNDc2LDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBkb2N1bWVudFRvQ2xpZW50
T2Zmc2V0KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IGRvY3VtZW50VG9DbGllbnRSZWN0KEZsb2F0
UmVjdCkgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBkb2N1bWVudFRvQ2xpZW50UG9pbnQoRmxvYXRQ
b2ludCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2ludCBjbGllbnRUb0RvY3Vt
ZW50UG9pbnQoRmxvYXRQb2ludCkgY29uc3Q7CiAKICAgICBGbG9hdFJlY3QgbGF5b3V0Vmlld3Bv
cnRUb0Fic29sdXRlUmVjdChGbG9hdFJlY3QpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgbGF5b3V0
Vmlld3BvcnRUb0Fic29sdXRlUG9pbnQoRmxvYXRQb2ludCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKaW5kZXggNmVkNGQyMWEyOTIuLjA3
YTc5YjZjMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2ludC5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBGbG9hdFBvaW50
IHplcm8oKSB7IHJldHVybiBGbG9hdFBvaW50KCk7IH0KIAotICAgIHN0YXRpYyBGbG9hdFBvaW50
IG5hcnJvd1ByZWNpc2lvbihkb3VibGUgeCwgZG91YmxlIHkpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBGbG9hdFBvaW50IG5hcnJvd1ByZWNpc2lvbihkb3VibGUgeCwgZG91YmxlIHkpOwog
CiAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQogICAgIGZsb2F0IHkoKSBjb25z
dCB7IHJldHVybiBtX3k7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggMDNhNzgyNmQ0ZDQuLjYyZDUwYWE4
M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA3LTMxICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBXZWJEcml2ZXI6
IHVzZSBpbi12aWV3IGNlbnRlciBwb2ludCBmb3IgY2xpY2tzIGluc3RlYWQgb2YgYm91bmRpbmcg
Ym94IGNlbnRlciBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGNlbnRlciBvZiB0aGUgZWxlbWVudCBib3VuZGluZyBib3ggaXMgbm90IGFs
d2F5cyBwYXJ0IG9mIHRoZSBlbGVtZW50LCBsaWtlIGluIG11bHRpbGluZSBsaW5rcywgZm9yIGV4
YW1wbGUuCisKKyAgICAgICAgMTEuMSBFbGVtZW50IEludGVyYWN0YWJpbGl0eS4KKyAgICAgICAg
aHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLWluLXZpZXctY2VudGVyLXBvaW50
CisKKyAgICAgICAgKiBDb21tYW5kUmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6Q29t
bWFuZFJlc3VsdDo6aHR0cFN0YXR1c0NvZGUpOiBBZGQgRWxlbWVudENsaWNrSW50ZXJjZXB0ZWQg
YW5kIEVsZW1lbnROb3RJbnRlcmFjdGFibGUgZXJyb3JzLgorICAgICAgICAoV2ViRHJpdmVyOjpD
b21tYW5kUmVzdWx0OjplcnJvclN0cmluZyk6IERpdHRvLgorICAgICAgICAqIENvbW1hbmRSZXN1
bHQuaDogRGl0dG8uCisgICAgICAgICogU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KTogR2V0IHRoZSBpbi12aWV3IGNlbnRlciBw
b2ludCBhbmQgaXNPYnNjdXJlZCBmcm9tIHRoZSByZXN1bHQgdG9vLgorICAgICAgICAoV2ViRHJp
dmVyOjpTZXNzaW9uOjpnZXRFbGVtZW50UmVjdCk6IElnbm9yZSBpbi12aWV3IGNlbnRlciBwb2lu
dCBhbmQgaXNPYnNjdXJlZC4KKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6ZWxlbWVudENs
aWNrKTogRmFpbCBpbiBjYXNlIHRoZSBlbGVtZW50IGlzIG5vdCBpbnRlcmFjdGFibGUgb3IgaXMg
b2JzY3VyZWQuCisgICAgICAgICogU2Vzc2lvbi5oOgorCiAyMDE3LTA3LTI4ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IGZp
eCByZXR1cm4gdmFsdWUgb2YgY2xvc2Ugd2luZG93IGNvbW1hbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRS
ZXN1bHQuY3BwCmluZGV4IDM3OThhMTgxMmIxLi42MzNiODk5NWJiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0Nv
bW1hbmRSZXN1bHQuY3BwCkBAIC0xMjIsNiArMTIyLDggQEAgdW5zaWduZWQgQ29tbWFuZFJlc3Vs
dDo6aHR0cFN0YXR1c0NvZGUoKSBjb25zdAogICAgIC8vIMKnNi42IEhhbmRsaW5nIEVycm9ycy4K
ICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNoYW5kbGluZy1lcnJvcnMK
ICAgICBzd2l0Y2ggKG1fZXJyb3JDb2RlLnZhbHVlKCkpIHsKKyAgICBjYXNlIEVycm9yQ29kZTo6
RWxlbWVudENsaWNrSW50ZXJjZXB0ZWQ6CisgICAgY2FzZSBFcnJvckNvZGU6OkVsZW1lbnROb3RJ
bnRlcmFjdGFibGU6CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRBcmd1bWVudDoKICAgICBj
YXNlIEVycm9yQ29kZTo6SW52YWxpZEVsZW1lbnRTdGF0ZToKICAgICBjYXNlIEVycm9yQ29kZTo6
SW52YWxpZFNlbGVjdG9yOgpAQCAtMTUyLDYgKzE1NCwxMCBAQCBTdHJpbmcgQ29tbWFuZFJlc3Vs
dDo6ZXJyb3JTdHJpbmcoKSBjb25zdAogICAgIEFTU0VSVChpc0Vycm9yKCkpOwogCiAgICAgc3dp
dGNoIChtX2Vycm9yQ29kZS52YWx1ZSgpKSB7CisgICAgY2FzZSBFcnJvckNvZGU6OkVsZW1lbnRD
bGlja0ludGVyY2VwdGVkOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJlbGVtZW50IGNs
aWNrIGludGVyY2VwdGVkIik7CisgICAgY2FzZSBFcnJvckNvZGU6OkVsZW1lbnROb3RJbnRlcmFj
dGFibGU6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImVsZW1lbnQgbm90IGludGVyYWN0
YWJsZSIpOwogICAgIGNhc2UgRXJyb3JDb2RlOjpJbnZhbGlkQXJndW1lbnQ6CiAgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoImludmFsaWQgYXJndW1lbnQiKTsKICAgICBjYXNlIEVycm9yQ29k
ZTo6SW52YWxpZEVsZW1lbnRTdGF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29t
bWFuZFJlc3VsdC5oIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmgKaW5kZXggMjk2
ZTRiNzExMTkuLmVjNTMzOTgwMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1h
bmRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaApAQCAtMzks
NiArMzksOCBAQCBwdWJsaWM6CiAgICAgLy8gwqc2LjYgSGFuZGxpbmcgRXJyb3JzLgogICAgIC8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2hhbmRsaW5nLWVycm9ycwogICAgIGVu
dW0gY2xhc3MgRXJyb3JDb2RlIHsKKyAgICAgICAgRWxlbWVudENsaWNrSW50ZXJjZXB0ZWQsCisg
ICAgICAgIEVsZW1lbnROb3RJbnRlcmFjdGFibGUsCiAgICAgICAgIEludmFsaWRBcmd1bWVudCwK
ICAgICAgICAgSW52YWxpZEVsZW1lbnRTdGF0ZSwKICAgICAgICAgSW52YWxpZFNlbGVjdG9yLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbi5jcHAKaW5kZXggZTJlMzc1YjJkZTUuLjkwMTIxNmQyYzFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAKQEAgLTYwNiw3ICs2MDYsNyBAQCBTdHJpbmcgU2Vzc2lvbjo6ZXh0cmFjdEVsZW1l
bnRJRChJbnNwZWN0b3JWYWx1ZSYgdmFsdWUpCiAgICAgcmV0dXJuIGVsZW1lbnRJRDsKIH0KIAot
dm9pZCBTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
RCwgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQg
KHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9u
cywgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxSZWN0PiYmLCBzdGQ6Om9wdGlvbmFsPFBv
aW50PiYmLCBib29sLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQobV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsK
IApAQCAtNjE4LDEyICs2MTgsMTIgQEAgdm9pZCBTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91
dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXkKICAgICBwYXJh
bWV0ZXJzLT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgidXNlVmlld3BvcnRDb29yZGluYXRlcyIp
LCBvcHRpb25zLmNvbnRhaW5zKEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdwb3J0Q29vcmRp
bmF0ZXMpKTsKICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgi
Y29tcHV0ZUVsZW1lbnRMYXlvdXQiKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNl
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJl
c3BvbnNlT2JqZWN0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQsIFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKTsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgV1RGTW92ZShy
ZXNwb25zZS5yZXNwb25zZU9iamVjdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY3RPYmplY3Q7CiAgICAgICAgIGlm
ICghcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdChBU0NJSUxpdGVyYWwoInJlY3Qi
KSwgcmVjdE9iamVjdCkpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCwgbnVsbHB0cik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBlbGVtZW50WDsKQEAgLTYzNyw3
ICs2MzcsNyBAQCB2b2lkIFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmlu
ZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIGlmICghZWxlbWVudFggfHwgIWVsZW1lbnRZKSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIG51bGxwdHIpOworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBudWxscHRy
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludD4gZWxlbWVudFdpZHRoOwpAQCAtNjUxLDExICs2NTEsMjkgQEAgdm9pZCBTZXNzaW9uOjpj
b21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVs
ZW1lbnRMYXkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoIWVsZW1lbnRX
aWR0aCB8fCAhZWxlbWVudEhlaWdodCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0LCBudWxscHRyKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbnVsbHB0cik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgUmVjdCByZWN0ID0geyB7IGVsZW1lbnRYLnZhbHVl
KCksIGVsZW1lbnRZLnZhbHVlKCkgfSwgeyBlbGVtZW50V2lkdGgudmFsdWUoKSwgZWxlbWVudEhl
aWdodC52YWx1ZSgpIH0gfTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdCwgbnVsbHB0
cik7CisKKyAgICAgICAgYm9vbCBpc09ic2N1cmVkOworICAgICAgICBpZiAoIXJlc3BvbnNlLnJl
c3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgiaXNPYnNjdXJlZCIpLCBpc09i
c2N1cmVkKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIGZhbHNlLCBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBpblZpZXdDZW50ZXJQb2ludE9i
amVjdDsKKyAgICAgICAgaWYgKCFyZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KEFT
Q0lJTGl0ZXJhbCgiaW5WaWV3Q2VudGVyUG9pbnQiKSwgaW5WaWV3Q2VudGVyUG9pbnRPYmplY3Qp
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0LCBzdGQ6Om51bGxvcHQsIGlz
T2JzY3VyZWQsIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGludCBpblZpZXdDZW50ZXJQb2ludFgsIGluVmlld0NlbnRlclBvaW50WTsKKyAgICAgICAg
aWYgKCFpblZpZXdDZW50ZXJQb2ludE9iamVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoIngi
KSwgaW5WaWV3Q2VudGVyUG9pbnRYKQorICAgICAgICAgICAgfHwgIWluVmlld0NlbnRlclBvaW50
T2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieSIpLCBpblZpZXdDZW50ZXJQb2ludFkp
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgaXNPYnNjdXJlZCwgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgUG9pbnQgaW5WaWV3Q2VudGVyUG9pbnQgPSB7IGluVmlld0NlbnRlclBvaW50
WCwgaW5WaWV3Q2VudGVyUG9pbnRZIH07CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3Qs
IGluVmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkLCBudWxscHRyKTsKICAgICB9KTsKIH0KIApA
QCAtODU2LDcgKzg3NCw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0RWxlbWVudFJlY3QoY29uc3QgU3Ry
aW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIHsgfSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZXJyb3IpIHsKKyAgICBjb21wdXRlRWxlbWVudExheW91
dChlbGVtZW50SUQsIHsgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRp
b25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYgZXJyb3IpIHsKICAgICAgICAgaWYgKCFyZWN0IHx8IGVycm9yKSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1v
dmUoZXJyb3IpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDEzLDE1ICsxMDMxLDIxIEBA
IHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsaWNrKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0CiAKICAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9w
dGlvbj4gb3B0aW9ucyA9IEVsZW1lbnRMYXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVk
ZWQ7CiAgICAgb3B0aW9ucyB8PSBFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3Jk
aW5hdGVzOwotICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgeworICAgIGNvbXB1dGVFbGVt
ZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYgaW5W
aWV3Q2VudGVyLCBib29sIGlzT2JzY3VyZWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZXJy
b3IpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShlcnJvcikpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAoaXNPYnNjdXJlZCkg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21t
YW5kUmVzdWx0OjpFcnJvckNvZGU6OkVsZW1lbnRDbGlja0ludGVyY2VwdGVkKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpblZpZXdDZW50ZXIpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJl
c3VsdDo6RXJyb3JDb2RlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogdGhlIGNlbnRlciBvZiB0aGUg
Ym91bmRpbmcgYm94IGlzIG5vdCBhbHdheXMgcGFydCBvZiB0aGUgZWxlbWVudC4KLSAgICAgICAg
cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24ocmVjdC52YWx1ZSgpLm9yaWdpbi54ICsgcmVjdC52YWx1
ZSgpLnNpemUud2lkdGggLyAyLCByZWN0LnZhbHVlKCkub3JpZ2luLnkgKyByZWN0LnZhbHVlKCku
c2l6ZS5oZWlnaHQgLyAyLAotICAgICAgICAgICAgTW91c2VCdXR0b246OkxlZnQsIE1vdXNlSW50
ZXJhY3Rpb246OlNpbmdsZUNsaWNrLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGluVmlld0NlbnRlci52YWx1ZSgpLngsIGluVmll
d0NlbnRlci52YWx1ZSgpLnksIE1vdXNlQnV0dG9uOjpMZWZ0LCBNb3VzZUludGVyYWN0aW9uOjpT
aW5nbGVDbGljaywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgICAgIHdhaXRG
b3JOYXZpZ2F0aW9uVG9Db21wbGV0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJE
cml2ZXIvU2Vzc2lvbi5oCmluZGV4IDQwYjE5OTE1NGQ0Li5lMWM3MWI4ZTI0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNz
aW9uLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgICAgICBTY3JvbGxJbnRvVmll
d0lmTmVlZGVkID0gMSA8PCAwLAogICAgICAgICBVc2VWaWV3cG9ydENvb3JkaW5hdGVzID0gMSA8
PCAxLAogICAgIH07Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+LCBGdW5jdGlvbjx2b2lk
IChzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mJik+JiYpOworICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiwgRnVuY3Rpb248dm9pZCAo
c3RkOjpvcHRpb25hbDxSZWN0PiYmLCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYpPiYmKTsKIAogICAgIGVudW0gY2xhc3Mg
TW91c2VCdXR0b24geyBOb25lLCBMZWZ0LCBNaWRkbGUsIFJpZ2h0IH07CiAgICAgZW51bSBjbGFz
cyBNb3VzZUludGVyYWN0aW9uIHsgTW92ZSwgRG93biwgVXAsIFNpbmdsZUNsaWNrLCBEb3VibGVD
bGljayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBlMjAzMjgzOWVkOC4uYmYxOWYxNDk3NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTctMDctMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFdlYkRyaXZlcjogdXNlIGluLXZpZXcgY2VudGVyIHBv
aW50IGZvciBjbGlja3MgaW5zdGVhZCBvZiBib3VuZGluZyBib3ggY2VudGVyIHBvaW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4NjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgY29tcHV0
ZUVsZW1lbnRMYXlvdXQgdG8gYWxzbyByZXR1cm4gdGhlIGluLXZpZXcgY2VudGVyIHBvaW50IGFu
ZCB3aGV0aGVyIGl0J3Mgb2JzY3VyZWQgYnkgYW5vdGhlcgorICAgICAgICBlbGVtZW50LgorCisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uOiBBZGQgb3B0aW9u
YWwgaW5WaWV3Q2VudGVyUG9pbnQgdG8gdGhlIHJlc3VsdCBhbmQgaXNPYnNjdXJlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxlbWVudExheW91
dCk6IEhhbmRsZSBpblZpZXdDZW50ZXJQb2ludCBhbmQgaXNPYnNjdXJlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6ZWxlbWVudEluVmlld0NsaWVudENlbnRlclBvaW50KTogR2V0
IHRoZSBjbGllbnQgaW4tdmlldyBjZW50ZXIgcG9pbnQgYW5kIHdoZXRoZXIgaXQncyBvYnNjdXJl
ZAorICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KTogUGFzcyBpblZpZXdD
ZW50ZXJQb2ludCBhbmQgaXNPYnNjdXJlZCB0bworICAgICAgICBEaWRDb21wdXRlRWxlbWVudExh
eW91dCBtZXNzYWdlLgorCiAyMDE3LTA3LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgVVJMU2NoZW1lSGFuZGxlciBBUEkgdGVzdHMgdGhhdCB2ZXJp
ZnkgdGhlIGxhY2sgb2YgVVJMU2NoZW1lVGFzayBvYmplY3QgbGVha3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCmluZGV4IDBmMjU5
NjEyOGM2Li5mZTMxMDJiMmMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTQyMiw3ICs0MjIsOSBAQAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidXNlVmlld3BvcnRDb29yZGluYXRlcyIsICJvcHRpb25hbCI6IHRy
dWUsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdGhlIHJlc3VsdCBjb29y
ZGluYXRlcyBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYXMgdmlld3BvcnQgY29vcmRpbmF0ZXMgb3Ig
bm90LiBEZWZhdWx0cyB0byBmYWxzZSwgd2hpY2ggbWVhbnMgY29vcmRpbmF0ZXMgc2hvdWxkIGJl
IHJlcHJlc2VudGVkIGFzIHBhZ2UgY29vcmRpbmF0ZXMuIiB9CiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZWN0Iiwg
IiRyZWYiOiAiUmVjdCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbGF5b3V0IHJlY3QgZm9yIHRoZSBy
ZXF1ZXN0ZWQgZWxlbWVudC4gU3BlY2lmaWVkIGluIHBhZ2Ugb3Igdmlld3BvcnQgY29vcmRpbmF0
ZXMgYmFzZWQgb24gdGhlIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMgcGFyYW1ldGVyLiIgfQorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVjdCIsICIkcmVmIjogIlJlY3QiLCAiZGVzY3JpcHRp
b24iOiAiVGhlIGxheW91dCByZWN0IGZvciB0aGUgcmVxdWVzdGVkIGVsZW1lbnQuIFNwZWNpZmll
ZCBpbiBwYWdlIG9yIHZpZXdwb3J0IGNvb3JkaW5hdGVzIGJhc2VkIG9uIHRoZSB1c2VWaWV3cG9y
dENvb3JkaW5hdGVzIHBhcmFtZXRlci4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJp
blZpZXdDZW50ZXJQb2ludCIsICJvcHRpb25hbCI6IHRydWUsICIkcmVmIjogIlBvaW50IiwgImRl
c2NyaXB0aW9uIjogIlRoZSBpbi12aWV3IGNlbnRlciBwb2ludCBmb3IgdGhlIHJlcXVlc3RlZCBl
bGVtZW50LiBTcGVjaWZpZWQgaW4gcGFnZSBvciB2aWV3cG9ydCBjb29yZGluYXRlcyBiYXNlZCBv
biB0aGUgdXNlVmlld3BvcnRDb29yZGluYXRlcyBwYXJhbWV0ZXIuIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiaXNPYnNjdXJlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiSWYgdGhlIGluLXZpZXcgY2VudGVyIHBvaW50IG9mIHRoZSByZXF1ZXN0ZWQgZWxlbWVu
dCBpcyBvYnNjdXJlZCBieSBhbm90aGVyIGVsZW1lbnQuIiB9CiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgImFzeW5jIjogdHJ1ZQogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApp
bmRleCBlZjI2NWE4OTE1Ny4uZmI4ZjQ0ZGUwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC02ODEsNyArNjgxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVsZW1l
bnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHIKICAgICBwYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Q29tcHV0ZUVs
ZW1lbnRMYXlvdXQocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQudmFsdWUoKSwgbm9kZUhhbmRsZSwg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgdXNlVmlld3BvcnRDb29yZGluYXRlcywgY2FsbGJhY2tJ
RCksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxlbWVu
dExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIGNvbnN0
IFN0cmluZyYgZXJyb3JUeXBlKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkQ29tcHV0
ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCByZWN0
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9v
bCBpc09ic2N1cmVkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKIHsKICAgICBhdXRvIGNhbGxi
YWNrID0gbV9jb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spCkBAIC03MDcsNyArNzA3LDE3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdl
YkNvcmU6CiAgICAgICAgIC5zZXRTaXplKFdURk1vdmUoc2l6ZU9iamVjdCkpCiAgICAgICAgIC5y
ZWxlYXNlKCk7CiAKLSAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0
KSk7CisgICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludCkgeworICAgICAgICBjYWxsYmFjay0+c2Vu
ZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgbnVsbHB0ciwgaXNPYnNjdXJlZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGluVmlld0NlbnRlclBvaW50T2JqZWN0ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ6OmNyZWF0ZSgpCisgICAgICAg
IC5zZXRYKGluVmlld0NlbnRlclBvaW50LnZhbHVlKCkueCgpKQorICAgICAgICAuc2V0WShpblZp
ZXdDZW50ZXJQb2ludC52YWx1ZSgpLnkoKSkKKyAgICAgICAgLnJlbGVhc2UoKTsKKworICAgIGNh
bGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKHJlY3RPYmplY3QpLCBXVEZNb3ZlKGluVmlld0Nl
bnRlclBvaW50T2JqZWN0KSwgaXNPYnNjdXJlZCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBib29sKiBy
ZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggNTIxYjQxOWIzMTAuLjZlYWU2NDhlNWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0
IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRS
ZXNvbHZlQ2hpbGRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRSZXNvbHZlUGFyZW50RnJhbWUo
dWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJv
clR5cGUpOwotICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJh
Y2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOworICAgIHZv
aWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6
SW50UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wgaXNPYnNjdXJl
ZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAgIHZvaWQgZGlkVGFrZVNjcmVlbnNob3Qo
dWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBjb25z
dCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRHZXRDb29raWVzRm9yRnJhbWUodWlu
dDY0X3QgY2FsbGJhY2tJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4sIGNvbnN0IFN0cmluZyYg
ZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZSh1aW50NjRfdCBjYWxsYmFja0lE
LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNz
YWdlcy5pbgppbmRleCBjYjRkNTYyODgzMC4uZjM4YWM5NTNmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbiB7CiAgICAgRGlkUmVzb2x2ZUNoaWxkRnJhbWUodWludDY0X3QgY2Fs
bGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGVycm9yVHlwZSkKICAgICBEaWRSZXNv
bHZlUGFyZW50RnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIGVycm9yVHlwZSkKIAotICAgIERpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNh
bGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgU3RyaW5nIGVycm9yVHlwZSkKKyAgICBE
aWRDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBv
aW50LCBib29sIGlzT2JzY3VyZWQsIFN0cmluZyBlcnJvclR5cGUpCiAKICAgICBEaWRUYWtlU2Ny
ZWVuc2hvdCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGltYWdlRGF0YUhhbmRsZSwgU3RyaW5nIGVycm9yVHlwZSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcAppbmRleCA4ZWU0Mjc0Mjc4Ni4uNTJkMzQ3ZDM3ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZQcml2YXRlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRE9NUmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NUmVjdExp
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgpAQCAtNDcwLDEyICs0NzIs
NDMgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKICAgICBjb3JlRE9NV2luZG93LT5mb2N1cyh0cnVl
KTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gZWxlbWVu
dEluVmlld0NsaWVudENlbnRlclBvaW50KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQsIGJvb2wm
IGlzT2JzY3VyZWQpCit7CisgICAgLy8gwqcxMS4xIEVsZW1lbnQgSW50ZXJhY3RhYmlsaXR5Lgor
ICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2Rmbi1pbi12aWV3LWNlbnRl
ci1wb2ludAorICAgIGF1dG8qIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldENsaWVudFJlY3RzKCkt
Pml0ZW0oMCk7CisgICAgaWYgKCFjbGllbnRSZWN0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgYXV0byBjbGllbnRDZW50ZXJQb2ludCA9IFdlYkNvcmU6OkZsb2F0UG9pbnQ6
Om5hcnJvd1ByZWNpc2lvbigwLjUgKiAoY2xpZW50UmVjdC0+bGVmdCgpICsgY2xpZW50UmVjdC0+
cmlnaHQoKSksIDAuNSAqIChjbGllbnRSZWN0LT50b3AoKSArIGNsaWVudFJlY3QtPmJvdHRvbSgp
KSk7CisgICAgYXV0byBlbGVtZW50TGlzdCA9IGVsZW1lbnQudHJlZVNjb3BlKCkuZWxlbWVudHNG
cm9tUG9pbnQoY2xpZW50Q2VudGVyUG9pbnQueCgpLCBjbGllbnRDZW50ZXJQb2ludC55KCkpOwor
ICAgIGlmIChlbGVtZW50TGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQW4gZWxlbWVudCBp
cyBvYnNjdXJlZCBpZiB0aGUgcG9pbnRlci1pbnRlcmFjdGFibGUgcGFpbnQgdHJlZSBhdCBpdHMg
Y2VudGVyIHBvaW50IGlzIGVtcHR5LAorICAgICAgICAvLyBvciB0aGUgZmlyc3QgZWxlbWVudCBp
biB0aGlzIHRyZWUgaXMgbm90IGFuIGluY2x1c2l2ZSBkZXNjZW5kYW50IG9mIGl0c2VsZi4KKyAg
ICAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci93ZWJkcml2ZXItc3BlYy5o
dG1sI2Rmbi1vYnNjdXJlZAorICAgICAgICBpc09ic2N1cmVkID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIGNsaWVudENlbnRlclBvaW50OworICAgIH0KKworICAgIGF1dG8gaW5kZXggPSBlbGVtZW50
TGlzdC5maW5kTWF0Y2hpbmcoWyZlbGVtZW50XSAoYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5n
ZXQoKSA9PSAmZWxlbWVudDsgfSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKGluZGV4KSB7CisgICAgICAgIC8vIEVs
ZW1lbnQgaXMgbm90IHRoZSBmaXJzdCBvbmUgaW4gdGhlIGxpc3QuCisgICAgICAgIGF1dG8gZmly
c3RFbGVtZW50ID0gZWxlbWVudExpc3RbMF07CisgICAgICAgIGlzT2JzY3VyZWQgPSAhZmlyc3RF
bGVtZW50LT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gY2xp
ZW50Q2VudGVyUG9pbnQ7Cit9CisKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29t
cHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIHVzZVZpZXdw
b3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViUGFnZSogcGFn
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBh
Z2UpIHsKICAgICAgICAgU3RyaW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQp
OwotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1l
bnRMYXlvdXQoY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCgpLCB3aW5kb3dOb3RGb3VuZEVy
cm9yVHlwZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlk
Q29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNl
LCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00ODMsNDAgKzUxNiwzOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNv
bXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogICAgIFN0cmlu
ZyBub2RlTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOwogCiAgICAgV2ViRnJhbWUqIGZyYW1l
ID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpIDog
cGFnZS0+bWFpbldlYkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkgewotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJ
RCwgV2ViQ29yZTo6SW50UmVjdCgpLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAg
aWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkt
PnZpZXcoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29t
cHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBm
cmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBXZWJDb3JlOjpFbGVtZW50KiBjb3JlRWxlbWVudCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpm
cmFtZSwgbm9kZUhhbmRsZSk7CiAgICAgaWYgKCFjb3JlRWxlbWVudCkgewotICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJh
Y2tJRCwgV2ViQ29yZTo6SW50UmVjdCgpLCBub2RlTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5
b3V0KGNhbGxiYWNrSUQsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbm9kZU5vdEZvdW5kRXJy
b3JUeXBlKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCkKKyAgICBpZiAoc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCkgeworICAgICAg
ICAvLyBGSVhNRTogV2FpdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyB3YXkgdXAgdG8g
dGhlIHNlc3Npb24gaW1wbGljaXQgd2FpdCB0aW1lb3V0IGZvciB0aGUgZWxlbWVudCB0byBiZWNv
bWUgaW4gdmlldy4KICAgICAgICAgY29yZUVsZW1lbnQtPnNjcm9sbEludG9WaWV3SWZOZWVkZWQo
ZmFsc2UpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gY29yZUVsZW1lbnQtPmNsaWVu
dFJlY3QoKTsKLQotICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZS0+Y29yZUZy
YW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIFdlYkNvcmU6
OkludFJlY3QoKSwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOwotICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICpjb3JlRnJhbWVWaWV3ID0gY29yZUZy
YW1lLT52aWV3KCk7Ci0gICAgaWYgKCFjb3JlRnJhbWVWaWV3KSB7Ci0gICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lE
LCBXZWJDb3JlOjpJbnRSZWN0KCksIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSBjb3JlRWxlbWVu
dC0+Y2xpZW50UmVjdCgpOwogCisgICAgYXV0byogY29yZUZyYW1lVmlldyA9IGZyYW1lLT5jb3Jl
RnJhbWUoKS0+dmlldygpOwogICAgIGlmICh1c2VWaWV3cG9ydENvb3JkaW5hdGVzKQogICAgICAg
ICByZWN0Lm1vdmVCeShXZWJDb3JlOjpJbnRQb2ludCgwLCAtY29yZUZyYW1lVmlldy0+dG9wQ29u
dGVudEluc2V0KCkpKTsKICAgICBlbHNlCiAgICAgICAgIHJlY3QgPSBjb3JlRnJhbWVWaWV3LT5y
b290Vmlld1RvQ29udGVudHMocmVjdCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgcmVjdCwgU3RyaW5nKCkp
LCAwKTsKKyAgICBib29sIGlzT2JzY3VyZWQgPSBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXI7CisgICAgaWYgKGF1dG8gY2xpZW50Q2VudGVy
UG9pbnQgPSBlbGVtZW50SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQoKmNvcmVFbGVtZW50LCBpc09i
c2N1cmVkKSkgeworICAgICAgICBpblZpZXdDZW50ZXIgPSBXZWJDb3JlOjpJbnRQb2ludChjb3Jl
RnJhbWVWaWV3LT5jbGllbnRUb0RvY3VtZW50UG9pbnQoY2xpZW50Q2VudGVyUG9pbnQudmFsdWUo
KSkpOworICAgICAgICBpZiAodXNlVmlld3BvcnRDb29yZGluYXRlcykKKyAgICAgICAgICAgIGlu
Vmlld0NlbnRlciA9IGNvcmVGcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhpblZpZXdDZW50
ZXIudmFsdWUoKSk7CisgICAgfQorCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246
OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHJlY3QsIGluVmlld0NlbnRlciwg
aXNPYnNjdXJlZCwgU3RyaW5nKCkpLCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCg==
</data>
<flag name="review"
          id="337546"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>