<?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>234214</bug_id>
          
          <creation_ts>2021-12-12 13:59:02 -0800</creation_ts>
          <short_desc>Add support for detecting modal containers that contain a given search term</short_desc>
          <delta_ts>2021-12-17 21:23:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          <blocked>234216</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823336</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-12 13:59:02 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823341</commentid>
    <comment_count>1</comment_count>
      <attachid>446944</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-12 14:44:09 -0800</bug_when>
    <thetext>Created attachment 446944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823384</commentid>
    <comment_count>2</comment_count>
      <attachid>446964</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-12 21:43:37 -0800</bug_when>
    <thetext>Created attachment 446964
Slightly simpler approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823525</commentid>
    <comment_count>3</comment_count>
      <attachid>446964</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-13 07:37:55 -0800</bug_when>
    <thetext>Comment on attachment 446964
Slightly simpler approach

The webrtc and XHR test failures do not appear to be related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823584</commentid>
    <comment_count>4</comment_count>
      <attachid>447020</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-13 09:52:08 -0800</bug_when>
    <thetext>Created attachment 447020
Minor style tweaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823718</commentid>
    <comment_count>5</comment_count>
      <attachid>447020</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-13 13:29:09 -0800</bug_when>
    <thetext>Comment on attachment 447020
Minor style tweaks

If this is just about fixed position, please just use the term &quot;fixed&quot;. &quot;Viewport constrained&quot; means &quot;fixed or sticky&quot; in the rest of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823726</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-13 13:36:19 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #5)
&gt; Comment on attachment 447020 [details]
&gt; Minor style tweaks
&gt; 
&gt; If this is just about fixed position, please just use the term &quot;fixed&quot;.
&gt; &quot;Viewport constrained&quot; means &quot;fixed or sticky&quot; in the rest of the code.

Will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823735</commentid>
    <comment_count>7</comment_count>
      <attachid>447058</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-13 13:50:44 -0800</bug_when>
    <thetext>Created attachment 447058
Fix names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824720</commentid>
    <comment_count>8</comment_count>
      <attachid>447058</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-16 04:11:33 -0800</bug_when>
    <thetext>Comment on attachment 447058
Fix names

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

I don&apos;t think this code should be in style resolution. Tracking the fixed position ancestor could be more naturally tracked during render tree building (in RenderTreeUpdater) where the rest of the related code is going too. It should be really simple too, a single RenderTreeUpdater scope variable I think.

Looking at the other patches the mechanism seems to be doing content scanning synchronously and then triggering another style update. Is the idea to make some portion of this asynchronous?

&gt; Source/WebCore/style/StyleUpdate.cpp:143
&gt; +Element* Update::fixedPositionRoot(Element&amp; element, const RenderStyle&amp; style, Element* parentFixedPositionRoot)
&gt; +{
&gt; +    if (!m_document-&gt;shouldObserveFixedPositionRoots())
&gt; +        return parentFixedPositionRoot;
&gt; +
&gt; +    if (!composedTreeAncestors(element).first() || is&lt;HTMLBodyElement&gt;(element))
&gt; +        return parentFixedPositionRoot;
&gt; +
&gt; +    if (!isFixedPosition(style) || parentFixedPositionRoot)
&gt; +        return parentFixedPositionRoot;
&gt; +
&gt; +    return &amp;element;
&gt; +}

This non-static Style::Update member function doesn&apos;t access the object at all (besides m_document). It could just be a static function in the caller.

The code here is bit silly in general. If you pass a non-null parentFixedPositionRoot the function just returns it, after various tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824804</commentid>
    <comment_count>9</comment_count>
      <attachid>447058</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-16 10:26:11 -0800</bug_when>
    <thetext>Comment on attachment 447058
Fix names

