<?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>199741</bug_id>
          
          <creation_ts>2019-07-11 17:51:13 -0700</creation_ts>
          <short_desc>[iOS WK2] Can&apos;t place caret or select in content that overflows a contenteditable element</short_desc>
          <delta_ts>2019-07-14 17:26:38 -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>HTML Editing</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>megan_gardner</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1552312</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-11 17:51:13 -0700</bug_when>
    <thetext>[iOS WK2] Can&apos;t place caret or select in content that overflows a contenteditable element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552314</commentid>
    <comment_count>1</comment_count>
      <attachid>373985</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-11 17:57:27 -0700</bug_when>
    <thetext>Created attachment 373985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552315</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-11 17:57:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/50545233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552316</commentid>
    <comment_count>3</comment_count>
      <attachid>373986</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-11 17:59:19 -0700</bug_when>
    <thetext>Created attachment 373986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552357</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-07-11 21:34:37 -0700</bug_when>
    <thetext>&gt; Test suite failed
&gt; Failed
&gt;     TestWebKitAPI.KeyboardInputTests.SelectionClipRectsWhenPresentingInputView
&gt;         
&gt;         /Volumes/Data/worker/iOS-12-Simulator-Build-EWS/build/Tools/TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:524
&gt;         Expected equality of these values:
&gt;           10
&gt;           selectionClipRect.origin.x
&gt;             Which is: 11

It looks like this can just be rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552489</commentid>
    <comment_count>5</comment_count>
      <attachid>374028</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-12 12:58:23 -0700</bug_when>
    <thetext>Created attachment 374028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552492</commentid>
    <comment_count>6</comment_count>
      <attachid>374028</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-07-12 13:08:15 -0700</bug_when>
    <thetext>Comment on attachment 374028
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:1610
&gt; +    boundingBox.setWidth(boundingBox.width() - style.borderLeftWidth() - style.borderRightWidth());
&gt; +    boundingBox.setHeight(boundingBox.height() - style.borderBottomWidth() - style.borderTopWidth());

Nit - could consider using contract instead.

&gt; LayoutTests/editing/caret/ios/caret-in-overflow-area.html:47
&gt; +        window.addEventListener(&apos;load&apos;, async () =&gt; {
&gt; +            runTest();
&gt; +        }, false);

Nit - addEventListener(‘load’, runTest);?

&gt; LayoutTests/editing/selection/ios/place-selection-in-overflow-area.html:53
&gt; +        window.addEventListener(&apos;load&apos;, async () =&gt; {
&gt; +            runTest();
&gt; +        }, false);

Ditto.

&gt; LayoutTests/editing/selection/ios/selection-extends-into-overflow-area.html:61
&gt; +        window.addEventListener(&apos;load&apos;, async () =&gt; {
&gt; +            runTest();
&gt; +        }, false);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552533</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-12 14:42:34 -0700</bug_when>
    <thetext>https://trac.webkit.org/r247398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552536</commentid>
    <comment_count>8</comment_count>
      <attachid>374028</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-12 14:46:19 -0700</bug_when>
    <thetext>Comment on attachment 374028
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1212
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +    // This excludes layout overflow, includes borders.
&gt; +    static WebCore::IntRect rootViewBoundsForElement(const WebCore::Element&amp;);
&gt; +    // These include layout overflow for overflow:visible elements, but exclude borders.
&gt; +    static WebCore::IntRect absoluteInteractionBoundsForElement(const WebCore::Element&amp;);
&gt; +    static WebCore::IntRect rootViewInteractionBoundsForElement(const WebCore::Element&amp;);
&gt; +#endif // PLATFORM(IOS_FAMILY)

Do these really need to be iOS specific? They seem pretty general. We really should be aiming to have less platform specific code like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552539</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-12 14:48:32 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #8)
&gt; Comment on attachment 374028 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=374028&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1212
&gt; &gt; +#if PLATFORM(IOS_FAMILY)
&gt; &gt; +    // This excludes layout overflow, includes borders.
&gt; &gt; +    static WebCore::IntRect rootViewBoundsForElement(const WebCore::Element&amp;);
&gt; &gt; +    // These include layout overflow for overflow:visible elements, but exclude borders.
&gt; &gt; +    static WebCore::IntRect absoluteInteractionBoundsForElement(const WebCore::Element&amp;);
&gt; &gt; +    static WebCore::IntRect rootViewInteractionBoundsForElement(const WebCore::Element&amp;);
&gt; &gt; +#endif // PLATFORM(IOS_FAMILY)
&gt; 
&gt; Do these really need to be iOS specific? They seem pretty general. We really
&gt; should be aiming to have less platform specific code like this.

Agreed. I started to clean things up and it got messy; it&apos;s unclear if all the callers want to include borders or not, and which want the interaction rect vs. the content box rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552548</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-12 15:02:35 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #9)
&gt; (In reply to Sam Weinig from comment #8)
&gt; &gt; Comment on attachment 374028 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=374028&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1212
&gt; &gt; &gt; +#if PLATFORM(IOS_FAMILY)
&gt; &gt; &gt; +    // This excludes layout overflow, includes borders.
&gt; &gt; &gt; +    static WebCore::IntRect rootViewBoundsForElement(const WebCore::Element&amp;);
&gt; &gt; &gt; +    // These include layout overflow for overflow:visible elements, but exclude borders.
&gt; &gt; &gt; +    static WebCore::IntRect absoluteInteractionBoundsForElement(const WebCore::Element&amp;);
&gt; &gt; &gt; +    static WebCore::IntRect rootViewInteractionBoundsForElement(const WebCore::Element&amp;);
&gt; &gt; &gt; +#endif // PLATFORM(IOS_FAMILY)
&gt; &gt; 
&gt; &gt; Do these really need to be iOS specific? They seem pretty general. We really
&gt; &gt; should be aiming to have less platform specific code like this.
&gt; 
&gt; Agreed. I started to clean things up and it got messy; it&apos;s unclear if all
&gt; the callers want to include borders or not, and which want the interaction
&gt; rect vs. the content box rect.

Will you finish :) ? Since these are static, and don&apos;t rely on the Page at all, it might also be better to move them to their own ElementGeometry.h/cpp (or whatever) file. And/Or move them to WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552558</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-12 15:13:22 -0700</bug_when>
    <thetext>Not right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552780</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-14 17:26:38 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #11)
&gt; Not right now.

Bummer.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373985</attachid>
            <date>2019-07-11 17:57:27 -0700</date>
            <delta_ts>2019-07-11 17:59:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199741-20190711175727.patch</filename>
            <type>text/plain</type>
            <size>29216</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAxYTZiMTRmNDQ5ODcy
OTZlOWIzMGFhYzZkMmVmNGE4ZTE3ZWEzNC4uNGYxYzI4MjQ3OGQxNTVjM2ZiMzhhZmQ4NWQwYjRj
YTZlODFmYzQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTA3LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBD
YW4ndCBwbGFjZSBjYXJldCBvciBzZWxlY3QgaW4gY29udGVudCB0aGF0IG92ZXJmbG93cyBhIGNv
bnRlbnRlZGl0YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTk3NDEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTA1NDUyMzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYXJpb3VzIGNv
ZGUgcGF0aHMgZm9yIGVkaXRpbmcgdXNlZCByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSwgd2hpY2ggaXMgdGhlIGJvcmRlcgorICAgICAgICBib3ggb2YgdGhlIGVsZW1lbnQgKG9y
IGEgc2V0IG9mIGxpbmUgYm94ZXMgZm9yIGlubGluZSBlbGVtZW50cykgY29udmVydGVkIHRvIGFi
c29sdXRlCisgICAgICAgIGNvb3JkaW5hdGVzLiBUaGlzIGV4Y2x1ZGVzIG92ZXJmbG93IGNvbnRl
bnQsIGJ1dCBjb250ZW50ZWRpdGFibGUgbmVlZHMgdG8gYmUgYWJsZSB0bworICAgICAgICBwbGFj
ZSB0aGUgY2FyZXQgaW4gb3ZlcmZsb3cgY29udGVudCwgYW5kIGFsbG93IHNlbGVjdGlvbiByZWN0
cyB0byBiZSBpbiB0aGUgb3ZlcmZsb3cgYXJlYQorICAgICAgICAoaWYgdGhlIGVsZW1lbnQgaGFz
IHZpc2libGUgb3ZlcmZsb3cpLgorCisgICAgICAgIFRyeSB0byBjbGVhbiB0aGlzIHVwIGJ5IGFk
ZGluZyBzb21lIHN0YXRpYyBoZWxwZXJzIG9uIFdlYlBhZ2UgZm9yIGFjY2Vzc2luZyB0aGUgcmVs
ZXZhbnQKKyAgICAgICAgcmVjdHMsIGFuZCB1c2UgdGhlbSBpbiBjb2RlIGNhbGwgZnJvbSB2aXNp
YmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoKSwgYW5kCisgICAgICAgIGNvZGUgdGhh
dCBpcyBpbnB1dCB0byBzZWxlY3Rpb25DbGlwUmVjdC4KKworICAgICAgICBUZXN0czogZWRpdGlu
Zy9jYXJldC9pb3MvY2FyZXQtaW4tb3ZlcmZsb3ctYXJlYS5odG1sCisgICAgICAgICAgICAgICBl
ZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93LWFyZWEuaHRt
bAorICAgICAgICAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1leHRlbmRz
LWludG8tb3ZlcmZsb3ctYXJlYS5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OmVkaXRhYmxl
RWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgY29uc3QpOgorCiAyMDE5LTA3LTExICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDEzXSBF
bmFibGUgV2ViS2l0IGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAyZjEzNzRhMzY0MzRlNmUwNmFlNjZhNzM4
YWE4YzBjZjQ0M2NhNzAuLjhmZGQwMWU4MjZkMzg2ZTJhZGFhMmZhYjkwNGI5M2FkMDcyY2RmZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTktMDctMTEgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXSzJdIENhbid0IHBsYWNlIGNh
cmV0IG9yIHNlbGVjdCBpbiBjb250ZW50IHRoYXQgb3ZlcmZsb3dzIGEgY29udGVudGVkaXRhYmxl
IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTc0MQorICAgICAgICByZGFyOi8vcHJvYmxlbS81MDU0NTIzMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgY29kZSBwYXRocyBmb3Ig
ZWRpdGluZyB1c2VkIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLCB3aGljaCBp
cyB0aGUgYm9yZGVyCisgICAgICAgIGJveCBvZiB0aGUgZWxlbWVudCAob3IgYSBzZXQgb2YgbGlu
ZSBib3hlcyBmb3IgaW5saW5lIGVsZW1lbnRzKSBjb252ZXJ0ZWQgdG8gYWJzb2x1dGUKKyAgICAg
ICAgY29vcmRpbmF0ZXMuIFRoaXMgZXhjbHVkZXMgb3ZlcmZsb3cgY29udGVudCwgYnV0IGNvbnRl
bnRlZGl0YWJsZSBuZWVkcyB0byBiZSBhYmxlIHRvCisgICAgICAgIHBsYWNlIHRoZSBjYXJldCBp
biBvdmVyZmxvdyBjb250ZW50LCBhbmQgYWxsb3cgc2VsZWN0aW9uIHJlY3RzIHRvIGJlIGluIHRo
ZSBvdmVyZmxvdyBhcmVhCisgICAgICAgIChpZiB0aGUgZWxlbWVudCBoYXMgdmlzaWJsZSBvdmVy
ZmxvdykuCisKKyAgICAgICAgVHJ5IHRvIGNsZWFuIHRoaXMgdXAgYnkgYWRkaW5nIHNvbWUgc3Rh
dGljIGhlbHBlcnMgb24gV2ViUGFnZSBmb3IgYWNjZXNzaW5nIHRoZSByZWxldmFudAorICAgICAg
ICByZWN0cywgYW5kIHVzZSB0aGVtIGluIGNvZGUgY2FsbCBmcm9tIHZpc2libGVQb3NpdGlvbklu
Rm9jdXNlZE5vZGVGb3JQb2ludCgpLCBhbmQKKyAgICAgICAgY29kZSB0aGF0IGlzIGlucHV0IHRv
IHNlbGVjdGlvbkNsaXBSZWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjplbGVtZW50Qm91bmRzSW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OmNv
bnN0cmFpblBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cm9vdFZpZXdCb3VuZHNG
b3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWJzb2x1dGVJbnRlcmFjdGlv
bkJvdW5kc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyb290Vmlld0lu
dGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRp
c3BhdGNoU3ludGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OmlubmVyRnJhbWVRdWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6ZWxl
bWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOiBEZWxldGVkLgorCiAyMDE5LTA3LTExICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDEzXSBF
bmFibGUgV2ViS2l0IGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCmluZGV4IDM0ZGU4OTZlMzA5OWRhZTZjMTRmYzViZjA4M2E4ZTZlNDA5YTA1Y2EuLjc0ZmE2
NGIwN2NmZTczYmU0ODQ4OTIzNmJlNGM4NjZlYmJkZTM1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgSW50UmVjdCBEcmFn
Q2FyZXRDb250cm9sbGVyOjplZGl0YWJsZUVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChhdXRvKiB2aWV3ID0gZWRp
dGFibGVDb250YWluZXItPmRvY3VtZW50KCkudmlldygpKQotICAgICAgICByZXR1cm4gdmlldy0+
Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsK
KyAgICAgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKSk7IC8vIEZJWE1FOiBXcm9uZyBmb3IgZWxlbWVudHMgd2l0aCB2
aXNpYmxlIGxheW91dCBvdmVyZmxvdy4KIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNGUwY2U0YTQ3OTI3ZDYxNzZm
NWJhOWFhYTU1ZThhZDJmNDQzYjJhZC4uYTNiNjMzNjg2NDBhMjZmYjE2ODM3NDQ3MDljNDViMDU1
MGNmZTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTIwMiw3ICsxMjAyLDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZmlyc3RGbHVzaEFmdGVy
Q29tbWl0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdEZsdXNoQWZ0ZXJDb21taXQ7IH0KICAgICB2
b2lkIHNldEZpcnN0Rmx1c2hBZnRlckNvbW1pdChib29sIGYpIHsgbV9maXJzdEZsdXNoQWZ0ZXJD
b21taXQgPSBmOyB9Ci0gICAgCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIFRo
aXMgZXhjbHVkZXMgbGF5b3V0IG92ZXJmbG93LCBpbmNsdWRlcyBib3JkZXJzLgorICAgIHN0YXRp
YyBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3Qm91bmRzRm9yRWxlbWVudChjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Jik7CisgICAgLy8gVGhlc2UgaW5jbHVkZSBsYXlvdXQgb3ZlcmZsb3cgZm9yIG92
ZXJmbG93OnZpc2libGUgZWxlbWVudHMsIGJ1dCBleGNsdWRlIGJvcmRlcnMuCisgICAgc3RhdGlj
IFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVJbnRlcmFjdGlvbkJvdW5kc0ZvckVsZW1lbnQoY29u
c3QgV2ViQ29yZTo6RWxlbWVudCYpOworICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHJvb3RW
aWV3SW50ZXJhY3Rpb25Cb3VuZHNGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmKTsK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAK
QEAgLTEyMzUsNiArMTI0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNp
emVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0U2VsZWN0
aW9uUmVjdHNUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVmlldyosIFZlY3RvcjxXZWJDb3JlOjpT
ZWxlY3Rpb25SZWN0PiYpOworCiAgICAgdm9pZCBnZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
KEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIGdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMTE0Mzk4Y2QzNTM0NTIy
NjZhMTU3Yjk3ZmJkMjk1YTJmOWQ2NTIwMi4uMDJjM2UxYzMwYTU5ZDc4ZDM1MmI5OTA4ODNiNmYy
NDQ0MGMyYTliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRl
UG9zdAogICAgIGlmICghc2VsZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAgIGlmIChtX2ZvY3Vz
ZWRFbGVtZW50ICYmIG1fZm9jdXNlZEVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAg
IGF1dG8mIHJlbmRlcmVyID0gKm1fZm9jdXNlZEVsZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QgPSB2aWV3LT5jb250ZW50c1Rv
Um9vdFZpZXcocmVuZGVyZXIuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QgPSByb290Vmlld0ludGVyYWN0aW9u
Qm91bmRzRm9yRWxlbWVudCgqbV9mb2N1c2VkRWxlbWVudCk7CiAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS5jYXJldENvbG9yID0gcmVuZGVyZXIuc3R5bGUoKS5jYXJldENvbG9yKCk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgewpAQCAtMTI0OCwz
MyArMTI0OCwyNCBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJv
b2wgdXNlclNjYWxhYmxlKQogICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldEZvcmNlQWx3
YXlzVXNlclNjYWxhYmxlKHVzZXJTY2FsYWJsZSk7CiB9CiAKLXN0YXRpYyBGbG9hdFF1YWQgaW5u
ZXJGcmFtZVF1YWQoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBFbGVtZW50JiBmb2N1c2VkRWxl
bWVudCkKK3N0YXRpYyBJbnRSZWN0IGVsZW1lbnRCb3VuZHNJbkZyYW1lKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgRWxlbWVudCYgZm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgZnJhbWUuZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIgPSBudWxscHRyOwotICAgIGlmIChmb2N1c2VkRWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpIHx8IGZvY3VzZWRFbGVtZW50Lmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjppbnB1dFRhZykgfHwgZm9jdXNlZEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnNlbGVjdFRhZykpCi0gICAgICAgIHJlbmRlcmVyID0gZm9jdXNlZEVsZW1lbnQucmVu
ZGVyZXIoKTsKLSAgICBlbHNlIGlmIChhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZm9jdXNl
ZEVsZW1lbnQucm9vdEVkaXRhYmxlRWxlbWVudCgpKQotICAgICAgICByZW5kZXJlciA9IHJvb3RF
ZGl0YWJsZUVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgCi0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIEZsb2F0UXVhZCgpOworICAgIGlmIChmb2N1c2VkRWxlbWVudC5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpIHx8IGZvY3VzZWRFbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjppbnB1dFRhZykgfHwgZm9jdXNlZEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlbGVjdFRhZykpCisgICAgICAgIHJldHVybiBXZWJQYWdlOjphYnNvbHV0ZUludGVyYWN0
aW9uQm91bmRzRm9yRWxlbWVudChmb2N1c2VkRWxlbWVudCk7CiAKLSAgICBhdXRvJiBzdHlsZSA9
IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSAvKiB1c2UgdHJhbnNmb3JtcyovKTsKKyAgICBp
ZiAoYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZvY3VzZWRFbGVtZW50LnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFdlYlBhZ2U6OmFic29sdXRlSW50ZXJhY3Rpb25C
b3VuZHNGb3JFbGVtZW50KCpyb290RWRpdGFibGVFbGVtZW50KTsKIAotICAgIGJvdW5kaW5nQm94
Lm1vdmUoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwot
ICAgIGJvdW5kaW5nQm94LnNldFdpZHRoKGJvdW5kaW5nQm94LndpZHRoKCkgLSBzdHlsZS5ib3Jk
ZXJMZWZ0V2lkdGgoKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSk7Ci0gICAgYm91bmRpbmdC
b3guc2V0SGVpZ2h0KGJvdW5kaW5nQm94LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lk
dGgoKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwotCi0gICAgcmV0dXJuIEZsb2F0UXVhZChi
b3VuZGluZ0JveCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogc3RhdGljIEludFBvaW50IGNvbnN0
cmFpblBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBFbGVtZW50JiBmb2N1c2VkRWxlbWVudCkKIHsKICAgICBBU1NFUlQoJmZvY3VzZWRFbGVtZW50
LmRvY3VtZW50KCkgPT0gZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgY29uc3QgaW50IERFRkFVTFRf
Q09OU1RSQUlOX0lOU0VUID0gMjsKLSAgICBJbnRSZWN0IGlubmVyRnJhbWUgPSBpbm5lckZyYW1l
UXVhZChmcmFtZSwgZm9jdXNlZEVsZW1lbnQpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAg
SW50UmVjdCBpbm5lckZyYW1lID0gZWxlbWVudEJvdW5kc0luRnJhbWUoZnJhbWUsIGZvY3VzZWRF
bGVtZW50KTsKICAgICBJbnRQb2ludCBjb25zdHJhaW5lZFBvaW50ID0gcG9pbnQ7CiAKICAgICBp
bnQgbWluWCA9IGlubmVyRnJhbWUueCgpICsgREVGQVVMVF9DT05TVFJBSU5fSU5TRVQ7CkBAIC0x
NTY4LDcgKzE1NTksNyBAQCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5
Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUAogICAgIHJldHVybiAoYmFz
ZSA8IGV4dGVudCkgPyBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0
ZW50KSA6IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBleHRlbnQsIGJhc2UpOwog
fQogCi1zdGF0aWMgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyhjb25z
dCBFbGVtZW50JiBlbGVtZW50KQorSW50UmVjdCBXZWJQYWdlOjpyb290Vmlld0JvdW5kc0ZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IGVsZW1l
bnQuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC0xNTg1LDYgKzE1NzYs
NTQgQEAgc3RhdGljIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3
KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKIH0KIAorSW50UmVjdCBXZWJQ
YWdlOjphYnNvbHV0ZUludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGF1dG8qIGZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIHZpZXcg
PSBmcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVy
ZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoaXM8UmVuZGVyQm94PigqcmVuZGVy
ZXIpKSB7CisgICAgICAgIGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVy
KTsKKworICAgICAgICBGbG9hdFJlY3QgcmVjdDsKKyAgICAgICAgLy8gRklYTUU6IHdhbnQgYm9y
ZGVycyBvciBub3Q/CisgICAgICAgIGlmIChib3guc3R5bGUoKS5pc092ZXJmbG93VmlzaWJsZSgp
KQorICAgICAgICAgICAgcmVjdCA9IGJveC5sYXlvdXRPdmVyZmxvd1JlY3QoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVjdCA9IGJveC5jbGllbnRCb3hSZWN0KCk7CisgICAgICAgIHJl
dHVybiBib3gubG9jYWxUb0Fic29sdXRlUXVhZChyZWN0KS5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
OworICAgIH0KKworICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisgICAgRmxv
YXRSZWN0IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRy
dWUgLyogdXNlIHRyYW5zZm9ybXMqLyk7CisgICAgLy8gVGhpcyBpcyB3cm9uZy4gSXQncyBzdWJ0
cmFjdGluZyBib3JkZXJzIGFmdGVyIGNvbnZlcnRpbmcgdG8gYWJzb2x1dGUgY29vcmRzIG9uIHNv
bWV0aGluZyB0aGF0IHByb2JhYmx5IGRvZXNuJ3QgcmVwcmVzZW50IGEgcmVjdGFuZ3VsYXIgZWxl
bWVudC4KKyAgICBib3VuZGluZ0JveC5tb3ZlKHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCBzdHls
ZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAgICBib3VuZGluZ0JveC5zZXRXaWR0aChib3VuZGluZ0Jv
eC53aWR0aCgpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkgLSBzdHlsZS5ib3JkZXJSaWdodFdp
ZHRoKCkpOworICAgIGJvdW5kaW5nQm94LnNldEhlaWdodChib3VuZGluZ0JveC5oZWlnaHQoKSAt
IHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAg
ICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ0JveCk7Cit9CisKK0ludFJlY3QgV2Vi
UGFnZTo6cm9vdFZpZXdJbnRlcmFjdGlvbkJvdW5kc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBhdXRvKiBmcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiB2aWV3
ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGFic29sdXRlSW50ZXJhY3Rpb25C
b3VuZHNGb3JFbGVtZW50KGVsZW1lbnQpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpjbGVhclNlbGVj
dGlvbigpCiB7CiAgICAgbV9zdGFydGluZ0dlc3R1cmVSYW5nZSA9IG51bGxwdHI7CkBAIC0xNTk5
LDcgKzE2MzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNG
b3JTZWxlY3Rpb25HZXN0dXJlKFNlbGVjdGlvblRvdWNoIHRvdQogCiAgICAgSW50UmVjdCBmb2N1
c2VkRWxlbWVudFJlY3Q7CiAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQpCi0gICAgICAgIGZvY3Vz
ZWRFbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCptX2ZvY3Vz
ZWRFbGVtZW50KTsKKyAgICAgICAgZm9jdXNlZEVsZW1lbnRSZWN0ID0gcm9vdFZpZXdJbnRlcmFj
dGlvbkJvdW5kc0ZvckVsZW1lbnQoKm1fZm9jdXNlZEVsZW1lbnQpOwogCiAgICAgaWYgKGZvY3Vz
ZWRFbGVtZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MzAsNyArMjg2
OSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvCiAgICAgaW5mb3JtYXRpb24ubGFzdEludGVy
YWN0aW9uTG9jYXRpb24gPSBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogCiAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gbV9mb2N1c2VkRWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBp
bmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCptX2ZvY3VzZWRFbGVtZW50KTsKKyAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFJlY3QgPSBy
b290Vmlld0ludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudCgqbV9mb2N1c2VkRWxlbWVudCk7CiAg
ICAgICAgIGluZm9ybWF0aW9uLm5vZGVGb250U2l6ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOwogCiAgICAgICAgIGJvb2wgaW5GaXhlZCA9IGZh
bHNlOwpAQCAtMjg0OSwxMSArMjg4OCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmdldEZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24oRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpbwogICAg
IGluZm9ybWF0aW9uLmFsbG93c1VzZXJTY2FsaW5nID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24u
YWxsb3dzVXNlclNjYWxpbmcoKTsKICAgICBpbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZ0ln
bm9yaW5nQWx3YXlzU2NhbGFibGUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hbGxvd3NVc2Vy
U2NhbGluZ0lnbm9yaW5nQWx3YXlzU2NhbGFibGUoKTsKICAgICBpZiAoYXV0byogbmV4dEVsZW1l
bnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9mb2N1c2VkRWxlbWVudC5nZXQoKSwgKm1fcGFn
ZSwgdHJ1ZSkpIHsKLSAgICAgICAgaW5mb3JtYXRpb24ubmV4dE5vZGVSZWN0ID0gZWxlbWVudFJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKm5leHRFbGVtZW50KTsKKyAgICAgICAgaW5mb3JtYXRp
b24ubmV4dE5vZGVSZWN0ID0gcm9vdFZpZXdCb3VuZHNGb3JFbGVtZW50KCpuZXh0RWxlbWVudCk7
CiAgICAgICAgIGluZm9ybWF0aW9uLmhhc05leHROb2RlID0gdHJ1ZTsKICAgICB9CiAgICAgaWYg
KGF1dG8qIHByZXZpb3VzRWxlbWVudCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2ZvY3VzZWRF
bGVtZW50LmdldCgpLCAqbV9wYWdlLCBmYWxzZSkpIHsKLSAgICAgICAgaW5mb3JtYXRpb24ucHJl
dmlvdXNOb2RlUmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCpwcmV2aW91
c0VsZW1lbnQpOworICAgICAgICBpbmZvcm1hdGlvbi5wcmV2aW91c05vZGVSZWN0ID0gcm9vdFZp
ZXdCb3VuZHNGb3JFbGVtZW50KCpwcmV2aW91c0VsZW1lbnQpOwogICAgICAgICBpbmZvcm1hdGlv
bi5oYXNQcmV2aW91c05vZGUgPSB0cnVlOwogICAgIH0KICAgICBpbmZvcm1hdGlvbi5mb2N1c2Vk
RWxlbWVudElkZW50aWZpZXIgPSBtX2N1cnJlbnRGb2N1c2VkRWxlbWVudElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNGNmZGM4OGE3NmNhNmY2M2MxZjkwZDg2NDJlMTA3MjAwYjA4YTgyNi4uYzBkZmVlY2Zm
NzA5YWEzZWRkMTc3ZTJlYzg3NmI1OGQ5ZGU5NDY3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDE5LTA3LTExICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1MgV0syXSBDYW4ndCBwbGFjZSBjYXJldCBvciBzZWxlY3QgaW4gY29udGVudCB0aGF0
IG92ZXJmbG93cyBhIGNvbnRlbnRlZGl0YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NDEKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vNTA1NDUyMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFJlLWVuYWJsZSBlZGl0aW5nL2NhcmV0L2lvcywgZml4aW5nIHRoZSByZXN1
bHQgb2YgZW1vamkuaHRtbCB3aGljaCBmb3Igc29tZSByZWFzb24gd2FzCisgICAgICAgIGNoZWNr
ZWQgaW4gYXMgYW4gaHRtbCBmaWxlICh0aGUgdGVzdCBzdGlsbCBmYWlscykuCisKKyAgICAgICAg
KiBlZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1pbi1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9jYXJldC9pb3MvY2FyZXQtaW4tb3ZlcmZsb3ctYXJl
YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NhcmV0L2lvcy9lbW9qaS1leHBlY3Rl
ZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0L2lvcy9lbW9qaS1l
eHBlY3RlZC5odG1sLgorICAgICAgICAqIGVkaXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBv
c2l0aW9uLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9jYXJl
dC9pb3MvZml4ZWQtY2FyZXQtcG9zaXRpb24tYWZ0ZXItc2Nyb2xsLmh0bWw6CisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNl
LXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tZXh0ZW5kcy1pbnRvLW92ZXJmbG93LWFyZWEtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0
aW9uLWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOS0wNy0xMSAgUnlhbiBIYWRk
YWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGVzdCBleHBlY3RhdGlv
bnMgYW5kIGJhc2VsaW5lcyBmb3IgaU9TIDEzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL2NhcmV0L2lvcy9jYXJldC1pbi1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93LWFyZWEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg5MWRhMTMzMmE0MWIyZGEyNWRhMDZiYTZmYjhjMjU4NDZkNzEwMWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1p
bi1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCits
aW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitDYXJldCByZWN0OiAobGVmdCA9IDM5LCB0
b3AgPSAzODYsIHdpZHRoID0gMiwgaGVpZ2h0ID0gMTkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1pbi1vdmVyZmxvdy1hcmVhLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1pbi1vdmVyZmxvdy1hcmVhLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzJmZTJhMWQ4MjY1NTQyMTVhYTRjM2Q0OTE4OGI0NzlhNWNjYjExYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93
LWFyZWEuaHRtbApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhl
YWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xLCBtYXhpbXVtLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iPgor
ICAgIDx0aXRsZT48L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgI2VkaXRhYmxlIHsKKyAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5
OiBtb25vc3BhY2U7CisgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41ZW07CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC5vdXRwdXQgeworICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDYw
cHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiByZWN0VG9TdHJpbmcocmVjdCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGAobGVmdCA9ICR7TWF0aC5yb3VuZChyZWN0LmxlZnQpfSwgdG9wID0gJHtN
YXRoLnJvdW5kKHJlY3QudG9wKX0sIHdpZHRoID0gJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfSwg
aGVpZ2h0ID0gJHtNYXRoLnJvdW5kKHJlY3QuaGVpZ2h0KX0pYDsKKyAgICAgICAgfQorCisgICAg
ICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxlJyk7CisgICAgICAg
ICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCgyNSwg
MjUpOworCisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci50YXBBdCgyNSwgNDAwKTsKKyAgICAg
ICAgICAgIGNvbnN0IGNhcmV0UmVjdCA9IGF3YWl0IFVJSGVscGVyLmdldFVJQ2FyZXRSZWN0KCk7
CisKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjYXJldC1yZWN0IikudGV4
dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoY2FyZXRSZWN0KTsKKworICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcign
bG9hZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgfSwg
ZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWRp
dGFibGUiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxi
cj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4K
KyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAg
ICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAg
ICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAg
bGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGlu
ZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxi
cj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4K
KyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICA8L2Rpdj4KKworPGRpdiBj
bGFzcz0ib3V0cHV0Ij5DYXJldCByZWN0OiA8c3BhbiBpZD0iY2FyZXQtcmVjdCI+PC9zcGFuPjwv
ZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2NhcmV0L2lvcy9lbW9qaS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9jYXJl
dC9pb3MvZW1vamktZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWY1OWU5ZTA4OTQ3MmI4ZThiMTZhNjY5ZDQ0ZGYzMDYwYzE2YTQ1OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0
L2lvcy9lbW9qaS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAot
UEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlz
IHdpdGhpbiAxIG9mIDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFT
UyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlzIHdp
dGhpbiAxIG9mIDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFTUyBj
dXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhp
biAxIG9mIDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFTUyBjdXJy
ZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2Nh
cmV0L2lvcy9lbW9qaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0L2lv
cy9lbW9qaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY1OWU5ZTA4OTQ3MmI4ZThiMTZhNjY5
ZDQ0ZGYzMDYwYzE2YTQ1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
Y2FyZXQvaW9zL2Vtb2ppLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitQQVNTIGN1cnJl
bnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEg
b2YgMTUKK1BBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRX
aWR0aCBpcyB3aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2Yg
MTUKK1BBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRXaWR0
aCBpcyB3aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUK
K1BBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRXaWR0aCBp
cyB3aXRoaW4gMSBvZiAxNQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2Zp
eGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2NhcmV0L2lvcy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwtZXhw
ZWN0ZWQudHh0CmluZGV4IGQ0NzM2NDUzNTkwNTQwNjI0NDk4NTJkZDZjN2UwZWMwZGRmMjM4ZjYu
LjNkMzQ5MGU2OThiY2Q3NWMwMjhjNTY0MTc1YzJlMGI1YmEzNjdlMGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNj
cm9sbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvZml4
ZWQtY2FyZXQtcG9zaXRpb24tYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcg
QEAgUEFTUyBpbml0aWFsQ2FyZXRSZWN0LnRvcCBpcyAyMQogUEFTUyBpbml0aWFsQ2FyZXRSZWN0
LndpZHRoIGlzIDMKIFBBU1MgaW5pdGlhbENhcmV0UmVjdC5oZWlnaHQgaXMgMTUKIFBBU1MgZmlu
YWxDYXJldFJlY3QubGVmdCBpcyA2Ci1QQVNTIGZpbmFsQ2FyZXRSZWN0LnRvcCBpcyA1MDIxCitQ
QVNTIGZpbmFsQ2FyZXRSZWN0LnRvcCBpcyA0OTc3CiBQQVNTIGZpbmFsQ2FyZXRSZWN0LndpZHRo
IGlzIDMKIFBBU1MgZmluYWxDYXJldFJlY3QuaGVpZ2h0IGlzIDE1CiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0L2lv
cy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC5odG1sCmlu
ZGV4IGZhNWIyN2E2ZjE3NGNkYjgwNjUzNjM0Y2ViMTEwMjkwNGUxMGZkYTUuLjZhNjAzMjM4ZDBi
MzA3MDk0MTNiMzAwMDkwMTZmMmQzOTBmM2I0ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFm
dGVyLXNjcm9sbC5odG1sCkBAIC01MSw3ICs1MSw3IEBAIGpzVGVzdElzQXN5bmMgPSB0cnVlOwog
ICAgIC50aGVuKChyZWN0KSA9PiB7CiAgICAgICAgIGZpbmFsQ2FyZXRSZWN0ID0gcmVjdDsKICAg
ICAgICAgc2hvdWxkQmUoImZpbmFsQ2FyZXRSZWN0LmxlZnQiLCAiNiIpOwotICAgICAgICBzaG91
bGRCZSgiZmluYWxDYXJldFJlY3QudG9wIiwgIjUwMjEiKTsKKyAgICAgICAgc2hvdWxkQmUoImZp
bmFsQ2FyZXRSZWN0LnRvcCIsICI0OTc3Iik7CiAgICAgICAgIHNob3VsZEJlKCJmaW5hbENhcmV0
UmVjdC53aWR0aCIsICIzIik7CiAgICAgICAgIHNob3VsZEJlKCJmaW5hbENhcmV0UmVjdC5oZWln
aHQiLCAiMTUiKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93LWFy
ZWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNl
LXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWI1
YTViODBiY2EzYmMxM2VkZWJhMDk5OTIzZGVjNDM3MjIxYmU3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVy
Zmxvdy1hcmVhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitsaW5lCitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCits
aW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitTZWxlY3Rpb24gYmVmb3JlIHRhcDogKG5vZGUgYXQg
MiMxMSwgW29iamVjdCBUZXh0XSMxMSkKK1NlbGVjdGlvbiBhZnRlciB0YXA6IChub2RlIGF0IDQw
IzEzLCBbb2JqZWN0IFRleHRdIzEzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93
LWFyZWEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTY3MzI0MGUyMTZiYTNiMWIwYTcwYTU4MzVlZmFjZjVk
ZTU4MjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
aW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLmh0bWwKQEAgLTAsMCArMSw5MCBA
QAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVW
aWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgbWF4aW11
bS1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIj4KKyAgICA8dGl0bGU+PC90aXRsZT4KKyAgICA8
c3R5bGU+CisgICAgICAgICNlZGl0YWJsZSB7CisgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7CisgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICAgICAgICAgICAg
bGluZS1oZWlnaHQ6IDEuNWVtOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAub3V0cHV0
IHsKKyAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA2MHB4OworICAgICAgICB9CisgICAgPC9zdHls
ZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2VsZWN0
aW9uVG9TdHJpbmcoY29udGFpbmVyKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBzZWxl
Y3Rpb24gPSBnZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdl
Q291bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuICIobm8gc2VsZWN0aW9uKSI7CisKKyAgICAg
ICAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgICAg
ICBjb25zdCBub2RlSW5kZXggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGNvbnRhaW5l
ci5jaGlsZE5vZGVzLCByYW5nZS5zdGFydENvbnRhaW5lcik7CisKKyAgICAgICAgICAgIHJldHVy
biBgKG5vZGUgYXQgJHtub2RlSW5kZXh9IyR7cmFuZ2Uuc3RhcnRPZmZzZXR9LCAke3JhbmdlLmVu
ZENvbnRhaW5lcn0jJHtyYW5nZS5lbmRPZmZzZXR9KWA7CisgICAgICAgIH0KKworICAgICAgICBh
c3luYyBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IGNvbnRh
aW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0YWJsZScpOworICAgICAgICAgICAg
YXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMjUsIDI1KTsK
KyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYmVmb3JlIiku
dGV4dENvbnRlbnQgPSBzZWxlY3Rpb25Ub1N0cmluZyhjb250YWluZXIpOworCisgICAgICAgICAg
ICBhd2FpdCBVSUhlbHBlci50YXBBdCgyNSwgNDAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYWZ0ZXIiKS50ZXh0Q29udGVudCA9IHNlbGVjdGlvblRv
U3RyaW5nKGNvbnRhaW5lcik7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVkaXRhYmxlIiBjb250ZW50ZWRp
dGFibGU+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8
YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+
CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+Cisg
ICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAg
ICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAg
IGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxp
bmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8
YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+
CisgICAgICAgIGxpbmU8YnI+CisgICAgPC9kaXY+CisKKzxkaXYgY2xhc3M9Im91dHB1dCI+U2Vs
ZWN0aW9uIGJlZm9yZSB0YXA6IDxzcGFuIGlkPSJzZWxlY3Rpb24tYmVmb3JlIj48L3NwYW4+PC9k
aXY+Cis8ZGl2IGNsYXNzPSJvdXRwdXQiPlNlbGVjdGlvbiBhZnRlciB0YXA6IDxzcGFuIGlkPSJz
ZWxlY3Rpb24tYWZ0ZXIiPjwvc3Bhbj48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1leHRlbmRz
LWludG8tb3ZlcmZsb3ctYXJlYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3Mvc2VsZWN0aW9uLWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YzdkZWUzYmQ1NGQ1MTYxZWYyODhjNWNlYjc0ODZmNTJjN2YzOWIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3Nl
bGVjdGlvbi1leHRlbmRzLWludG8tb3ZlcmZsb3ctYXJlYS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyNyBAQAorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQor
bGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGlu
ZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorU2VsZWN0
aW9uIHJlY3RzOiAobGVmdCA9IDksIHRvcCA9IDM4Niwgd2lkdGggPSAzMiwgaGVpZ2h0ID0gMTkp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0aW9u
LWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3Mvc2VsZWN0aW9uLWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmM5ZmU4MzZlNGI4MjczMDBhOTYzY2IyNmIxZjAyODM4MTZmYjcxNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24t
ZXh0ZW5kcy1pbnRvLW92ZXJmbG93LWFyZWEuaHRtbApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZ
UEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRy
dWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBtYXhpbXVtLXNjYWxlPTEs
IHNocmluay10by1maXQ9bm8iPgorICAgIDx0aXRsZT48L3RpdGxlPgorICAgIDxzdHlsZT4KKyAg
ICAgICAgI2VkaXRhYmxlIHsKKyAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAg
ICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgICAgICAgICAgICBsaW5lLWhlaWdo
dDogMS41ZW07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC5vdXRwdXQgeworICAgICAg
ICAgICAgbWFyZ2luLWxlZnQ6IDYwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzZWxlY3RUZXh0QXQodGFw
WCwgdGFwWSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4geworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAorICAgICAg
ICAgICAgICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIubG9uZ1ByZXNzQXRQb2ludCgke3RhcFh9LCAke3RhcFl9LCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0
ZSgiRG9uZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pKCk7YCwgcmVzb2x2ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYChsZWZ0ID0gJHtNYXRoLnJvdW5kKHJlY3QubGVmdCl9LCB0b3AgPSAke01hdGgucm91
bmQocmVjdC50b3ApfSwgd2lkdGggPSAke01hdGgucm91bmQocmVjdC53aWR0aCl9LCBoZWlnaHQg
PSAke01hdGgucm91bmQocmVjdC5oZWlnaHQpfSlgOworICAgICAgICB9CisKKyAgICAgICAgYXN5
bmMgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBjb250YWlu
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdGFibGUnKTsKKyAgICAgICAgICAgIGF3
YWl0IFVJSGVscGVyLmFjdGl2YXRlQW5kV2FpdEZvcklucHV0U2Vzc2lvbkF0KDI1LCAyNSk7CisK
KyAgICAgICAgICAgIGF3YWl0IHNlbGVjdFRleHRBdCgyNSwgNDAwKQorICAgICAgICAgICAgY29u
c3Qgc2VsZWN0aW9uUmVjdHMgPSBhd2FpdCBVSUhlbHBlci5nZXRVSVNlbGVjdGlvblJlY3RzKCk7
CisgICAgICAgICAgICBsZXQgcmVjdHNTdHJpbmcgPSAiIjsKKyAgICAgICAgICAgIGZvciAobGV0
IHJlY3Qgb2Ygc2VsZWN0aW9uUmVjdHMpCisgICAgICAgICAgICAgICAgcmVjdHNTdHJpbmcgKz0g
cmVjdFRvU3RyaW5nKHJlY3QpICsgJyAnOworCisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCIjc2VsZWN0aW9uLXJlY3RzIikudGV4dENvbnRlbnQgPSByZWN0c1N0cmluZzsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBydW5UZXN0
KCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxkaXYgaWQ9ImVkaXRhYmxlIiBjb250ZW50ZWRpdGFibGU+CisgICAgICAgIGxpbmU8YnI+
CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+Cisg
ICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAg
ICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAg
IGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxp
bmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8
YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+
CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+Cisg
ICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAg
PC9kaXY+CisKKzxkaXYgY2xhc3M9Im91dHB1dCI+U2VsZWN0aW9uIHJlY3RzOiA8c3BhbiBpZD0i
c2VsZWN0aW9uLXJlY3RzIj48L3NwYW4+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwMjliNWMz
N2I3ODA3ZmJhOTk4ZTNlNTFiZGFiYzVjN2EzOTAyYWI5Li5iMDFhNjYwZWQ5NTliMzJiYTBhNTI0
NWJkMzgwOTAxZDNiYmFlZGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xOCw2ICsxOCw3IEBAIGZhc3QvdmlzdWFsLXZpZXdwb3J0L2lv
cy8gWyBQYXNzIF0KIHNjcm9sbGluZ2Nvb3JkaW5hdG9yIFsgUGFzcyBdCiBzY3JvbGxpbmdjb29y
ZGluYXRvci9tYWMgWyBTa2lwIF0KIGZhc3Qvd2ViLXNoYXJlIFsgUGFzcyBdCitlZGl0aW5nL2Nh
cmV0L2lvcyBbIFBhc3MgXQogZWRpdGluZy9maW5kIFsgUGFzcyBdCiBlZGl0aW5nL2lucHV0L2lv
cyBbIFBhc3MgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2lvcyBbIFBhc3MgXQpAQCAtMTM2Miw0ICsx
MzYzLDcgQEAgZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUtMDA0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIGZhc3Qvc2Nyb2xsaW5nL2lvcy9oaXQtdGVzdGluZy1pZnJhbWUtMDA2
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNTI2OTkzMTg+
IGZhc3Qvc2Nyb2xsaW5nL2lvcy9ib2R5LW92ZXJmbG93LWhpZGRlbi1oZWlnaHQtMTAwLXBlcmNl
bnQta2V5Ym9hcmQuaHRtbCBpcyB0aW1pbmcgb3V0Ci1mYXN0L3Njcm9sbGluZy9pb3MvYm9keS1v
dmVyZmxvdy1oaWRkZW4taGVpZ2h0LTEwMC1wZXJjZW50LWtleWJvYXJkLmh0bWwgWyBQYXNzIFRp
bWVvdXQgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2Zhc3Qvc2Nyb2xsaW5nL2lvcy9i
b2R5LW92ZXJmbG93LWhpZGRlbi1oZWlnaHQtMTAwLXBlcmNlbnQta2V5Ym9hcmQuaHRtbCBbIFBh
c3MgVGltZW91dCBdCisKKyMgVGVzdCBzZWVtcyBicm9rZW4gaW4gZ2VuZXJhbAorZWRpdGluZy9j
YXJldC9pb3MvZW1vamkuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373986</attachid>
            <date>2019-07-11 17:59:19 -0700</date>
            <delta_ts>2019-07-12 12:58:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199741-20190711175918.patch</filename>
            <type>text/plain</type>
            <size>28988</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAxYTZiMTRmNDQ5ODcy
OTZlOWIzMGFhYzZkMmVmNGE4ZTE3ZWEzNC4uNGYxYzI4MjQ3OGQxNTVjM2ZiMzhhZmQ4NWQwYjRj
YTZlODFmYzQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTA3LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBD
YW4ndCBwbGFjZSBjYXJldCBvciBzZWxlY3QgaW4gY29udGVudCB0aGF0IG92ZXJmbG93cyBhIGNv
bnRlbnRlZGl0YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTk3NDEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTA1NDUyMzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYXJpb3VzIGNv
ZGUgcGF0aHMgZm9yIGVkaXRpbmcgdXNlZCByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSwgd2hpY2ggaXMgdGhlIGJvcmRlcgorICAgICAgICBib3ggb2YgdGhlIGVsZW1lbnQgKG9y
IGEgc2V0IG9mIGxpbmUgYm94ZXMgZm9yIGlubGluZSBlbGVtZW50cykgY29udmVydGVkIHRvIGFi
c29sdXRlCisgICAgICAgIGNvb3JkaW5hdGVzLiBUaGlzIGV4Y2x1ZGVzIG92ZXJmbG93IGNvbnRl
bnQsIGJ1dCBjb250ZW50ZWRpdGFibGUgbmVlZHMgdG8gYmUgYWJsZSB0bworICAgICAgICBwbGFj
ZSB0aGUgY2FyZXQgaW4gb3ZlcmZsb3cgY29udGVudCwgYW5kIGFsbG93IHNlbGVjdGlvbiByZWN0
cyB0byBiZSBpbiB0aGUgb3ZlcmZsb3cgYXJlYQorICAgICAgICAoaWYgdGhlIGVsZW1lbnQgaGFz
IHZpc2libGUgb3ZlcmZsb3cpLgorCisgICAgICAgIFRyeSB0byBjbGVhbiB0aGlzIHVwIGJ5IGFk
ZGluZyBzb21lIHN0YXRpYyBoZWxwZXJzIG9uIFdlYlBhZ2UgZm9yIGFjY2Vzc2luZyB0aGUgcmVs
ZXZhbnQKKyAgICAgICAgcmVjdHMsIGFuZCB1c2UgdGhlbSBpbiBjb2RlIGNhbGwgZnJvbSB2aXNp
YmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoKSwgYW5kCisgICAgICAgIGNvZGUgdGhh
dCBpcyBpbnB1dCB0byBzZWxlY3Rpb25DbGlwUmVjdC4KKworICAgICAgICBUZXN0czogZWRpdGlu
Zy9jYXJldC9pb3MvY2FyZXQtaW4tb3ZlcmZsb3ctYXJlYS5odG1sCisgICAgICAgICAgICAgICBl
ZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93LWFyZWEuaHRt
bAorICAgICAgICAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1leHRlbmRz
LWludG8tb3ZlcmZsb3ctYXJlYS5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OmVkaXRhYmxl
RWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgY29uc3QpOgorCiAyMDE5LTA3LTExICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDEzXSBF
bmFibGUgV2ViS2l0IGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAyZjEzNzRhMzY0MzRlNmUwNmFlNjZhNzM4
YWE4YzBjZjQ0M2NhNzAuLjhmZGQwMWU4MjZkMzg2ZTJhZGFhMmZhYjkwNGI5M2FkMDcyY2RmZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTktMDctMTEgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXSzJdIENhbid0IHBsYWNlIGNh
cmV0IG9yIHNlbGVjdCBpbiBjb250ZW50IHRoYXQgb3ZlcmZsb3dzIGEgY29udGVudGVkaXRhYmxl
IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTc0MQorICAgICAgICByZGFyOi8vcHJvYmxlbS81MDU0NTIzMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgY29kZSBwYXRocyBmb3Ig
ZWRpdGluZyB1c2VkIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLCB3aGljaCBp
cyB0aGUgYm9yZGVyCisgICAgICAgIGJveCBvZiB0aGUgZWxlbWVudCAob3IgYSBzZXQgb2YgbGlu
ZSBib3hlcyBmb3IgaW5saW5lIGVsZW1lbnRzKSBjb252ZXJ0ZWQgdG8gYWJzb2x1dGUKKyAgICAg
ICAgY29vcmRpbmF0ZXMuIFRoaXMgZXhjbHVkZXMgb3ZlcmZsb3cgY29udGVudCwgYnV0IGNvbnRl
bnRlZGl0YWJsZSBuZWVkcyB0byBiZSBhYmxlIHRvCisgICAgICAgIHBsYWNlIHRoZSBjYXJldCBp
biBvdmVyZmxvdyBjb250ZW50LCBhbmQgYWxsb3cgc2VsZWN0aW9uIHJlY3RzIHRvIGJlIGluIHRo
ZSBvdmVyZmxvdyBhcmVhCisgICAgICAgIChpZiB0aGUgZWxlbWVudCBoYXMgdmlzaWJsZSBvdmVy
ZmxvdykuCisKKyAgICAgICAgVHJ5IHRvIGNsZWFuIHRoaXMgdXAgYnkgYWRkaW5nIHNvbWUgc3Rh
dGljIGhlbHBlcnMgb24gV2ViUGFnZSBmb3IgYWNjZXNzaW5nIHRoZSByZWxldmFudAorICAgICAg
ICByZWN0cywgYW5kIHVzZSB0aGVtIGluIGNvZGUgY2FsbCBmcm9tIHZpc2libGVQb3NpdGlvbklu
Rm9jdXNlZE5vZGVGb3JQb2ludCgpLCBhbmQKKyAgICAgICAgY29kZSB0aGF0IGlzIGlucHV0IHRv
IHNlbGVjdGlvbkNsaXBSZWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjplbGVtZW50Qm91bmRzSW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OmNv
bnN0cmFpblBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cm9vdFZpZXdCb3VuZHNG
b3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWJzb2x1dGVJbnRlcmFjdGlv
bkJvdW5kc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyb290Vmlld0lu
dGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRp
c3BhdGNoU3ludGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OmlubmVyRnJhbWVRdWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6ZWxl
bWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOiBEZWxldGVkLgorCiAyMDE5LTA3LTExICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDEzXSBF
bmFibGUgV2ViS2l0IGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCmluZGV4IDM0ZGU4OTZlMzA5OWRhZTZjMTRmYzViZjA4M2E4ZTZlNDA5YTA1Y2EuLjc0ZmE2
NGIwN2NmZTczYmU0ODQ4OTIzNmJlNGM4NjZlYmJkZTM1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgSW50UmVjdCBEcmFn
Q2FyZXRDb250cm9sbGVyOjplZGl0YWJsZUVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChhdXRvKiB2aWV3ID0gZWRp
dGFibGVDb250YWluZXItPmRvY3VtZW50KCkudmlldygpKQotICAgICAgICByZXR1cm4gdmlldy0+
Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsK
KyAgICAgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKSk7IC8vIEZJWE1FOiBXcm9uZyBmb3IgZWxlbWVudHMgd2l0aCB2
aXNpYmxlIGxheW91dCBvdmVyZmxvdy4KIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNGUwY2U0YTQ3OTI3ZDYxNzZm
NWJhOWFhYTU1ZThhZDJmNDQzYjJhZC4uYTNiNjMzNjg2NDBhMjZmYjE2ODM3NDQ3MDljNDViMDU1
MGNmZTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTIwMiw3ICsxMjAyLDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZmlyc3RGbHVzaEFmdGVy
Q29tbWl0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdEZsdXNoQWZ0ZXJDb21taXQ7IH0KICAgICB2
b2lkIHNldEZpcnN0Rmx1c2hBZnRlckNvbW1pdChib29sIGYpIHsgbV9maXJzdEZsdXNoQWZ0ZXJD
b21taXQgPSBmOyB9Ci0gICAgCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIFRo
aXMgZXhjbHVkZXMgbGF5b3V0IG92ZXJmbG93LCBpbmNsdWRlcyBib3JkZXJzLgorICAgIHN0YXRp
YyBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3Qm91bmRzRm9yRWxlbWVudChjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Jik7CisgICAgLy8gVGhlc2UgaW5jbHVkZSBsYXlvdXQgb3ZlcmZsb3cgZm9yIG92
ZXJmbG93OnZpc2libGUgZWxlbWVudHMsIGJ1dCBleGNsdWRlIGJvcmRlcnMuCisgICAgc3RhdGlj
IFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVJbnRlcmFjdGlvbkJvdW5kc0ZvckVsZW1lbnQoY29u
c3QgV2ViQ29yZTo6RWxlbWVudCYpOworICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHJvb3RW
aWV3SW50ZXJhY3Rpb25Cb3VuZHNGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmKTsK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAK
QEAgLTEyMzUsNiArMTI0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNp
emVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0U2VsZWN0
aW9uUmVjdHNUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVmlldyosIFZlY3RvcjxXZWJDb3JlOjpT
ZWxlY3Rpb25SZWN0PiYpOworCiAgICAgdm9pZCBnZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
KEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIGdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMTE0Mzk4Y2QzNTM0NTIy
NjZhMTU3Yjk3ZmJkMjk1YTJmOWQ2NTIwMi4uMDJjM2UxYzMwYTU5ZDc4ZDM1MmI5OTA4ODNiNmYy
NDQ0MGMyYTliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRl
UG9zdAogICAgIGlmICghc2VsZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAgIGlmIChtX2ZvY3Vz
ZWRFbGVtZW50ICYmIG1fZm9jdXNlZEVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAg
IGF1dG8mIHJlbmRlcmVyID0gKm1fZm9jdXNlZEVsZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QgPSB2aWV3LT5jb250ZW50c1Rv
Um9vdFZpZXcocmVuZGVyZXIuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QgPSByb290Vmlld0ludGVyYWN0aW9u
Qm91bmRzRm9yRWxlbWVudCgqbV9mb2N1c2VkRWxlbWVudCk7CiAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS5jYXJldENvbG9yID0gcmVuZGVyZXIuc3R5bGUoKS5jYXJldENvbG9yKCk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgewpAQCAtMTI0OCwz
MyArMTI0OCwyNCBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJv
b2wgdXNlclNjYWxhYmxlKQogICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldEZvcmNlQWx3
YXlzVXNlclNjYWxhYmxlKHVzZXJTY2FsYWJsZSk7CiB9CiAKLXN0YXRpYyBGbG9hdFF1YWQgaW5u
ZXJGcmFtZVF1YWQoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBFbGVtZW50JiBmb2N1c2VkRWxl
bWVudCkKK3N0YXRpYyBJbnRSZWN0IGVsZW1lbnRCb3VuZHNJbkZyYW1lKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgRWxlbWVudCYgZm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgZnJhbWUuZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIgPSBudWxscHRyOwotICAgIGlmIChmb2N1c2VkRWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpIHx8IGZvY3VzZWRFbGVtZW50Lmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjppbnB1dFRhZykgfHwgZm9jdXNlZEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnNlbGVjdFRhZykpCi0gICAgICAgIHJlbmRlcmVyID0gZm9jdXNlZEVsZW1lbnQucmVu
ZGVyZXIoKTsKLSAgICBlbHNlIGlmIChhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZm9jdXNl
ZEVsZW1lbnQucm9vdEVkaXRhYmxlRWxlbWVudCgpKQotICAgICAgICByZW5kZXJlciA9IHJvb3RF
ZGl0YWJsZUVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgCi0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIEZsb2F0UXVhZCgpOworICAgIGlmIChmb2N1c2VkRWxlbWVudC5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpIHx8IGZvY3VzZWRFbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjppbnB1dFRhZykgfHwgZm9jdXNlZEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlbGVjdFRhZykpCisgICAgICAgIHJldHVybiBXZWJQYWdlOjphYnNvbHV0ZUludGVyYWN0
aW9uQm91bmRzRm9yRWxlbWVudChmb2N1c2VkRWxlbWVudCk7CiAKLSAgICBhdXRvJiBzdHlsZSA9
IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSAvKiB1c2UgdHJhbnNmb3JtcyovKTsKKyAgICBp
ZiAoYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZvY3VzZWRFbGVtZW50LnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFdlYlBhZ2U6OmFic29sdXRlSW50ZXJhY3Rpb25C
b3VuZHNGb3JFbGVtZW50KCpyb290RWRpdGFibGVFbGVtZW50KTsKIAotICAgIGJvdW5kaW5nQm94
Lm1vdmUoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwot
ICAgIGJvdW5kaW5nQm94LnNldFdpZHRoKGJvdW5kaW5nQm94LndpZHRoKCkgLSBzdHlsZS5ib3Jk
ZXJMZWZ0V2lkdGgoKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSk7Ci0gICAgYm91bmRpbmdC
b3guc2V0SGVpZ2h0KGJvdW5kaW5nQm94LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lk
dGgoKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwotCi0gICAgcmV0dXJuIEZsb2F0UXVhZChi
b3VuZGluZ0JveCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogc3RhdGljIEludFBvaW50IGNvbnN0
cmFpblBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBFbGVtZW50JiBmb2N1c2VkRWxlbWVudCkKIHsKICAgICBBU1NFUlQoJmZvY3VzZWRFbGVtZW50
LmRvY3VtZW50KCkgPT0gZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgY29uc3QgaW50IERFRkFVTFRf
Q09OU1RSQUlOX0lOU0VUID0gMjsKLSAgICBJbnRSZWN0IGlubmVyRnJhbWUgPSBpbm5lckZyYW1l
UXVhZChmcmFtZSwgZm9jdXNlZEVsZW1lbnQpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAg
SW50UmVjdCBpbm5lckZyYW1lID0gZWxlbWVudEJvdW5kc0luRnJhbWUoZnJhbWUsIGZvY3VzZWRF
bGVtZW50KTsKICAgICBJbnRQb2ludCBjb25zdHJhaW5lZFBvaW50ID0gcG9pbnQ7CiAKICAgICBp
bnQgbWluWCA9IGlubmVyRnJhbWUueCgpICsgREVGQVVMVF9DT05TVFJBSU5fSU5TRVQ7CkBAIC0x
NTY4LDcgKzE1NTksNyBAQCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5
Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUAogICAgIHJldHVybiAoYmFz
ZSA8IGV4dGVudCkgPyBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0
ZW50KSA6IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBleHRlbnQsIGJhc2UpOwog
fQogCi1zdGF0aWMgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyhjb25z
dCBFbGVtZW50JiBlbGVtZW50KQorSW50UmVjdCBXZWJQYWdlOjpyb290Vmlld0JvdW5kc0ZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IGVsZW1l
bnQuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC0xNTg1LDYgKzE1NzYs
NTQgQEAgc3RhdGljIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3
KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKIH0KIAorSW50UmVjdCBXZWJQ
YWdlOjphYnNvbHV0ZUludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGF1dG8qIGZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIHZpZXcg
PSBmcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVy
ZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoaXM8UmVuZGVyQm94PigqcmVuZGVy
ZXIpKSB7CisgICAgICAgIGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVy
KTsKKworICAgICAgICBGbG9hdFJlY3QgcmVjdDsKKyAgICAgICAgLy8gRklYTUU6IHdhbnQgYm9y
ZGVycyBvciBub3Q/CisgICAgICAgIGlmIChib3guc3R5bGUoKS5pc092ZXJmbG93VmlzaWJsZSgp
KQorICAgICAgICAgICAgcmVjdCA9IGJveC5sYXlvdXRPdmVyZmxvd1JlY3QoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVjdCA9IGJveC5jbGllbnRCb3hSZWN0KCk7CisgICAgICAgIHJl
dHVybiBib3gubG9jYWxUb0Fic29sdXRlUXVhZChyZWN0KS5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
OworICAgIH0KKworICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisgICAgRmxv
YXRSZWN0IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRy
dWUgLyogdXNlIHRyYW5zZm9ybXMqLyk7CisgICAgLy8gVGhpcyBpcyB3cm9uZy4gSXQncyBzdWJ0
cmFjdGluZyBib3JkZXJzIGFmdGVyIGNvbnZlcnRpbmcgdG8gYWJzb2x1dGUgY29vcmRzIG9uIHNv
bWV0aGluZyB0aGF0IHByb2JhYmx5IGRvZXNuJ3QgcmVwcmVzZW50IGEgcmVjdGFuZ3VsYXIgZWxl
bWVudC4KKyAgICBib3VuZGluZ0JveC5tb3ZlKHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCBzdHls
ZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAgICBib3VuZGluZ0JveC5zZXRXaWR0aChib3VuZGluZ0Jv
eC53aWR0aCgpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkgLSBzdHlsZS5ib3JkZXJSaWdodFdp
ZHRoKCkpOworICAgIGJvdW5kaW5nQm94LnNldEhlaWdodChib3VuZGluZ0JveC5oZWlnaHQoKSAt
IHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAg
ICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ0JveCk7Cit9CisKK0ludFJlY3QgV2Vi
UGFnZTo6cm9vdFZpZXdJbnRlcmFjdGlvbkJvdW5kc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBhdXRvKiBmcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiB2aWV3
ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGFic29sdXRlSW50ZXJhY3Rpb25C
b3VuZHNGb3JFbGVtZW50KGVsZW1lbnQpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpjbGVhclNlbGVj
dGlvbigpCiB7CiAgICAgbV9zdGFydGluZ0dlc3R1cmVSYW5nZSA9IG51bGxwdHI7CkBAIC0xNTk5
LDcgKzE2MzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNG
b3JTZWxlY3Rpb25HZXN0dXJlKFNlbGVjdGlvblRvdWNoIHRvdQogCiAgICAgSW50UmVjdCBmb2N1
c2VkRWxlbWVudFJlY3Q7CiAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQpCi0gICAgICAgIGZvY3Vz
ZWRFbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCptX2ZvY3Vz
ZWRFbGVtZW50KTsKKyAgICAgICAgZm9jdXNlZEVsZW1lbnRSZWN0ID0gcm9vdFZpZXdJbnRlcmFj
dGlvbkJvdW5kc0ZvckVsZW1lbnQoKm1fZm9jdXNlZEVsZW1lbnQpOwogCiAgICAgaWYgKGZvY3Vz
ZWRFbGVtZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MzAsNyArMjg2
OSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvCiAgICAgaW5mb3JtYXRpb24ubGFzdEludGVy
YWN0aW9uTG9jYXRpb24gPSBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogCiAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gbV9mb2N1c2VkRWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBp
bmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCptX2ZvY3VzZWRFbGVtZW50KTsKKyAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFJlY3QgPSBy
b290Vmlld0ludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudCgqbV9mb2N1c2VkRWxlbWVudCk7CiAg
ICAgICAgIGluZm9ybWF0aW9uLm5vZGVGb250U2l6ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOwogCiAgICAgICAgIGJvb2wgaW5GaXhlZCA9IGZh
bHNlOwpAQCAtMjg0OSwxMSArMjg4OCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmdldEZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24oRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpbwogICAg
IGluZm9ybWF0aW9uLmFsbG93c1VzZXJTY2FsaW5nID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24u
YWxsb3dzVXNlclNjYWxpbmcoKTsKICAgICBpbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZ0ln
bm9yaW5nQWx3YXlzU2NhbGFibGUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hbGxvd3NVc2Vy
U2NhbGluZ0lnbm9yaW5nQWx3YXlzU2NhbGFibGUoKTsKICAgICBpZiAoYXV0byogbmV4dEVsZW1l
bnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9mb2N1c2VkRWxlbWVudC5nZXQoKSwgKm1fcGFn
ZSwgdHJ1ZSkpIHsKLSAgICAgICAgaW5mb3JtYXRpb24ubmV4dE5vZGVSZWN0ID0gZWxlbWVudFJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKm5leHRFbGVtZW50KTsKKyAgICAgICAgaW5mb3JtYXRp
b24ubmV4dE5vZGVSZWN0ID0gcm9vdFZpZXdCb3VuZHNGb3JFbGVtZW50KCpuZXh0RWxlbWVudCk7
CiAgICAgICAgIGluZm9ybWF0aW9uLmhhc05leHROb2RlID0gdHJ1ZTsKICAgICB9CiAgICAgaWYg
KGF1dG8qIHByZXZpb3VzRWxlbWVudCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2ZvY3VzZWRF
bGVtZW50LmdldCgpLCAqbV9wYWdlLCBmYWxzZSkpIHsKLSAgICAgICAgaW5mb3JtYXRpb24ucHJl
dmlvdXNOb2RlUmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCpwcmV2aW91
c0VsZW1lbnQpOworICAgICAgICBpbmZvcm1hdGlvbi5wcmV2aW91c05vZGVSZWN0ID0gcm9vdFZp
ZXdCb3VuZHNGb3JFbGVtZW50KCpwcmV2aW91c0VsZW1lbnQpOwogICAgICAgICBpbmZvcm1hdGlv
bi5oYXNQcmV2aW91c05vZGUgPSB0cnVlOwogICAgIH0KICAgICBpbmZvcm1hdGlvbi5mb2N1c2Vk
RWxlbWVudElkZW50aWZpZXIgPSBtX2N1cnJlbnRGb2N1c2VkRWxlbWVudElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNGNmZGM4OGE3NmNhNmY2M2MxZjkwZDg2NDJlMTA3MjAwYjA4YTgyNi4uYzBkZmVlY2Zm
NzA5YWEzZWRkMTc3ZTJlYzg3NmI1OGQ5ZGU5NDY3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDE5LTA3LTExICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1MgV0syXSBDYW4ndCBwbGFjZSBjYXJldCBvciBzZWxlY3QgaW4gY29udGVudCB0aGF0
IG92ZXJmbG93cyBhIGNvbnRlbnRlZGl0YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NDEKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vNTA1NDUyMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFJlLWVuYWJsZSBlZGl0aW5nL2NhcmV0L2lvcywgZml4aW5nIHRoZSByZXN1
bHQgb2YgZW1vamkuaHRtbCB3aGljaCBmb3Igc29tZSByZWFzb24gd2FzCisgICAgICAgIGNoZWNr
ZWQgaW4gYXMgYW4gaHRtbCBmaWxlICh0aGUgdGVzdCBzdGlsbCBmYWlscykuCisKKyAgICAgICAg
KiBlZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1pbi1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9jYXJldC9pb3MvY2FyZXQtaW4tb3ZlcmZsb3ctYXJl
YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NhcmV0L2lvcy9lbW9qaS1leHBlY3Rl
ZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0L2lvcy9lbW9qaS1l
eHBlY3RlZC5odG1sLgorICAgICAgICAqIGVkaXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBv
c2l0aW9uLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9jYXJl
dC9pb3MvZml4ZWQtY2FyZXQtcG9zaXRpb24tYWZ0ZXItc2Nyb2xsLmh0bWw6CisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNl
LXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tZXh0ZW5kcy1pbnRvLW92ZXJmbG93LWFyZWEtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0
aW9uLWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOS0wNy0xMSAgUnlhbiBIYWRk
YWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGVzdCBleHBlY3RhdGlv
bnMgYW5kIGJhc2VsaW5lcyBmb3IgaU9TIDEzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL2NhcmV0L2lvcy9jYXJldC1pbi1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93LWFyZWEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg5MWRhMTMzMmE0MWIyZGEyNWRhMDZiYTZmYjhjMjU4NDZkNzEwMWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1p
bi1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCits
aW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitDYXJldCByZWN0OiAobGVmdCA9IDM5LCB0
b3AgPSAzODYsIHdpZHRoID0gMiwgaGVpZ2h0ID0gMTkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1pbi1vdmVyZmxvdy1hcmVhLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1pbi1vdmVyZmxvdy1hcmVhLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzJmZTJhMWQ4MjY1NTQyMTVhYTRjM2Q0OTE4OGI0NzlhNWNjYjExYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93
LWFyZWEuaHRtbApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhl
YWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xLCBtYXhpbXVtLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iPgor
ICAgIDx0aXRsZT48L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgI2VkaXRhYmxlIHsKKyAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5
OiBtb25vc3BhY2U7CisgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41ZW07CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC5vdXRwdXQgeworICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDYw
cHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiByZWN0VG9TdHJpbmcocmVjdCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGAobGVmdCA9ICR7TWF0aC5yb3VuZChyZWN0LmxlZnQpfSwgdG9wID0gJHtN
YXRoLnJvdW5kKHJlY3QudG9wKX0sIHdpZHRoID0gJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfSwg
aGVpZ2h0ID0gJHtNYXRoLnJvdW5kKHJlY3QuaGVpZ2h0KX0pYDsKKyAgICAgICAgfQorCisgICAg
ICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxlJyk7CisgICAgICAg
ICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCgyNSwg
MjUpOworCisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci50YXBBdCgyNSwgNDAwKTsKKyAgICAg
ICAgICAgIGNvbnN0IGNhcmV0UmVjdCA9IGF3YWl0IFVJSGVscGVyLmdldFVJQ2FyZXRSZWN0KCk7
CisKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjYXJldC1yZWN0IikudGV4
dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoY2FyZXRSZWN0KTsKKworICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcign
bG9hZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgfSwg
ZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWRp
dGFibGUiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxi
cj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4K
KyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAg
ICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAg
ICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAg
bGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGlu
ZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxi
cj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4K
KyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICA8L2Rpdj4KKworPGRpdiBj
bGFzcz0ib3V0cHV0Ij5DYXJldCByZWN0OiA8c3BhbiBpZD0iY2FyZXQtcmVjdCI+PC9zcGFuPjwv
ZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2NhcmV0L2lvcy9lbW9qaS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9jYXJl
dC9pb3MvZW1vamktZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWY1OWU5ZTA4OTQ3MmI4ZThiMTZhNjY5ZDQ0ZGYzMDYwYzE2YTQ1OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0
L2lvcy9lbW9qaS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAot
UEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlz
IHdpdGhpbiAxIG9mIDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFT
UyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlzIHdp
dGhpbiAxIG9mIDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFTUyBj
dXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhp
biAxIG9mIDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFTUyBjdXJy
ZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2Nh
cmV0L2lvcy9lbW9qaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0L2lv
cy9lbW9qaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY1OWU5ZTA4OTQ3MmI4ZThiMTZhNjY5
ZDQ0ZGYzMDYwYzE2YTQ1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
Y2FyZXQvaW9zL2Vtb2ppLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitQQVNTIGN1cnJl
bnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEg
b2YgMTUKK1BBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRX
aWR0aCBpcyB3aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2Yg
MTUKK1BBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRXaWR0
aCBpcyB3aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUK
K1BBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRXaWR0aCBp
cyB3aXRoaW4gMSBvZiAxNQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2Zp
eGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2NhcmV0L2lvcy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwtZXhw
ZWN0ZWQudHh0CmluZGV4IGQ0NzM2NDUzNTkwNTQwNjI0NDk4NTJkZDZjN2UwZWMwZGRmMjM4ZjYu
LjNkMzQ5MGU2OThiY2Q3NWMwMjhjNTY0MTc1YzJlMGI1YmEzNjdlMGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNj
cm9sbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvZml4
ZWQtY2FyZXQtcG9zaXRpb24tYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcg
QEAgUEFTUyBpbml0aWFsQ2FyZXRSZWN0LnRvcCBpcyAyMQogUEFTUyBpbml0aWFsQ2FyZXRSZWN0
LndpZHRoIGlzIDMKIFBBU1MgaW5pdGlhbENhcmV0UmVjdC5oZWlnaHQgaXMgMTUKIFBBU1MgZmlu
YWxDYXJldFJlY3QubGVmdCBpcyA2Ci1QQVNTIGZpbmFsQ2FyZXRSZWN0LnRvcCBpcyA1MDIxCitQ
QVNTIGZpbmFsQ2FyZXRSZWN0LnRvcCBpcyA0OTc3CiBQQVNTIGZpbmFsQ2FyZXRSZWN0LndpZHRo
IGlzIDMKIFBBU1MgZmluYWxDYXJldFJlY3QuaGVpZ2h0IGlzIDE1CiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2NhcmV0L2lv
cy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC5odG1sCmlu
ZGV4IGZhNWIyN2E2ZjE3NGNkYjgwNjUzNjM0Y2ViMTEwMjkwNGUxMGZkYTUuLjZhNjAzMjM4ZDBi
MzA3MDk0MTNiMzAwMDkwMTZmMmQzOTBmM2I0ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFm
dGVyLXNjcm9sbC5odG1sCkBAIC01MSw3ICs1MSw3IEBAIGpzVGVzdElzQXN5bmMgPSB0cnVlOwog
ICAgIC50aGVuKChyZWN0KSA9PiB7CiAgICAgICAgIGZpbmFsQ2FyZXRSZWN0ID0gcmVjdDsKICAg
ICAgICAgc2hvdWxkQmUoImZpbmFsQ2FyZXRSZWN0LmxlZnQiLCAiNiIpOwotICAgICAgICBzaG91
bGRCZSgiZmluYWxDYXJldFJlY3QudG9wIiwgIjUwMjEiKTsKKyAgICAgICAgc2hvdWxkQmUoImZp
bmFsQ2FyZXRSZWN0LnRvcCIsICI0OTc3Iik7CiAgICAgICAgIHNob3VsZEJlKCJmaW5hbENhcmV0
UmVjdC53aWR0aCIsICIzIik7CiAgICAgICAgIHNob3VsZEJlKCJmaW5hbENhcmV0UmVjdC5oZWln
aHQiLCAiMTUiKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93LWFy
ZWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNl
LXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWI1
YTViODBiY2EzYmMxM2VkZWJhMDk5OTIzZGVjNDM3MjIxYmU3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVy
Zmxvdy1hcmVhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitsaW5lCitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCits
aW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitTZWxlY3Rpb24gYmVmb3JlIHRhcDogKG5vZGUgYXQg
MiMxMSwgW29iamVjdCBUZXh0XSMxMSkKK1NlbGVjdGlvbiBhZnRlciB0YXA6IChub2RlIGF0IDQw
IzEzLCBbb2JqZWN0IFRleHRdIzEzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93
LWFyZWEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTY3MzI0MGUyMTZiYTNiMWIwYTcwYTU4MzVlZmFjZjVk
ZTU4MjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
aW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVhLmh0bWwKQEAgLTAsMCArMSw5MCBA
QAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVW
aWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgbWF4aW11
bS1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIj4KKyAgICA8dGl0bGU+PC90aXRsZT4KKyAgICA8
c3R5bGU+CisgICAgICAgICNlZGl0YWJsZSB7CisgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7CisgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICAgICAgICAgICAg
bGluZS1oZWlnaHQ6IDEuNWVtOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAub3V0cHV0
IHsKKyAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA2MHB4OworICAgICAgICB9CisgICAgPC9zdHls
ZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2VsZWN0
aW9uVG9TdHJpbmcoY29udGFpbmVyKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBzZWxl
Y3Rpb24gPSBnZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdl
Q291bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuICIobm8gc2VsZWN0aW9uKSI7CisKKyAgICAg
ICAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgICAg
ICBjb25zdCBub2RlSW5kZXggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGNvbnRhaW5l
ci5jaGlsZE5vZGVzLCByYW5nZS5zdGFydENvbnRhaW5lcik7CisKKyAgICAgICAgICAgIHJldHVy
biBgKG5vZGUgYXQgJHtub2RlSW5kZXh9IyR7cmFuZ2Uuc3RhcnRPZmZzZXR9LCAke3JhbmdlLmVu
ZENvbnRhaW5lcn0jJHtyYW5nZS5lbmRPZmZzZXR9KWA7CisgICAgICAgIH0KKworICAgICAgICBh
c3luYyBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IGNvbnRh
aW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0YWJsZScpOworICAgICAgICAgICAg
YXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMjUsIDI1KTsK
KyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYmVmb3JlIiku
dGV4dENvbnRlbnQgPSBzZWxlY3Rpb25Ub1N0cmluZyhjb250YWluZXIpOworCisgICAgICAgICAg
ICBhd2FpdCBVSUhlbHBlci50YXBBdCgyNSwgNDAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYWZ0ZXIiKS50ZXh0Q29udGVudCA9IHNlbGVjdGlvblRv
U3RyaW5nKGNvbnRhaW5lcik7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVkaXRhYmxlIiBjb250ZW50ZWRp
dGFibGU+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8
YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+
CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+Cisg
ICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAg
ICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAg
IGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxp
bmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8
YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+
CisgICAgICAgIGxpbmU8YnI+CisgICAgPC9kaXY+CisKKzxkaXYgY2xhc3M9Im91dHB1dCI+U2Vs
ZWN0aW9uIGJlZm9yZSB0YXA6IDxzcGFuIGlkPSJzZWxlY3Rpb24tYmVmb3JlIj48L3NwYW4+PC9k
aXY+Cis8ZGl2IGNsYXNzPSJvdXRwdXQiPlNlbGVjdGlvbiBhZnRlciB0YXA6IDxzcGFuIGlkPSJz
ZWxlY3Rpb24tYWZ0ZXIiPjwvc3Bhbj48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1leHRlbmRz
LWludG8tb3ZlcmZsb3ctYXJlYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3Mvc2VsZWN0aW9uLWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YzdkZWUzYmQ1NGQ1MTYxZWYyODhjNWNlYjc0ODZmNTJjN2YzOWIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3Nl
bGVjdGlvbi1leHRlbmRzLWludG8tb3ZlcmZsb3ctYXJlYS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyNyBAQAorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQor
bGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGlu
ZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorbGluZQorU2VsZWN0
aW9uIHJlY3RzOiAobGVmdCA9IDksIHRvcCA9IDM4Niwgd2lkdGggPSAzMiwgaGVpZ2h0ID0gMTkp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0aW9u
LWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3Mvc2VsZWN0aW9uLWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmM5ZmU4MzZlNGI4MjczMDBhOTYzY2IyNmIxZjAyODM4MTZmYjcxNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24t
ZXh0ZW5kcy1pbnRvLW92ZXJmbG93LWFyZWEuaHRtbApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZ
UEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRy
dWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBtYXhpbXVtLXNjYWxlPTEs
IHNocmluay10by1maXQ9bm8iPgorICAgIDx0aXRsZT48L3RpdGxlPgorICAgIDxzdHlsZT4KKyAg
ICAgICAgI2VkaXRhYmxlIHsKKyAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAg
ICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgICAgICAgICAgICBsaW5lLWhlaWdo
dDogMS41ZW07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC5vdXRwdXQgeworICAgICAg
ICAgICAgbWFyZ2luLWxlZnQ6IDYwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzZWxlY3RUZXh0QXQodGFw
WCwgdGFwWSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4geworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAorICAgICAg
ICAgICAgICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIubG9uZ1ByZXNzQXRQb2ludCgke3RhcFh9LCAke3RhcFl9LCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0
ZSgiRG9uZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pKCk7YCwgcmVzb2x2ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYChsZWZ0ID0gJHtNYXRoLnJvdW5kKHJlY3QubGVmdCl9LCB0b3AgPSAke01hdGgucm91
bmQocmVjdC50b3ApfSwgd2lkdGggPSAke01hdGgucm91bmQocmVjdC53aWR0aCl9LCBoZWlnaHQg
PSAke01hdGgucm91bmQocmVjdC5oZWlnaHQpfSlgOworICAgICAgICB9CisKKyAgICAgICAgYXN5
bmMgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBjb250YWlu
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdGFibGUnKTsKKyAgICAgICAgICAgIGF3
YWl0IFVJSGVscGVyLmFjdGl2YXRlQW5kV2FpdEZvcklucHV0U2Vzc2lvbkF0KDI1LCAyNSk7CisK
KyAgICAgICAgICAgIGF3YWl0IHNlbGVjdFRleHRBdCgyNSwgNDAwKQorICAgICAgICAgICAgY29u
c3Qgc2VsZWN0aW9uUmVjdHMgPSBhd2FpdCBVSUhlbHBlci5nZXRVSVNlbGVjdGlvblJlY3RzKCk7
CisgICAgICAgICAgICBsZXQgcmVjdHNTdHJpbmcgPSAiIjsKKyAgICAgICAgICAgIGZvciAobGV0
IHJlY3Qgb2Ygc2VsZWN0aW9uUmVjdHMpCisgICAgICAgICAgICAgICAgcmVjdHNTdHJpbmcgKz0g
cmVjdFRvU3RyaW5nKHJlY3QpICsgJyAnOworCisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCIjc2VsZWN0aW9uLXJlY3RzIikudGV4dENvbnRlbnQgPSByZWN0c1N0cmluZzsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBydW5UZXN0
KCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxkaXYgaWQ9ImVkaXRhYmxlIiBjb250ZW50ZWRpdGFibGU+CisgICAgICAgIGxpbmU8YnI+
CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+Cisg
ICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAg
ICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAg
IGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxp
bmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8
YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+
CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+Cisg
ICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAgICAgIGxpbmU8YnI+CisgICAg
PC9kaXY+CisKKzxkaXYgY2xhc3M9Im91dHB1dCI+U2VsZWN0aW9uIHJlY3RzOiA8c3BhbiBpZD0i
c2VsZWN0aW9uLXJlY3RzIj48L3NwYW4+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwMjliNWMz
N2I3ODA3ZmJhOTk4ZTNlNTFiZGFiYzVjN2EzOTAyYWI5Li5iODVlYTdhMDg0MWFlOTEzOTE4NTkw
ZDc4NTliYjY3NWQ2NWJjNTRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xOCw2ICsxOCw3IEBAIGZhc3QvdmlzdWFsLXZpZXdwb3J0L2lv
cy8gWyBQYXNzIF0KIHNjcm9sbGluZ2Nvb3JkaW5hdG9yIFsgUGFzcyBdCiBzY3JvbGxpbmdjb29y
ZGluYXRvci9tYWMgWyBTa2lwIF0KIGZhc3Qvd2ViLXNoYXJlIFsgUGFzcyBdCitlZGl0aW5nL2Nh
cmV0L2lvcyBbIFBhc3MgXQogZWRpdGluZy9maW5kIFsgUGFzcyBdCiBlZGl0aW5nL2lucHV0L2lv
cyBbIFBhc3MgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2lvcyBbIFBhc3MgXQpAQCAtNjk0LDYgKzY5
NSw3IEBAIGVkaXRpbmcvdW5kby91bmRvLWRlbGV0ZS1ib3VuZGFyeS5odG1sIFsgRmFpbHVyZSBd
CiBlZGl0aW5nL3VuZG8vdW5kby1kZWxldGUuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGluZy91bmRv
L3VuZG8tbWlzc3BlbGxpbmdzLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvdW5kby91bmRvLXR5
cGluZy0wMDEuaHRtbCBbIEZhaWx1cmUgXQorZWRpdGluZy9jYXJldC9pb3MvZW1vamkuaHRtbCBb
IEZhaWx1cmUgXQogCiAjIEVkaXRpbmcgdGVzdHMgdGhhdCB0aW1lIG91dDoKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2Rlc2lnbm1vZGUtbm8tY2FyZXQuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374028</attachid>
            <date>2019-07-12 12:58:23 -0700</date>
            <delta_ts>2019-07-12 13:08:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199741-20190712125822.patch</filename>
            <type>text/plain</type>
            <size>30313</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAxYTZiMTRmNDQ5ODcy
OTZlOWIzMGFhYzZkMmVmNGE4ZTE3ZWEzNC4uMzM5OGExZDViNzg5YTU1YjZjMDk4YzZiMTM5N2Uz
OWRlZTA5YTIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTA3LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBD
YW4ndCBwbGFjZSBjYXJldCBvciBzZWxlY3QgaW4gY29udGVudCB0aGF0IG92ZXJmbG93cyBhIGNv
bnRlbnRlZGl0YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTk3NDEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTA1NDUyMzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYXJpb3VzIGNv
ZGUgcGF0aHMgZm9yIGVkaXRpbmcgdXNlZCByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSwgd2hpY2ggaXMgdGhlIGJvcmRlcgorICAgICAgICBib3ggb2YgdGhlIGVsZW1lbnQgKG9y
IGEgc2V0IG9mIGxpbmUgYm94ZXMgZm9yIGlubGluZSBlbGVtZW50cykgY29udmVydGVkIHRvIGFi
c29sdXRlCisgICAgICAgIGNvb3JkaW5hdGVzLiBUaGlzIGV4Y2x1ZGVzIG92ZXJmbG93IGNvbnRl
bnQsIGJ1dCBjb250ZW50ZWRpdGFibGUgbmVlZHMgdG8gYmUgYWJsZSB0bworICAgICAgICBwbGFj
ZSB0aGUgY2FyZXQgaW4gb3ZlcmZsb3cgY29udGVudCwgYW5kIGFsbG93IHNlbGVjdGlvbiByZWN0
cyB0byBiZSBpbiB0aGUgb3ZlcmZsb3cgYXJlYQorICAgICAgICAoaWYgdGhlIGVsZW1lbnQgaGFz
IHZpc2libGUgb3ZlcmZsb3cpLgorCisgICAgICAgIFRyeSB0byBjbGVhbiB0aGlzIHVwIGJ5IGFk
ZGluZyBzb21lIHN0YXRpYyBoZWxwZXJzIG9uIFdlYlBhZ2UgZm9yIGFjY2Vzc2luZyB0aGUgcmVs
ZXZhbnQKKyAgICAgICAgcmVjdHMsIGFuZCB1c2UgdGhlbSBpbiBjb2RlIGNhbGwgZnJvbSB2aXNp
YmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoKSwgYW5kCisgICAgICAgIGNvZGUgdGhh
dCBpcyBpbnB1dCB0byBzZWxlY3Rpb25DbGlwUmVjdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
Y2hhbmdlcyBzZWxlY3Rpb25DbGlwUmVjdCB0byB1c2UgdGhlIHBhZGRpbmcgYm94IChleGNsdWRp
bmcgYm9yZGVycyksIHdoaWNoIGlzIGEgcHJvZ3Jlc3Npb24uCisKKyAgICAgICAgVGVzdHM6IGVk
aXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93LWFyZWEuaHRtbAorICAgICAgICAgICAg
ICAgZWRpdGluZy9zZWxlY3Rpb24vaW9zL3BsYWNlLXNlbGVjdGlvbi1pbi1vdmVyZmxvdy1hcmVh
Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tZXh0
ZW5kcy1pbnRvLW92ZXJmbG93LWFyZWEuaHRtbAorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2FyZXRDb250cm9sbGVyOjplZGl0
YWJsZUVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzIGNvbnN0KToKKwogMjAxOS0wNy0x
MSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyAx
M10gRW5hYmxlIFdlYktpdCBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMmYxMzc0YTM2NDM0ZTZlMDZhZTY2
YTczOGFhOGMwY2Y0NDNjYTcwLi5lMDYzMDU0ODYxMDEzMDQzOWY5YzRmZTU3Y2E1NjViMWFlNGNj
M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA3LTExICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBDYW4ndCBwbGFj
ZSBjYXJldCBvciBzZWxlY3QgaW4gY29udGVudCB0aGF0IG92ZXJmbG93cyBhIGNvbnRlbnRlZGl0
YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTk3NDEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTA1NDUyMzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYXJpb3VzIGNvZGUgcGF0aHMg
Zm9yIGVkaXRpbmcgdXNlZCByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSwgd2hp
Y2ggaXMgdGhlIGJvcmRlcgorICAgICAgICBib3ggb2YgdGhlIGVsZW1lbnQgKG9yIGEgc2V0IG9m
IGxpbmUgYm94ZXMgZm9yIGlubGluZSBlbGVtZW50cykgY29udmVydGVkIHRvIGFic29sdXRlCisg
ICAgICAgIGNvb3JkaW5hdGVzLiBUaGlzIGV4Y2x1ZGVzIG92ZXJmbG93IGNvbnRlbnQsIGJ1dCBj
b250ZW50ZWRpdGFibGUgbmVlZHMgdG8gYmUgYWJsZSB0bworICAgICAgICBwbGFjZSB0aGUgY2Fy
ZXQgaW4gb3ZlcmZsb3cgY29udGVudCwgYW5kIGFsbG93IHNlbGVjdGlvbiByZWN0cyB0byBiZSBp
biB0aGUgb3ZlcmZsb3cgYXJlYQorICAgICAgICAoaWYgdGhlIGVsZW1lbnQgaGFzIHZpc2libGUg
b3ZlcmZsb3cpLgorCisgICAgICAgIFRyeSB0byBjbGVhbiB0aGlzIHVwIGJ5IGFkZGluZyBzb21l
IHN0YXRpYyBoZWxwZXJzIG9uIFdlYlBhZ2UgZm9yIGFjY2Vzc2luZyB0aGUgcmVsZXZhbnQKKyAg
ICAgICAgcmVjdHMsIGFuZCB1c2UgdGhlbSBpbiBjb2RlIGNhbGwgZnJvbSB2aXNpYmxlUG9zaXRp
b25JbkZvY3VzZWROb2RlRm9yUG9pbnQoKSwgYW5kCisgICAgICAgIGNvZGUgdGhhdCBpcyBpbnB1
dCB0byBzZWxlY3Rpb25DbGlwUmVjdC4KKworICAgICAgICBUaGlzIGNoYW5nZXMgc2VsZWN0aW9u
Q2xpcFJlY3QgdG8gdXNlIHRoZSBwYWRkaW5nIGJveCAoZXhjbHVkaW5nIGJvcmRlcnMpLCB3aGlj
aCBpcyBhIHByb2dyZXNzaW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjplbGVtZW50Qm91bmRzSW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OmNv
bnN0cmFpblBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cm9vdFZpZXdCb3VuZHNG
b3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWJzb2x1dGVJbnRlcmFjdGlv
bkJvdW5kc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyb290Vmlld0lu
dGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRp
c3BhdGNoU3ludGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OmlubmVyRnJhbWVRdWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6ZWxl
bWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOiBEZWxldGVkLgorCiAyMDE5LTA3LTExICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDEzXSBF
bmFibGUgV2ViS2l0IGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCmluZGV4IDM0ZGU4OTZlMzA5OWRhZTZjMTRmYzViZjA4M2E4ZTZlNDA5YTA1Y2EuLjc0ZmE2
NGIwN2NmZTczYmU0ODQ4OTIzNmJlNGM4NjZlYmJkZTM1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgSW50UmVjdCBEcmFn
Q2FyZXRDb250cm9sbGVyOjplZGl0YWJsZUVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChhdXRvKiB2aWV3ID0gZWRp
dGFibGVDb250YWluZXItPmRvY3VtZW50KCkudmlldygpKQotICAgICAgICByZXR1cm4gdmlldy0+
Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsK
KyAgICAgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKSk7IC8vIEZJWE1FOiBXcm9uZyBmb3IgZWxlbWVudHMgd2l0aCB2
aXNpYmxlIGxheW91dCBvdmVyZmxvdy4KIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNGUwY2U0YTQ3OTI3ZDYxNzZm
NWJhOWFhYTU1ZThhZDJmNDQzYjJhZC4uYTNiNjMzNjg2NDBhMjZmYjE2ODM3NDQ3MDljNDViMDU1
MGNmZTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTIwMiw3ICsxMjAyLDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZmlyc3RGbHVzaEFmdGVy
Q29tbWl0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdEZsdXNoQWZ0ZXJDb21taXQ7IH0KICAgICB2
b2lkIHNldEZpcnN0Rmx1c2hBZnRlckNvbW1pdChib29sIGYpIHsgbV9maXJzdEZsdXNoQWZ0ZXJD
b21taXQgPSBmOyB9Ci0gICAgCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIFRo
aXMgZXhjbHVkZXMgbGF5b3V0IG92ZXJmbG93LCBpbmNsdWRlcyBib3JkZXJzLgorICAgIHN0YXRp
YyBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3Qm91bmRzRm9yRWxlbWVudChjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Jik7CisgICAgLy8gVGhlc2UgaW5jbHVkZSBsYXlvdXQgb3ZlcmZsb3cgZm9yIG92
ZXJmbG93OnZpc2libGUgZWxlbWVudHMsIGJ1dCBleGNsdWRlIGJvcmRlcnMuCisgICAgc3RhdGlj
IFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVJbnRlcmFjdGlvbkJvdW5kc0ZvckVsZW1lbnQoY29u
c3QgV2ViQ29yZTo6RWxlbWVudCYpOworICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHJvb3RW
aWV3SW50ZXJhY3Rpb25Cb3VuZHNGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmKTsK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAK
QEAgLTEyMzUsNiArMTI0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNp
emVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0U2VsZWN0
aW9uUmVjdHNUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVmlldyosIFZlY3RvcjxXZWJDb3JlOjpT
ZWxlY3Rpb25SZWN0PiYpOworCiAgICAgdm9pZCBnZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
KEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIGdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMTE0Mzk4Y2QzNTM0NTIy
NjZhMTU3Yjk3ZmJkMjk1YTJmOWQ2NTIwMi4uMDJjM2UxYzMwYTU5ZDc4ZDM1MmI5OTA4ODNiNmYy
NDQ0MGMyYTliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRl
UG9zdAogICAgIGlmICghc2VsZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAgIGlmIChtX2ZvY3Vz
ZWRFbGVtZW50ICYmIG1fZm9jdXNlZEVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAg
IGF1dG8mIHJlbmRlcmVyID0gKm1fZm9jdXNlZEVsZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QgPSB2aWV3LT5jb250ZW50c1Rv
Um9vdFZpZXcocmVuZGVyZXIuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QgPSByb290Vmlld0ludGVyYWN0aW9u
Qm91bmRzRm9yRWxlbWVudCgqbV9mb2N1c2VkRWxlbWVudCk7CiAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS5jYXJldENvbG9yID0gcmVuZGVyZXIuc3R5bGUoKS5jYXJldENvbG9yKCk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgewpAQCAtMTI0OCwz
MyArMTI0OCwyNCBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJv
b2wgdXNlclNjYWxhYmxlKQogICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldEZvcmNlQWx3
YXlzVXNlclNjYWxhYmxlKHVzZXJTY2FsYWJsZSk7CiB9CiAKLXN0YXRpYyBGbG9hdFF1YWQgaW5u
ZXJGcmFtZVF1YWQoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBFbGVtZW50JiBmb2N1c2VkRWxl
bWVudCkKK3N0YXRpYyBJbnRSZWN0IGVsZW1lbnRCb3VuZHNJbkZyYW1lKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgRWxlbWVudCYgZm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgZnJhbWUuZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIgPSBudWxscHRyOwotICAgIGlmIChmb2N1c2VkRWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpIHx8IGZvY3VzZWRFbGVtZW50Lmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjppbnB1dFRhZykgfHwgZm9jdXNlZEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnNlbGVjdFRhZykpCi0gICAgICAgIHJlbmRlcmVyID0gZm9jdXNlZEVsZW1lbnQucmVu
ZGVyZXIoKTsKLSAgICBlbHNlIGlmIChhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZm9jdXNl
ZEVsZW1lbnQucm9vdEVkaXRhYmxlRWxlbWVudCgpKQotICAgICAgICByZW5kZXJlciA9IHJvb3RF
ZGl0YWJsZUVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgCi0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIEZsb2F0UXVhZCgpOworICAgIGlmIChmb2N1c2VkRWxlbWVudC5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpIHx8IGZvY3VzZWRFbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjppbnB1dFRhZykgfHwgZm9jdXNlZEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlbGVjdFRhZykpCisgICAgICAgIHJldHVybiBXZWJQYWdlOjphYnNvbHV0ZUludGVyYWN0
aW9uQm91bmRzRm9yRWxlbWVudChmb2N1c2VkRWxlbWVudCk7CiAKLSAgICBhdXRvJiBzdHlsZSA9
IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSAvKiB1c2UgdHJhbnNmb3JtcyovKTsKKyAgICBp
ZiAoYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZvY3VzZWRFbGVtZW50LnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFdlYlBhZ2U6OmFic29sdXRlSW50ZXJhY3Rpb25C
b3VuZHNGb3JFbGVtZW50KCpyb290RWRpdGFibGVFbGVtZW50KTsKIAotICAgIGJvdW5kaW5nQm94
Lm1vdmUoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwot
ICAgIGJvdW5kaW5nQm94LnNldFdpZHRoKGJvdW5kaW5nQm94LndpZHRoKCkgLSBzdHlsZS5ib3Jk
ZXJMZWZ0V2lkdGgoKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSk7Ci0gICAgYm91bmRpbmdC
b3guc2V0SGVpZ2h0KGJvdW5kaW5nQm94LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lk
dGgoKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwotCi0gICAgcmV0dXJuIEZsb2F0UXVhZChi
b3VuZGluZ0JveCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogc3RhdGljIEludFBvaW50IGNvbnN0
cmFpblBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBFbGVtZW50JiBmb2N1c2VkRWxlbWVudCkKIHsKICAgICBBU1NFUlQoJmZvY3VzZWRFbGVtZW50
LmRvY3VtZW50KCkgPT0gZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgY29uc3QgaW50IERFRkFVTFRf
Q09OU1RSQUlOX0lOU0VUID0gMjsKLSAgICBJbnRSZWN0IGlubmVyRnJhbWUgPSBpbm5lckZyYW1l
UXVhZChmcmFtZSwgZm9jdXNlZEVsZW1lbnQpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAg
SW50UmVjdCBpbm5lckZyYW1lID0gZWxlbWVudEJvdW5kc0luRnJhbWUoZnJhbWUsIGZvY3VzZWRF
bGVtZW50KTsKICAgICBJbnRQb2ludCBjb25zdHJhaW5lZFBvaW50ID0gcG9pbnQ7CiAKICAgICBp
bnQgbWluWCA9IGlubmVyRnJhbWUueCgpICsgREVGQVVMVF9DT05TVFJBSU5fSU5TRVQ7CkBAIC0x
NTY4LDcgKzE1NTksNyBAQCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5
Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUAogICAgIHJldHVybiAoYmFz
ZSA8IGV4dGVudCkgPyBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0
ZW50KSA6IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBleHRlbnQsIGJhc2UpOwog
fQogCi1zdGF0aWMgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyhjb25z
dCBFbGVtZW50JiBlbGVtZW50KQorSW50UmVjdCBXZWJQYWdlOjpyb290Vmlld0JvdW5kc0ZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IGVsZW1l
bnQuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC0xNTg1LDYgKzE1NzYs
NTQgQEAgc3RhdGljIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3
KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKIH0KIAorSW50UmVjdCBXZWJQ
YWdlOjphYnNvbHV0ZUludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGF1dG8qIGZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIHZpZXcg
PSBmcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVy
ZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoaXM8UmVuZGVyQm94PigqcmVuZGVy
ZXIpKSB7CisgICAgICAgIGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVy
KTsKKworICAgICAgICBGbG9hdFJlY3QgcmVjdDsKKyAgICAgICAgLy8gRklYTUU6IHdhbnQgYm9y
ZGVycyBvciBub3Q/CisgICAgICAgIGlmIChib3guc3R5bGUoKS5pc092ZXJmbG93VmlzaWJsZSgp
KQorICAgICAgICAgICAgcmVjdCA9IGJveC5sYXlvdXRPdmVyZmxvd1JlY3QoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVjdCA9IGJveC5jbGllbnRCb3hSZWN0KCk7CisgICAgICAgIHJl
dHVybiBib3gubG9jYWxUb0Fic29sdXRlUXVhZChyZWN0KS5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
OworICAgIH0KKworICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisgICAgRmxv
YXRSZWN0IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRy
dWUgLyogdXNlIHRyYW5zZm9ybXMqLyk7CisgICAgLy8gVGhpcyBpcyB3cm9uZy4gSXQncyBzdWJ0
cmFjdGluZyBib3JkZXJzIGFmdGVyIGNvbnZlcnRpbmcgdG8gYWJzb2x1dGUgY29vcmRzIG9uIHNv
bWV0aGluZyB0aGF0IHByb2JhYmx5IGRvZXNuJ3QgcmVwcmVzZW50IGEgcmVjdGFuZ3VsYXIgZWxl
bWVudC4KKyAgICBib3VuZGluZ0JveC5tb3ZlKHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCBzdHls
ZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAgICBib3VuZGluZ0JveC5zZXRXaWR0aChib3VuZGluZ0Jv
eC53aWR0aCgpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkgLSBzdHlsZS5ib3JkZXJSaWdodFdp
ZHRoKCkpOworICAgIGJvdW5kaW5nQm94LnNldEhlaWdodChib3VuZGluZ0JveC5oZWlnaHQoKSAt
IHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAg
ICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ0JveCk7Cit9CisKK0ludFJlY3QgV2Vi
UGFnZTo6cm9vdFZpZXdJbnRlcmFjdGlvbkJvdW5kc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBhdXRvKiBmcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiB2aWV3
ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGFic29sdXRlSW50ZXJhY3Rpb25C
b3VuZHNGb3JFbGVtZW50KGVsZW1lbnQpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpjbGVhclNlbGVj
dGlvbigpCiB7CiAgICAgbV9zdGFydGluZ0dlc3R1cmVSYW5nZSA9IG51bGxwdHI7CkBAIC0xNTk5
LDcgKzE2MzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNG
b3JTZWxlY3Rpb25HZXN0dXJlKFNlbGVjdGlvblRvdWNoIHRvdQogCiAgICAgSW50UmVjdCBmb2N1
c2VkRWxlbWVudFJlY3Q7CiAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQpCi0gICAgICAgIGZvY3Vz
ZWRFbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCptX2ZvY3Vz
ZWRFbGVtZW50KTsKKyAgICAgICAgZm9jdXNlZEVsZW1lbnRSZWN0ID0gcm9vdFZpZXdJbnRlcmFj
dGlvbkJvdW5kc0ZvckVsZW1lbnQoKm1fZm9jdXNlZEVsZW1lbnQpOwogCiAgICAgaWYgKGZvY3Vz
ZWRFbGVtZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MzAsNyArMjg2
OSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvCiAgICAgaW5mb3JtYXRpb24ubGFzdEludGVy
YWN0aW9uTG9jYXRpb24gPSBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogCiAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gbV9mb2N1c2VkRWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBp
bmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCptX2ZvY3VzZWRFbGVtZW50KTsKKyAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFJlY3QgPSBy
b290Vmlld0ludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudCgqbV9mb2N1c2VkRWxlbWVudCk7CiAg
ICAgICAgIGluZm9ybWF0aW9uLm5vZGVGb250U2l6ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOwogCiAgICAgICAgIGJvb2wgaW5GaXhlZCA9IGZh
bHNlOwpAQCAtMjg0OSwxMSArMjg4OCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmdldEZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24oRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpbwogICAg
IGluZm9ybWF0aW9uLmFsbG93c1VzZXJTY2FsaW5nID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24u
YWxsb3dzVXNlclNjYWxpbmcoKTsKICAgICBpbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZ0ln
bm9yaW5nQWx3YXlzU2NhbGFibGUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hbGxvd3NVc2Vy
U2NhbGluZ0lnbm9yaW5nQWx3YXlzU2NhbGFibGUoKTsKICAgICBpZiAoYXV0byogbmV4dEVsZW1l
bnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9mb2N1c2VkRWxlbWVudC5nZXQoKSwgKm1fcGFn
ZSwgdHJ1ZSkpIHsKLSAgICAgICAgaW5mb3JtYXRpb24ubmV4dE5vZGVSZWN0ID0gZWxlbWVudFJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKm5leHRFbGVtZW50KTsKKyAgICAgICAgaW5mb3JtYXRp
b24ubmV4dE5vZGVSZWN0ID0gcm9vdFZpZXdCb3VuZHNGb3JFbGVtZW50KCpuZXh0RWxlbWVudCk7
CiAgICAgICAgIGluZm9ybWF0aW9uLmhhc05leHROb2RlID0gdHJ1ZTsKICAgICB9CiAgICAgaWYg
KGF1dG8qIHByZXZpb3VzRWxlbWVudCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2ZvY3VzZWRF
bGVtZW50LmdldCgpLCAqbV9wYWdlLCBmYWxzZSkpIHsKLSAgICAgICAgaW5mb3JtYXRpb24ucHJl
dmlvdXNOb2RlUmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCpwcmV2aW91
c0VsZW1lbnQpOworICAgICAgICBpbmZvcm1hdGlvbi5wcmV2aW91c05vZGVSZWN0ID0gcm9vdFZp
ZXdCb3VuZHNGb3JFbGVtZW50KCpwcmV2aW91c0VsZW1lbnQpOwogICAgICAgICBpbmZvcm1hdGlv
bi5oYXNQcmV2aW91c05vZGUgPSB0cnVlOwogICAgIH0KICAgICBpbmZvcm1hdGlvbi5mb2N1c2Vk
RWxlbWVudElkZW50aWZpZXIgPSBtX2N1cnJlbnRGb2N1c2VkRWxlbWVudElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW0KaW5kZXggMzUwYjYyNjNhYzVmMWY5ODkwZGY1NWJjMDA0ODdhMDVhMzA2MjEzMC4u
MjU2MTgyZGFiMWU3M2I5ZjNmYjgzZDRiOTUzMDZkMWQyNGZlOWYxMiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQpA
QCAtNTIxLDEwICs1MjEsMTAgQEAgVEVTVChLZXlib2FyZElucHV0VGVzdHMsIFNlbGVjdGlvbkNs
aXBSZWN0c1doZW5QcmVzZW50aW5nSW5wdXRWaWV3KQogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSd3aWR0aD1k
ZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSc+PGlucHV0PiJdOwogICAgIFt3ZWJWaWV3IGV2
YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZm9jdXMoKSJdOwogCi0gICAgRVhQRUNUX0VRKDEwLCBz
ZWxlY3Rpb25DbGlwUmVjdC5vcmlnaW4ueCk7Ci0gICAgRVhQRUNUX0VRKDEwLCBzZWxlY3Rpb25D
bGlwUmVjdC5vcmlnaW4ueSk7Ci0gICAgRVhQRUNUX0VRKDEzNiwgc2VsZWN0aW9uQ2xpcFJlY3Qu
c2l6ZS53aWR0aCk7Ci0gICAgRVhQRUNUX0VRKDIyLCBzZWxlY3Rpb25DbGlwUmVjdC5zaXplLmhl
aWdodCk7CisgICAgRVhQRUNUX0VRKDExLCBzZWxlY3Rpb25DbGlwUmVjdC5vcmlnaW4ueCk7Cisg
ICAgRVhQRUNUX0VRKDExLCBzZWxlY3Rpb25DbGlwUmVjdC5vcmlnaW4ueSk7CisgICAgRVhQRUNU
X0VRKDEzNCwgc2VsZWN0aW9uQ2xpcFJlY3Quc2l6ZS53aWR0aCk7CisgICAgRVhQRUNUX0VRKDIw
LCBzZWxlY3Rpb25DbGlwUmVjdC5zaXplLmhlaWdodCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA0Y2ZkYzg4YTc2Y2E2ZjYzYzFmOTBkODY0MmUxMDcyMDBiMDhh
ODI2Li5jMGRmZWVjZmY3MDlhYTNlZGQxNzdlMmVjODc2YjU4ZDlkZTk0NjcxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTktMDctMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW2lPUyBXSzJdIENhbid0IHBsYWNlIGNhcmV0IG9yIHNlbGVjdCBp
biBjb250ZW50IHRoYXQgb3ZlcmZsb3dzIGEgY29udGVudGVkaXRhYmxlIGVsZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTc0MQorICAgICAg
ICByZGFyOi8vcHJvYmxlbS81MDU0NTIzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmUtZW5hYmxlIGVkaXRpbmcvY2FyZXQvaW9zLCBm
aXhpbmcgdGhlIHJlc3VsdCBvZiBlbW9qaS5odG1sIHdoaWNoIGZvciBzb21lIHJlYXNvbiB3YXMK
KyAgICAgICAgY2hlY2tlZCBpbiBhcyBhbiBodG1sIGZpbGUgKHRoZSB0ZXN0IHN0aWxsIGZhaWxz
KS4KKworICAgICAgICAqIGVkaXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93LWFyZWEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NhcmV0L2lvcy9jYXJldC1p
bi1vdmVyZmxvdy1hcmVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvY2FyZXQvaW9z
L2Vtb2ppLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2VkaXRpbmcvY2Fy
ZXQvaW9zL2Vtb2ppLWV4cGVjdGVkLmh0bWwuCisgICAgICAgICogZWRpdGluZy9jYXJldC9pb3Mv
Zml4ZWQtY2FyZXQtcG9zaXRpb24tYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBlZGl0aW5nL2NhcmV0L2lvcy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwuaHRt
bDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92
ZXJmbG93LWFyZWEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVj
dGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93LWFyZWEuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1leHRlbmRzLWludG8tb3Zl
cmZsb3ctYXJlYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2lvcy9zZWxlY3Rpb24tZXh0ZW5kcy1pbnRvLW92ZXJmbG93LWFyZWEuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTA3
LTExICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0
ZXN0IGV4cGVjdGF0aW9ucyBhbmQgYmFzZWxpbmVzIGZvciBpT1MgMTMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93LWFyZWEtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvY2FyZXQtaW4tb3ZlcmZsb3ct
YXJlYS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkxZGExMzMyYTQxYjJkYTI1ZGEwNmJhNmZi
OGMyNTg0NmQ3MTAxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvY2Fy
ZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93LWFyZWEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcg
QEAKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUK
K2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xp
bmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK0NhcmV0IHJlY3Q6
IChsZWZ0ID0gMzksIHRvcCA9IDM4Niwgd2lkdGggPSAyLCBoZWlnaHQgPSAxOSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93LWFyZWEu
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2NhcmV0LWluLW92ZXJmbG93LWFy
ZWEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMmZlMmExZDgyNjU1NDIxNWFhNGMzZDQ5MTg4YjQ3OWE1Y2Ni
MTFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvY2Fy
ZXQtaW4tb3ZlcmZsb3ctYXJlYS5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQRSBodG1s
PiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0t
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lk
dGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSwgc2hyaW5r
LXRvLWZpdD1ubyI+CisgICAgPHRpdGxlPjwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICAj
ZWRpdGFibGUgeworICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICAg
ICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjVl
bTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLm91dHB1dCB7CisgICAgICAgICAgICBt
YXJnaW4tbGVmdDogNjBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYChsZWZ0ID0gJHtNYXRoLnJvdW5kKHJlY3QubGVm
dCl9LCB0b3AgPSAke01hdGgucm91bmQocmVjdC50b3ApfSwgd2lkdGggPSAke01hdGgucm91bmQo
cmVjdC53aWR0aCl9LCBoZWlnaHQgPSAke01hdGgucm91bmQocmVjdC5oZWlnaHQpfSlgOworICAg
ICAgICB9CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdGFi
bGUnKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlQW5kV2FpdEZvcklucHV0
U2Vzc2lvbkF0KDI1LCAyNSk7CisKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLnRhcEF0KDI1
LCA0MDApOworICAgICAgICAgICAgY29uc3QgY2FyZXRSZWN0ID0gYXdhaXQgVUlIZWxwZXIuZ2V0
VUlDYXJldFJlY3QoKTsKKworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2Nh
cmV0LXJlY3QiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmluZyhjYXJldFJlY3QpOworCisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgcnVuVGVzdCgp
OworICAgICAgICB9LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8ZGl2IGlkPSJlZGl0YWJsZSIgY29udGVudGVkaXRhYmxlPgorICAgICAgICBsaW5lPGJyPgor
ICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAg
ICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAg
ICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBs
aW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5l
PGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJy
PgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgor
ICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAg
ICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgICAgICBsaW5lPGJyPgorICAgIDwv
ZGl2PgorCis8ZGl2IGNsYXNzPSJvdXRwdXQiPkNhcmV0IHJlY3Q6IDxzcGFuIGlkPSJjYXJldC1y
ZWN0Ij48L3NwYW4+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2Vtb2ppLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2NhcmV0L2lvcy9lbW9qaS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5ZjU5ZTllMDg5NDcyYjhlOGIxNmE2NjlkNDRkZjMwNjBjMTZhNDU4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvY2FyZXQvaW9zL2Vtb2ppLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxNCArMCwwIEBACi1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFTUyBj
dXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhp
biAxIG9mIDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFTUyBjdXJy
ZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAx
IG9mIDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFTUyBjdXJyZW50
V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKLVBBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9m
IDE1Ci1QQVNTIGN1cnJlbnRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxNQotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvY2FyZXQvaW9zL2Vtb2ppLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvY2FyZXQvaW9zL2Vtb2ppLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjU5ZTllMDg5
NDcyYjhlOGIxNmE2NjlkNDRkZjMwNjBjMTZhNDU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvZW1vamktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1BBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRXaWR0
aCBpcyB3aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUK
K1BBU1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRXaWR0aCBp
cyB3aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKK1BB
U1MgY3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIGN1cnJlbnRXaWR0aCBpcyB3
aXRoaW4gMSBvZiAxNQorUEFTUyBjdXJyZW50V2lkdGggaXMgd2l0aGluIDEgb2YgMTUKK1BBU1Mg
Y3VycmVudFdpZHRoIGlzIHdpdGhpbiAxIG9mIDE1CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9jYXJldC9pb3MvZml4ZWQtY2FyZXQtcG9zaXRpb24tYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFm
dGVyLXNjcm9sbC1leHBlY3RlZC50eHQKaW5kZXggZDQ3MzY0NTM1OTA1NDA2MjQ0OTg1MmRkNmM3
ZTBlYzBkZGYyMzhmNi4uM2QzNDkwZTY5OGJjZDc1YzAyOGM1NjQxNzVjMmUwYjViYTM2N2UwYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvZml4ZWQtY2FyZXQtcG9z
aXRpb24tYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2NhcmV0L2lvcy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0
CkBAIC0zLDcgKzMsNyBAQCBQQVNTIGluaXRpYWxDYXJldFJlY3QudG9wIGlzIDIxCiBQQVNTIGlu
aXRpYWxDYXJldFJlY3Qud2lkdGggaXMgMwogUEFTUyBpbml0aWFsQ2FyZXRSZWN0LmhlaWdodCBp
cyAxNQogUEFTUyBmaW5hbENhcmV0UmVjdC5sZWZ0IGlzIDYKLVBBU1MgZmluYWxDYXJldFJlY3Qu
dG9wIGlzIDUwMjEKK1BBU1MgZmluYWxDYXJldFJlY3QudG9wIGlzIDQ5NzcKIFBBU1MgZmluYWxD
YXJldFJlY3Qud2lkdGggaXMgMwogUEFTUyBmaW5hbENhcmV0UmVjdC5oZWlnaHQgaXMgMTUKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvY2FyZXQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvZml4ZWQtY2FyZXQtcG9zaXRpb24tYWZ0ZXIt
c2Nyb2xsLmh0bWwKaW5kZXggZmE1YjI3YTZmMTc0Y2RiODA2NTM2MzRjZWIxMTAyOTA0ZTEwZmRh
NS4uNmE2MDMyMzhkMGIzMDcwOTQxM2IzMDAwOTAxNmYyZDM5MGYzYjRkZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvZml4ZWQtY2FyZXQtcG9zaXRpb24tYWZ0ZXIt
c2Nyb2xsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9jYXJldC9pb3MvZml4ZWQtY2Fy
ZXQtcG9zaXRpb24tYWZ0ZXItc2Nyb2xsLmh0bWwKQEAgLTUxLDcgKzUxLDcgQEAganNUZXN0SXNB
c3luYyA9IHRydWU7CiAgICAgLnRoZW4oKHJlY3QpID0+IHsKICAgICAgICAgZmluYWxDYXJldFJl
Y3QgPSByZWN0OwogICAgICAgICBzaG91bGRCZSgiZmluYWxDYXJldFJlY3QubGVmdCIsICI2Iik7
Ci0gICAgICAgIHNob3VsZEJlKCJmaW5hbENhcmV0UmVjdC50b3AiLCAiNTAyMSIpOworICAgICAg
ICBzaG91bGRCZSgiZmluYWxDYXJldFJlY3QudG9wIiwgIjQ5NzciKTsKICAgICAgICAgc2hvdWxk
QmUoImZpbmFsQ2FyZXRSZWN0LndpZHRoIiwgIjMiKTsKICAgICAgICAgc2hvdWxkQmUoImZpbmFs
Q2FyZXRSZWN0LmhlaWdodCIsICIxNSIpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9wbGFjZS1zZWxlY3Rpb24t
aW4tb3ZlcmZsb3ctYXJlYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93LWFyZWEtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjExYjVhNWI4MGJjYTNiYzEzZWRlYmEwOTk5MjNkZWM0MzcyMjFiZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2Vs
ZWN0aW9uLWluLW92ZXJmbG93LWFyZWEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKK2xp
bmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUK
K2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xp
bmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK2xpbmUKK1NlbGVjdGlvbiBiZWZvcmUg
dGFwOiAobm9kZSBhdCAyIzExLCBbb2JqZWN0IFRleHRdIzExKQorU2VsZWN0aW9uIGFmdGVyIHRh
cDogKG5vZGUgYXQgNDAjMTMsIFtvYmplY3QgVGV4dF0jMTMpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93LWFy
ZWEuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9wbGFjZS1zZWxlY3Rp
b24taW4tb3ZlcmZsb3ctYXJlYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NjczMjQwZTIxNmJhM2IxYjBh
NzBhNTgzNWVmYWNmNWRlNTgyMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9pb3MvcGxhY2Utc2VsZWN0aW9uLWluLW92ZXJmbG93LWFyZWEuaHRtbApA
QCAtMCwwICsxLDkwIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1z
Y2FsZT0xLCBtYXhpbXVtLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iPgorICAgIDx0aXRsZT48
L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgI2VkaXRhYmxlIHsKKyAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICBib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7
CisgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41ZW07CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIC5vdXRwdXQgeworICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDYwcHg7CisgICAgICAg
IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWkt
aGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzZWxlY3Rpb25Ub1N0cmluZyhjb250YWluZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IHNlbGVjdGlvbiA9IGdldFNlbGVjdGlvbigpOworICAgICAgICAgICAgaWYgKCFz
ZWxlY3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gIihubyBzZWxlY3Rp
b24pIjsKKworICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgw
KTsKKyAgICAgICAgICAgIGNvbnN0IG5vZGVJbmRleCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9m
LmNhbGwoY29udGFpbmVyLmNoaWxkTm9kZXMsIHJhbmdlLnN0YXJ0Q29udGFpbmVyKTsKKworICAg
ICAgICAgICAgcmV0dXJuIGAobm9kZSBhdCAke25vZGVJbmRleH0jJHtyYW5nZS5zdGFydE9mZnNl
dH0sICR7cmFuZ2UuZW5kQ29udGFpbmVyfSMke3JhbmdlLmVuZE9mZnNldH0pYDsKKyAgICAgICAg
fQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAg
ICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxlJyk7
CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Np
b25BdCgyNSwgMjUpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVj
dGlvbi1iZWZvcmUiKS50ZXh0Q29udGVudCA9IHNlbGVjdGlvblRvU3RyaW5nKGNvbnRhaW5lcik7
CisKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLnRhcEF0KDI1LCA0MDApOworICAgICAgICAg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1hZnRlciIpLnRleHRDb250ZW50
ID0gc2VsZWN0aW9uVG9TdHJpbmcoY29udGFpbmVyKTsKKworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgfSwgZmFs
c2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWRpdGFi
bGUiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4K
KyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAg
ICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAg
ICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAg
bGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGlu
ZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxi
cj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4K
KyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAg
ICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICA8L2Rpdj4KKworPGRpdiBjbGFz
cz0ib3V0cHV0Ij5TZWxlY3Rpb24gYmVmb3JlIHRhcDogPHNwYW4gaWQ9InNlbGVjdGlvbi1iZWZv
cmUiPjwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im91dHB1dCI+U2VsZWN0aW9uIGFmdGVyIHRh
cDogPHNwYW4gaWQ9InNlbGVjdGlvbi1hZnRlciI+PC9zcGFuPjwvZGl2PgorCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2Vs
ZWN0aW9uLWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tZXh0ZW5kcy1pbnRvLW92ZXJmbG93
LWFyZWEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjN2RlZTNiZDU0ZDUxNjFlZjI4OGM1Y2Vi
NzQ4NmY1MmM3ZjM5YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3Mvc2VsZWN0aW9uLWV4dGVuZHMtaW50by1vdmVyZmxvdy1hcmVhLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDI3IEBACitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5l
CitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCits
aW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5lCitsaW5l
CitsaW5lCitTZWxlY3Rpb24gcmVjdHM6IChsZWZ0ID0gOSwgdG9wID0gMzg2LCB3aWR0aCA9IDMy
LCBoZWlnaHQgPSAxOSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2lvcy9zZWxlY3Rpb24tZXh0ZW5kcy1pbnRvLW92ZXJmbG93LWFyZWEuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tZXh0ZW5kcy1pbnRvLW92ZXJmbG93
LWFyZWEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzlmZTgzNmU0YjgyNzMwMGE5NjNjYjI2YjFmMDI4Mzgx
NmZiNzE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
aW9zL3NlbGVjdGlvbi1leHRlbmRzLWludG8tb3ZlcmZsb3ctYXJlYS5odG1sCkBAIC0wLDAgKzEs
OTcgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhp
YmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1h
eGltdW0tc2NhbGU9MSwgc2hyaW5rLXRvLWZpdD1ubyI+CisgICAgPHRpdGxlPjwvdGl0bGU+Cisg
ICAgPHN0eWxlPgorICAgICAgICAjZWRpdGFibGUgeworICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgIGJvcmRlcjogMXB4IHNv
bGlkIGJsYWNrOworICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgICAgICAg
ICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLm91
dHB1dCB7CisgICAgICAgICAgICBtYXJnaW4tbGVmdDogNjBweDsKKyAgICAgICAgfQorICAgIDwv
c3R5bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNl
bGVjdFRleHRBdCh0YXBYLCB0YXBZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNj
cmlwdChgCisgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHVpQ29udHJvbGxlci5sb25nUHJlc3NBdFBvaW50KCR7dGFwWH0sICR7dGFwWX0s
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51
aVNjcmlwdENvbXBsZXRlKCJEb25lIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgfSkoKTtgLCByZXNvbHZlKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmVjdFRvU3RyaW5nKHJlY3QpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBgKGxlZnQgPSAke01hdGgucm91bmQocmVjdC5sZWZ0KX0sIHRv
cCA9ICR7TWF0aC5yb3VuZChyZWN0LnRvcCl9LCB3aWR0aCA9ICR7TWF0aC5yb3VuZChyZWN0Lndp
ZHRoKX0sIGhlaWdodCA9ICR7TWF0aC5yb3VuZChyZWN0LmhlaWdodCl9KWA7CisgICAgICAgIH0K
KworICAgICAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0YWJsZScpOwor
ICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9u
QXQoMjUsIDI1KTsKKworICAgICAgICAgICAgYXdhaXQgc2VsZWN0VGV4dEF0KDI1LCA0MDApCisg
ICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25SZWN0cyA9IGF3YWl0IFVJSGVscGVyLmdldFVJU2Vs
ZWN0aW9uUmVjdHMoKTsKKyAgICAgICAgICAgIGxldCByZWN0c1N0cmluZyA9ICIiOworICAgICAg
ICAgICAgZm9yIChsZXQgcmVjdCBvZiBzZWxlY3Rpb25SZWN0cykKKyAgICAgICAgICAgICAgICBy
ZWN0c1N0cmluZyArPSByZWN0VG9TdHJpbmcocmVjdCkgKyAnICc7CisKKyAgICAgICAgICAgIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tcmVjdHMiKS50ZXh0Q29udGVudCA9IHJl
Y3RzU3RyaW5nOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgfSwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWRpdGFibGUiIGNvbnRlbnRlZGl0YWJsZT4KKyAg
ICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAg
ICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAg
bGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGlu
ZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxi
cj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4K
KyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAg
ICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAg
ICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAgbGluZTxicj4KKyAgICAgICAg
bGluZTxicj4KKyAgICA8L2Rpdj4KKworPGRpdiBjbGFzcz0ib3V0cHV0Ij5TZWxlY3Rpb24gcmVj
dHM6IDxzcGFuIGlkPSJzZWxlY3Rpb24tcmVjdHMiPjwvc3Bhbj48L2Rpdj4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDAyOWI1YzM3Yjc4MDdmYmE5OThlM2U1MWJkYWJjNWM3YTM5MDJhYjkuLmI4NWVhN2Ew
ODQxYWU5MTM5MTg1OTBkNzg1OWJiNjc1ZDY1YmM1NGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4LDYgKzE4LDcgQEAgZmFzdC92aXN1
YWwtdmlld3BvcnQvaW9zLyBbIFBhc3MgXQogc2Nyb2xsaW5nY29vcmRpbmF0b3IgWyBQYXNzIF0K
IHNjcm9sbGluZ2Nvb3JkaW5hdG9yL21hYyBbIFNraXAgXQogZmFzdC93ZWItc2hhcmUgWyBQYXNz
IF0KK2VkaXRpbmcvY2FyZXQvaW9zIFsgUGFzcyBdCiBlZGl0aW5nL2ZpbmQgWyBQYXNzIF0KIGVk
aXRpbmcvaW5wdXQvaW9zIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvaW9zIFsgUGFzcyBd
CkBAIC02OTQsNiArNjk1LDcgQEAgZWRpdGluZy91bmRvL3VuZG8tZGVsZXRlLWJvdW5kYXJ5Lmh0
bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvdW5kby91bmRvLWRlbGV0ZS5odG1sIFsgRmFpbHVyZSBd
CiBlZGl0aW5nL3VuZG8vdW5kby1taXNzcGVsbGluZ3MuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGlu
Zy91bmRvL3VuZG8tdHlwaW5nLTAwMS5odG1sIFsgRmFpbHVyZSBdCitlZGl0aW5nL2NhcmV0L2lv
cy9lbW9qaS5odG1sIFsgRmFpbHVyZSBdCiAKICMgRWRpdGluZyB0ZXN0cyB0aGF0IHRpbWUgb3V0
OgogZWRpdGluZy9zZWxlY3Rpb24vZGVzaWdubW9kZS1uby1jYXJldC5odG1sCg==
</data>
<flag name="review"
          id="389831"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>