(In reply to Antti Koivisto from comment #8)
&gt; Comment on attachment 447058 [details]
&gt; Fix names
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447058&amp;action=review
&gt; 
&gt; I don&apos;t think this code should be in style resolution. Tracking the fixed
&gt; position ancestor could be more naturally tracked during render tree
&gt; building (in RenderTreeUpdater) where the rest of the related code is going
&gt; too. It should be really simple too, a single RenderTreeUpdater scope
&gt; variable I think.
&gt; 

👍🏻

Changing this so that it runs as a post-layout task, as we discussed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824817</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-16 11:00:10 -0800</bug_when>
    <thetext>Note that FrameView already has:
    std::unique_ptr&lt;WeakHashSet&lt;RenderLayerModelObject&gt;&gt; m_viewportConstrainedObjects;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824823</commentid>
    <comment_count>11</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-16 11:12:57 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #10)
&gt; Note that FrameView already has:
&gt;     std::unique_ptr&lt;WeakHashSet&lt;RenderLayerModelObject&gt;&gt;
&gt; m_viewportConstrainedObjects;

Thank you, that works great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824846</commentid>
    <comment_count>12</comment_count>
      <attachid>447385</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-16 12:39:21 -0800</bug_when>
    <thetext>Created attachment 447385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824848</commentid>
    <comment_count>13</comment_count>
      <attachid>447386</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-16 12:41:21 -0800</bug_when>
    <thetext>Created attachment 447386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824854</commentid>
    <comment_count>14</comment_count>
      <attachid>447387</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-16 12:56:14 -0800</bug_when>
    <thetext>Created attachment 447387
Remove unneeded #include</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825200</commentid>
    <comment_count>15</comment_count>
      <attachid>447387</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-17 14:53:25 -0800</bug_when>
    <thetext>Comment on attachment 447387
Remove unneeded #include

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825203</commentid>
    <comment_count>16</comment_count>
      <attachid>447387</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-12-17 14:57:33 -0800</bug_when>
    <thetext>Comment on attachment 447387
Remove unneeded #include

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

&gt; Source/WebCore/page/ModalContainerObserver.cpp:125
&gt; +        RefPtr element = object.element();
&gt; +        if (!element || is&lt;HTMLBodyElement&gt;(*element) || element-&gt;isDocumentNode() || !m_elementsToIgnoreWhenSearching.add(*element).isNewEntry)
&gt; +            continue;
&gt; +
&gt; +        for (auto&amp; textNode : descendantsOfType&lt;Text&gt;(*element)) {
&gt; +            if (!matchesSearchTerm(textNode, searchTerm))
&gt; +                continue;
&gt; +
&gt; +            m_container = element.get();

Any particular reason why you traverse the DOM tree and not the render tree? (the renderer tree in general is &quot;closer&quot; to what ends up on the screens)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825205</commentid>
    <comment_count>17</comment_count>
      <attachid>447387</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-17 14:58:43 -0800</bug_when>
    <thetext>Comment on attachment 447387
Remove unneeded #include

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

r=me as well :)

&gt; Source/WebCore/page/ModalContainerObserver.cpp:49
&gt; +

Style: I&apos;d remove this newline

&gt; Source/WebCore/page/ModalContainerObserver.cpp:57
&gt; +        // FIXME: Need to properly support subframes.

Is there a bug for this?

&gt; Source/WebCore/page/ModalContainerObserver.cpp:64
&gt; +    RefPtr frame = document.frame();

NIT: my understanding is that since `frame` is only used for simple getters (i.e. no complicated logic) it doesn&apos;t need to be ref&apos;d

&gt; Source/WebCore/page/ModalContainerObserver.cpp:81
&gt; +    bool shouldSearchNode = ([&amp;] {

NIT: Does this really need to be a lambda?

&gt; Source/WebCore/page/ModalContainerObserver.cpp:113
&gt; +    if (searchTerm.isNull())

NIT: you could `!searchTerm`

&gt; Source/WebCore/page/ModalContainerObserver.cpp:118
&gt; +        if (!element || is&lt;HTMLBodyElement&gt;(*element) || element-&gt;isDocumentNode() || !m_elementsToIgnoreWhenSearching.add(*element).isNewEntry)

Style: I&apos;d split this into separate lines so that the `WeakHashSet` operation is more obvious</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825216</commentid>
    <comment_count>18</comment_count>
      <attachid>447387</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-17 15:24:07 -0800</bug_when>
    <thetext>Comment on attachment 447387
Remove unneeded #include

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

Thanks for taking a look!

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:49
&gt;&gt; +
&gt; 
&gt; Style: I&apos;d remove this newline

Fixed, good catch.

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:57
&gt;&gt; +        // FIXME: Need to properly support subframes.
&gt; 
&gt; Is there a bug for this?

Filed: https://bugs.webkit.org/show_bug.cgi?id=234446. I&apos;ll add a FIXME referencing it, too.

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:64
&gt;&gt; +    RefPtr frame = document.frame();
&gt; 
&gt; NIT: my understanding is that since `frame` is only used for simple getters (i.e. no complicated logic) it doesn&apos;t need to be ref&apos;d

Sure.

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:81
&gt;&gt; +    bool shouldSearchNode = ([&amp;] {
&gt; 
&gt; NIT: Does this really need to be a lambda?

I guess it doesn&apos;t. Will remove.

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:113
&gt;&gt; +    if (searchTerm.isNull())
&gt; 
&gt; NIT: you could `!searchTerm`

AtomString doesn&apos;t have an `operator bool()`.

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:118
&gt;&gt; +        if (!element || is&lt;HTMLBodyElement&gt;(*element) || element-&gt;isDocumentNode() || !m_elementsToIgnoreWhenSearching.add(*element).isNewEntry)
&gt; 
&gt; Style: I&apos;d split this into separate lines so that the `WeakHashSet` operation is more obvious

Sure.

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:125
&gt;&gt; +            m_container = element.get();
&gt; 
&gt; Any particular reason why you traverse the DOM tree and not the render tree? (the renderer tree in general is &quot;closer&quot; to what ends up on the screens)

That&apos;s a good point! I suppose I can traverse `RenderText` instead of `Text` nodes here — will give that a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825224</commentid>
    <comment_count>19</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-12-17 15:41:59 -0800</bug_when>
    <thetext>&gt;NIT: Does this really need to be a lambda?
my answer would be yes, always.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825226</commentid>
    <comment_count>20</comment_count>
      <attachid>447387</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-12-17 15:43:06 -0800</bug_when>
    <thetext>Comment on attachment 447387
Remove unneeded #include

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

&gt; Source/WebCore/page/ModalContainerObserver.cpp:116
&gt; +    for (auto&amp; object : *view.viewportConstrainedObjects()) {

btw, there are renderers. let&apos;s call them that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825227</commentid>
    <comment_count>21</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-12-17 15:43:30 -0800</bug_when>
    <thetext>(In reply to zalan from comment #20)
&gt; Comment on attachment 447387 [details]
&gt; Remove unneeded #include
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447387&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/ModalContainerObserver.cpp:116
&gt; &gt; +    for (auto&amp; object : *view.viewportConstrainedObjects()) {
&gt; 
&gt; btw, there are renderers. let&apos;s call them that.
these are even</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825230</commentid>
    <comment_count>22</comment_count>
      <attachid>447387</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-17 15:45:54 -0800</bug_when>
    <thetext>Comment on attachment 447387
Remove unneeded #include

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

&gt;&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:116
&gt;&gt;&gt; +    for (auto&amp; object : *view.viewportConstrainedObjects()) {
&gt;&gt; 
&gt;&gt; btw, there are renderers. let&apos;s call them that.
&gt; 
&gt; these are even

True — renamed to `renderer`!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825231</commentid>
    <comment_count>23</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-17 15:47:45 -0800</bug_when>
    <thetext>(In reply to zalan from comment #19)
&gt; &gt;NIT: Does this really need to be a lambda?
&gt; my answer would be yes, always.

I&apos;m also a fan of &quot;inline lambdas w/ early returns&quot;! I suppose I&apos;ll keep this one here after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825236</commentid>
    <comment_count>24</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-12-17 15:59:56 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #23)
&gt; (In reply to zalan from comment #19)
&gt; &gt; &gt;NIT: Does this really need to be a lambda?
&gt; &gt; my answer would be yes, always.
&gt; 
&gt; I&apos;m also a fan of &quot;inline lambdas w/ early returns&quot;! I suppose I&apos;ll keep
&gt; this one here after all.
Yeah + great for scoping + replaces comments like // Check if we should search in this node</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825251</commentid>
    <comment_count>25</comment_count>
      <attachid>447493</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-17 16:34:07 -0800</bug_when>
    <thetext>Created attachment 447493
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825276</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-17 19:07:57 -0800</bug_when>
    <thetext>Committed r287217 (245380@main): &lt;https://commits.webkit.org/245380@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447493.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825277</commentid>
    <comment_count>27</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-17 19:08:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86659823&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446944</attachid>
            <date>2021-12-12 14:44:09 -0800</date>
            <delta_ts>2021-12-12 21:43:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234214-20211212144408.patch</filename>
            <type>text/plain</type>
            <size>11577</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0MWFhYTM0YjNkYzQx
NzJlNmMyMTNmODllZTg0YWQ1ZTQxOTlkNS4uYWJhZTA1YjJiMmEyNDgyYTY2MWE0MWVlYWM2NzIy
NjUzNDI5N2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTEyLTEyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTdHlsZTo6
VHJlZU9ic2VydmF0aW9ucyBhbmQgdXNlIGl0IHRvIGRpc2NvdmVyIHZpZXdwb3J0LWNvbnN0cmFp
bmVkIHJvb3RzIGR1cmluZyBzdHlsZSByZWNhbGMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBsdW1iIGFuIG9wdGlvbiBzZXQgaW5kaWNhdGluZyB3aGV0
aGVyIGFuIGVsZW1lbnQgaXMgYSB2aWV3cG9ydC1jb25zdHJhaW5lZCByb290IHRocm91Z2ggc3R5
bGUgcmVjYWxjIGNvZGVwYXRoczsKKyAgICAgICAgaW4gYSBmdXR1cmUgcGF0Y2gsIHRoaXMgYml0
IG9mIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCB0byBoZXVyaXN0aWNhbGx5IGRldGVjdCBhbmQg
c3VwcHJlc3MgcGFpbnRpbmcgb2YgY2VydGFpbgorICAgICAgICB0eXBlcyBvZiBmaXhlZCBwb3Np
dGlvbiBjb250YWluZXJzIGR1cmluZyBzdHlsZSByZWNhbGMsIGluIGEgd2F5IHNpbWlsYXIgdG8g
dGhlIGV4aXN0aW5nICJjb250ZW50IG9ic2VydmF0aW9uIgorICAgICAgICBtZWNoYW5pc20uIFNl
ZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXF1aXJlc1RyZWVPYnNlcnZhdGlvbnMgY29u
c3QpOgorCisgICAgICAgIEFkZCBhIG1ldGhvZCBzdHViIGluZGljYXRpbmcgd2hldGhlciBvciBu
b3Qgd2UgbmVlZCB0byBjb21wdXRlIHRyZWUgb2JzZXJ2YXRpb25zIGR1cmluZyBzdHlsZSByZWNh
bGMuIFRoaXMKKyAgICAgICAgbWV0aG9kIHN0dWIgd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBvbmUg
b2YgdGhlIG5leHQgcGF0Y2hlcyBpbiB0aGUgc2VxdWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpkaWRPYnNlcnZlVmlld3BvcnRDb25zdHJhaW5lZFJvb3QpOgorCisgICAgICAg
IEFkZCBhIG1ldGhvZCBzdHViIHRoYXQncyBjYWxsZWQgd2hlbiBkZXRlY3Rpbmcgdmlld3BvcnQt
Y29uc3RyYWluZWQgcm9vdHMgZHVyaW5nIHN0eWxlIHJlY2FsYy4gVGhpcyB3aWxsIGFsc28gYmUK
KyAgICAgICAgaW1wbGVtZW50ZWQgaW4gYW4gdXBjb21pbmcgcGF0Y2guCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVw
ZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVV
cGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpQYXJlbnQ6OlBhcmVudCk6CisKKyAgICAgICAgQWxsb3cgVHJlZU9ic2Vy
dmF0aW9ucyB0byBwcm9wYWdhdGUgZHVyaW5nIHN0eWxlIHJlY2FsYyBieSBwbHVtYmluZyBpdCB0
aHJvdWdoIFN0eWxlOjpFbGVtZW50VXBkYXRlcyBhbmQKKyAgICAgICAgU3R5bGU6OlRyZWVSZXNv
bHZlcjo6UGFyZW50LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpy
ZXNvbHZlRWxlbWVudCk6CisKKyAgICAgICAgUGFzcyB0cmVlIG9ic2VydmF0aW9uIGZsYWdzIGZy
b20gdGhlIHBhcmVudCBkb3duIHRvIGNoaWxkIGVsZW1lbnRzIHdoZW4gcmVzb2x2aW5nIGVsZW1l
bnQgc3R5bGVzLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwdXNo
UGFyZW50KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oOgorICAgICAgICAq
IHN0eWxlL1N0eWxlVXBkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpkZXNjZW5k
YW50c0FyZVZpZXdwb3J0Q29uc3RyYWluZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlVw
ZGF0ZTo6b2JzZXJ2YXRpb25zKToKKworICAgICAgICBJZiBuZWVkZWQsIGNvbXB1dGUgYW5kIHBv
cHVsYXRlIHRoZSBUcmVlT2JzZXJ2YXRpb25zIG9wdGlvbiBzZXQuIEZvciBub3csIHRoaXMgb25s
eSBjb250YWlucyBhIHNpbmdsZSBmbGFnCisgICAgICAgIChUcmVlT2JzZXJ2YXRpb25GbGFnczo6
RGVzY2VuZGFudHNBcmVWaWV3cG9ydENvbnN0cmFpbmVkKSwgdGhvdWdoIGl0IHdpbGwgYmUgYXVn
bWVudGVkIGluIGEgZnV0dXJlIHBhdGNoIHRvCisgICAgICAgIGNvdmVyIHNvbWUgYWRkaXRpb25h
bCBzY2VuYXJpb3MuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5oOgorCisgICAgICAg
IEFkZCB0aGUgbmV3IG9wdGlvbiBzZXQgYW5kIGZsYWdzLCBhbmQgYWxzbyBuYXJyb3cgRGVzY2Vu
ZGFudHNUb1Jlc29sdmUgdG8gOCBiaXRzIHdoaWxlIHdlJ3JlIGhlcmUuCisKIDIwMjEtMTItMTIg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBpcGUgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kIGludG8gR3JhZGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGI0YTAzYjZlMDRhNWJjNjc1NjRkZjE1ZmI2ZTYzMzA3MGE0ZDMzNWMuLmUzMTFhNTI3NjRhMTAx
MDljMDhmOTBlNDEyMDQ4ZWRkMzE5ZDI2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
OTA3Nyw2ICs5MDc3LDE3IEBAIFN0cmluZyBEb2N1bWVudDo6ZGVidWdEZXNjcmlwdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBEb2N1bWVudDo6
cmVxdWlyZXNUcmVlT2JzZXJ2YXRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OmRpZE9ic2VydmVWaWV3cG9ydENvbnN0cmFpbmVkUm9vdChFbGVt
ZW50JiByb290KQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgVU5VU0VEX1BB
UkFNKHJvb3QpOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgdHMgPDwgZG9jdW1lbnQuZGVidWdEZXNj
cmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBiODVkZDY5ZmI5ODVjODI4OGM3MmJj
OGZlZjU0MDY2MzA2ZTIzZmNmLi45YjFjZjM2Y2RhZTMyN2QxOTU5YWVmZDczZjZkNmJjYTUwNjk0
NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY2Myw2ICsxNjYzLDkgQEAgcHVibGljOgog
CiAgICAgVVJMIGZhbGxiYWNrQmFzZVVSTCgpIGNvbnN0OwogCisgICAgYm9vbCByZXF1aXJlc1Ry
ZWVPYnNlcnZhdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkIGRpZE9ic2VydmVWaWV3cG9ydENvbnN0
cmFpbmVkUm9vdChFbGVtZW50Jik7CisKIHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlv
bkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAx
IH07CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBTZXR0aW5ncyYs
IGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NlcyA9IHsgfSwgdW5zaWduZWQgY29uc3RydWN0aW9u
RmxhZ3MgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAK
aW5kZXggYTc5NzhmY2I1ODY2NGRkOTc5NjczZjU2OWE4ODc4MjE0NzdhOTMwZC4uOWU4Mjc5ZDM4
ZmExNjljM2RiNWNhNWY5NDE0Y2ZhZWI2MTBmZjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyR2VuZXJhdGVkQ29udGVudC5jcHAKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgUmVuZGVy
VHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVu
dCYgY3VycmVudCwKICAgICAgICAgY29udGVudHNTdHlsZS0+Y29weUNvbnRlbnRGcm9tKCp1cGRh
dGUtPnN0eWxlKTsKIAogICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBjb250ZW50c1VwZGF0
ZSB7IFdURk1vdmUoY29udGVudHNTdHlsZSksIHVwZGF0ZS0+Y2hhbmdlLCB1cGRhdGUtPnJlY29t
cG9zaXRlTGF5ZXIgfTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIGNvbnRlbnRzVXBk
YXRlcyB7IFdURk1vdmUoY29udGVudHNVcGRhdGUpLCBTdHlsZTo6RGVzY2VuZGFudHNUb1Jlc29s
dmU6Ok5vbmUsIHsgfSB9OworICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZXMgY29udGVudHNV
cGRhdGVzIHsgV1RGTW92ZShjb250ZW50c1VwZGF0ZSksIHsgfSwgU3R5bGU6OkRlc2NlbmRhbnRz
VG9SZXNvbHZlOjpOb25lLCB7IH0gfTsKICAgICAgICAgbV91cGRhdGVyLnVwZGF0ZUVsZW1lbnRS
ZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShjb250ZW50c1VwZGF0ZXMpKTsKICAgICAg
ICAgcHNldWRvRWxlbWVudC0+c3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZShSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIoKnVwZGF0ZS0+c3R5bGUpKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIHBz
ZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlLT5z
dHlsZSk7CiAgICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUg
eyBXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSksIHVwZGF0ZS0+Y2hhbmdlLCB1cGRh
dGUtPnJlY29tcG9zaXRlTGF5ZXIgfTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIHBz
ZXVkb0VsZW1lbnRVcGRhdGVzIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlKSwgU3R5bGU6
OkRlc2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lLCB7IH0gfTsKKyAgICAgICAgU3R5bGU6OkVsZW1l
bnRVcGRhdGVzIHBzZXVkb0VsZW1lbnRVcGRhdGVzIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBk
YXRlKSwgeyB9LCBTdHlsZTo6RGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUsIHsgfSB9OwogICAg
ICAgICBtX3VwZGF0ZXIudXBkYXRlRWxlbWVudFJlbmRlcmVyKCpwc2V1ZG9FbGVtZW50LCBXVEZN
b3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVzKSk7CiAgICAgICAgIEFTU0VSVCghcHNldWRvRWxlbWVu
dC0+aGFzRGlzcGxheUNvbnRlbnRzKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCAyMGUyZTNkNjU3M2M0ODY3YTVkOTNmOWU4ZmRmZTE4
YmUwYmZlY2I5Li4zYmVhOWU3OTkwZWNjNTM0YTIxMGU5ZGRiZDhlZWQ1YmVlMTQxOTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC0xMDIsMTEgKzEw
MiwxMiBAQCBUcmVlUmVzb2x2ZXI6OlBhcmVudDo6UGFyZW50KERvY3VtZW50JiBkb2N1bWVudCkK
IHsKIH0KIAotVHJlZVJlc29sdmVyOjpQYXJlbnQ6OlBhcmVudChFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENoYW5nZSBjaGFuZ2UsIERlc2NlbmRhbnRzVG9SZXNv
bHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlKQorVHJlZVJlc29sdmVyOjpQYXJlbnQ6OlBhcmVudChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENoYW5nZSBjaGFuZ2Us
IERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlLCBUcmVlT2JzZXJ2YXRp
b25zIG9ic2VydmF0aW9ucykKICAgICA6IGVsZW1lbnQoJmVsZW1lbnQpCiAgICAgLCBzdHlsZShz
dHlsZSkKICAgICAsIGNoYW5nZShjaGFuZ2UpCiAgICAgLCBkZXNjZW5kYW50c1RvUmVzb2x2ZShk
ZXNjZW5kYW50c1RvUmVzb2x2ZSkKKyAgICAsIG9ic2VydmF0aW9ucyhvYnNlcnZhdGlvbnMpCiB7
CiB9CiAKQEAgLTI3MCw3ICsyNzEsOCBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJl
c29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQuc2V0TWF5
SGF2ZUVkaXRhYmxlRWxlbWVudHMoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHsgV1RGTW92ZSh1
cGRhdGUpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVzKSB9Owor
ICAgIGF1dG8gb2JzZXJ2YXRpb25zID0gdXBkYXRlLnN0eWxlID8gbV91cGRhdGUtPm9ic2VydmF0
aW9ucyhlbGVtZW50LCAqdXBkYXRlLnN0eWxlLCBwYXJlbnQoKS5vYnNlcnZhdGlvbnMpIDogVHJl
ZU9ic2VydmF0aW9ucyB7IH07CisgICAgcmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUpLCBXVEZNb3Zl
KHBzZXVkb1VwZGF0ZXMpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgb2JzZXJ2YXRpb25zIH07CiB9
CiAKIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNl
dWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVw
ZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQpCkBAIC00MDAsNyArNDAyLDcgQEAgdm9pZCBUcmVlUmVz
b2x2ZXI6OnB1c2hQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBDaGFuZ2UKIHsKICAgICBzY29wZSgpLnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5zZWxlY3Rv
ckZpbHRlci5wdXNoUGFyZW50KCZlbGVtZW50KTsKIAotICAgIFBhcmVudCBwYXJlbnQoZWxlbWVu
dCwgc3R5bGUsIGNoYW5nZSwgZGVzY2VuZGFudHNUb1Jlc29sdmUpOworICAgIFBhcmVudCBwYXJl
bnQoZWxlbWVudCwgc3R5bGUsIGNoYW5nZSwgZGVzY2VuZGFudHNUb1Jlc29sdmUsIG1fdXBkYXRl
LT5vYnNlcnZhdGlvbnMoZWxlbWVudCwgc3R5bGUsIHRoaXMtPnBhcmVudCgpLm9ic2VydmF0aW9u
cykpOwogCiAgICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3QgPSBlbGVtZW50LnNoYWRvd1Jvb3QoKSkg
ewogICAgICAgICBwdXNoU2NvcGUoKnNoYWRvd1Jvb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggZmEyNWE1MTU0OWQ0MGQ4N2QwNTU3MTM4MjVlZmViYTA0
NmU2ZTBjNy4uN2U2MWVmNjMyOTliNjlhYTQxZDIyN2E3MTI4OTE2NTdhYzg3M2FmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCkBAIC04NCw5ICs4NCwxMCBAQCBw
cml2YXRlOgogICAgICAgICBDaGFuZ2UgY2hhbmdlIHsgQ2hhbmdlOjpOb25lIH07CiAgICAgICAg
IERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFudHNU
b1Jlc29sdmU6Ok5vbmUgfTsKICAgICAgICAgYm9vbCBkaWRQdXNoU2NvcGUgeyBmYWxzZSB9Owor
ICAgICAgICBUcmVlT2JzZXJ2YXRpb25zIG9ic2VydmF0aW9uczsKIAogICAgICAgICBQYXJlbnQo
RG9jdW1lbnQmKTsKLSAgICAgICAgUGFyZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IENoYW5nZSwgRGVzY2VuZGFudHNUb1Jlc29sdmUpOworICAgICAgICBQYXJlbnQoRWxlbWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgQ2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZSwgVHJlZU9i
c2VydmF0aW9ucyk7CiAgICAgfTsKIAogICAgIFNjb3BlJiBzY29wZSgpIHsgcmV0dXJuIG1fc2Nv
cGVTdGFjay5sYXN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VXBkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcAppbmRleCBk
ZDY2NjJjNTFmMmZkNWI2MzRlMzA1YWZhYTlkZjI5NjZlZDM3OGY2Li5lNDU5ODMyZWQ4MDBhZDAx
OGEwNDU0NTM4ZDFjNDIzNDhkZGMyYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgog
I2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xMjIsNiAr
MTIzLDMwIEBAIHZvaWQgVXBkYXRlOjphZGRUZXh0KFRleHQmIHRleHQsIFRleHRVcGRhdGUmJiB0
ZXh0VXBkYXRlKQogICAgIGFkZFRleHQodGV4dCwgY29tcG9zZWRUcmVlQW5jZXN0b3JzKHRleHQp
LmZpcnN0KCksIFdURk1vdmUodGV4dFVwZGF0ZSkpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wg
ZGVzY2VuZGFudHNBcmVWaWV3cG9ydENvbnN0cmFpbmVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpDb250ZW50
cyAmJiBzdHlsZS5wb3NpdGlvbigpID09IFBvc2l0aW9uVHlwZTo6Rml4ZWQ7Cit9CisKK1RyZWVP
YnNlcnZhdGlvbnMgVXBkYXRlOjpvYnNlcnZhdGlvbnMoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBUcmVlT2JzZXJ2YXRpb25zIHBhcmVudE9ic2VydmF0aW9ucykK
K3sKKyAgICBpZiAoIW1fZG9jdW1lbnQtPnJlcXVpcmVzVHJlZU9ic2VydmF0aW9ucygpKQorICAg
ICAgICByZXR1cm4gcGFyZW50T2JzZXJ2YXRpb25zOworCisgICAgaWYgKCFjb21wb3NlZFRyZWVB
bmNlc3RvcnMoZWxlbWVudCkuZmlyc3QoKSB8fCBpczxIVE1MQm9keUVsZW1lbnQ+KGVsZW1lbnQp
KQorICAgICAgICByZXR1cm4gcGFyZW50T2JzZXJ2YXRpb25zOworCisgICAgaWYgKCFkZXNjZW5k
YW50c0FyZVZpZXdwb3J0Q29uc3RyYWluZWQoc3R5bGUpKQorICAgICAgICByZXR1cm4gcGFyZW50
T2JzZXJ2YXRpb25zOworCisgICAgaWYgKCFwYXJlbnRPYnNlcnZhdGlvbnMuY29udGFpbnMoU3R5
bGU6OlRyZWVPYnNlcnZhdGlvbkZsYWdzOjpEZXNjZW5kYW50c0FyZVZpZXdwb3J0Q29uc3RyYWlu
ZWQpKSB7CisgICAgICAgIHBhcmVudE9ic2VydmF0aW9ucy5hZGQoU3R5bGU6OlRyZWVPYnNlcnZh
dGlvbkZsYWdzOjpEZXNjZW5kYW50c0FyZVZpZXdwb3J0Q29uc3RyYWluZWQpOworICAgICAgICBt
X2RvY3VtZW50LT5kaWRPYnNlcnZlVmlld3BvcnRDb25zdHJhaW5lZFJvb3QoZWxlbWVudCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHBhcmVudE9ic2VydmF0aW9uczsKK30KKwogdm9pZCBVcGRhdGU6
OmFkZFBvc3NpYmxlUm9vdChFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKaW5kZXggN2Y5ZDdhMTc3Y2NmZjU5ZWE4Mjc2
MTY1ODI0YWUzYWNkNTgyYjlhMC4uNTE5Yzk0NTYzZTU2MjhkNGNmOTE5Y2ZiZWU0YzY4ZDY5ZDc2
MGFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCkBAIC00NywxNCArNDcsMjAgQEAg
c3RydWN0IEVsZW1lbnRVcGRhdGUgewogICAgIGJvb2wgcmVjb21wb3NpdGVMYXllciB7IGZhbHNl
IH07CiB9OwogCi1lbnVtIGNsYXNzIERlc2NlbmRhbnRzVG9SZXNvbHZlIHsgTm9uZSwgQ2hpbGRy
ZW5XaXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJlbiwgQWxsIH07CitlbnVtIGNsYXNzIERlc2Nl
bmRhbnRzVG9SZXNvbHZlIDogdWludDhfdCB7IE5vbmUsIENoaWxkcmVuV2l0aEV4cGxpY2l0SW5o
ZXJpdCwgQ2hpbGRyZW4sIEFsbCB9OwogCiB1c2luZyBQc2V1ZG9JZFRvRWxlbWVudFVwZGF0ZU1h
cCA9IEhhc2hNYXA8UHNldWRvSWQsIEVsZW1lbnRVcGRhdGUsIEludEhhc2g8UHNldWRvSWQ+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBzZXVkb0lkPj47CiAKK2VudW0gY2xhc3MgVHJlZU9i
c2VydmF0aW9uRmxhZ3MgOiB1aW50OF90IHsKKyAgICBEZXNjZW5kYW50c0FyZVZpZXdwb3J0Q29u
c3RyYWluZWQgPSAxIDw8IDAsCit9OwordXNpbmcgVHJlZU9ic2VydmF0aW9ucyA9IE9wdGlvblNl
dDxUcmVlT2JzZXJ2YXRpb25GbGFncz47CisKIHN0cnVjdCBFbGVtZW50VXBkYXRlcyB7CiAgICAg
RWxlbWVudFVwZGF0ZSB1cGRhdGU7Ci0gICAgRGVzY2VuZGFudHNUb1Jlc29sdmUgZGVzY2VuZGFu
dHNUb1Jlc29sdmUgeyBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSB9OwogICAgIFBzZXVkb0lk
VG9FbGVtZW50VXBkYXRlTWFwIHBzZXVkb0VsZW1lbnRVcGRhdGVzOworICAgIERlc2NlbmRhbnRz
VG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5v
bmUgfTsKKyAgICBUcmVlT2JzZXJ2YXRpb25zIG9ic2VydmF0aW9uczsKIH07CiAKIHN0cnVjdCBU
ZXh0VXBkYXRlIHsKQEAgLTg2LDYgKzkyLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkVGV4dChU
ZXh0JiwgRWxlbWVudCogcGFyZW50LCBUZXh0VXBkYXRlJiYpOwogICAgIHZvaWQgYWRkVGV4dChU
ZXh0JiwgVGV4dFVwZGF0ZSYmKTsKIAorICAgIFRyZWVPYnNlcnZhdGlvbnMgb2JzZXJ2YXRpb25z
KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIFRyZWVPYnNlcnZhdGlvbnMgcGFyZW50T2Jz
ZXJ2YXRpb25zKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGFkZFBvc3NpYmxlUm9vdChFbGVtZW50
Kik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446964</attachid>
            <date>2021-12-12 21:43:37 -0800</date>
            <delta_ts>2021-12-13 09:52:04 -0800</delta_ts>
            <desc>Slightly simpler approach</desc>
            <filename>bug-234214-20211212214336.patch</filename>
            <type>text/plain</type>
            <size>10715</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFkZDM2ZTk1MWEyOWE4
YzRkNzMwNjI1OWIzNTg0NzRiNWU2M2NlNC4uNDNmMTRlMGQ2ZTJlZjNlZmMwMDY4NTY2Y2ZkM2Iy
NjIxNWMzNDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTEyLTEyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBjb21wdXRpbmcgdmlld3BvcnQtY29uc3RyYWluZWQgcm9vdHMgZHVyaW5nIHN0eWxlIHJl
Y2FsYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIGNvbXB1dGluZyB2aWV3cG9ydC1jb25zdHJhaW5lZCByb290IGVsZW1lbnRz
IGR1cmluZyBzdHlsZSByZWNhbGMuIEluIGEgZnV0dXJlIHBhdGNoLCB0aGlzIHdpbGwKKyAgICAg
ICAgYmUgdXNlZCB0byBoZXVyaXN0aWNhbGx5IGRldGVjdCBhbmQgc3VwcHJlc3MgcGFpbnRpbmcg
b2YgY2VydGFpbiB0eXBlcyBvZiBmaXhlZCBwb3NpdGlvbiBjb250YWluZXJzIGR1cmluZyBzdHls
ZQorICAgICAgICByZXNvbHV0aW9uLCBpbiBhIHdheSBzaW1pbGFyIHRvIHRoZSBleGlzdGluZyAi
Y29udGVudCBvYnNlcnZhdGlvbiIgbWVjaGFuaXNtLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2hvdWxkT2JzZXJ2ZVZpZXdwb3J0Q29uc3RyYWluZWRSb290cyBjb25zdCk6CisKKyAg
ICAgICAgQWRkIGEgbWV0aG9kIHN0dWIgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB3ZSBuZWVk
IHRvIGNvbXB1dGUgdmlld3BvcnQtY29uc3RyYWluZWQgcm9vdHMgZHVyaW5nIHN0eWxlIHJlY2Fs
Yy4KKyAgICAgICAgVGhpcyBtZXRob2Qgc3R1YiB3aWxsIGJlIGltcGxlbWVudGVkIGluIG9uZSBv
ZiB0aGUgbmV4dCBwYXRjaGVzIGluIHRoZSBzZXF1ZW5jZS4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdl
bmVyYXRlZENvbnRlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIHN0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVz
b2x2ZXI6OlBhcmVudDo6UGFyZW50KToKKworICAgICAgICBBbGxvdyB0aGUgdmlld3BvcnQtY29u
c3RyYWluZWQgcm9vdCB0byBwcm9wYWdhdGUgZHVyaW5nIHN0eWxlIHJlY2FsYyBieSBwbHVtYmlu
ZyBpdCB0aHJvdWdoCisgICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlcyBhbmQgU3R5bGU6OlRy
ZWVSZXNvbHZlcjo6UGFyZW50LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29s
dmVyOjpyZXNvbHZlRWxlbWVudCk6CisKKyAgICAgICAgUGFzcyB0aGUgdmlld3BvcnQtY29uc3Ry
YWluZWQgcm9vdCBmcm9tIHRoZSBwYXJlbnQgZG93biB0byBjaGlsZCBlbGVtZW50cyB3aGVuIHJl
c29sdmluZyBlbGVtZW50IHN0eWxlcy4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVS
ZXNvbHZlcjo6cHVzaFBhcmVudCk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6ZGVzY2VuZGFudHNBcmVWaWV3cG9ydENvbnN0cmFpbmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpVcGRhdGU6OnZpZXdwb3J0Q29uc3RyYWluZWRSb290KToKKworICAgICAgICBJ
ZiBuZWVkZWQsIGNvbXB1dGUgYW5kIHNldCB0aGUgdmlld3BvcnQtY29uc3RyYWluZWQgcm9vdC4K
KworICAgICAgICAqIHN0eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjEtMTItMTIgIEFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQWRkIHBhcnRpYWwg
dW5pY29kZS1iaWRpIHN1cHBvcnQgb24gdGhlIGJsb2NrIGNvbnRhaW5lcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggYjRhMDNiNmUwNGE1YmM2NzU2NGRmMTVmYjZlNjMzMDcwYTRkMzM1Yy4u
M2M5ZmEwNmFkMWMwNmQ1NjczYTYxMWQzMmQwYzUwZTMzNDM3NjQ1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC05MDc3LDYgKzkwNzcsMTEgQEAgU3RyaW5nIERvY3VtZW50OjpkZWJ1Z0Rl
c2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCiti
b29sIERvY3VtZW50OjpzaG91bGRPYnNlcnZlVmlld3BvcnRDb25zdHJhaW5lZFJvb3RzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICB0cyA8PCBkb2N1
bWVudC5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGI4NWRkNjlm
Yjk4NWM4Mjg4YzcyYmM4ZmVmNTQwNjYzMDZlMjNmY2YuLjU0ZmNjNzZjOTM4YjcwNWQyMDY3MjY4
NGE1MjdiNDkwZDgwNzQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjYzLDYgKzE2NjMs
OCBAQCBwdWJsaWM6CiAKICAgICBVUkwgZmFsbGJhY2tCYXNlVVJMKCkgY29uc3Q7CiAKKyAgICBi
b29sIHNob3VsZE9ic2VydmVWaWV3cG9ydENvbnN0cmFpbmVkUm9vdHMoKSBjb25zdDsKKwogcHJv
dGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5v
blJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1
bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJiwgRG9jdW1lbnRDbGFzc2Vz
ID0geyB9LCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVk
Q29udGVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAppbmRleCBhNzk3OGZjYjU4NjY0ZGQ5Nzk2NzNm
NTY5YTg4NzgyMTQ3N2E5MzBkLi42MjkxMGY2ZjBlNjFmY2YxMDEzMDA5MTI1MWQzNmE3NDk5ZGUy
OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcApAQCAt
MTQ1LDEzICsxNDUsMTMgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVu
dDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LAogICAgICAgICBjb250ZW50
c1N0eWxlLT5jb3B5Q29udGVudEZyb20oKnVwZGF0ZS0+c3R5bGUpOwogCiAgICAgICAgIFN0eWxl
OjpFbGVtZW50VXBkYXRlIGNvbnRlbnRzVXBkYXRlIHsgV1RGTW92ZShjb250ZW50c1N0eWxlKSwg
dXBkYXRlLT5jaGFuZ2UsIHVwZGF0ZS0+cmVjb21wb3NpdGVMYXllciB9OwotICAgICAgICBTdHls
ZTo6RWxlbWVudFVwZGF0ZXMgY29udGVudHNVcGRhdGVzIHsgV1RGTW92ZShjb250ZW50c1VwZGF0
ZSksIFN0eWxlOjpEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9IH07CisgICAgICAgIFN0
eWxlOjpFbGVtZW50VXBkYXRlcyBjb250ZW50c1VwZGF0ZXMgeyBXVEZNb3ZlKGNvbnRlbnRzVXBk
YXRlKSwgU3R5bGU6OkRlc2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lLCB7IH0sIG51bGxwdHIgfTsK
ICAgICAgICAgbV91cGRhdGVyLnVwZGF0ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwg
V1RGTW92ZShjb250ZW50c1VwZGF0ZXMpKTsKICAgICAgICAgcHNldWRvRWxlbWVudC0+c3RvcmVE
aXNwbGF5Q29udGVudHNTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS0+c3R5bGUp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9
IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlLT5zdHlsZSk7CiAgICAgICAgIFN0eWxlOjpF
bGVtZW50VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUgeyBXVEZNb3ZlKHBzZXVkb0VsZW1lbnRV
cGRhdGVTdHlsZSksIHVwZGF0ZS0+Y2hhbmdlLCB1cGRhdGUtPnJlY29tcG9zaXRlTGF5ZXIgfTsK
LSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIHBzZXVkb0VsZW1lbnRVcGRhdGVzIHsgV1RG
TW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlKSwgU3R5bGU6OkRlc2NlbmRhbnRzVG9SZXNvbHZlOjpO
b25lLCB7IH0gfTsKKyAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIHBzZXVkb0VsZW1lbnRV
cGRhdGVzIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlKSwgU3R5bGU6OkRlc2NlbmRhbnRz
VG9SZXNvbHZlOjpOb25lLCB7IH0sIG51bGxwdHIgfTsKICAgICAgICAgbV91cGRhdGVyLnVwZGF0
ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBk
YXRlcykpOwogICAgICAgICBBU1NFUlQoIXBzZXVkb0VsZW1lbnQtPmhhc0Rpc3BsYXlDb250ZW50
cygpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAK
aW5kZXggMjBlMmUzZDY1NzNjNDg2N2E1ZDkzZjllOGZkZmUxOGJlMGJmZWNiOS4uZTQ4ODgwNzli
M2ZjMmJjNzRhMGM2OWI3OTdjMjYxZmEzODIxYWI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtMTAyLDExICsxMDIsMTIgQEAgVHJlZVJlc29sdmVy
OjpQYXJlbnQ6OlBhcmVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLVRyZWVSZXNvbHZl
cjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBDaGFuZ2UgY2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZSBkZXNjZW5kYW50c1RvUmVz
b2x2ZSkKK1RyZWVSZXNvbHZlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBDaGFuZ2UgY2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2
ZSBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgRWxlbWVudCogdmlld3BvcnRDb25zdHJhaW5lZFJvb3Qp
CiAgICAgOiBlbGVtZW50KCZlbGVtZW50KQogICAgICwgc3R5bGUoc3R5bGUpCiAgICAgLCBjaGFu
Z2UoY2hhbmdlKQogICAgICwgZGVzY2VuZGFudHNUb1Jlc29sdmUoZGVzY2VuZGFudHNUb1Jlc29s
dmUpCisgICAgLCB2aWV3cG9ydENvbnN0cmFpbmVkUm9vdCh2aWV3cG9ydENvbnN0cmFpbmVkUm9v
dCkKIHsKIH0KIApAQCAtMjcwLDcgKzI3MSwxMiBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2
ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQu
c2V0TWF5SGF2ZUVkaXRhYmxlRWxlbWVudHMoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHsgV1RG
TW92ZSh1cGRhdGUpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVz
KSB9OworICAgIHJldHVybiB7CisgICAgICAgIFdURk1vdmUodXBkYXRlKSwKKyAgICAgICAgZGVz
Y2VuZGFudHNUb1Jlc29sdmUsCisgICAgICAgIFdURk1vdmUocHNldWRvVXBkYXRlcyksCisgICAg
ICAgIHVwZGF0ZS5zdHlsZSA/IG1fdXBkYXRlLT52aWV3cG9ydENvbnN0cmFpbmVkUm9vdChlbGVt
ZW50LCAqdXBkYXRlLnN0eWxlLCBwYXJlbnQoKS52aWV3cG9ydENvbnN0cmFpbmVkUm9vdC5nZXQo
KSkgOiBudWxscHRyCisgICAgfTsKIH0KIAogc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiBU
cmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBF
bGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKQEAgLTQwMCw3
ICs0MDYsNyBAQCB2b2lkIFRyZWVSZXNvbHZlcjo6cHVzaFBhcmVudChFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENoYW5nZQogewogICAgIHNjb3BlKCkuc2VsZWN0
b3JNYXRjaGluZ1N0YXRlLnNlbGVjdG9yRmlsdGVyLnB1c2hQYXJlbnQoJmVsZW1lbnQpOwogCi0g
ICAgUGFyZW50IHBhcmVudChlbGVtZW50LCBzdHlsZSwgY2hhbmdlLCBkZXNjZW5kYW50c1RvUmVz
b2x2ZSk7CisgICAgUGFyZW50IHBhcmVudChlbGVtZW50LCBzdHlsZSwgY2hhbmdlLCBkZXNjZW5k
YW50c1RvUmVzb2x2ZSwgbV91cGRhdGUtPnZpZXdwb3J0Q29uc3RyYWluZWRSb290KGVsZW1lbnQs
IHN0eWxlLCB0aGlzLT5wYXJlbnQoKS52aWV3cG9ydENvbnN0cmFpbmVkUm9vdC5nZXQoKSkpOwog
CiAgICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3QgPSBlbGVtZW50LnNoYWRvd1Jvb3QoKSkgewogICAg
ICAgICBwdXNoU2NvcGUoKnNoYWRvd1Jvb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJl
ZVJlc29sdmVyLmgKaW5kZXggZmEyNWE1MTU0OWQ0MGQ4N2QwNTU3MTM4MjVlZmViYTA0NmU2ZTBj
Ny4uMjc4M2FkMmJjNjU3OTM5Y2IxNmRhMGE4NDQ0NmU5ODBkODgxZjk1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCkBAIC04NCw5ICs4NCwxMCBAQCBwcml2YXRl
OgogICAgICAgICBDaGFuZ2UgY2hhbmdlIHsgQ2hhbmdlOjpOb25lIH07CiAgICAgICAgIERlc2Nl
bmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jlc29s
dmU6Ok5vbmUgfTsKICAgICAgICAgYm9vbCBkaWRQdXNoU2NvcGUgeyBmYWxzZSB9OworICAgICAg
ICBXZWFrUHRyPEVsZW1lbnQ+IHZpZXdwb3J0Q29uc3RyYWluZWRSb290OwogCiAgICAgICAgIFBh
cmVudChEb2N1bWVudCYpOwotICAgICAgICBQYXJlbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgQ2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZSk7CisgICAgICAgIFBhcmVudChFbGVt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBDaGFuZ2UsIERlc2NlbmRhbnRzVG9SZXNvbHZlLCBF
bGVtZW50KiB2aWV3cG9ydENvbnN0cmFpbmVkUm9vdCk7CiAgICAgfTsKIAogICAgIFNjb3BlJiBz
Y29wZSgpIHsgcmV0dXJuIG1fc2NvcGVTdGFjay5sYXN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVXBkYXRlLmNwcAppbmRleCBkZDY2NjJjNTFmMmZkNWI2MzRlMzA1YWZhYTlkZjI5NjZlZDM3
OGY2Li5lMzk3YTc3NzMxMGFmNjBjMGJjOTMzNDQxZjk1MjFkYTVlNmNlYjRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29t
cG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJUZXh0LmgiCkBAIC0xMjIsNiArMTIzLDI1IEBAIHZvaWQgVXBkYXRlOjphZGRUZXh0KFRleHQm
IHRleHQsIFRleHRVcGRhdGUmJiB0ZXh0VXBkYXRlKQogICAgIGFkZFRleHQodGV4dCwgY29tcG9z
ZWRUcmVlQW5jZXN0b3JzKHRleHQpLmZpcnN0KCksIFdURk1vdmUodGV4dFVwZGF0ZSkpOwogfQog
CitzdGF0aWMgaW5saW5lIGJvb2wgZGVzY2VuZGFudHNBcmVWaWV3cG9ydENvbnN0cmFpbmVkKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpDb250ZW50cyAmJiBzdHlsZS5wb3NpdGlvbigpID09IFBvc2l0aW9uVHlw
ZTo6Rml4ZWQ7Cit9CisKK0VsZW1lbnQqIFVwZGF0ZTo6dmlld3BvcnRDb25zdHJhaW5lZFJvb3Qo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW50KiBwYXJl
bnRWaWV3cG9ydENvbnN0cmFpbmVkUm9vdCkKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQtPnNob3Vs
ZE9ic2VydmVWaWV3cG9ydENvbnN0cmFpbmVkUm9vdHMoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVu
dFZpZXdwb3J0Q29uc3RyYWluZWRSb290OworCisgICAgaWYgKCFjb21wb3NlZFRyZWVBbmNlc3Rv
cnMoZWxlbWVudCkuZmlyc3QoKSB8fCBpczxIVE1MQm9keUVsZW1lbnQ+KGVsZW1lbnQpKQorICAg
ICAgICByZXR1cm4gcGFyZW50Vmlld3BvcnRDb25zdHJhaW5lZFJvb3Q7CisKKyAgICBpZiAoIWRl
c2NlbmRhbnRzQXJlVmlld3BvcnRDb25zdHJhaW5lZChzdHlsZSkgfHwgcGFyZW50Vmlld3BvcnRD
b25zdHJhaW5lZFJvb3QpCisgICAgICAgIHJldHVybiBwYXJlbnRWaWV3cG9ydENvbnN0cmFpbmVk
Um9vdDsKKworICAgIHJldHVybiAmZWxlbWVudDsKK30KKwogdm9pZCBVcGRhdGU6OmFkZFBvc3Np
YmxlUm9vdChFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVXBkYXRlLmgKaW5kZXggN2Y5ZDdhMTc3Y2NmZjU5ZWE4Mjc2MTY1ODI0YWUz
YWNkNTgyYjlhMC4uMTkyZDg2ODFiYjVlYTM4YmU3YjBjZDEzMDA4ZDQyOTlhMmY5Y2JlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
U3R5bGVDaGFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDcsNyArNDgsNyBAQCBzdHJ1Y3QgRWxlbWVudFVwZGF0ZSB7CiAgICAgYm9v
bCByZWNvbXBvc2l0ZUxheWVyIHsgZmFsc2UgfTsKIH07CiAKLWVudW0gY2xhc3MgRGVzY2VuZGFu
dHNUb1Jlc29sdmUgeyBOb25lLCBDaGlsZHJlbldpdGhFeHBsaWNpdEluaGVyaXQsIENoaWxkcmVu
LCBBbGwgfTsKK2VudW0gY2xhc3MgRGVzY2VuZGFudHNUb1Jlc29sdmUgOiB1aW50OF90IHsgTm9u
ZSwgQ2hpbGRyZW5XaXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJlbiwgQWxsIH07CiAKIHVzaW5n
IFBzZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwID0gSGFzaE1hcDxQc2V1ZG9JZCwgRWxlbWVudFVw
ZGF0ZSwgSW50SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UHNldWRv
SWQ+PjsKIApAQCAtNTUsNiArNTYsNyBAQCBzdHJ1Y3QgRWxlbWVudFVwZGF0ZXMgewogICAgIEVs
ZW1lbnRVcGRhdGUgdXBkYXRlOwogICAgIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRz
VG9SZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUgfTsKICAgICBQc2V1ZG9JZFRv
RWxlbWVudFVwZGF0ZU1hcCBwc2V1ZG9FbGVtZW50VXBkYXRlczsKKyAgICBXZWFrUHRyPEVsZW1l
bnQ+IHZpZXdwb3J0Q29uc3RyYWluZWRSb290OwogfTsKIAogc3RydWN0IFRleHRVcGRhdGUgewpA
QCAtODYsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUZXh0KFRleHQmLCBFbGVtZW50
KiBwYXJlbnQsIFRleHRVcGRhdGUmJik7CiAgICAgdm9pZCBhZGRUZXh0KFRleHQmLCBUZXh0VXBk
YXRlJiYpOwogCisgICAgRWxlbWVudCogdmlld3BvcnRDb25zdHJhaW5lZFJvb3QoRWxlbWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgRWxlbWVudCogcGFyZW50Vmlld3BvcnRDb25zdHJhaW5lZFJv
b3QpOworCiBwcml2YXRlOgogICAgIHZvaWQgYWRkUG9zc2libGVSb290KEVsZW1lbnQqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447020</attachid>
            <date>2021-12-13 09:52:08 -0800</date>
            <delta_ts>2021-12-13 13:50:41 -0800</delta_ts>
            <desc>Minor style tweaks</desc>
            <filename>bug-234214-20211213095208.patch</filename>
            <type>text/plain</type>
            <size>10775</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0MWFhYTM0YjNkYzQx
NzJlNmMyMTNmODllZTg0YWQ1ZTQxOTlkNS4uN2ZmNzdlZWQ0ZmJiZGI0ZTNjMTZkZjNlMDA0NzNi
YWU2ZjViOTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTEyLTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBjb21wdXRpbmcgdmlld3BvcnQtY29uc3RyYWluZWQgcm9vdHMgZHVyaW5nIHN0eWxlIHJl
Y2FsYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIGNvbXB1dGluZyB2aWV3cG9ydC1jb25zdHJhaW5lZCByb290IGVsZW1lbnRz
IGR1cmluZyBzdHlsZSByZWNhbGMuIEluIGEgZnV0dXJlIHBhdGNoLCB0aGlzIHdpbGwKKyAgICAg
ICAgYmUgdXNlZCB0byBoZXVyaXN0aWNhbGx5IGRldGVjdCBhbmQgc3VwcHJlc3MgcGFpbnRpbmcg
b2YgY2VydGFpbiB0eXBlcyBvZiBmaXhlZCBwb3NpdGlvbiBjb250YWluZXJzIGR1cmluZyBzdHls
ZQorICAgICAgICByZXNvbHV0aW9uLCBpbiBhIHdheSBzaW1pbGFyIHRvIHRoZSBleGlzdGluZyAi
Y29udGVudCBvYnNlcnZhdGlvbiIgbWVjaGFuaXNtLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2hvdWxkT2JzZXJ2ZVZpZXdwb3J0Q29uc3RyYWluZWRSb290cyBjb25zdCk6CisKKyAg
ICAgICAgQWRkIGEgbWV0aG9kIHN0dWIgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB3ZSBuZWVk
IHRvIGNvbXB1dGUgdmlld3BvcnQtY29uc3RyYWluZWQgcm9vdHMgZHVyaW5nIHN0eWxlIHJlY2Fs
Yy4KKyAgICAgICAgVGhpcyBtZXRob2Qgc3R1YiB3aWxsIGJlIGltcGxlbWVudGVkIGluIG9uZSBv
ZiB0aGUgbmV4dCBwYXRjaGVzIGluIHRoZSBzZXF1ZW5jZS4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdl
bmVyYXRlZENvbnRlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIHN0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVz
b2x2ZXI6OlBhcmVudDo6UGFyZW50KToKKworICAgICAgICBBbGxvdyB0aGUgdmlld3BvcnQtY29u
c3RyYWluZWQgcm9vdCB0byBwcm9wYWdhdGUgZHVyaW5nIHN0eWxlIHJlY2FsYyBieSBwbHVtYmlu
ZyBpdCB0aHJvdWdoCisgICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlcyBhbmQgU3R5bGU6OlRy
ZWVSZXNvbHZlcjo6UGFyZW50LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29s
dmVyOjpyZXNvbHZlRWxlbWVudCk6CisKKyAgICAgICAgUGFzcyB0aGUgdmlld3BvcnQtY29uc3Ry
YWluZWQgcm9vdCBmcm9tIHRoZSBwYXJlbnQgZG93biB0byBjaGlsZCBlbGVtZW50cyB3aGVuIHJl
c29sdmluZyBlbGVtZW50IHN0eWxlcy4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVS
ZXNvbHZlcjo6cHVzaFBhcmVudCk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6ZGVzY2VuZGFudHNBcmVWaWV3cG9ydENvbnN0cmFpbmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpVcGRhdGU6OnZpZXdwb3J0Q29uc3RyYWluZWRSb290KToKKworICAgICAgICBJ
ZiBuZWVkZWQsIGNvbXB1dGUgYW5kIHNldCB0aGUgdmlld3BvcnQtY29uc3RyYWluZWQgcm9vdC4K
KworICAgICAgICAqIHN0eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjEtMTItMTIgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBpcGUgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kIGludG8gR3JhZGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGI0YTAzYjZl
MDRhNWJjNjc1NjRkZjE1ZmI2ZTYzMzA3MGE0ZDMzNWMuLjNjOWZhMDZhZDFjMDZkNTY3M2E2MTFk
MzJkMGM1MGUzMzQzNzY0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTA3Nyw2ICs5
MDc3LDExIEBAIFN0cmluZyBEb2N1bWVudDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBEb2N1bWVudDo6c2hvdWxkT2Jz
ZXJ2ZVZpZXdwb3J0Q29uc3RyYWluZWRSb290cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgdHMgPDwgZG9jdW1lbnQuZGVidWdEZXNjcmlwdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBiODVkZDY5ZmI5ODVjODI4OGM3MmJjOGZlZjU0MDY2
MzA2ZTIzZmNmLi41NGZjYzc2YzkzOGI3MDVkMjA2NzI2ODRhNTI3YjQ5MGQ4MDc0OWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMTY2Myw2ICsxNjYzLDggQEAgcHVibGljOgogCiAgICAgVVJM
IGZhbGxiYWNrQmFzZVVSTCgpIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRPYnNlcnZlVmlld3Bv
cnRDb25zdHJhaW5lZFJvb3RzKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0
cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0g
MSA8PCAxIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBTZXR0
aW5ncyYsIGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NlcyA9IHsgfSwgdW5zaWduZWQgY29uc3Ry
dWN0aW9uRmxhZ3MgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVu
dC5jcHAKaW5kZXggYTc5NzhmY2I1ODY2NGRkOTc5NjczZjU2OWE4ODc4MjE0NzdhOTMwZC4uNjI5
MTBmNmYwZTYxZmNmMTAxMzAwOTEyNTFkMzZhNzQ5OWRlMjkxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29u
dGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQg
UmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQo
RWxlbWVudCYgY3VycmVudCwKICAgICAgICAgY29udGVudHNTdHlsZS0+Y29weUNvbnRlbnRGcm9t
KCp1cGRhdGUtPnN0eWxlKTsKIAogICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBjb250ZW50
c1VwZGF0ZSB7IFdURk1vdmUoY29udGVudHNTdHlsZSksIHVwZGF0ZS0+Y2hhbmdlLCB1cGRhdGUt
PnJlY29tcG9zaXRlTGF5ZXIgfTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIGNvbnRl
bnRzVXBkYXRlcyB7IFdURk1vdmUoY29udGVudHNVcGRhdGUpLCBTdHlsZTo6RGVzY2VuZGFudHNU
b1Jlc29sdmU6Ok5vbmUsIHsgfSB9OworICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZXMgY29u
dGVudHNVcGRhdGVzIHsgV1RGTW92ZShjb250ZW50c1VwZGF0ZSksIFN0eWxlOjpEZXNjZW5kYW50
c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9LCBudWxscHRyIH07CiAgICAgICAgIG1fdXBkYXRlci51cGRh
dGVFbGVtZW50UmVuZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1vdmUoY29udGVudHNVcGRhdGVz
KSk7CiAgICAgICAgIHBzZXVkb0VsZW1lbnQtPnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUoUmVu
ZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGUtPnN0eWxlKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
KnVwZGF0ZS0+c3R5bGUpOwogICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBwc2V1ZG9FbGVt
ZW50VXBkYXRlIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUpLCB1cGRhdGUtPmNo
YW5nZSwgdXBkYXRlLT5yZWNvbXBvc2l0ZUxheWVyIH07Ci0gICAgICAgIFN0eWxlOjpFbGVtZW50
VXBkYXRlcyBwc2V1ZG9FbGVtZW50VXBkYXRlcyB7IFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0
ZSksIFN0eWxlOjpEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9IH07CisgICAgICAgIFN0
eWxlOjpFbGVtZW50VXBkYXRlcyBwc2V1ZG9FbGVtZW50VXBkYXRlcyB7IFdURk1vdmUocHNldWRv
RWxlbWVudFVwZGF0ZSksIFN0eWxlOjpEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9LCBu
dWxscHRyIH07CiAgICAgICAgIG1fdXBkYXRlci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBzZXVk
b0VsZW1lbnQsIFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZXMpKTsKICAgICAgICAgQVNTRVJU
KCFwc2V1ZG9FbGVtZW50LT5oYXNEaXNwbGF5Q29udGVudHMoKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDIwZTJlM2Q2NTczYzQ4Njdh
NWQ5M2Y5ZThmZGZlMThiZTBiZmVjYjkuLmE3OWRlMGQ4YTdhMTE3OWFhZThkMzUyMmVmZTg5NmZj
NTk1ODBlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAK
QEAgLTEwMiwxMSArMTAyLDEyIEBAIFRyZWVSZXNvbHZlcjo6UGFyZW50OjpQYXJlbnQoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogfQogCi1UcmVlUmVzb2x2ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ2hhbmdlIGNoYW5nZSwgRGVz
Y2VuZGFudHNUb1Jlc29sdmUgZGVzY2VuZGFudHNUb1Jlc29sdmUpCitUcmVlUmVzb2x2ZXI6OlBh
cmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Q2hhbmdlIGNoYW5nZSwgRGVzY2VuZGFudHNUb1Jlc29sdmUgZGVzY2VuZGFudHNUb1Jlc29sdmUs
IEVsZW1lbnQqIHZpZXdwb3J0Q29uc3RyYWluZWRSb290KQogICAgIDogZWxlbWVudCgmZWxlbWVu
dCkKICAgICAsIHN0eWxlKHN0eWxlKQogICAgICwgY2hhbmdlKGNoYW5nZSkKICAgICAsIGRlc2Nl
bmRhbnRzVG9SZXNvbHZlKGRlc2NlbmRhbnRzVG9SZXNvbHZlKQorICAgICwgdmlld3BvcnRDb25z
dHJhaW5lZFJvb3Qodmlld3BvcnRDb25zdHJhaW5lZFJvb3QpCiB7CiB9CiAKQEAgLTI3MCw3ICsy
NzEsOCBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQuc2V0TWF5SGF2ZUVkaXRhYmxlRWxlbWVu
dHMoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUpLCBkZXNjZW5kYW50
c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVzKSB9OworICAgIGF1dG8qIHZpZXdwb3J0
Q29uc3RyYWluZWRSb290ID0gdXBkYXRlLnN0eWxlID8gbV91cGRhdGUtPnZpZXdwb3J0Q29uc3Ry
YWluZWRSb290KGVsZW1lbnQsICp1cGRhdGUuc3R5bGUsIHBhcmVudCgpLnZpZXdwb3J0Q29uc3Ry
YWluZWRSb290LmdldCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUp
LCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVzKSwgdmlld3BvcnRD
b25zdHJhaW5lZFJvb3QgfTsKIH0KIAogc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiBUcmVl
UmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVt
ZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKQEAgLTQwMCw3ICs0
MDIsOCBAQCB2b2lkIFRyZWVSZXNvbHZlcjo6cHVzaFBhcmVudChFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENoYW5nZQogewogICAgIHNjb3BlKCkuc2VsZWN0b3JN
YXRjaGluZ1N0YXRlLnNlbGVjdG9yRmlsdGVyLnB1c2hQYXJlbnQoJmVsZW1lbnQpOwogCi0gICAg
UGFyZW50IHBhcmVudChlbGVtZW50LCBzdHlsZSwgY2hhbmdlLCBkZXNjZW5kYW50c1RvUmVzb2x2
ZSk7CisgICAgUmVmUHRyIHZpZXdwb3J0Q29uc3RyYWluZWRSb290ID0gbV91cGRhdGUtPnZpZXdw
b3J0Q29uc3RyYWluZWRSb290KGVsZW1lbnQsIHN0eWxlLCBwYXJlbnQoKS52aWV3cG9ydENvbnN0
cmFpbmVkUm9vdC5nZXQoKSk7CisgICAgUGFyZW50IHBhcmVudChlbGVtZW50LCBzdHlsZSwgY2hh
bmdlLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgdmlld3BvcnRDb25zdHJhaW5lZFJvb3QuZ2V0KCkp
OwogCiAgICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3QgPSBlbGVtZW50LnNoYWRvd1Jvb3QoKSkgewog
ICAgICAgICBwdXNoU2NvcGUoKnNoYWRvd1Jvb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmgKaW5kZXggZmEyNWE1MTU0OWQ0MGQ4N2QwNTU3MTM4MjVlZmViYTA0NmU2
ZTBjNy4uMjc4M2FkMmJjNjU3OTM5Y2IxNmRhMGE4NDQ0NmU5ODBkODgxZjk1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCkBAIC04NCw5ICs4NCwxMCBAQCBwcml2
YXRlOgogICAgICAgICBDaGFuZ2UgY2hhbmdlIHsgQ2hhbmdlOjpOb25lIH07CiAgICAgICAgIERl
c2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jl
c29sdmU6Ok5vbmUgfTsKICAgICAgICAgYm9vbCBkaWRQdXNoU2NvcGUgeyBmYWxzZSB9OworICAg
ICAgICBXZWFrUHRyPEVsZW1lbnQ+IHZpZXdwb3J0Q29uc3RyYWluZWRSb290OwogCiAgICAgICAg
IFBhcmVudChEb2N1bWVudCYpOwotICAgICAgICBQYXJlbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgQ2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZSk7CisgICAgICAgIFBhcmVudChF
bGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBDaGFuZ2UsIERlc2NlbmRhbnRzVG9SZXNvbHZl
LCBFbGVtZW50KiB2aWV3cG9ydENvbnN0cmFpbmVkUm9vdCk7CiAgICAgfTsKIAogICAgIFNjb3Bl
JiBzY29wZSgpIHsgcmV0dXJuIG1fc2NvcGVTdGFjay5sYXN0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVXBkYXRlLmNwcAppbmRleCBkZDY2NjJjNTFmMmZkNWI2MzRlMzA1YWZhYTlkZjI5NjZl
ZDM3OGY2Li5lMzk3YTc3NzMxMGFmNjBjMGJjOTMzNDQxZjk1MjFkYTVlNmNlYjRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Q29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1
ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNs
dWRlICJUZXh0LmgiCkBAIC0xMjIsNiArMTIzLDI1IEBAIHZvaWQgVXBkYXRlOjphZGRUZXh0KFRl
eHQmIHRleHQsIFRleHRVcGRhdGUmJiB0ZXh0VXBkYXRlKQogICAgIGFkZFRleHQodGV4dCwgY29t
cG9zZWRUcmVlQW5jZXN0b3JzKHRleHQpLmZpcnN0KCksIFdURk1vdmUodGV4dFVwZGF0ZSkpOwog
fQogCitzdGF0aWMgaW5saW5lIGJvb2wgZGVzY2VuZGFudHNBcmVWaWV3cG9ydENvbnN0cmFpbmVk
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgp
ICE9IERpc3BsYXlUeXBlOjpDb250ZW50cyAmJiBzdHlsZS5wb3NpdGlvbigpID09IFBvc2l0aW9u
VHlwZTo6Rml4ZWQ7Cit9CisKK0VsZW1lbnQqIFVwZGF0ZTo6dmlld3BvcnRDb25zdHJhaW5lZFJv
b3QoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW50KiBw
YXJlbnRWaWV3cG9ydENvbnN0cmFpbmVkUm9vdCkKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQtPnNo
b3VsZE9ic2VydmVWaWV3cG9ydENvbnN0cmFpbmVkUm9vdHMoKSkKKyAgICAgICAgcmV0dXJuIHBh
cmVudFZpZXdwb3J0Q29uc3RyYWluZWRSb290OworCisgICAgaWYgKCFjb21wb3NlZFRyZWVBbmNl
c3RvcnMoZWxlbWVudCkuZmlyc3QoKSB8fCBpczxIVE1MQm9keUVsZW1lbnQ+KGVsZW1lbnQpKQor
ICAgICAgICByZXR1cm4gcGFyZW50Vmlld3BvcnRDb25zdHJhaW5lZFJvb3Q7CisKKyAgICBpZiAo
IWRlc2NlbmRhbnRzQXJlVmlld3BvcnRDb25zdHJhaW5lZChzdHlsZSkgfHwgcGFyZW50Vmlld3Bv
cnRDb25zdHJhaW5lZFJvb3QpCisgICAgICAgIHJldHVybiBwYXJlbnRWaWV3cG9ydENvbnN0cmFp
bmVkUm9vdDsKKworICAgIHJldHVybiAmZWxlbWVudDsKK30KKwogdm9pZCBVcGRhdGU6OmFkZFBv
c3NpYmxlUm9vdChFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKaW5kZXggN2Y5ZDdhMTc3Y2NmZjU5ZWE4Mjc2MTY1ODI0
YWUzYWNkNTgyYjlhMC4uMTkyZDg2ODFiYjVlYTM4YmU3YjBjZDEzMDA4ZDQyOTlhMmY5Y2JlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiU3R5bGVDaGFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDcsNyArNDgsNyBAQCBzdHJ1Y3QgRWxlbWVudFVwZGF0ZSB7CiAgICAg
Ym9vbCByZWNvbXBvc2l0ZUxheWVyIHsgZmFsc2UgfTsKIH07CiAKLWVudW0gY2xhc3MgRGVzY2Vu
ZGFudHNUb1Jlc29sdmUgeyBOb25lLCBDaGlsZHJlbldpdGhFeHBsaWNpdEluaGVyaXQsIENoaWxk
cmVuLCBBbGwgfTsKK2VudW0gY2xhc3MgRGVzY2VuZGFudHNUb1Jlc29sdmUgOiB1aW50OF90IHsg
Tm9uZSwgQ2hpbGRyZW5XaXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJlbiwgQWxsIH07CiAKIHVz
aW5nIFBzZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwID0gSGFzaE1hcDxQc2V1ZG9JZCwgRWxlbWVu
dFVwZGF0ZSwgSW50SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UHNl
dWRvSWQ+PjsKIApAQCAtNTUsNiArNTYsNyBAQCBzdHJ1Y3QgRWxlbWVudFVwZGF0ZXMgewogICAg
IEVsZW1lbnRVcGRhdGUgdXBkYXRlOwogICAgIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRh
bnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUgfTsKICAgICBQc2V1ZG9J
ZFRvRWxlbWVudFVwZGF0ZU1hcCBwc2V1ZG9FbGVtZW50VXBkYXRlczsKKyAgICBXZWFrUHRyPEVs
ZW1lbnQ+IHZpZXdwb3J0Q29uc3RyYWluZWRSb290OwogfTsKIAogc3RydWN0IFRleHRVcGRhdGUg
ewpAQCAtODYsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUZXh0KFRleHQmLCBFbGVt
ZW50KiBwYXJlbnQsIFRleHRVcGRhdGUmJik7CiAgICAgdm9pZCBhZGRUZXh0KFRleHQmLCBUZXh0
VXBkYXRlJiYpOwogCisgICAgRWxlbWVudCogdmlld3BvcnRDb25zdHJhaW5lZFJvb3QoRWxlbWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgRWxlbWVudCogcGFyZW50Vmlld3BvcnRDb25zdHJhaW5l
ZFJvb3QpOworCiBwcml2YXRlOgogICAgIHZvaWQgYWRkUG9zc2libGVSb290KEVsZW1lbnQqKTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447058</attachid>
            <date>2021-12-13 13:50:44 -0800</date>
            <delta_ts>2021-12-16 10:26:11 -0800</delta_ts>
            <desc>Fix names</desc>
            <filename>bug-234214-20211213135043.patch</filename>
            <type>text/plain</type>
            <size>10523</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0MWFhYTM0YjNkYzQx
NzJlNmMyMTNmODllZTg0YWQ1ZTQxOTlkNS4uYzUwNjMyMDExMWE4YTZmMTk0YWY4YjI3NzU2MjFm
YWZhMDM1OWMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTEyLTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBjb21wdXRpbmcgZml4ZWQgcG9zaXRpb24gcm9vdHMgZHVyaW5nIHN0eWxlIHJlY2FsYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIGNvbXB1dGluZyBmaXhlZCBwb3NpdGlvbiByb290IGVsZW1lbnRzIGR1cmluZyBzdHls
ZSByZWNhbGMuIEluIGEgZnV0dXJlIHBhdGNoLCB0aGlzIHdpbGwgYmUgdXNlZAorICAgICAgICB0
byBoZXVyaXN0aWNhbGx5IGRldGVjdCBhbmQgc3VwcHJlc3MgcGFpbnRpbmcgb2YgY2VydGFpbiB0
eXBlcyBvZiBmaXhlZCBwb3NpdGlvbiBjb250YWluZXJzIGR1cmluZyBzdHlsZQorICAgICAgICBy
ZXNvbHV0aW9uLCBpbiBhIHdheSBzaW1pbGFyIHRvIHRoZSBleGlzdGluZyAiY29udGVudCBvYnNl
cnZhdGlvbiIgbWVjaGFuaXNtLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hvdWxk
T2JzZXJ2ZUZpeGVkUG9zaXRpb25Sb290cyBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgbWV0aG9k
IHN0dWIgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB3ZSBuZWVkIHRvIGNvbXB1dGUgZml4ZWQg
cG9zaXRpb24gcm9vdHMgZHVyaW5nIHN0eWxlIHJlY2FsYy4KKyAgICAgICAgVGhpcyBtZXRob2Qg
c3R1YiB3aWxsIGJlIGltcGxlbWVudGVkIGluIG9uZSBvZiB0aGUgbmV4dCBwYXRjaGVzIGluIHRo
ZSBzZXF1ZW5jZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIHJlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0
ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OlBhcmVudDo6UGFyZW50KToK
KworICAgICAgICBBbGxvdyB0aGUgZml4ZWQgcG9zaXRpb24gcm9vdCB0byBwcm9wYWdhdGUgZHVy
aW5nIHN0eWxlIHJlY2FsYyBieSBwbHVtYmluZyBpdCB0aHJvdWdoIFN0eWxlOjpFbGVtZW50VXBk
YXRlcworICAgICAgICBhbmQgU3R5bGU6OlRyZWVSZXNvbHZlcjo6UGFyZW50LgorCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisKKyAgICAg
ICAgUGFzcyB0aGUgZml4ZWQgcG9zaXRpb24gcm9vdCBmcm9tIHRoZSBwYXJlbnQgZG93biB0byBj
aGlsZCBlbGVtZW50cyB3aGVuIHJlc29sdmluZyBlbGVtZW50IHN0eWxlcy4KKworICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cHVzaFBhcmVudCk6CisgICAgICAgICogc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aXNGaXhlZFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpVcGRhdGU6OmZpeGVkUG9zaXRpb25Sb290KToKKworICAgICAgICBJZiBu
ZWVkZWQsIGNvbXB1dGUgYW5kIHNldCB0aGUgZml4ZWQgcG9zaXRpb24gcm9vdC4KKworICAgICAg
ICAqIHN0eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjEtMTItMTIgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBpcGUgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGlu
dG8gR3JhZGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGI0YTAzYjZlMDRhNWJjNjc1
NjRkZjE1ZmI2ZTYzMzA3MGE0ZDMzNWMuLmU4ZDY0NGExNmJjZTAyOWZjZDg1YWI3MzUzMzM3ZmZi
MGU3NDE1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTA3Nyw2ICs5MDc3LDExIEBA
IFN0cmluZyBEb2N1bWVudDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBEb2N1bWVudDo6c2hvdWxkT2JzZXJ2ZUZpeGVk
UG9zaXRpb25Sb290cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQp
CiB7CiAgICAgdHMgPDwgZG9jdW1lbnQuZGVidWdEZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAppbmRleCBiODVkZDY5ZmI5ODVjODI4OGM3MmJjOGZlZjU0MDY2MzA2ZTIzZmNmLi42MDQz
M2IwOTU3YzI0Yjc0MDBkMTVlYWRjZmMzYmEzYjBjOWI4NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtMTY2Myw2ICsxNjYzLDggQEAgcHVibGljOgogCiAgICAgVVJMIGZhbGxiYWNrQmFzZVVS
TCgpIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRPYnNlcnZlRml4ZWRQb3NpdGlvblJvb3RzKCkg
Y29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhl
c2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgV0VCQ09S
RV9FWFBPUlQgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYsIERv
Y3VtZW50Q2xhc3NlcyA9IHsgfSwgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlckdlbmVyYXRlZENvbnRlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAKaW5kZXggYTc5NzhmY2I1
ODY2NGRkOTc5NjczZjU2OWE4ODc4MjE0NzdhOTMwZC4uNjI5MTBmNmYwZTYxZmNmMTAxMzAwOTEy
NTFkMzZhNzQ5OWRlMjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29u
dGVudC5jcHAKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6Okdl
bmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgY3VycmVudCwKICAg
ICAgICAgY29udGVudHNTdHlsZS0+Y29weUNvbnRlbnRGcm9tKCp1cGRhdGUtPnN0eWxlKTsKIAog
ICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBjb250ZW50c1VwZGF0ZSB7IFdURk1vdmUoY29u
dGVudHNTdHlsZSksIHVwZGF0ZS0+Y2hhbmdlLCB1cGRhdGUtPnJlY29tcG9zaXRlTGF5ZXIgfTsK
LSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIGNvbnRlbnRzVXBkYXRlcyB7IFdURk1vdmUo
Y29udGVudHNVcGRhdGUpLCBTdHlsZTo6RGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUsIHsgfSB9
OworICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZXMgY29udGVudHNVcGRhdGVzIHsgV1RGTW92
ZShjb250ZW50c1VwZGF0ZSksIFN0eWxlOjpEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9
LCBudWxscHRyIH07CiAgICAgICAgIG1fdXBkYXRlci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBz
ZXVkb0VsZW1lbnQsIFdURk1vdmUoY29udGVudHNVcGRhdGVzKSk7CiAgICAgICAgIHBzZXVkb0Vs
ZW1lbnQtPnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1
cGRhdGUtPnN0eWxlKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50
VXBkYXRlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS0+c3R5bGUpOwogICAg
ICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBwc2V1ZG9FbGVtZW50VXBkYXRlIHsgV1RGTW92ZShw
c2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUpLCB1cGRhdGUtPmNoYW5nZSwgdXBkYXRlLT5yZWNvbXBv
c2l0ZUxheWVyIH07Ci0gICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlcyBwc2V1ZG9FbGVtZW50
VXBkYXRlcyB7IFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZSksIFN0eWxlOjpEZXNjZW5kYW50
c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9IH07CisgICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlcyBw
c2V1ZG9FbGVtZW50VXBkYXRlcyB7IFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZSksIFN0eWxl
OjpEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9LCBudWxscHRyIH07CiAgICAgICAgIG1f
dXBkYXRlci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1vdmUocHNl
dWRvRWxlbWVudFVwZGF0ZXMpKTsKICAgICAgICAgQVNTRVJUKCFwc2V1ZG9FbGVtZW50LT5oYXNE
aXNwbGF5Q29udGVudHMoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCmluZGV4IDIwZTJlM2Q2NTczYzQ4NjdhNWQ5M2Y5ZThmZGZlMThiZTBiZmVj
YjkuLmJjZTQ5OTY4NmQwYzA2ZjBkN2MyYTU2NTU3MTcyNmE2NjM5YWQwNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTEwMiwxMSArMTAyLDEyIEBA
IFRyZWVSZXNvbHZlcjo6UGFyZW50OjpQYXJlbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogewogfQog
Ci1UcmVlUmVzb2x2ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgQ2hhbmdlIGNoYW5nZSwgRGVzY2VuZGFudHNUb1Jlc29sdmUgZGVz
Y2VuZGFudHNUb1Jlc29sdmUpCitUcmVlUmVzb2x2ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ2hhbmdlIGNoYW5nZSwgRGVzY2Vu
ZGFudHNUb1Jlc29sdmUgZGVzY2VuZGFudHNUb1Jlc29sdmUsIEVsZW1lbnQqIGZpeGVkUG9zaXRp
b25Sb290KQogICAgIDogZWxlbWVudCgmZWxlbWVudCkKICAgICAsIHN0eWxlKHN0eWxlKQogICAg
ICwgY2hhbmdlKGNoYW5nZSkKICAgICAsIGRlc2NlbmRhbnRzVG9SZXNvbHZlKGRlc2NlbmRhbnRz
VG9SZXNvbHZlKQorICAgICwgZml4ZWRQb3NpdGlvblJvb3QoZml4ZWRQb3NpdGlvblJvb3QpCiB7
CiB9CiAKQEAgLTI3MCw3ICsyNzEsOCBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJl
c29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQuc2V0TWF5
SGF2ZUVkaXRhYmxlRWxlbWVudHMoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHsgV1RGTW92ZSh1
cGRhdGUpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVzKSB9Owor
ICAgIGF1dG8qIGZpeGVkUG9zaXRpb25Sb290ID0gdXBkYXRlLnN0eWxlID8gbV91cGRhdGUtPmZp
eGVkUG9zaXRpb25Sb290KGVsZW1lbnQsICp1cGRhdGUuc3R5bGUsIHBhcmVudCgpLmZpeGVkUG9z
aXRpb25Sb290LmdldCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUp
LCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVzKSwgZml4ZWRQb3Np
dGlvblJvb3QgfTsKIH0KIAogc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiBUcmVlUmVzb2x2
ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXBk
YXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKQEAgLTQwMCw3ICs0MDIsOCBA
QCB2b2lkIFRyZWVSZXNvbHZlcjo6cHVzaFBhcmVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIENoYW5nZQogewogICAgIHNjb3BlKCkuc2VsZWN0b3JNYXRjaGlu
Z1N0YXRlLnNlbGVjdG9yRmlsdGVyLnB1c2hQYXJlbnQoJmVsZW1lbnQpOwogCi0gICAgUGFyZW50
IHBhcmVudChlbGVtZW50LCBzdHlsZSwgY2hhbmdlLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSk7Cisg
ICAgUmVmUHRyIGZpeGVkUG9zaXRpb25Sb290ID0gbV91cGRhdGUtPmZpeGVkUG9zaXRpb25Sb290
KGVsZW1lbnQsIHN0eWxlLCBwYXJlbnQoKS5maXhlZFBvc2l0aW9uUm9vdC5nZXQoKSk7CisgICAg
UGFyZW50IHBhcmVudChlbGVtZW50LCBzdHlsZSwgY2hhbmdlLCBkZXNjZW5kYW50c1RvUmVzb2x2
ZSwgZml4ZWRQb3NpdGlvblJvb3QuZ2V0KCkpOwogCiAgICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3Qg
PSBlbGVtZW50LnNoYWRvd1Jvb3QoKSkgewogICAgICAgICBwdXNoU2NvcGUoKnNoYWRvd1Jvb3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggZmEyNWE1MTU0
OWQ0MGQ4N2QwNTU3MTM4MjVlZmViYTA0NmU2ZTBjNy4uMWViMGJiNDY1ZDRjZTczYTljOTU0ODk0
NmEyNTQwZWQ2YWVkYjlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5oCkBAIC04NCw5ICs4NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBDaGFuZ2UgY2hhbmdlIHsg
Q2hhbmdlOjpOb25lIH07CiAgICAgICAgIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRz
VG9SZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUgfTsKICAgICAgICAgYm9vbCBk
aWRQdXNoU2NvcGUgeyBmYWxzZSB9OworICAgICAgICBXZWFrUHRyPEVsZW1lbnQ+IGZpeGVkUG9z
aXRpb25Sb290OwogCiAgICAgICAgIFBhcmVudChEb2N1bWVudCYpOwotICAgICAgICBQYXJlbnQo
RWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgQ2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2
ZSk7CisgICAgICAgIFBhcmVudChFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBDaGFuZ2Us
IERlc2NlbmRhbnRzVG9SZXNvbHZlLCBFbGVtZW50KiBmaXhlZFBvc2l0aW9uUm9vdCk7CiAgICAg
fTsKIAogICAgIFNjb3BlJiBzY29wZSgpIHsgcmV0dXJuIG1fc2NvcGVTdGFjay5sYXN0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcAppbmRleCBkZDY2NjJjNTFmMmZkNWI2MzRl
MzA1YWZhYTlkZjI5NjZlZDM3OGY2Li5lNTA1MTlkOWQzZDc0NjNmMWFhMTEwOGFjMWNiOWUzNjE1
YjQzOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxl
bWVudC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xMjIsNiArMTIzLDI1IEBAIHZvaWQgVXBk
YXRlOjphZGRUZXh0KFRleHQmIHRleHQsIFRleHRVcGRhdGUmJiB0ZXh0VXBkYXRlKQogICAgIGFk
ZFRleHQodGV4dCwgY29tcG9zZWRUcmVlQW5jZXN0b3JzKHRleHQpLmZpcnN0KCksIFdURk1vdmUo
dGV4dFVwZGF0ZSkpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNGaXhlZFBvc2l0aW9uKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpDb250ZW50cyAmJiBzdHlsZS5wb3NpdGlvbigpID09IFBvc2l0aW9uVHlw
ZTo6Rml4ZWQ7Cit9CisKK0VsZW1lbnQqIFVwZGF0ZTo6Zml4ZWRQb3NpdGlvblJvb3QoRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW50KiBwYXJlbnRGaXhl
ZFBvc2l0aW9uUm9vdCkKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQtPnNob3VsZE9ic2VydmVGaXhl
ZFBvc2l0aW9uUm9vdHMoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudEZpeGVkUG9zaXRpb25Sb290
OworCisgICAgaWYgKCFjb21wb3NlZFRyZWVBbmNlc3RvcnMoZWxlbWVudCkuZmlyc3QoKSB8fCBp
czxIVE1MQm9keUVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gcGFyZW50Rml4ZWRQ
b3NpdGlvblJvb3Q7CisKKyAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbihzdHlsZSkgfHwgcGFyZW50
Rml4ZWRQb3NpdGlvblJvb3QpCisgICAgICAgIHJldHVybiBwYXJlbnRGaXhlZFBvc2l0aW9uUm9v
dDsKKworICAgIHJldHVybiAmZWxlbWVudDsKK30KKwogdm9pZCBVcGRhdGU6OmFkZFBvc3NpYmxl
Um9vdChFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVXBkYXRlLmgKaW5kZXggN2Y5ZDdhMTc3Y2NmZjU5ZWE4Mjc2MTY1ODI0YWUzYWNk
NTgyYjlhMC4uMGE2OGEyMTcyOTVmYjQwZTc5MWMyZDJlZWY2NTBmNDFjZjQyNTE1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU3R5
bGVDaGFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDcsNyArNDgsNyBAQCBzdHJ1Y3QgRWxlbWVudFVwZGF0ZSB7CiAgICAgYm9vbCBy
ZWNvbXBvc2l0ZUxheWVyIHsgZmFsc2UgfTsKIH07CiAKLWVudW0gY2xhc3MgRGVzY2VuZGFudHNU
b1Jlc29sdmUgeyBOb25lLCBDaGlsZHJlbldpdGhFeHBsaWNpdEluaGVyaXQsIENoaWxkcmVuLCBB
bGwgfTsKK2VudW0gY2xhc3MgRGVzY2VuZGFudHNUb1Jlc29sdmUgOiB1aW50OF90IHsgTm9uZSwg
Q2hpbGRyZW5XaXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJlbiwgQWxsIH07CiAKIHVzaW5nIFBz
ZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwID0gSGFzaE1hcDxQc2V1ZG9JZCwgRWxlbWVudFVwZGF0
ZSwgSW50SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UHNldWRvSWQ+
PjsKIApAQCAtNTUsNiArNTYsNyBAQCBzdHJ1Y3QgRWxlbWVudFVwZGF0ZXMgewogICAgIEVsZW1l
bnRVcGRhdGUgdXBkYXRlOwogICAgIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9S
ZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUgfTsKICAgICBQc2V1ZG9JZFRvRWxl
bWVudFVwZGF0ZU1hcCBwc2V1ZG9FbGVtZW50VXBkYXRlczsKKyAgICBXZWFrUHRyPEVsZW1lbnQ+
IGZpeGVkUG9zaXRpb25Sb290OwogfTsKIAogc3RydWN0IFRleHRVcGRhdGUgewpAQCAtODYsNiAr
ODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUZXh0KFRleHQmLCBFbGVtZW50KiBwYXJlbnQs
IFRleHRVcGRhdGUmJik7CiAgICAgdm9pZCBhZGRUZXh0KFRleHQmLCBUZXh0VXBkYXRlJiYpOwog
CisgICAgRWxlbWVudCogZml4ZWRQb3NpdGlvblJvb3QoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgRWxlbWVudCogcGFyZW50Rml4ZWRQb3NpdGlvblJvb3QpOworCiBwcml2YXRlOgogICAg
IHZvaWQgYWRkUG9zc2libGVSb290KEVsZW1lbnQqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447385</attachid>
            <date>2021-12-16 12:39:21 -0800</date>
            <delta_ts>2021-12-16 12:41:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234214-20211216123920.patch</filename>
            <type>text/plain</type>
            <size>20695</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0MWFhYTM0YjNkYzQx
NzJlNmMyMTNmODllZTg0YWQ1ZTQxOTlkNS4uN2YwYzllYmJiNjkwMmEwNWY4NWNlMGQ4NDg4Njcz
MDE5M2RiMTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTEyLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBkZXRlY3RpbmcgbW9kYWwgY29udGFpbmVycyB0aGF0IGNvbnRhaW4gYSBnaXZlbiBzZWFy
Y2ggdGVybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW50cm9kdWNlIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgKGEgaGVscGVyIGNsYXNzIHRoYXQgc2Vh
cmNoZXMgZm9yIGEgc3Vic3RyaW5nIHZlbmRlZCBieSB0aGUgY2xpZW50IGxheWVyIGluCisgICAg
ICAgIHRleHQgaW5zaWRlIHZpZXdwb3J0LWNvbnN0cmFpbmVkIHJlbmRlcmVycykuIElmIGZvdW5k
LCB3ZSBrZWVwIHRyYWNrIG9mIHRoZSB2aWV3cG9ydC1jb25zdHJhaW5lZCBjb250YWluZXIgd2l0
aAorICAgICAgICB0aGUgbWF0Y2hpbmcgdGV4dCBmb3IgdXNlIGluIGZ1dHVyZSBwYXRjaGVzLgor
CisgICAgICAgIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQuCisKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojptb2RhbENvbnRhaW5lck9ic2VydmVyKToKKworICAgICAgICBSZXR1cm5zIHRoZSBkb2N1
bWVudCdzIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIsIGNyZWF0aW5nIGl0IG9ubHkgaWYgbmVlZGVk
IChwZXIgdGhlIG1vZGFsIGNvbnRhaW5lciBvYnNlcnZhdGlvbgorICAgICAgICBwb2xpY3kgdmVu
ZGVkIGJ5IHRoZSBjbGllbnQpLgorCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bW9kYWxD
b250YWluZXJPYnNlcnZlcklmRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpzZWFyY2hTdHJpbmdGb3JNb2RhbENvbnRhaW5lck9ic2VydmVyIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MpOgorCisgICAgICAgIEFkZCBhIGhvb2sgdG8gY3Jl
YXRlIGFuZCBjYWxsIGludG8gTW9kYWxDb250YWluZXJPYnNlcnZlciB0byBzZWFyY2ggZm9yIGEg
bW9kYWwgY29udGFpbmVyIChpZiBuZWNlc3NhcnkpLgorCisgICAgICAgICogcGFnZS9Nb2RhbENv
bnRhaW5lck9ic2VydmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRh
aW5lck9ic2VydmVyOjppc05lZWRlZEZvcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhv
ZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzICJtb2RhbCBjb250YWluZXIgb2JzZXJ2ZXIiIHNo
b3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIGZvciB0aGUKKyAgICAgICAgY3VycmVudCBkb2N1bWVu
dC4KKworICAgICAgICAoV2ViQ29yZTo6TW9kYWxDb250YWluZXJPYnNlcnZlcjo6dXBkYXRlTW9k
YWxDb250YWluZXJJZk5lZWRlZCk6CisKKyAgICAgICAgSXRlcmF0ZXMgdGhyb3VnaCBhbGwgdmll
d3BvcnQtY29uc3RyYWluZWQgcmVuZGVyIG9iamVjdHMgaW4gdGhlIEZyYW1lVmlldywgaW4gc2Vh
cmNoIG9mIG9uZSB0aGF0IG1hdGNoZXMgdGhlCisgICAgICAgIHNlYXJjaCB0ZXJtIGdpdmVuIGJ5
IHRoZSBjbGllbnQuIFRoaXMgY3VycmVudGx5IGVuc3VyZXMgdGhhdCB3ZSBvbmx5IHNlYXJjaCBh
bnkgdmlld3BvcnQtY29uc3RyYWluZWQgZWxlbWVudCBhdAorICAgICAgICBtb3N0IG9uY2UgYnkg
bWFpbnRhaW5pbmcgYSB3ZWFrIGBtX2VsZW1lbnRzVG9JZ25vcmVXaGVuU2VhcmNoaW5nYCBzZXQs
IGJ1dCB3ZSBtYXkgbmVlZCBhIG1lY2hhbmlzbSBpbiB0aGUgZnV0dXJlCisgICAgICAgIHRvIHJl
bW92ZSBlbGVtZW50cyBmcm9tIHRoaXMgc2V0IHVwb24gY2hhbmdpbmcgdGV4dCBjb250ZW50Lgor
CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lck9ic2VydmVyOjptYXRjaGVzU2VhcmNo
VGVybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lck9ic2VydmVyOjpz
aG91bGRIaWRlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIHJldHVybiB3aGV0
aGVyIG9yIG5vdCBhIGdpdmVuIGVsZW1lbnQgc2hvdWxkIGJlIGhpZGRlbi4gVG8gYmUgdXNlZCBi
eSBhIGZ1dHVyZSBwYXRjaCB0bworICAgICAgICBoaWRlIHRoZSBkZXRlY3RlZCBtb2RhbCBjb250
YWluZXIgZWxlbWVudCBmcm9tIGJlaW5nIHBhaW50ZWQuCisKKyAgICAgICAgKiBwYWdlL01vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuaDogQWRkZWQuCisKIDIwMjEtMTItMTIgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBpcGUgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IGludG8gR3JhZGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVmZDQwZGFhOWMzNTNjMmM1NDkwN2Y5ODdmYWMy
N2E3YzJhOWViZS4uYzc4ZTQ0Y2ZiZGQyNDBkN2UwYzAyMWFlOGY0MTM1NmRmZWViOGIxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0xNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGV0ZWN0aW5nIG1v
ZGFsIGNvbnRhaW5lcnMgdGhhdCBjb250YWluIGEgZ2l2ZW4gc2VhcmNoIHRlcm0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDIxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFdlYktpdEFkZGl0
aW9ucyBob29rIHRoYXQgaW1wbGVtZW50cyBhIG5ldyBjaHJvbWUgY2xpZW50IG1ldGhvZC4gU2Vl
IFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6c2VhcmNoU3RyaW5nRm9yTW9kYWxDb250YWluZXJPYnNlcnZlciBj
b25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKwogMjAyMS0xMi0xMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb21lbnR1bSBFdmVudCBEaXNwYXRjaGVyOiBUYWlsIGZyYW1lcyBhcmUg
dGhlIHdyb25nIHZlbG9jaXR5IGlmIG1vbWVudHVtIGV2ZW50IGRpc3BhdGNoIHJhdGUgZG9lc24n
dCBtYXRjaCBzY3JlZW4gcmVmcmVzaCByYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI3MTBmNjExMzJk
ODY0ZGMyOWMxZTdhNDFjZDQ0ZTMzNDYwZGU2ZTkuLjZkMWM3ZmMzOTU4ZDlkMDBkZWRhYjRjZmFl
MmI2OGZlNjgzOTcyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzM5LDYgKzE3MzksNyBAQCBwYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuY3BwCiBwYWdlL0xvY2F0aW9uLmNwcAogcGFnZS9M
b2dnZWRJblN0YXR1cy5jcHAKIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKK3BhZ2UvTW9kYWxDb250
YWluZXJPYnNlcnZlci5jcHAKIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAK
IHBhZ2UvTmF2aWdhdG9yLmNwcAogcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NDQyZDNk
OTBmZmE1YzMxZjc4YjMwMDE5ZjU4MjJiNTFiNTQ0YzMuLjM1ZDU1ZGUxNzNkOWFjNTBlY2RmOWI3
OTc4OWUwMmQxYTg2YmIyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyNjUsNiArMzI2NSw3IEBACiAJCUExMEJCNThCMTQ4
NEUzQjMwMEIyRTg3QSAvKiBSZW5kZXJTVkdTaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQkI1ODkxNDg0RTNCMzAwQjJFODdBIC8qIFJlbmRl
clNWR1NoYXBlLmggKi87IH07CiAJCUExMERCRjQ3MThGOTIzMTcwMDBENzBDNiAvKiBMZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTBEQkY0NjE4RjkyMzE3MDAwRDcwQzYgLyogTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExMERDNzZCMTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdyaWREYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBEQzc2OTE0NzQ3QkFCMDA1
RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUExMEY3QzczMjczMTAwRDAwMDhGQTlBRiAvKiBNb2RhbENvbnRh
aW5lck9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTBGN0M3MDI3MzEwMDczMDA4RkE5QUYgLyogTW9kYWxDb250YWluZXJPYnNlcnZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMTBE
QjlCMTRGNURGNzcwMEEwM0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExMERCOUExNEY1REY3NzAwQTAzQjkz
IC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTExM0UwMjgyMzMxODI5MzAwOUMzM0EwIC8qIFBheW1lbnRTZXNz
aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTNFMDI3MjMzMTgyOTMwMDlDMzNBMCAvKiBQYXltZW50U2Vzc2lvbkVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExM0UwMkUyMzMx
QTEzNDAwOUMzM0EwIC8qIEFwcGxlUGF5Q2FuY2VsRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTNFMDJCMjMzMUEwRTQwMDlDMzNBMCAvKiBB
cHBsZVBheUNhbmNlbEV2ZW50LmggKi87IH07CkBAIC0xMzM0MSw2ICsxMzM0Miw4IEBACiAJCUEx
MERCRjQ2MThGOTIzMTcwMDBENzBDNiAvKiBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwREM3NjgxNDc0N0JBQjAwNUUyNDcx
IC8qIFN0eWxlR3JpZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3R5bGVHcmlkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMERD
NzY5MTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdyaWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0eWxlR3JpZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTEwRjdDNzAyNzMxMDA3MzAwOEZBOUFGIC8qIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9kYWxDb250YWluZXJPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMTBGN0M3MTI3MzEwMDczMDA4RkE5QUYgLyogTW9kYWxDb250YWlu
ZXJPYnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RhbENvbnRhaW5lck9ic2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExMERCOUExNEY1REY3NzAwQTAz
QjkzIC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0eWxlR3JpZEl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MTBEQjlDMTRGNURGODcwMEEwM0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUdyaWRJdGVtRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTNFMDI3MjMzMTgyOTMwMDlDMzNBMCAvKiBQYXlt
ZW50U2Vzc2lvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRTZXNzaW9uRXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOTE5LDYgKzIzOTIyLDggQEAKIAkJCQk1
MkUyQ0FGQjE5RkYwMjA3MDAxRUVCNEYgLyogTWVkaWFQcm9kdWNlci5oICovLAogCQkJCTQxM0Uw
MDc3MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmNwcCAqLywKIAkJCQk0MTNFMDA3
ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICovLAorCQkJCUExMEY3QzcxMjcz
MTAwNzMwMDhGQTlBRiAvKiBNb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcCAqLywKKwkJCQlBMTBG
N0M3MDI3MzEwMDczMDA4RkE5QUYgLyogTW9kYWxDb250YWluZXJPYnNlcnZlci5oICovLAogCQkJ
CTkzRUIzNTVFMDlFMzdGRDYwMEY0Mzc5OSAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
LmNwcCAqLywKIAkJCQk5MzVDNDc2MjA5QUM0Q0U2MDBBNkFBQjQgLyogTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oICovLAogCQkJCTZCNTA3QTIzMjM0QkYzNDEwMEJFN0M2MiAvKiBOYXZp
Z2F0b3IrSXNMb2dnZWRJbi5pZGwgKi8sCkBAIC0zNjA0NCw2ICszNjA0OSw3IEBACiAJCQkJQ0RG
MkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTcxNTYxMEMyMzRDMUNBMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUExMEY3QzczMjcz
MTAwRDAwMDhGQTlBRiAvKiBNb2RhbENvbnRhaW5lck9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNCQUIgLyogTW9kZWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxM0U3OUVBMjczQzg2QjgwMDk3RjkwNSAvKiBNb2RlbERvY3VtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzJCNDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYjRhMDNiNmUwNGE1YmM2NzU2
NGRmMTVmYjZlNjMzMDcwYTRkMzM1Yy4uYzc5MDBjMWRlYjY2MjIzOTA4Yjc2MmYxYmM3NTU2NDBl
Y2RkMWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAKICNp
bmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTW9kYWxDb250YWluZXJPYnNlcnZl
ci5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRl
ICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCkBAIC05MDc3LDYg
KzkwNzgsMTggQEAgU3RyaW5nIERvY3VtZW50OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCitNb2RhbENvbnRhaW5lck9ic2VydmVy
KiBEb2N1bWVudDo6bW9kYWxDb250YWluZXJPYnNlcnZlcigpCit7CisgICAgaWYgKCFtX21vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIgJiYgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6aXNOZWVkZWRGb3Io
KnRoaXMpKQorICAgICAgICBtX21vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPE1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXI+KCk7CisgICAgcmV0dXJuIG1fbW9kYWxDb250YWluZXJPYnNl
cnZlci5nZXQoKTsKK30KKworTW9kYWxDb250YWluZXJPYnNlcnZlciogRG9jdW1lbnQ6Om1vZGFs
Q29udGFpbmVyT2JzZXJ2ZXJJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbW9kYWxD
b250YWluZXJPYnNlcnZlci5nZXQoKTsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHRzIDw8IGRvY3Vt
ZW50LmRlYnVnRGVzY3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjg1ZGQ2OWZi
OTg1YzgyODhjNzJiYzhmZWY1NDA2NjMwNmUyM2ZjZi4uYzhlZmZmYWZhYWI3OWI1NDg4YWM4NGNl
MmE5YmQ5ZjYyZDgyMGExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE4Myw2ICsxODMsNyBA
QCBjbGFzcyBNZWRpYVByb2R1Y2VyOwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBjbGFzcyBNZWRp
YVF1ZXJ5TWF0Y2hlcjsKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOworY2xhc3Mg
TW9kYWxDb250YWluZXJPYnNlcnZlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHM7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwpAQCAtMTY2Myw2ICsx
NjY0LDkgQEAgcHVibGljOgogCiAgICAgVVJMIGZhbGxiYWNrQmFzZVVSTCgpIGNvbnN0OwogCisg
ICAgTW9kYWxDb250YWluZXJPYnNlcnZlciogbW9kYWxDb250YWluZXJPYnNlcnZlcigpOworICAg
IE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIqIG1vZGFsQ29udGFpbmVyT2JzZXJ2ZXJJZkV4aXN0cygp
IGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25zdHJ1Y3Rpb25GbGFncyB7IFN5bnRo
ZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9IDEgPDwgMSB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmLCBE
b2N1bWVudENsYXNzZXMgPSB7IH0sIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CkBA
IC0yMjQ5LDYgKzIyNTMsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIFJl
ZlB0cjxSVENOZXR3b3JrTWFuYWdlcj4gbV9ydGNOZXR3b3JrTWFuYWdlcjsKICNlbmRpZgorCisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI+IG1fbW9kYWxDb250YWlu
ZXJPYnNlcnZlcjsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50
KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA5OGFhYTkzZWQw
ZjM1NTU2OThiMmQyY2Y3MGIzMTcwYTRhMTZiZGE4Li4yOWQ4N2UyMTBiZDFiMWZmOThjY2NkMzgy
MmQ1NTRiNTI3ODNlYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTYyMyw2
ICs2MjMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENvb2tpZUNvbnNl
bnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDb29raWVDb25zZW50RGVjaXNpb25SZXN1bHQpPiYm
KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIHNlYXJjaFN0cmluZ0Zvck1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBudWxsQXRvbSgpOyB9CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGI1N2YyNjhmYzlhMGVkNTc4MDBjNThhOTlmNjUz
OWUyMTY4ZTE4ZDMuLjU1Y2E4MzM2NGZmZTc5NjJhZTBhY2IyMDlkNDllODgwY2M1NjI0NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJM
ZWdhY3lSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTW9kYWxDb250YWluZXJPYnNlcnZlci5oIgogI2luY2x1
ZGUgIk51bGxHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtMzQzMyw2ICszNDM0LDkgQEAgdm9pZCBGcmFtZVZpZXc6OnBl
cmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
ZnJhbWUoKS5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2Fj
aGUtPnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CisKKyAgICBpZiAoYXV0byogb2JzZXJ2
ZXIgPSBmcmFtZSgpLmRvY3VtZW50KCktPm1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSkKKyAgICAg
ICAgb2JzZXJ2ZXItPnVwZGF0ZU1vZGFsQ29udGFpbmVySWZOZWVkZWQoKnRoaXMpOwogfQogCiBJ
bnRTaXplIEZyYW1lVmlldzo6c2l6ZUZvclJlc2l6ZUV2ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2OTc4
YWExMTZkODMyZTFlNjRmNGJjYTQyN2FjODNjMDNlOTMxZTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCkBAIC0wLDAgKzEs
MTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgTW9k
YWxDb250YWluZXJPYnNlcnZlcjo6aXNOZWVkZWRGb3IoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQoreworICAgIFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGRvY3VtZW50LmxvYWRlcigpOworCisg
ICAgaWYgKCFkb2N1bWVudExvYWRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkb2N1bWVudC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZG9jdW1lbnQuaXNUb3BEb2N1bWVudCgpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBOZWVkIHRvIHByb3Blcmx5IHN1cHBvcnQgc3ViZnJhbWVzLgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmluRGVzaWduTW9kZSgpIHx8
ICFpczxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAg
IGlmICghcGFnZSB8fCBwYWdlLT5pc0VkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCitNb2RhbENvbnRhaW5lck9ic2VydmVyOjpNb2RhbENv
bnRhaW5lck9ic2VydmVyKCkgPSBkZWZhdWx0OworTW9kYWxDb250YWluZXJPYnNlcnZlcjo6fk1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTW9kYWxDb250YWluZXJP
YnNlcnZlcjo6dXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZChGcmFtZVZpZXcmIHZpZXcpCit7
CisgICAgaWYgKG1fY29udGFpbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXZpZXcu
aGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byogcGFnZSA9IHZpZXcuZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvJiBzZWFyY2hUZXJtID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkuc2VhcmNoU3RyaW5nRm9yTW9kYWxDb250YWluZXJPYnNlcnZlcigpOworICAgIGlmIChzZWFy
Y2hUZXJtLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIG9iamVj
dCA6ICp2aWV3LnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCkpIHsKKyAgICAgICAgUmVmUHRy
IGVsZW1lbnQgPSBvYmplY3QuZWxlbWVudCgpOworICAgICAgICBpZiAoIWVsZW1lbnQgfHwgaXM8
SFRNTEJvZHlFbGVtZW50PigqZWxlbWVudCkgfHwgZWxlbWVudC0+aXNEb2N1bWVudE5vZGUoKSB8
fCAhbV9lbGVtZW50c1RvSWdub3JlV2hlblNlYXJjaGluZy5hZGQoKmVsZW1lbnQpLmlzTmV3RW50
cnkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1dG8mIHRleHROb2Rl
IDogZGVzY2VuZGFudHNPZlR5cGU8VGV4dD4oKmVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAo
IW1hdGNoZXNTZWFyY2hUZXJtKHRleHROb2RlLCBzZWFyY2hUZXJtKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgbV9jb250YWluZXIgPSBlbGVtZW50LmdldCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCitib29sIE1vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXI6Om1hdGNoZXNTZWFyY2hUZXJtKGNvbnN0IFRleHQmIHRleHROb2RlLCBj
b25zdCBBdG9tU3RyaW5nJiBzZWFyY2hUZXJtKSBjb25zdAoreworICAgIFJlZlB0ciBwYXJlbnQg
PSB0ZXh0Tm9kZS5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKTsKKyAgICBib29sIHNob3Vs
ZFNlYXJjaE5vZGUgPSAoWyZdIHsKKyAgICAgICAgaWYgKCF0ZXh0Tm9kZS5yZW5kZXJlcigpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+
KHBhcmVudC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0
dXJuIHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmFUYWcpIHx8IHBhcmVudC0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmRpdlRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
cFRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3BhblRhZykgfHwgcGFyZW50
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VjdGlvblRhZyk7CisgICAgfSkoKTsKKworICAgIGlm
ICghc2hvdWxkU2VhcmNoTm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKExJ
S0VMWSghdGV4dE5vZGUuZGF0YSgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc2VhcmNoVGVy
bSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjpzaG91bGRIaWRlKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgcmV0dXJuICZlbGVtZW50ID09IG1fY29udGFpbmVyOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNl
cnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM4MDk1NzJlMGU2OGVjNTk5MzYyOGY1NzY4YTFjOGJjOGEwZjRk
NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVy
T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJTdHlsZVVwZGF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7Citj
bGFzcyBIVE1MRWxlbWVudDsKK2NsYXNzIEZyYW1lVmlldzsKKworY2xhc3MgTW9kYWxDb250YWlu
ZXJPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIGJvb2wgaXNOZWVkZWRGb3IoY29uc3QgRG9jdW1lbnQmKTsKKworICAgIE1vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXIoKTsKKyAgICB+TW9kYWxDb250YWluZXJPYnNlcnZlcigpOworCisgICAg
Ym9vbCBzaG91bGRIaWRlKGNvbnN0IEVsZW1lbnQmKTsKKyAgICB2b2lkIHVwZGF0ZU1vZGFsQ29u
dGFpbmVySWZOZWVkZWQoRnJhbWVWaWV3Jik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtYXRjaGVz
U2VhcmNoVGVybShjb25zdCBUZXh0JiB0ZXh0Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgc2VhcmNo
VGVybSkgY29uc3Q7CisKKyAgICBXZWFrSGFzaFNldDxFbGVtZW50PiBtX2VsZW1lbnRzVG9JZ25v
cmVXaGVuU2VhcmNoaW5nOworICAgIFdlYWtQdHI8RWxlbWVudD4gbV9jb250YWluZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDNlMmQ0
NzVmOGMyMGY4OGVlZDVmMWU5YzE0ZjhlZTJmZWU1YmYwODIuLjAzNDFhNzI5YTRiYTQ5ZWQxOWVk
ZmE0NGMyMjcwMjhkNzQzN2MwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xNTY5LDQg
KzE1NjksMTMgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RDb29raWVDb25zZW50KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29va2kKICAgICBtX3BhZ2Uuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RDb29raWVDb25zZW50KCks
IFdURk1vdmUoY29tcGxldGlvbikpOwogfQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ2hyb21lQ2xpZW50QWRkaXRpb25zLmNwcD4K
KyNlbHNlCitjb25zdCBBdG9tU3RyaW5nJiBXZWJDaHJvbWVDbGllbnQ6OnNlYXJjaFN0cmluZ0Zv
ck1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSBjb25zdAoreworICAgIHJldHVybiBudWxsQXRvbSgp
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmlu
ZGV4IDhiOGZiNDEzZDBmNTk1M2I1YTE5ZjA2OGI0M2NmZmUwMDNkZWFkMGMuLmFmMTQ0ODdhZDNm
NmI5YjY3YzQxMGI0YmI3ODg4YWRjY2FlNWRiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQ2
Niw2ICs0NjYsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0Q29va2llQ29uc2VudChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvb2tpZUNvbnNlbnREZWNpc2lvblJlc3Vs
dCk+JiYpIGZpbmFsOwogCisgICAgY29uc3QgQXRvbVN0cmluZyYgc2VhcmNoU3RyaW5nRm9yTW9k
YWxDb250YWluZXJPYnNlcnZlcigpIGNvbnN0IGZpbmFsOworCiAgICAgbXV0YWJsZSBib29sIG1f
Y2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAgbXV0
YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxzZSB9
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447386</attachid>
            <date>2021-12-16 12:41:21 -0800</date>
            <delta_ts>2021-12-16 12:56:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234214-20211216124120.patch</filename>
            <type>text/plain</type>
            <size>20793</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0MWFhYTM0YjNkYzQx
NzJlNmMyMTNmODllZTg0YWQ1ZTQxOTlkNS4uN2YwYzllYmJiNjkwMmEwNWY4NWNlMGQ4NDg4Njcz
MDE5M2RiMTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTEyLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBkZXRlY3RpbmcgbW9kYWwgY29udGFpbmVycyB0aGF0IGNvbnRhaW4gYSBnaXZlbiBzZWFy
Y2ggdGVybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW50cm9kdWNlIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgKGEgaGVscGVyIGNsYXNzIHRoYXQgc2Vh
cmNoZXMgZm9yIGEgc3Vic3RyaW5nIHZlbmRlZCBieSB0aGUgY2xpZW50IGxheWVyIGluCisgICAg
ICAgIHRleHQgaW5zaWRlIHZpZXdwb3J0LWNvbnN0cmFpbmVkIHJlbmRlcmVycykuIElmIGZvdW5k
LCB3ZSBrZWVwIHRyYWNrIG9mIHRoZSB2aWV3cG9ydC1jb25zdHJhaW5lZCBjb250YWluZXIgd2l0
aAorICAgICAgICB0aGUgbWF0Y2hpbmcgdGV4dCBmb3IgdXNlIGluIGZ1dHVyZSBwYXRjaGVzLgor
CisgICAgICAgIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQuCisKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojptb2RhbENvbnRhaW5lck9ic2VydmVyKToKKworICAgICAgICBSZXR1cm5zIHRoZSBkb2N1
bWVudCdzIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIsIGNyZWF0aW5nIGl0IG9ubHkgaWYgbmVlZGVk
IChwZXIgdGhlIG1vZGFsIGNvbnRhaW5lciBvYnNlcnZhdGlvbgorICAgICAgICBwb2xpY3kgdmVu
ZGVkIGJ5IHRoZSBjbGllbnQpLgorCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bW9kYWxD
b250YWluZXJPYnNlcnZlcklmRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpzZWFyY2hTdHJpbmdGb3JNb2RhbENvbnRhaW5lck9ic2VydmVyIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MpOgorCisgICAgICAgIEFkZCBhIGhvb2sgdG8gY3Jl
YXRlIGFuZCBjYWxsIGludG8gTW9kYWxDb250YWluZXJPYnNlcnZlciB0byBzZWFyY2ggZm9yIGEg
bW9kYWwgY29udGFpbmVyIChpZiBuZWNlc3NhcnkpLgorCisgICAgICAgICogcGFnZS9Nb2RhbENv
bnRhaW5lck9ic2VydmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRh
aW5lck9ic2VydmVyOjppc05lZWRlZEZvcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhv
ZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzICJtb2RhbCBjb250YWluZXIgb2JzZXJ2ZXIiIHNo
b3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIGZvciB0aGUKKyAgICAgICAgY3VycmVudCBkb2N1bWVu
dC4KKworICAgICAgICAoV2ViQ29yZTo6TW9kYWxDb250YWluZXJPYnNlcnZlcjo6dXBkYXRlTW9k
YWxDb250YWluZXJJZk5lZWRlZCk6CisKKyAgICAgICAgSXRlcmF0ZXMgdGhyb3VnaCBhbGwgdmll
d3BvcnQtY29uc3RyYWluZWQgcmVuZGVyIG9iamVjdHMgaW4gdGhlIEZyYW1lVmlldywgaW4gc2Vh
cmNoIG9mIG9uZSB0aGF0IG1hdGNoZXMgdGhlCisgICAgICAgIHNlYXJjaCB0ZXJtIGdpdmVuIGJ5
IHRoZSBjbGllbnQuIFRoaXMgY3VycmVudGx5IGVuc3VyZXMgdGhhdCB3ZSBvbmx5IHNlYXJjaCBh
bnkgdmlld3BvcnQtY29uc3RyYWluZWQgZWxlbWVudCBhdAorICAgICAgICBtb3N0IG9uY2UgYnkg
bWFpbnRhaW5pbmcgYSB3ZWFrIGBtX2VsZW1lbnRzVG9JZ25vcmVXaGVuU2VhcmNoaW5nYCBzZXQs
IGJ1dCB3ZSBtYXkgbmVlZCBhIG1lY2hhbmlzbSBpbiB0aGUgZnV0dXJlCisgICAgICAgIHRvIHJl
bW92ZSBlbGVtZW50cyBmcm9tIHRoaXMgc2V0IHVwb24gY2hhbmdpbmcgdGV4dCBjb250ZW50Lgor
CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lck9ic2VydmVyOjptYXRjaGVzU2VhcmNo
VGVybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lck9ic2VydmVyOjpz
aG91bGRIaWRlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIHJldHVybiB3aGV0
aGVyIG9yIG5vdCBhIGdpdmVuIGVsZW1lbnQgc2hvdWxkIGJlIGhpZGRlbi4gVG8gYmUgdXNlZCBi
eSBhIGZ1dHVyZSBwYXRjaCB0bworICAgICAgICBoaWRlIHRoZSBkZXRlY3RlZCBtb2RhbCBjb250
YWluZXIgZWxlbWVudCBmcm9tIGJlaW5nIHBhaW50ZWQuCisKKyAgICAgICAgKiBwYWdlL01vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuaDogQWRkZWQuCisKIDIwMjEtMTItMTIgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBpcGUgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IGludG8gR3JhZGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVmZDQwZGFhOWMzNTNjMmM1NDkwN2Y5ODdmYWMy
N2E3YzJhOWViZS4uYzc4ZTQ0Y2ZiZGQyNDBkN2UwYzAyMWFlOGY0MTM1NmRmZWViOGIxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0xNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGV0ZWN0aW5nIG1v
ZGFsIGNvbnRhaW5lcnMgdGhhdCBjb250YWluIGEgZ2l2ZW4gc2VhcmNoIHRlcm0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDIxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFdlYktpdEFkZGl0
aW9ucyBob29rIHRoYXQgaW1wbGVtZW50cyBhIG5ldyBjaHJvbWUgY2xpZW50IG1ldGhvZC4gU2Vl
IFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6c2VhcmNoU3RyaW5nRm9yTW9kYWxDb250YWluZXJPYnNlcnZlciBj
b25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKwogMjAyMS0xMi0xMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb21lbnR1bSBFdmVudCBEaXNwYXRjaGVyOiBUYWlsIGZyYW1lcyBhcmUg
dGhlIHdyb25nIHZlbG9jaXR5IGlmIG1vbWVudHVtIGV2ZW50IGRpc3BhdGNoIHJhdGUgZG9lc24n
dCBtYXRjaCBzY3JlZW4gcmVmcmVzaCByYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI3MTBmNjExMzJk
ODY0ZGMyOWMxZTdhNDFjZDQ0ZTMzNDYwZGU2ZTkuLjZkMWM3ZmMzOTU4ZDlkMDBkZWRhYjRjZmFl
MmI2OGZlNjgzOTcyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzM5LDYgKzE3MzksNyBAQCBwYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuY3BwCiBwYWdlL0xvY2F0aW9uLmNwcAogcGFnZS9M
b2dnZWRJblN0YXR1cy5jcHAKIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKK3BhZ2UvTW9kYWxDb250
YWluZXJPYnNlcnZlci5jcHAKIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAK
IHBhZ2UvTmF2aWdhdG9yLmNwcAogcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NDQyZDNk
OTBmZmE1YzMxZjc4YjMwMDE5ZjU4MjJiNTFiNTQ0YzMuLjM1ZDU1ZGUxNzNkOWFjNTBlY2RmOWI3
OTc4OWUwMmQxYTg2YmIyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyNjUsNiArMzI2NSw3IEBACiAJCUExMEJCNThCMTQ4
NEUzQjMwMEIyRTg3QSAvKiBSZW5kZXJTVkdTaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQkI1ODkxNDg0RTNCMzAwQjJFODdBIC8qIFJlbmRl
clNWR1NoYXBlLmggKi87IH07CiAJCUExMERCRjQ3MThGOTIzMTcwMDBENzBDNiAvKiBMZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTBEQkY0NjE4RjkyMzE3MDAwRDcwQzYgLyogTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExMERDNzZCMTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdyaWREYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBEQzc2OTE0NzQ3QkFCMDA1
RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUExMEY3QzczMjczMTAwRDAwMDhGQTlBRiAvKiBNb2RhbENvbnRh
aW5lck9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTBGN0M3MDI3MzEwMDczMDA4RkE5QUYgLyogTW9kYWxDb250YWluZXJPYnNlcnZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMTBE
QjlCMTRGNURGNzcwMEEwM0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExMERCOUExNEY1REY3NzAwQTAzQjkz
IC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTExM0UwMjgyMzMxODI5MzAwOUMzM0EwIC8qIFBheW1lbnRTZXNz
aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTNFMDI3MjMzMTgyOTMwMDlDMzNBMCAvKiBQYXltZW50U2Vzc2lvbkVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExM0UwMkUyMzMx
QTEzNDAwOUMzM0EwIC8qIEFwcGxlUGF5Q2FuY2VsRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTNFMDJCMjMzMUEwRTQwMDlDMzNBMCAvKiBB
cHBsZVBheUNhbmNlbEV2ZW50LmggKi87IH07CkBAIC0xMzM0MSw2ICsxMzM0Miw4IEBACiAJCUEx
MERCRjQ2MThGOTIzMTcwMDBENzBDNiAvKiBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwREM3NjgxNDc0N0JBQjAwNUUyNDcx
IC8qIFN0eWxlR3JpZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3R5bGVHcmlkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMERD
NzY5MTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdyaWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0eWxlR3JpZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTEwRjdDNzAyNzMxMDA3MzAwOEZBOUFGIC8qIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9kYWxDb250YWluZXJPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMTBGN0M3MTI3MzEwMDczMDA4RkE5QUYgLyogTW9kYWxDb250YWlu
ZXJPYnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RhbENvbnRhaW5lck9ic2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExMERCOUExNEY1REY3NzAwQTAz
QjkzIC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0eWxlR3JpZEl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MTBEQjlDMTRGNURGODcwMEEwM0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUdyaWRJdGVtRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTNFMDI3MjMzMTgyOTMwMDlDMzNBMCAvKiBQYXlt
ZW50U2Vzc2lvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRTZXNzaW9uRXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOTE5LDYgKzIzOTIyLDggQEAKIAkJCQk1
MkUyQ0FGQjE5RkYwMjA3MDAxRUVCNEYgLyogTWVkaWFQcm9kdWNlci5oICovLAogCQkJCTQxM0Uw
MDc3MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmNwcCAqLywKIAkJCQk0MTNFMDA3
ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICovLAorCQkJCUExMEY3QzcxMjcz
MTAwNzMwMDhGQTlBRiAvKiBNb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcCAqLywKKwkJCQlBMTBG
N0M3MDI3MzEwMDczMDA4RkE5QUYgLyogTW9kYWxDb250YWluZXJPYnNlcnZlci5oICovLAogCQkJ
CTkzRUIzNTVFMDlFMzdGRDYwMEY0Mzc5OSAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
LmNwcCAqLywKIAkJCQk5MzVDNDc2MjA5QUM0Q0U2MDBBNkFBQjQgLyogTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oICovLAogCQkJCTZCNTA3QTIzMjM0QkYzNDEwMEJFN0M2MiAvKiBOYXZp
Z2F0b3IrSXNMb2dnZWRJbi5pZGwgKi8sCkBAIC0zNjA0NCw2ICszNjA0OSw3IEBACiAJCQkJQ0RG
MkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTcxNTYxMEMyMzRDMUNBMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUExMEY3QzczMjcz
MTAwRDAwMDhGQTlBRiAvKiBNb2RhbENvbnRhaW5lck9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNCQUIgLyogTW9kZWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxM0U3OUVBMjczQzg2QjgwMDk3RjkwNSAvKiBNb2RlbERvY3VtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzJCNDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYjRhMDNiNmUwNGE1YmM2NzU2
NGRmMTVmYjZlNjMzMDcwYTRkMzM1Yy4uYzc5MDBjMWRlYjY2MjIzOTA4Yjc2MmYxYmM3NTU2NDBl
Y2RkMWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAKICNp
bmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTW9kYWxDb250YWluZXJPYnNlcnZl
ci5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRl
ICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCkBAIC05MDc3LDYg
KzkwNzgsMTggQEAgU3RyaW5nIERvY3VtZW50OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCitNb2RhbENvbnRhaW5lck9ic2VydmVy
KiBEb2N1bWVudDo6bW9kYWxDb250YWluZXJPYnNlcnZlcigpCit7CisgICAgaWYgKCFtX21vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIgJiYgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6aXNOZWVkZWRGb3Io
KnRoaXMpKQorICAgICAgICBtX21vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPE1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXI+KCk7CisgICAgcmV0dXJuIG1fbW9kYWxDb250YWluZXJPYnNl
cnZlci5nZXQoKTsKK30KKworTW9kYWxDb250YWluZXJPYnNlcnZlciogRG9jdW1lbnQ6Om1vZGFs
Q29udGFpbmVyT2JzZXJ2ZXJJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbW9kYWxD
b250YWluZXJPYnNlcnZlci5nZXQoKTsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHRzIDw8IGRvY3Vt
ZW50LmRlYnVnRGVzY3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjg1ZGQ2OWZi
OTg1YzgyODhjNzJiYzhmZWY1NDA2NjMwNmUyM2ZjZi4uYzhlZmZmYWZhYWI3OWI1NDg4YWM4NGNl
MmE5YmQ5ZjYyZDgyMGExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE4Myw2ICsxODMsNyBA
QCBjbGFzcyBNZWRpYVByb2R1Y2VyOwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBjbGFzcyBNZWRp
YVF1ZXJ5TWF0Y2hlcjsKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOworY2xhc3Mg
TW9kYWxDb250YWluZXJPYnNlcnZlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHM7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwpAQCAtMTY2Myw2ICsx
NjY0LDkgQEAgcHVibGljOgogCiAgICAgVVJMIGZhbGxiYWNrQmFzZVVSTCgpIGNvbnN0OwogCisg
ICAgTW9kYWxDb250YWluZXJPYnNlcnZlciogbW9kYWxDb250YWluZXJPYnNlcnZlcigpOworICAg
IE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIqIG1vZGFsQ29udGFpbmVyT2JzZXJ2ZXJJZkV4aXN0cygp
IGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25zdHJ1Y3Rpb25GbGFncyB7IFN5bnRo
ZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9IDEgPDwgMSB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmLCBE
b2N1bWVudENsYXNzZXMgPSB7IH0sIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CkBA
IC0yMjQ5LDYgKzIyNTMsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIFJl
ZlB0cjxSVENOZXR3b3JrTWFuYWdlcj4gbV9ydGNOZXR3b3JrTWFuYWdlcjsKICNlbmRpZgorCisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI+IG1fbW9kYWxDb250YWlu
ZXJPYnNlcnZlcjsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50
KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA5OGFhYTkzZWQw
ZjM1NTU2OThiMmQyY2Y3MGIzMTcwYTRhMTZiZGE4Li4yOWQ4N2UyMTBiZDFiMWZmOThjY2NkMzgy
MmQ1NTRiNTI3ODNlYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTYyMyw2
ICs2MjMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENvb2tpZUNvbnNl
bnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDb29raWVDb25zZW50RGVjaXNpb25SZXN1bHQpPiYm
KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIHNlYXJjaFN0cmluZ0Zvck1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBudWxsQXRvbSgpOyB9CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGI1N2YyNjhmYzlhMGVkNTc4MDBjNThhOTlmNjUz
OWUyMTY4ZTE4ZDMuLjU1Y2E4MzM2NGZmZTc5NjJhZTBhY2IyMDlkNDllODgwY2M1NjI0NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJM
ZWdhY3lSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTW9kYWxDb250YWluZXJPYnNlcnZlci5oIgogI2luY2x1
ZGUgIk51bGxHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtMzQzMyw2ICszNDM0LDkgQEAgdm9pZCBGcmFtZVZpZXc6OnBl
cmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
ZnJhbWUoKS5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2Fj
aGUtPnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CisKKyAgICBpZiAoYXV0byogb2JzZXJ2
ZXIgPSBmcmFtZSgpLmRvY3VtZW50KCktPm1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSkKKyAgICAg
ICAgb2JzZXJ2ZXItPnVwZGF0ZU1vZGFsQ29udGFpbmVySWZOZWVkZWQoKnRoaXMpOwogfQogCiBJ
bnRTaXplIEZyYW1lVmlldzo6c2l6ZUZvclJlc2l6ZUV2ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NjIz
MDk5NjUwMDlmY2MyNGE0NjI5NmU4ZGUzMGQ4ZDg5NmU4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCkBAIC0wLDAgKzEs
MTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgTW9k
YWxDb250YWluZXJPYnNlcnZlcjo6aXNOZWVkZWRGb3IoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQoreworICAgIFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGRvY3VtZW50LmxvYWRlcigpOworCisg
ICAgaWYgKCFkb2N1bWVudExvYWRlciB8fCBkb2N1bWVudExvYWRlci0+bW9kYWxDb250YWluZXJP
YnNlcnZhdGlvblBvbGljeSgpID09IE1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3k6OkRp
c2FibGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRvY3VtZW50LnVybCgp
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKCFkb2N1bWVudC5pc1RvcERvY3VtZW50KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQg
dG8gcHJvcGVybHkgc3VwcG9ydCBzdWJmcmFtZXMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoZG9jdW1lbnQuaW5EZXNpZ25Nb2RlKCkgfHwgIWlzPEhUTUxEb2N1bWVu
dD4oZG9jdW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHIgZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8gcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlIHx8IHBh
Z2UtPmlzRWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK01vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIo
KSA9IGRlZmF1bHQ7CitNb2RhbENvbnRhaW5lck9ic2VydmVyOjp+TW9kYWxDb250YWluZXJPYnNl
cnZlcigpID0gZGVmYXVsdDsKKwordm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVN
b2RhbENvbnRhaW5lcklmTmVlZGVkKEZyYW1lVmlldyYgdmlldykKK3sKKyAgICBpZiAobV9jb250
YWluZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdmlldy5oYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBwYWdlID0gdmll
dy5mcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8mIHNlYXJjaFRlcm0gPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zZWFyY2hTdHJpbmdG
b3JNb2RhbENvbnRhaW5lck9ic2VydmVyKCk7CisgICAgaWYgKHNlYXJjaFRlcm0uaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgb2JqZWN0IDogKnZpZXcudmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdHMoKSkgeworICAgICAgICBSZWZQdHIgZWxlbWVudCA9IG9iamVj
dC5lbGVtZW50KCk7CisgICAgICAgIGlmICghZWxlbWVudCB8fCBpczxIVE1MQm9keUVsZW1lbnQ+
KCplbGVtZW50KSB8fCBlbGVtZW50LT5pc0RvY3VtZW50Tm9kZSgpIHx8ICFtX2VsZW1lbnRzVG9J
Z25vcmVXaGVuU2VhcmNoaW5nLmFkZCgqZWxlbWVudCkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGZvciAoYXV0byYgdGV4dE5vZGUgOiBkZXNjZW5kYW50c09m
VHlwZTxUZXh0PigqZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmICghbWF0Y2hlc1NlYXJjaFRl
cm0odGV4dE5vZGUsIHNlYXJjaFRlcm0pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICBtX2NvbnRhaW5lciA9IGVsZW1lbnQuZ2V0KCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6
bWF0Y2hlc1NlYXJjaFRlcm0oY29uc3QgVGV4dCYgdGV4dE5vZGUsIGNvbnN0IEF0b21TdHJpbmcm
IHNlYXJjaFRlcm0pIGNvbnN0Cit7CisgICAgUmVmUHRyIHBhcmVudCA9IHRleHROb2RlLnBhcmVu
dEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpOworICAgIGJvb2wgc2hvdWxkU2VhcmNoTm9kZSA9IChb
Jl0geworICAgICAgICBpZiAoIXRleHROb2RlLnJlbmRlcmVyKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCFpczxIVE1MRWxlbWVudD4ocGFyZW50LmdldCgpKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gcGFyZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6YVRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
ZGl2VGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwVGFnKSB8fCBwYXJlbnQt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzcGFuVGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpzZWN0aW9uVGFnKTsKKyAgICB9KSgpOworCisgICAgaWYgKCFzaG91bGRTZWFyY2hO
b2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoTElLRUxZKCF0ZXh0Tm9kZS5k
YXRhKCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShzZWFyY2hUZXJtKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1vZGFsQ29udGFpbmVy
T2JzZXJ2ZXI6OnNob3VsZEhpZGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICByZXR1
cm4gJmVsZW1lbnQgPT0gbV9jb250YWluZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzgwOTU3MmUwZTY4ZWM1OTkzNjI4ZjU3NjhhMWM4YmM4YTBmNGQ1YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5oCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlN0eWxl
VXBkYXRlLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxFbGVtZW50
OworY2xhc3MgRnJhbWVWaWV3OworCitjbGFzcyBNb2RhbENvbnRhaW5lck9ic2VydmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc05l
ZWRlZEZvcihjb25zdCBEb2N1bWVudCYpOworCisgICAgTW9kYWxDb250YWluZXJPYnNlcnZlcigp
OworICAgIH5Nb2RhbENvbnRhaW5lck9ic2VydmVyKCk7CisKKyAgICBib29sIHNob3VsZEhpZGUo
Y29uc3QgRWxlbWVudCYpOworICAgIHZvaWQgdXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZChG
cmFtZVZpZXcmKTsKKworcHJpdmF0ZToKKyAgICBib29sIG1hdGNoZXNTZWFyY2hUZXJtKGNvbnN0
IFRleHQmIHRleHROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBzZWFyY2hUZXJtKSBjb25zdDsKKwor
ICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+IG1fZWxlbWVudHNUb0lnbm9yZVdoZW5TZWFyY2hpbmc7
CisgICAgV2Vha1B0cjxFbGVtZW50PiBtX2NvbnRhaW5lcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggM2UyZDQ3NWY4YzIwZjg4ZWVkNWYx
ZTljMTRmOGVlMmZlZTViZjA4Mi4uMDM0MWE3MjlhNGJhNDllZDE5ZWRmYTQ0YzIyNzAyOGQ3NDM3
YzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTE1NjksNCArMTU2OSwxMyBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdENvb2tpZUNvbnNlbnQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpDb29raQogICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdENvb2tpZUNvbnNlbnQoKSwgV1RGTW92ZShjb21wbGV0
aW9uKSk7CiB9CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktp
dEFkZGl0aW9ucy9XZWJDaHJvbWVDbGllbnRBZGRpdGlvbnMuY3BwPgorI2Vsc2UKK2NvbnN0IEF0
b21TdHJpbmcmIFdlYkNocm9tZUNsaWVudDo6c2VhcmNoU3RyaW5nRm9yTW9kYWxDb250YWluZXJP
YnNlcnZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxBdG9tKCk7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggOGI4ZmI0MTNkMGY1
OTUzYjVhMTlmMDY4YjQzY2ZmZTAwM2RlYWQwYy4uYWYxNDQ4N2FkM2Y2YjliNjdjNDEwYjRiYjc4
ODhhZGNjYWU1ZGIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDY2LDYgKzQ2Niw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlcXVlc3RDb29raWVDb25zZW50KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6Q29va2llQ29uc2VudERlY2lzaW9uUmVzdWx0KT4mJikgZmluYWw7CiAK
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBzZWFyY2hTdHJpbmdGb3JNb2RhbENvbnRhaW5lck9ic2Vy
dmVyKCkgY29uc3QgZmluYWw7CisKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNo
ZWRNYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447387</attachid>
            <date>2021-12-16 12:56:14 -0800</date>
            <delta_ts>2021-12-17 16:34:04 -0800</delta_ts>
            <desc>Remove unneeded #include</desc>
            <filename>bug-234214-20211216125613.patch</filename>
            <type>text/plain</type>
            <size>20218</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0MWFhYTM0YjNkYzQx
NzJlNmMyMTNmODllZTg0YWQ1ZTQxOTlkNS4uMmVkNTZlYTNjZWQ1N2VlZjYxN2UxNGZiZGUyMDZk
MjExYjQ4ZTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTEyLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBkZXRlY3RpbmcgbW9kYWwgY29udGFpbmVycyB0aGF0IGNvbnRhaW4gYSBnaXZlbiBzZWFy
Y2ggdGVybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW50cm9kdWNlIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgKGEgaGVscGVyIGNsYXNzIHRoYXQgc2Vh
cmNoZXMgZm9yIGEgc3Vic3RyaW5nIHZlbmRlZCBieSB0aGUgY2xpZW50IGxheWVyIGluCisgICAg
ICAgIHRleHQgaW5zaWRlIHZpZXdwb3J0LWNvbnN0cmFpbmVkIHJlbmRlcmVycykuIElmIGZvdW5k
LCB3ZSBrZWVwIHRyYWNrIG9mIHRoZSB2aWV3cG9ydC1jb25zdHJhaW5lZCBjb250YWluZXIgd2l0
aAorICAgICAgICB0aGUgbWF0Y2hpbmcgdGV4dCBmb3IgdXNlIGluIGZ1dHVyZSBwYXRjaGVzLgor
CisgICAgICAgIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQuCisKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojptb2RhbENvbnRhaW5lck9ic2VydmVyKToKKworICAgICAgICBSZXR1cm5zIHRoZSBkb2N1
bWVudCdzIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIsIGNyZWF0aW5nIGl0IG9ubHkgaWYgbmVlZGVk
IChwZXIgdGhlIG1vZGFsIGNvbnRhaW5lciBvYnNlcnZhdGlvbgorICAgICAgICBwb2xpY3kgdmVu
ZGVkIGJ5IHRoZSBjbGllbnQpLgorCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bW9kYWxD
b250YWluZXJPYnNlcnZlcklmRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpzZWFyY2hTdHJpbmdGb3JNb2RhbENvbnRhaW5lck9ic2VydmVyIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MpOgorCisgICAgICAgIEFkZCBhIGhvb2sgdG8gY3Jl
YXRlIGFuZCBjYWxsIGludG8gTW9kYWxDb250YWluZXJPYnNlcnZlciB0byBzZWFyY2ggZm9yIGEg
bW9kYWwgY29udGFpbmVyIChpZiBuZWNlc3NhcnkpLgorCisgICAgICAgICogcGFnZS9Nb2RhbENv
bnRhaW5lck9ic2VydmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRh
aW5lck9ic2VydmVyOjppc05lZWRlZEZvcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhv
ZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzICJtb2RhbCBjb250YWluZXIgb2JzZXJ2ZXIiIHNo
b3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIGZvciB0aGUKKyAgICAgICAgY3VycmVudCBkb2N1bWVu
dC4KKworICAgICAgICAoV2ViQ29yZTo6bWF0Y2hlc1NlYXJjaFRlcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6TW9kYWxDb250YWluZXJPYnNlcnZlcjo6dXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRl
ZCk6CisKKyAgICAgICAgSXRlcmF0ZXMgdGhyb3VnaCBhbGwgdmlld3BvcnQtY29uc3RyYWluZWQg
cmVuZGVyIG9iamVjdHMgaW4gdGhlIEZyYW1lVmlldywgaW4gc2VhcmNoIG9mIG9uZSB0aGF0IG1h
dGNoZXMgdGhlCisgICAgICAgIHNlYXJjaCB0ZXJtIGdpdmVuIGJ5IHRoZSBjbGllbnQuIFRoaXMg
Y3VycmVudGx5IGVuc3VyZXMgdGhhdCB3ZSBvbmx5IHNlYXJjaCBhbnkgdmlld3BvcnQtY29uc3Ry
YWluZWQgZWxlbWVudCBhdAorICAgICAgICBtb3N0IG9uY2UgYnkgbWFpbnRhaW5pbmcgYSB3ZWFr
IGBtX2VsZW1lbnRzVG9JZ25vcmVXaGVuU2VhcmNoaW5nYCBzZXQsIGJ1dCB3ZSBtYXkgbmVlZCBh
IG1lY2hhbmlzbSBpbiB0aGUgZnV0dXJlCisgICAgICAgIHRvIHJlbW92ZSBlbGVtZW50cyBmcm9t
IHRoaXMgc2V0IHVwb24gY2hhbmdpbmcgdGV4dCBjb250ZW50LgorCisgICAgICAgICogcGFnZS9N
b2RhbENvbnRhaW5lck9ic2VydmVyLmg6IEFkZGVkLgorCiAyMDIxLTEyLTEyICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBQaXBlIENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBpbnRvIEdyYWRpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlZmQ0MGRhYTljMzUzYzJjNTQ5MDdmOTg3
ZmFjMjdhN2MyYTllYmUuLmM3OGU0NGNmYmRkMjQwZDdlMGMwMjFhZThmNDEzNTZkZmVlYjhiMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMTYgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRldGVjdGlu
ZyBtb2RhbCBjb250YWluZXJzIHRoYXQgY29udGFpbiBhIGdpdmVuIHNlYXJjaCB0ZXJtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQyMTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBXZWJLaXRB
ZGRpdGlvbnMgaG9vayB0aGF0IGltcGxlbWVudHMgYSBuZXcgY2hyb21lIGNsaWVudCBtZXRob2Qu
IFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNlYXJjaFN0cmluZ0Zvck1vZGFsQ29udGFpbmVyT2JzZXJ2
ZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisKIDIwMjEtMTItMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW9tZW50dW0gRXZlbnQgRGlzcGF0Y2hlcjogVGFpbCBmcmFtZXMg
YXJlIHRoZSB3cm9uZyB2ZWxvY2l0eSBpZiBtb21lbnR1bSBldmVudCBkaXNwYXRjaCByYXRlIGRv
ZXNuJ3QgbWF0Y2ggc2NyZWVuIHJlZnJlc2ggcmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNzEwZjYx
MTMyZDg2NGRjMjljMWU3YTQxY2Q0NGUzMzQ2MGRlNmU5Li42ZDFjN2ZjMzk1OGQ5ZDAwZGVkYWI0
Y2ZhZTJiNjhmZTY4Mzk3MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTczOSw2ICsxNzM5LDcgQEAg
cGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcAogcGFnZS9Mb2NhdGlvbi5jcHAKIHBh
Z2UvTG9nZ2VkSW5TdGF0dXMuY3BwCiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwCitwYWdlL01vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuY3BwCiBwYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMu
Y3BwCiBwYWdlL05hdmlnYXRvci5jcHAKIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNzQ0
MmQzZDkwZmZhNWMzMWY3OGIzMDAxOWY1ODIyYjUxYjU0NGMzLi4zNWQ1NWRlMTczZDlhYzUwZWNk
ZjliNzk3ODllMDJkMWE4NmJiMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjY1LDYgKzMyNjUsNyBAQAogCQlBMTBCQjU4
QjE0ODRFM0IzMDBCMkU4N0EgLyogUmVuZGVyU1ZHU2hhcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMEJCNTg5MTQ4NEUzQjMwMEIyRTg3QSAvKiBS
ZW5kZXJTVkdTaGFwZS5oICovOyB9OwogCQlBMTBEQkY0NzE4RjkyMzE3MDAwRDcwQzYgLyogTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTEwREJGNDYxOEY5MjMxNzAwMEQ3MEM2IC8qIExlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBMTBEQzc2QjE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwREM3NjkxNDc0N0JB
QjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBMTBGN0M3MzI3MzEwMEQwMDA4RkE5QUYgLyogTW9kYWxD
b250YWluZXJPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTEwRjdDNzAyNzMxMDA3MzAwOEZBOUFGIC8qIE1vZGFsQ29udGFpbmVyT2JzZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
MTEwREI5QjE0RjVERjc3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRlbURhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTBEQjlBMTRGNURGNzcwMEEw
M0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExMTNFMDI4MjMzMTgyOTMwMDlDMzNBMCAvKiBQYXltZW50
U2Vzc2lvbkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTEzRTAyNzIzMzE4MjkzMDA5QzMzQTAgLyogUGF5bWVudFNlc3Npb25FcnJvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMTNFMDJF
MjMzMUExMzQwMDlDMzNBMCAvKiBBcHBsZVBheUNhbmNlbEV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTEzRTAyQjIzMzFBMEU0MDA5QzMzQTAg
LyogQXBwbGVQYXlDYW5jZWxFdmVudC5oICovOyB9OwpAQCAtMTMzNDEsNiArMTMzNDIsOCBAQAog
CQlBMTBEQkY0NjE4RjkyMzE3MDAwRDcwQzYgLyogTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMERDNzY4MTQ3NDdCQUIwMDVF
MjQ3MSAvKiBTdHlsZUdyaWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0eWxlR3JpZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTBEQzc2OTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUdyaWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExMEY3QzcwMjczMTAwNzMwMDhGQTlBRiAvKiBNb2RhbENvbnRhaW5lck9ic2Vy
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEwRjdDNzEyNzMxMDA3MzAwOEZBOUFGIC8qIE1vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kYWxDb250YWluZXJPYnNl
cnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTBEQjlBMTRGNURGNzcw
MEEwM0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHlsZUdyaWRJdGVtRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTEwREI5QzE0RjVERjg3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRlbURhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVHcmlkSXRlbURhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTEzRTAyNzIzMzE4MjkzMDA5QzMzQTAgLyog
UGF5bWVudFNlc3Npb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXltZW50U2Vzc2lvbkVycm9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzkxOSw2ICsyMzkyMiw4IEBACiAJ
CQkJNTJFMkNBRkIxOUZGMDIwNzAwMUVFQjRGIC8qIE1lZGlhUHJvZHVjZXIuaCAqLywKIAkJCQk0
MTNFMDA3NzFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5jcHAgKi8sCiAJCQkJNDEz
RTAwNzgxREIwRTRERTAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCAqLywKKwkJCQlBMTBGN0M3
MTI3MzEwMDczMDA4RkE5QUYgLyogTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAgKi8sCisJCQkJ
QTEwRjdDNzAyNzMxMDA3MzAwOEZBOUFGIC8qIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaCAqLywK
IAkJCQk5M0VCMzU1RTA5RTM3RkQ2MDBGNDM3OTkgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cy5jcHAgKi8sCiAJCQkJOTM1QzQ3NjIwOUFDNENFNjAwQTZBQUI0IC8qIE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMuaCAqLywKIAkJCQk2QjUwN0EyMzIzNEJGMzQxMDBCRTdDNjIgLyog
TmF2aWdhdG9yK0lzTG9nZ2VkSW4uaWRsICovLApAQCAtMzYwNDQsNiArMzYwNDksNyBAQAogCQkJ
CUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTBGN0M3
MzI3MzEwMEQwMDA4RkE5QUYgLyogTW9kYWxDb250YWluZXJPYnNlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkRDOEQzOTgyNUYyRkU5NzAwQ0ZDQkFCIC8qIE1vZGVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTNFNzlFQTI3M0M4NkI4MDA5N0Y5MDUgLyogTW9kZWxEb2N1bWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMyQjQxMTcyNzMyRjQxRTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGI0YTAzYjZlMDRhNWJj
Njc1NjRkZjE1ZmI2ZTYzMzA3MGE0ZDMzNWMuLmM3OTAwYzFkZWI2NjIyMzkwOGI3NjJmMWJjNzU1
NjQwZWNkZDFhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTQ4LDYgKzE0OCw3IEBA
CiAjaW5jbHVkZSAiTWVkaWFRdWVyeU1hdGNoZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1vZGFsQ29udGFpbmVyT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCiAjaW5j
bHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgpAQCAtOTA3
Nyw2ICs5MDc4LDE4IEBAIFN0cmluZyBEb2N1bWVudDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0
CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorTW9kYWxDb250YWluZXJPYnNl
cnZlciogRG9jdW1lbnQ6Om1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKQoreworICAgIGlmICghbV9t
b2RhbENvbnRhaW5lck9ic2VydmVyICYmIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmlzTmVlZGVk
Rm9yKCp0aGlzKSkKKyAgICAgICAgbV9tb2RhbENvbnRhaW5lck9ic2VydmVyID0gbWFrZVVuaXF1
ZTxNb2RhbENvbnRhaW5lck9ic2VydmVyPigpOworICAgIHJldHVybiBtX21vZGFsQ29udGFpbmVy
T2JzZXJ2ZXIuZ2V0KCk7Cit9CisKK01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIqIERvY3VtZW50Ojpt
b2RhbENvbnRhaW5lck9ic2VydmVySWZFeGlzdHMoKSBjb25zdAoreworICAgIHJldHVybiBtX21v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXIuZ2V0KCk7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICB0cyA8PCBk
b2N1bWVudC5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGI4NWRk
NjlmYjk4NWM4Mjg4YzcyYmM4ZmVmNTQwNjYzMDZlMjNmY2YuLmM4ZWZmZmFmYWFiNzliNTQ4OGFj
ODRjZTJhOWJkOWY2MmQ4MjBhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xODMsNiArMTgz
LDcgQEAgY2xhc3MgTWVkaWFQcm9kdWNlcjsKIGNsYXNzIE1lZGlhUXVlcnlMaXN0OwogY2xhc3Mg
TWVkaWFRdWVyeU1hdGNoZXI7CiBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKK2Ns
YXNzIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzOwogY2xhc3MgTm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKQEAgLTE2NjMs
NiArMTY2NCw5IEBAIHB1YmxpYzoKIAogICAgIFVSTCBmYWxsYmFja0Jhc2VVUkwoKSBjb25zdDsK
IAorICAgIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIqIG1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKTsK
KyAgICBNb2RhbENvbnRhaW5lck9ic2VydmVyKiBtb2RhbENvbnRhaW5lck9ic2VydmVySWZFeGlz
dHMoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBT
eW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAgICBX
RUJDT1JFX0VYUE9SVCBEb2N1bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJM
JiwgRG9jdW1lbnRDbGFzc2VzID0geyB9LCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDAp
OwpAQCAtMjI0OSw2ICsyMjUzLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX1JUQykKICAg
ICBSZWZQdHI8UlRDTmV0d29ya01hbmFnZXI+IG1fcnRjTmV0d29ya01hbmFnZXI7CiAjZW5kaWYK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2RhbENvbnRhaW5lck9ic2VydmVyPiBtX21vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXI7CiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1
bWVudChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggOThhYWE5
M2VkMGYzNTU1Njk4YjJkMmNmNzBiMzE3MGE0YTE2YmRhOC4uMjlkODdlMjEwYmQxYjFmZjk4Y2Nj
ZDM4MjJkNTU0YjUyNzgzZWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC02
MjMsNiArNjIzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDb29raWVD
b25zZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29va2llQ29uc2VudERlY2lzaW9uUmVzdWx0
KT4mJikgPSAwOwogCisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBzZWFyY2hTdHJpbmdG
b3JNb2RhbENvbnRhaW5lck9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4gbnVsbEF0b20oKTsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgPSBkZWZhdWx0OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBiNTdmMjY4ZmM5YTBlZDU3ODAwYzU4YTk5
ZjY1MzllMjE2OGUxOGQzLi41NWNhODMzNjRmZmU3OTYyYWUwYWNiMjA5ZDQ5ZTg4MGNjNTYyNDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVk
ZSAiTGVnYWN5UmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaCIKICNp
bmNsdWRlICJOdWxsR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTM0MzMsNiArMzQzNCw5IEBAIHZvaWQgRnJhbWVWaWV3
OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKCkKIAogICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNo
ZSA9IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAg
IGNhY2hlLT5wZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpOworCisgICAgaWYgKGF1dG8qIG9i
c2VydmVyID0gZnJhbWUoKS5kb2N1bWVudCgpLT5tb2RhbENvbnRhaW5lck9ic2VydmVyKCkpCisg
ICAgICAgIG9ic2VydmVyLT51cGRhdGVNb2RhbENvbnRhaW5lcklmTmVlZGVkKCp0aGlzKTsKIH0K
IAogSW50U2l6ZSBGcmFtZVZpZXc6OnNpemVGb3JSZXNpemVFdmVudCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZjZjMjA4ZGE5NDIwZGRlMDhkZjcwN2E0MTk5NWE2YmUwMWY3MzFkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcApAQCAtMCww
ICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
b2RhbENvbnRhaW5lck9ic2VydmVyLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiVGV4
dC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29s
IE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmlzTmVlZGVkRm9yKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKK3sKKyAgICBSZWZQdHIgZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIoKTsK
KworICAgIGlmICghZG9jdW1lbnRMb2FkZXIgfHwgZG9jdW1lbnRMb2FkZXItPm1vZGFsQ29udGFp
bmVyT2JzZXJ2YXRpb25Qb2xpY3koKSA9PSBNb2RhbENvbnRhaW5lck9ic2VydmF0aW9uUG9saWN5
OjpEaXNhYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkb2N1bWVudC51
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghZG9jdW1lbnQuaXNUb3BEb2N1bWVudCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIHByb3Blcmx5IHN1cHBvcnQgc3ViZnJhbWVzLgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmluRGVzaWduTW9kZSgpIHx8ICFpczxIVE1MRG9j
dW1lbnQ+KGRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhdXRvIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSB8
fCBwYWdlLT5pc0VkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitNb2RhbENvbnRhaW5lck9ic2VydmVyOjpNb2RhbENvbnRhaW5lck9ic2Vy
dmVyKCkgPSBkZWZhdWx0OworTW9kYWxDb250YWluZXJPYnNlcnZlcjo6fk1vZGFsQ29udGFpbmVy
T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKK3N0YXRpYyBib29sIG1hdGNoZXNTZWFyY2hUZXJtKGNv
bnN0IFRleHQmIHRleHROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBzZWFyY2hUZXJtKQoreworICAg
IFJlZlB0ciBwYXJlbnQgPSB0ZXh0Tm9kZS5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKTsK
KyAgICBib29sIHNob3VsZFNlYXJjaE5vZGUgPSAoWyZdIHsKKyAgICAgICAgaWYgKCF0ZXh0Tm9k
ZS5yZW5kZXJlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICgh
aXM8SFRNTEVsZW1lbnQ+KHBhcmVudC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmFUYWcpIHx8
IHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmRpdlRhZykgfHwgcGFyZW50LT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6cFRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3Bh
blRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VjdGlvblRhZyk7CisgICAg
fSkoKTsKKworICAgIGlmICghc2hvdWxkU2VhcmNoTm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKExJS0VMWSghdGV4dE5vZGUuZGF0YSgpLmNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2Uoc2VhcmNoVGVybSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVNb2RhbENvbnRh
aW5lcklmTmVlZGVkKGNvbnN0IEZyYW1lVmlldyYgdmlldykKK3sKKyAgICBpZiAobV9jb250YWlu
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdmlldy5oYXNWaWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBwYWdlID0gdmlldy5m
cmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8mIHNlYXJjaFRlcm0gPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zZWFyY2hTdHJpbmdGb3JN
b2RhbENvbnRhaW5lck9ic2VydmVyKCk7CisgICAgaWYgKHNlYXJjaFRlcm0uaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgb2JqZWN0IDogKnZpZXcudmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHMoKSkgeworICAgICAgICBSZWZQdHIgZWxlbWVudCA9IG9iamVjdC5l
bGVtZW50KCk7CisgICAgICAgIGlmICghZWxlbWVudCB8fCBpczxIVE1MQm9keUVsZW1lbnQ+KCpl
bGVtZW50KSB8fCBlbGVtZW50LT5pc0RvY3VtZW50Tm9kZSgpIHx8ICFtX2VsZW1lbnRzVG9JZ25v
cmVXaGVuU2VhcmNoaW5nLmFkZCgqZWxlbWVudCkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGZvciAoYXV0byYgdGV4dE5vZGUgOiBkZXNjZW5kYW50c09mVHlw
ZTxUZXh0PigqZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmICghbWF0Y2hlc1NlYXJjaFRlcm0o
dGV4dE5vZGUsIHNlYXJjaFRlcm0pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICBtX2NvbnRhaW5lciA9IGVsZW1lbnQuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAyYjBh
MGQyZDg5ZWFkOTk2NzJmM2Q2OGFjYzY4YjM3MjQ5MTJhNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5oCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1l
bnQ7CitjbGFzcyBGcmFtZVZpZXc7CisKK2NsYXNzIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBib29sIGlz
TmVlZGVkRm9yKGNvbnN0IERvY3VtZW50Jik7CisKKyAgICBNb2RhbENvbnRhaW5lck9ic2VydmVy
KCk7CisgICAgfk1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKTsKKworICAgIHZvaWQgdXBkYXRlTW9k
YWxDb250YWluZXJJZk5lZWRlZChjb25zdCBGcmFtZVZpZXcmKTsKKworcHJpdmF0ZToKKyAgICBX
ZWFrSGFzaFNldDxFbGVtZW50PiBtX2VsZW1lbnRzVG9JZ25vcmVXaGVuU2VhcmNoaW5nOworICAg
IFdlYWtQdHI8RWxlbWVudD4gbV9jb250YWluZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDNlMmQ0NzVmOGMyMGY4OGVlZDVmMWU5YzE0
ZjhlZTJmZWU1YmYwODIuLjAzNDFhNzI5YTRiYTQ5ZWQxOWVkZmE0NGMyMjcwMjhkNzQzN2MwNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xNTY5LDQgKzE1NjksMTMgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlcXVlc3RDb29raWVDb25zZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6Q29va2kKICAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlcXVlc3RDb29raWVDb25zZW50KCksIFdURk1vdmUoY29tcGxldGlvbikp
OwogfQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRp
dGlvbnMvV2ViQ2hyb21lQ2xpZW50QWRkaXRpb25zLmNwcD4KKyNlbHNlCitjb25zdCBBdG9tU3Ry
aW5nJiBXZWJDaHJvbWVDbGllbnQ6OnNlYXJjaFN0cmluZ0Zvck1vZGFsQ29udGFpbmVyT2JzZXJ2
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBudWxsQXRvbSgpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDhiOGZiNDEzZDBmNTk1M2I1
YTE5ZjA2OGI0M2NmZmUwMDNkZWFkMGMuLmFmMTQ0ODdhZDNmNmI5YjY3YzQxMGI0YmI3ODg4YWRj
Y2FlNWRiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQ2Niw2ICs0NjYsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCByZXF1ZXN0Q29va2llQ29uc2VudChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OkNvb2tpZUNvbnNlbnREZWNpc2lvblJlc3VsdCk+JiYpIGZpbmFsOwogCisgICAg
Y29uc3QgQXRvbVN0cmluZyYgc2VhcmNoU3RyaW5nRm9yTW9kYWxDb250YWluZXJPYnNlcnZlcigp
IGNvbnN0IGZpbmFsOworCiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9y
aXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFp
bkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447493</attachid>
            <date>2021-12-17 16:34:07 -0800</date>
            <delta_ts>2021-12-17 21:23:21 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-234214-20211217163407.patch</filename>
            <type>text/plain</type>
            <size>20322</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0MWFhYTM0YjNkYzQx
NzJlNmMyMTNmODllZTg0YWQ1ZTQxOTlkNS4uMGU5M2FhM2YzYjU0MTllODU2NmQ0NDY1N2ZiODFm
MmFhNWQ4Zjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTEyLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBkZXRlY3RpbmcgbW9kYWwgY29udGFpbmVycyB0aGF0IGNvbnRhaW4gYSBnaXZlbiBzZWFy
Y2ggdGVybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbiBhbmQgRGV2aW4gUm91c3Nv
LgorCisgICAgICAgIEludHJvZHVjZSBNb2RhbENvbnRhaW5lck9ic2VydmVyIChhIGhlbHBlciBj
bGFzcyB0aGF0IHNlYXJjaGVzIGZvciBhIHN1YnN0cmluZyB2ZW5kZWQgYnkgdGhlIGNsaWVudCBs
YXllciBpbgorICAgICAgICB0ZXh0IGluc2lkZSB2aWV3cG9ydC1jb25zdHJhaW5lZCByZW5kZXJl
cnMpLiBJZiBmb3VuZCwgd2Uga2VlcCB0cmFjayBvZiB0aGUgdmlld3BvcnQtY29uc3RyYWluZWQg
Y29udGFpbmVyIHdpdGgKKyAgICAgICAgdGhlIG1hdGNoaW5nIHRleHQgZm9yIHVzZSBpbiBmdXR1
cmUgcGF0Y2hlcy4KKworICAgICAgICBUaGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IgeWV0
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6bW9kYWxDb250YWluZXJPYnNlcnZlcik6CisKKyAgICAgICAgUmV0
dXJucyB0aGUgZG9jdW1lbnQncyBNb2RhbENvbnRhaW5lck9ic2VydmVyLCBjcmVhdGluZyBpdCBv
bmx5IGlmIG5lZWRlZCAocGVyIHRoZSBtb2RhbCBjb250YWluZXIgb2JzZXJ2YXRpb24KKyAgICAg
ICAgcG9saWN5IHZlbmRlZCBieSB0aGUgY2xpZW50KS4KKworICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6Om1vZGFsQ29udGFpbmVyT2JzZXJ2ZXJJZkV4aXN0cyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2VhcmNoU3RyaW5nRm9yTW9kYWxDb250YWluZXJPYnNl
cnZlciBjb25zdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKToKKworICAgICAgICBBZGQg
YSBob29rIHRvIGNyZWF0ZSBhbmQgY2FsbCBpbnRvIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgdG8g
c2VhcmNoIGZvciBhIG1vZGFsIGNvbnRhaW5lciAoaWYgbmVjZXNzYXJ5KS4KKworICAgICAgICAq
IHBhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9kYWxDb250YWluZXJPYnNlcnZlcjo6aXNOZWVkZWRGb3IpOgorCisgICAgICAgIEFkZCBh
IGhlbHBlciBtZXRob2QgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyAibW9kYWwgY29udGFpbmVy
IG9ic2VydmVyIiBzaG91bGQgYmUgY3JlYXRlZCBhbmQgdXNlZCBmb3IgdGhlCisgICAgICAgIGN1
cnJlbnQgZG9jdW1lbnQuCisKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNTZWFyY2hUZXJtKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OnVwZGF0ZU1vZGFsQ29u
dGFpbmVySWZOZWVkZWQpOgorCisgICAgICAgIEl0ZXJhdGVzIHRocm91Z2ggYWxsIHZpZXdwb3J0
LWNvbnN0cmFpbmVkIHJlbmRlciBvYmplY3RzIGluIHRoZSBGcmFtZVZpZXcsIGluIHNlYXJjaCBv
ZiBvbmUgdGhhdCBtYXRjaGVzIHRoZQorICAgICAgICBzZWFyY2ggdGVybSBnaXZlbiBieSB0aGUg
Y2xpZW50LiBUaGlzIGN1cnJlbnRseSBlbnN1cmVzIHRoYXQgd2Ugb25seSBzZWFyY2ggYW55IHZp
ZXdwb3J0LWNvbnN0cmFpbmVkIGVsZW1lbnQgYXQKKyAgICAgICAgbW9zdCBvbmNlIGJ5IG1haW50
YWluaW5nIGEgd2VhayBgbV9lbGVtZW50c1RvSWdub3JlV2hlblNlYXJjaGluZ2Agc2V0LCBidXQg
d2UgbWF5IG5lZWQgYSBtZWNoYW5pc20gaW4gdGhlIGZ1dHVyZQorICAgICAgICB0byByZW1vdmUg
ZWxlbWVudHMgZnJvbSB0aGlzIHNldCB1cG9uIGNoYW5naW5nIHRleHQgY29udGVudC4KKworICAg
ICAgICAqIHBhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5oOiBBZGRlZC4KKwogMjAyMS0xMi0x
MiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUGlwZSBDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgaW50byBHcmFkaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZWZkNDBkYWE5YzM1
M2MyYzU0OTA3Zjk4N2ZhYzI3YTdjMmE5ZWJlLi5kYWY3MTMwYmIzYmQyM2ZlOTdmMTdiNjkzMTMz
ZmExZTE4OWRiODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBkZXRlY3RpbmcgbW9kYWwgY29udGFpbmVycyB0aGF0IGNvbnRhaW4gYSBnaXZlbiBzZWFy
Y2ggdGVybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbiBhbmQgRGV2aW4gUm91c3Nv
LgorCisgICAgICAgIEFkZCBhIFdlYktpdEFkZGl0aW9ucyBob29rIHRoYXQgaW1wbGVtZW50cyBh
IG5ldyBjaHJvbWUgY2xpZW50IG1ldGhvZC4gU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2VhcmNoU3Ry
aW5nRm9yTW9kYWxDb250YWluZXJPYnNlcnZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwogMjAyMS0xMi0xMSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb21lbnR1bSBFdmVu
dCBEaXNwYXRjaGVyOiBUYWlsIGZyYW1lcyBhcmUgdGhlIHdyb25nIHZlbG9jaXR5IGlmIG1vbWVu
dHVtIGV2ZW50IGRpc3BhdGNoIHJhdGUgZG9lc24ndCBtYXRjaCBzY3JlZW4gcmVmcmVzaCByYXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDI3MTBmNjExMzJkODY0ZGMyOWMxZTdhNDFjZDQ0ZTMzNDYwZGU2
ZTkuLjZkMWM3ZmMzOTU4ZDlkMDBkZWRhYjRjZmFlMmI2OGZlNjgzOTcyMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNzM5LDYgKzE3MzksNyBAQCBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnku
Y3BwCiBwYWdlL0xvY2F0aW9uLmNwcAogcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAKIHBhZ2UvTWVt
b3J5UmVsZWFzZS5jcHAKK3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAKIHBhZ2UvTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAKIHBhZ2UvTmF2aWdhdG9yLmNwcAogcGFnZS9O
YXZpZ2F0b3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NDQyZDNkOTBmZmE1YzMxZjc4YjMwMDE5ZjU4MjJiNTFi
NTQ0YzMuLjM1ZDU1ZGUxNzNkOWFjNTBlY2RmOWI3OTc4OWUwMmQxYTg2YmIyNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMy
NjUsNiArMzI2NSw3IEBACiAJCUExMEJCNThCMTQ4NEUzQjMwMEIyRTg3QSAvKiBSZW5kZXJTVkdT
aGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEw
QkI1ODkxNDg0RTNCMzAwQjJFODdBIC8qIFJlbmRlclNWR1NoYXBlLmggKi87IH07CiAJCUExMERC
RjQ3MThGOTIzMTcwMDBENzBDNiAvKiBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBEQkY0NjE4RjkyMzE3
MDAwRDcwQzYgLyogTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMERDNzZCMTQ3NDdCQUIwMDVFMjQ3
MSAvKiBTdHlsZUdyaWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTBEQzc2OTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExMEY3Qzcz
MjczMTAwRDAwMDhGQTlBRiAvKiBNb2RhbENvbnRhaW5lck9ic2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBGN0M3MDI3MzEwMDczMDA4RkE5
QUYgLyogTW9kYWxDb250YWluZXJPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMTBEQjlCMTRGNURGNzcwMEEwM0I5MyAvKiBTdHls
ZUdyaWRJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTExMERCOUExNEY1REY3NzAwQTAzQjkzIC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExM0UwMjgy
MzMxODI5MzAwOUMzM0EwIC8qIFBheW1lbnRTZXNzaW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTNFMDI3MjMzMTgyOTMwMDlDMzNBMCAv
KiBQYXltZW50U2Vzc2lvbkVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTExM0UwMkUyMzMxQTEzNDAwOUMzM0EwIC8qIEFwcGxlUGF5Q2Fu
Y2VsRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTNFMDJCMjMzMUEwRTQwMDlDMzNBMCAvKiBBcHBsZVBheUNhbmNlbEV2ZW50LmggKi87IH07
CkBAIC0xMzM0MSw2ICsxMzM0Miw4IEBACiAJCUExMERCRjQ2MThGOTIzMTcwMDBENzBDNiAvKiBM
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTEwREM3NjgxNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVHcmlkRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMERDNzY5MTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHls
ZUdyaWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlR3JpZERh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEwRjdDNzAyNzMxMDA3MzAwOEZB
OUFGIC8qIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kYWxDb250
YWluZXJPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTBGN0M3MTI3
MzEwMDczMDA4RkE5QUYgLyogTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExMERCOUExNEY1REY3NzAwQTAzQjkzIC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlR3JpZEl0ZW1EYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTBEQjlDMTRGNURGODcwMEEwM0I5MyAvKiBT
dHlsZUdyaWRJdGVtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHlsZUdyaWRJdGVtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MTNFMDI3MjMzMTgyOTMwMDlDMzNBMCAvKiBQYXltZW50U2Vzc2lvbkVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBheW1lbnRTZXNzaW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIzOTE5LDYgKzIzOTIyLDggQEAKIAkJCQk1MkUyQ0FGQjE5RkYwMjA3MDAxRUVCNEYgLyog
TWVkaWFQcm9kdWNlci5oICovLAogCQkJCTQxM0UwMDc3MURCMEU0REUwMDIzNDFEMiAvKiBNZW1v
cnlSZWxlYXNlLmNwcCAqLywKIAkJCQk0MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5
UmVsZWFzZS5oICovLAorCQkJCUExMEY3QzcxMjczMTAwNzMwMDhGQTlBRiAvKiBNb2RhbENvbnRh
aW5lck9ic2VydmVyLmNwcCAqLywKKwkJCQlBMTBGN0M3MDI3MzEwMDczMDA4RkE5QUYgLyogTW9k
YWxDb250YWluZXJPYnNlcnZlci5oICovLAogCQkJCTkzRUIzNTVFMDlFMzdGRDYwMEY0Mzc5OSAv
KiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCAqLywKIAkJCQk5MzVDNDc2MjA5QUM0
Q0U2MDBBNkFBQjQgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oICovLAogCQkJCTZC
NTA3QTIzMjM0QkYzNDEwMEJFN0M2MiAvKiBOYXZpZ2F0b3IrSXNMb2dnZWRJbi5pZGwgKi8sCkBA
IC0zNjA0NCw2ICszNjA0OSw3IEBACiAJCQkJQ0RGMkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxOTE4MjA1
NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcxNTYxMEMy
MzRDMUNBMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCUExMEY3QzczMjczMTAwRDAwMDhGQTlBRiAvKiBNb2RhbENvbnRh
aW5lck9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNC
QUIgLyogTW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxM0U3OUVBMjczQzg2QjgwMDk3Rjkw
NSAvKiBNb2RlbERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzJCNDExNzI3MzJGNDFF
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggYjRhMDNiNmUwNGE1YmM2NzU2NGRmMTVmYjZlNjMzMDcwYTRkMzM1Yy4uYzc5
MDBjMWRlYjY2MjIzOTA4Yjc2MmYxYmM3NTU2NDBlY2RkMWFlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisj
aW5jbHVkZSAiTW9kYWxDb250YWluZXJPYnNlcnZlci5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVk
ZSAiTmFtZU5vZGVMaXN0LmgiCkBAIC05MDc3LDYgKzkwNzgsMTggQEAgU3RyaW5nIERvY3VtZW50
OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwogfQogCitNb2RhbENvbnRhaW5lck9ic2VydmVyKiBEb2N1bWVudDo6bW9kYWxDb250YWluZXJP
YnNlcnZlcigpCit7CisgICAgaWYgKCFtX21vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgJiYgTW9kYWxD
b250YWluZXJPYnNlcnZlcjo6aXNOZWVkZWRGb3IoKnRoaXMpKQorICAgICAgICBtX21vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI+KCk7Cisg
ICAgcmV0dXJuIG1fbW9kYWxDb250YWluZXJPYnNlcnZlci5nZXQoKTsKK30KKworTW9kYWxDb250
YWluZXJPYnNlcnZlciogRG9jdW1lbnQ6Om1vZGFsQ29udGFpbmVyT2JzZXJ2ZXJJZkV4aXN0cygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbW9kYWxDb250YWluZXJPYnNlcnZlci5nZXQoKTsKK30K
KwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIHRzIDw8IGRvY3VtZW50LmRlYnVnRGVzY3JpcHRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggYjg1ZGQ2OWZiOTg1YzgyODhjNzJiYzhmZWY1NDA2NjMwNmUy
M2ZjZi4uYzhlZmZmYWZhYWI3OWI1NDg4YWM4NGNlMmE5YmQ5ZjYyZDgyMGExMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTE4Myw2ICsxODMsNyBAQCBjbGFzcyBNZWRpYVByb2R1Y2VyOwogY2xh
c3MgTWVkaWFRdWVyeUxpc3Q7CiBjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKIGNsYXNzIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOworY2xhc3MgTW9kYWxDb250YWluZXJPYnNlcnZlcjsKIGNs
YXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xh
c3MgTm9kZUl0ZXJhdG9yOwpAQCAtMTY2Myw2ICsxNjY0LDkgQEAgcHVibGljOgogCiAgICAgVVJM
IGZhbGxiYWNrQmFzZVVSTCgpIGNvbnN0OwogCisgICAgTW9kYWxDb250YWluZXJPYnNlcnZlciog
bW9kYWxDb250YWluZXJPYnNlcnZlcigpOworICAgIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIqIG1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXJJZkV4aXN0cygpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAg
ZW51bSBDb25zdHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlciA9IDEgPDwgMSB9OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwg
Y29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmLCBEb2N1bWVudENsYXNzZXMgPSB7IH0sIHVuc2ln
bmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CkBAIC0yMjQ5LDYgKzIyNTMsOCBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIFJlZlB0cjxSVENOZXR3b3JrTWFuYWdlcj4gbV9y
dGNOZXR3b3JrTWFuYWdlcjsKICNlbmRpZgorCisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXI+IG1fbW9kYWxDb250YWluZXJPYnNlcnZlcjsKIH07CiAKIEVsZW1lbnQq
IGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAppbmRleCA5OGFhYTkzZWQwZjM1NTU2OThiMmQyY2Y3MGIzMTcwYTRhMTZi
ZGE4Li4yOWQ4N2UyMTBiZDFiMWZmOThjY2NkMzgyMmQ1NTRiNTI3ODNlYzFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTYyMyw2ICs2MjMsOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENvb2tpZUNvbnNlbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChD
b29raWVDb25zZW50RGVjaXNpb25SZXN1bHQpPiYmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21TdHJpbmcmIHNlYXJjaFN0cmluZ0Zvck1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSBjb25z
dCB7IHJldHVybiBudWxsQXRvbSgpOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJv
bWVDbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4
IGI1N2YyNjhmYzlhMGVkNTc4MDBjNThhOTlmNjUzOWUyMTY4ZTE4ZDMuLjU1Y2E4MzM2NGZmZTc5
NjJhZTBhY2IyMDlkNDllODgwY2M1NjI0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJMZWdhY3lSZW5kZXJTVkdSb290LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTW9k
YWxDb250YWluZXJPYnNlcnZlci5oIgogI2luY2x1ZGUgIk51bGxHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMzQzMyw2
ICszNDM0LDkgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogCiAg
ICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZnJhbWUoKS5kb2N1bWVudCgpLT5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUtPnBlcmZvcm1EZWZlcnJlZENhY2hlVXBk
YXRlKCk7CisKKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSBmcmFtZSgpLmRvY3VtZW50KCktPm1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXItPnVwZGF0ZU1vZGFsQ29u
dGFpbmVySWZOZWVkZWQoKnRoaXMpOwogfQogCiBJbnRTaXplIEZyYW1lVmlldzo6c2l6ZUZvclJl
c2l6ZUV2ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxD
b250YWluZXJPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVy
T2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMDQ2MmRkYTMxZGI0M2NmMGVhZTMwZjZiNThhNmQy
ZDczNzkwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaCIKKworI2lu
Y2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckRlc2NlbmRhbnRJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAi
VGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiti
b29sIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmlzTmVlZGVkRm9yKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCkKK3sKKyAgICBSZWZQdHIgZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIo
KTsKKyAgICBpZiAoIWRvY3VtZW50TG9hZGVyIHx8IGRvY3VtZW50TG9hZGVyLT5tb2RhbENvbnRh
aW5lck9ic2VydmF0aW9uUG9saWN5KCkgPT0gTW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGlj
eTo6RGlzYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZG9jdW1lbnQu
dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWRvY3VtZW50LmlzVG9wRG9jdW1lbnQoKSkgeworICAgICAgICAvLyBGSVhNRSAo
MjM0NDQ2KTogTmVlZCB0byBwcm9wZXJseSBzdXBwb3J0IHN1YmZyYW1lcy4KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSB8fCAh
aXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UgfHwgcGFnZS0+aXNFZGl0YWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworTW9kYWxDb250YWluZXJPYnNlcnZlcjo6TW9kYWxDb250
YWluZXJPYnNlcnZlcigpID0gZGVmYXVsdDsKK01vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6On5Nb2Rh
bENvbnRhaW5lck9ic2VydmVyKCkgPSBkZWZhdWx0OworCitzdGF0aWMgYm9vbCBtYXRjaGVzU2Vh
cmNoVGVybShjb25zdCBUZXh0JiB0ZXh0Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgc2VhcmNoVGVy
bSkKK3sKKyAgICBSZWZQdHIgcGFyZW50ID0gdGV4dE5vZGUucGFyZW50RWxlbWVudEluQ29tcG9z
ZWRUcmVlKCk7CisgICAgYm9vbCBzaG91bGRTZWFyY2hOb2RlID0gKFsmXSB7CisgICAgICAgIGlm
ICghaXM8SFRNTEVsZW1lbnQ+KHBhcmVudC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmFUYWcp
IHx8IHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmRpdlRhZykgfHwgcGFyZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6cFRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
c3BhblRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VjdGlvblRhZyk7Cisg
ICAgfSkoKTsKKworICAgIGlmICghc2hvdWxkU2VhcmNoTm9kZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKExJS0VMWSghdGV4dE5vZGUuZGF0YSgpLmNvbnRhaW5zSWdub3JpbmdB
U0NJSUNhc2Uoc2VhcmNoVGVybSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVNb2RhbENv
bnRhaW5lcklmTmVlZGVkKGNvbnN0IEZyYW1lVmlldyYgdmlldykKK3sKKyAgICBpZiAobV9jb250
YWluZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdmlldy5oYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBwYWdlID0gdmll
dy5mcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8mIHNlYXJjaFRlcm0gPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zZWFyY2hTdHJpbmdG
b3JNb2RhbENvbnRhaW5lck9ic2VydmVyKCk7CisgICAgaWYgKHNlYXJjaFRlcm0uaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiAqdmlldy52aWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKSB7CisgICAgICAgIFJlZlB0ciBlbGVtZW50ID0gcmVu
ZGVyZXIuZWxlbWVudCgpOworICAgICAgICBpZiAoIWVsZW1lbnQgfHwgaXM8SFRNTEJvZHlFbGVt
ZW50PigqZWxlbWVudCkgfHwgZWxlbWVudC0+aXNEb2N1bWVudE5vZGUoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmICghbV9lbGVtZW50c1RvSWdub3JlV2hlblNlYXJjaGlu
Zy5hZGQoKmVsZW1lbnQpLmlzTmV3RW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBmb3IgKGF1dG8mIHRleHRSZW5kZXJlciA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJlbmRlclRl
eHQ+KHJlbmRlcmVyKSkgeworICAgICAgICAgICAgaWYgKFJlZlB0ciB0ZXh0Tm9kZSA9IHRleHRS
ZW5kZXJlci50ZXh0Tm9kZSgpOyB0ZXh0Tm9kZSAmJiBtYXRjaGVzU2VhcmNoVGVybSgqdGV4dE5v
ZGUsIHNlYXJjaFRlcm0pKSB7CisgICAgICAgICAgICAgICAgbV9jb250YWluZXIgPSBlbGVtZW50
LmdldCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDJiMGEwZDJkODllYWQ5
OTY3MmYzZDY4YWNjNjhiMzcyNDkxMmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKK2NsYXNz
IEZyYW1lVmlldzsKKworY2xhc3MgTW9kYWxDb250YWluZXJPYnNlcnZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaXNOZWVkZWRGb3Io
Y29uc3QgRG9jdW1lbnQmKTsKKworICAgIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKTsKKyAgICB+
TW9kYWxDb250YWluZXJPYnNlcnZlcigpOworCisgICAgdm9pZCB1cGRhdGVNb2RhbENvbnRhaW5l
cklmTmVlZGVkKGNvbnN0IEZyYW1lVmlldyYpOworCitwcml2YXRlOgorICAgIFdlYWtIYXNoU2V0
PEVsZW1lbnQ+IG1fZWxlbWVudHNUb0lnbm9yZVdoZW5TZWFyY2hpbmc7CisgICAgV2Vha1B0cjxF
bGVtZW50PiBtX2NvbnRhaW5lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKaW5kZXggM2UyZDQ3NWY4YzIwZjg4ZWVkNWYxZTljMTRmOGVlMmZlZTVi
ZjA4Mi4uMDM0MWE3MjlhNGJhNDllZDE5ZWRmYTQ0YzIyNzAyOGQ3NDM3YzA3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKQEAgLTE1NjksNCArMTU2OSwxMyBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6cmVxdWVzdENvb2tpZUNvbnNlbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpD
b29raQogICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVxdWVzdENvb2tpZUNvbnNlbnQoKSwgV1RGTW92ZShjb21wbGV0aW9uKSk7CiB9CiAKKyNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJD
aHJvbWVDbGllbnRBZGRpdGlvbnMuY3BwPgorI2Vsc2UKK2NvbnN0IEF0b21TdHJpbmcmIFdlYkNo
cm9tZUNsaWVudDo6c2VhcmNoU3RyaW5nRm9yTW9kYWxDb250YWluZXJPYnNlcnZlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG51bGxBdG9tKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggOGI4ZmI0MTNkMGY1OTUzYjVhMTlmMDY4YjQz
Y2ZmZTAwM2RlYWQwYy4uYWYxNDQ4N2FkM2Y2YjliNjdjNDEwYjRiYjc4ODhhZGNjYWU1ZGIxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDY2LDYgKzQ2Niw4IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHJlcXVlc3RDb29raWVDb25zZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
Q29va2llQ29uc2VudERlY2lzaW9uUmVzdWx0KT4mJikgZmluYWw7CiAKKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBzZWFyY2hTdHJpbmdGb3JNb2RhbENvbnRhaW5lck9ic2VydmVyKCkgY29uc3QgZmlu
YWw7CisKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Ny
b2xsYmFyIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNW
ZXJ0aWNhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAK
</data>
<flag name="commit-queue"
          id="473153"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>