<?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>144269</bug_id>
          
          <creation_ts>2015-04-27 11:16:17 -0700</creation_ts>
          <short_desc>Add API to disable meta refreshes</short_desc>
          <delta_ts>2015-05-01 11:21:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>144270</dependson>
    
    <dependson>144276</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1089090</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-27 11:16:17 -0700</bug_when>
    <thetext>Add a new NavigationType for client redirects

This will help API clients distinguish these in the policy delegate.

rdar://problem/20333198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090176</commentid>
    <comment_count>1</comment_count>
      <attachid>251993</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-29 15:24:40 -0700</bug_when>
    <thetext>Created attachment 251993
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090177</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-29 15:24:59 -0700</bug_when>
    <thetext>EWS for now. Will mark for review after that&apos;s all green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090227</commentid>
    <comment_count>3</comment_count>
      <attachid>251993</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-29 16:45:01 -0700</bug_when>
    <thetext>Comment on attachment 251993
Patch v1

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

&gt; LayoutTests/fast/loader/redirect-to-invalid-url-using-meta-refresh-calls-policy-delegate-expected.txt:1
&gt; +Policy delegate: attempt to load http://A=a&amp;B=b with navigation type &apos;client redirect&apos;

I don&apos;t understand whether this is supposed to include setting window.location or not. Can we just call this &quot;meta refresh&quot; instead?

&gt; Source/WebCore/dom/Document.cpp:3014
&gt; +                frame-&gt;navigationScheduler().scheduleRedirect(delay, completedURL, NavigationScheduler::RedirectType::Client);

Maybe also &quot;NavigationScheduler::RedirectType::MetaRefresh&quot;?

&gt; Source/WebCore/loader/FrameLoadRequest.h:49
&gt; +        , m_frameLoadTypeIsSet(false)

I think that we use Optional for that now.

&gt; Source/WebCore/loader/FrameLoaderTypes.h:64
&gt; +    ClientRedirect,
&gt; +    ClientRedirectWithLockedBackForwardList,

This one is really suspicious to me. It doesn&apos;t seem orthogonal to the other values!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090453</commentid>
    <comment_count>4</comment_count>
      <attachid>252062</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-30 09:19:12 -0700</bug_when>
    <thetext>Created attachment 252062
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090595</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-30 15:18:25 -0700</bug_when>
    <thetext>We&apos;re going to go a different way with this: Add API to disable meta refreshes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090668</commentid>
    <comment_count>6</comment_count>
      <attachid>252118</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-30 17:14:06 -0700</bug_when>
    <thetext>Created attachment 252118
New approach - v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090671</commentid>
    <comment_count>7</comment_count>
      <attachid>252118</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-30 17:20:27 -0700</bug_when>
    <thetext>Comment on attachment 252118
New approach - v1

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

&gt; LayoutTests/loader/meta-refresh-disabled.html:4
&gt; +    testRunner.overridePreference(&quot;WebKitMetaRefreshEnabled&quot;, &quot;0&quot;);

I think that you need to update WKTR/DRT for this to not break all the tests. Also, this probably doesn&apos;t work on Windows.

&gt; LayoutTests/loader/meta-refresh-disabled.html:15
&gt; +    if (window.testRunner)
&gt; +        setTimeout(&quot;testRunner.notifyDone();&quot;, 100);
&gt; +}
&gt; +&lt;/script&gt;
&gt; +&lt;meta http-equiv=&quot;refresh&quot; content=&quot;0;url=resources/notify-done.html&quot;&gt;    

This feels somewhat flaky... Maybe the meta could go before the script (and then you&apos;d need dumpAsText in the target too)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090720</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-30 21:59:55 -0700</bug_when>
    <thetext>Quite confused about the platform-wide build failures as I build and ran tests fine locally.

Maybe I missed a `git add` or something.

(In reply to comment #7)
&gt; Comment on attachment 252118 [details]
&gt; New approach - v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252118&amp;action=review
&gt; 
&gt; &gt; LayoutTests/loader/meta-refresh-disabled.html:4
&gt; &gt; +    testRunner.overridePreference(&quot;WebKitMetaRefreshEnabled&quot;, &quot;0&quot;);
&gt; 
&gt; I think that you need to update WKTR/DRT for this to not break all the
&gt; tests. 

As mentioned on IRC, tests ran fine locally. I was under the impression DRT/WKTR had some logic to reset all prefs, based on an initial pref snapshot.

I might be wrong and got lucky somehow.

&gt; Also, this probably doesn&apos;t work on Windows.

Yup, Windows definitely needs to skip the new test.

&gt; &gt; LayoutTests/loader/meta-refresh-disabled.html:15
&gt; &gt; +    if (window.testRunner)
&gt; &gt; +        setTimeout(&quot;testRunner.notifyDone();&quot;, 100);
&gt; &gt; +}
&gt; &gt; +&lt;/script&gt;
&gt; &gt; +&lt;meta http-equiv=&quot;refresh&quot; content=&quot;0;url=resources/notify-done.html&quot;&gt;    
&gt; 
&gt; This feels somewhat flaky... Maybe the meta could go before the script (and
&gt; then you&apos;d need dumpAsText in the target too)?

We do already have loader tests - even specifically &lt;meta refresh&gt; ones - that take awhile.

But I know you&apos;re indicating that the arbitrary 100ms delay is flakey. Unfortunately I couldn&apos;t come up with an obviously better way to do this...

I&apos;m not sure why you think putting the &lt;meta&gt; before the &lt;script&gt; would help.

Maybe your understanding is that the &lt;meta refresh&gt; would be synchronous and therefore that would lead to deterministic behavior? Because that&apos;s not the case - this &lt;meta&gt; is on a 0-delay timer that only gets set once the page load is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090721</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-30 22:01:48 -0700</bug_when>
    <thetext>Oh yah, I definitely missed the WebCore::Settings changes. Yikes.

Will update with them tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090724</commentid>
    <comment_count>10</comment_count>
      <attachid>252134</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-30 22:50:52 -0700</bug_when>
    <thetext>Created attachment 252134
New approach v2

Not for review yet - Just want to wake up tomorrow and have EWS tell me the build worked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090727</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-30 23:01:18 -0700</bug_when>
    <thetext>&gt; As mentioned on IRC, tests ran fine locally. I was under the impression
&gt; DRT/WKTR had some logic to reset all prefs, based on an initial pref
&gt; snapshot.

Let&apos;s find where that&apos;s done.

&gt; Maybe your understanding is that the &lt;meta refresh&gt; would be synchronous and
&gt; therefore that would lead to deterministic behavior? Because that&apos;s not the
&gt; case - this &lt;meta&gt; is on a 0-delay timer that only gets set once the page
&gt; load is done.

I didn&apos;t know that the 0-delay timer was set once the page load was done, not when &lt;meta&gt; was parsed. This is strange - is that what the spec requires, or a random WebKit bug? Why would the redirect want to wait until the page is loaded?

If the 0-delay timer started immediately, the test would be obviously racy.

And if it happens after onload, we shouldn&apos;t need a 100 ms delay. The rule of thumb is that all timers in tests should be 0-delay, anything else needs proof of correctness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090783</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-05-01 08:07:06 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; As mentioned on IRC, tests ran fine locally. I was under the impression
&gt; &gt; DRT/WKTR had some logic to reset all prefs, based on an initial pref
&gt; &gt; snapshot.
&gt; 
&gt; Let&apos;s find where that&apos;s done.
&gt; 
&gt; &gt; Maybe your understanding is that the &lt;meta refresh&gt; would be synchronous and
&gt; &gt; therefore that would lead to deterministic behavior? Because that&apos;s not the
&gt; &gt; case - this &lt;meta&gt; is on a 0-delay timer that only gets set once the page
&gt; &gt; load is done.
&gt; 
&gt; I didn&apos;t know that the 0-delay timer was set once the page load was done,
&gt; not when &lt;meta&gt; was parsed. This is strange - is that what the spec
&gt; requires, or a random WebKit bug? Why would the redirect want to wait until
&gt; the page is loaded?
&gt; 
&gt; If the 0-delay timer started immediately, the test would be obviously racy.

I was wrong about it being when the page load is done. But it is set immediately, which - as you say - makes things racy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090785</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-05-01 08:20:38 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; As mentioned on IRC, tests ran fine locally. I was under the impression
&gt; &gt; DRT/WKTR had some logic to reset all prefs, based on an initial pref
&gt; &gt; snapshot.
&gt; 
&gt; Let&apos;s find where that&apos;s done.

This works automatically in WK2 because WKTR calls WKPreferencesResetTestRunnerOverrides between tests. This forces a fresh copy of prefs from the UI process down to the WebProcess before the next test starts.

In WK1, DRT needs to know each individual pref to reset. Doing that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090787</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-05-01 08:29:15 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 252118 [details]
&gt; New approach - v1
&gt; &gt; +    if (window.testRunner)
&gt; &gt; +        setTimeout(&quot;testRunner.notifyDone();&quot;, 100);
&gt; &gt; +}
&gt; &gt; +&lt;/script&gt;
&gt; &gt; +&lt;meta http-equiv=&quot;refresh&quot; content=&quot;0;url=resources/notify-done.html&quot;&gt;    
&gt; 
&gt; This feels somewhat flaky... Maybe the meta could go before the script (and
&gt; then you&apos;d need dumpAsText in the target too)?

Also, another comment on this: The meta is *already* before the script that sets the timeout to do notify done, as that script fires on load, which is well after the meta has processed.  =/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090788</commentid>
    <comment_count>15</comment_count>
      <attachid>252151</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-05-01 08:49:18 -0700</bug_when>
    <thetext>Created attachment 252151
New approach v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090789</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-05-01 08:50:20 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created attachment 252151 [details]
&gt; New approach v3

Re: the test... I&apos;m really not sure what a better way to do this is, but am open to ideas...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090796</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-05-01 09:24:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; &gt; As mentioned on IRC, tests ran fine locally. I was under the impression
&gt; &gt; &gt; DRT/WKTR had some logic to reset all prefs, based on an initial pref
&gt; &gt; &gt; snapshot.
&gt; &gt; 
&gt; &gt; Let&apos;s find where that&apos;s done.
&gt; &gt; 
&gt; &gt; &gt; Maybe your understanding is that the &lt;meta refresh&gt; would be synchronous and
&gt; &gt; &gt; therefore that would lead to deterministic behavior? Because that&apos;s not the
&gt; &gt; &gt; case - this &lt;meta&gt; is on a 0-delay timer that only gets set once the page
&gt; &gt; &gt; load is done.
&gt; &gt; 
&gt; &gt; I didn&apos;t know that the 0-delay timer was set once the page load was done,
&gt; &gt; not when &lt;meta&gt; was parsed. This is strange - is that what the spec
&gt; &gt; requires, or a random WebKit bug? Why would the redirect want to wait until
&gt; &gt; the page is loaded?
&gt; &gt; 
&gt; &gt; If the 0-delay timer started immediately, the test would be obviously racy.
&gt; 
&gt; I was wrong about it being when the page load is done. But it is set
&gt; immediately, which - as you say - makes things racy.

Debugging further...

Actually, no - The redirect is scheduled right away, in that the &quot;ScheduleRedirect&quot; is pushed on the nav scheduler&apos;s list of actions...  but the actual 0-delay timer to trigger it in the future is *NOT* started right away.

It is started when the page finishes loading, but *after* the onload event fires. So the 0-delay for the &quot;notifyDone&quot; takes place before the 0-delay for the redirect itself.

So to make this test be less hacky than using an arbitrary 100ms delay, I could just double-delay the setTimeout (0 delay, then another 0 delay).

But that approach itself is hacky, because it relies on this understanding of how WebKit acts today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090799</commentid>
    <comment_count>18</comment_count>
      <attachid>252153</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-05-01 09:35:20 -0700</bug_when>
    <thetext>Created attachment 252153
Patch v4

This approach is slightly better that waiting an arbitrary 100ms, but it is still somewhat arbitrary and still somewhat hacky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090817</commentid>
    <comment_count>19</comment_count>
      <attachid>252153</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-01 10:21:07 -0700</bug_when>
    <thetext>Comment on attachment 252153
Patch v4

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

&gt; LayoutTests/loader/resources/notify-done.html:3
&gt; +if (window.testRunner)
&gt; +    testRunner.notifyDone();

Maybe add FAIL text here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090820</commentid>
    <comment_count>20</comment_count>
      <attachid>252156</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-05-01 10:33:35 -0700</bug_when>
    <thetext>Created attachment 252156
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090833</commentid>
    <comment_count>21</comment_count>
      <attachid>252156</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-01 11:21:16 -0700</bug_when>
    <thetext>Comment on attachment 252156
Patch for landing

Clearing flags on attachment: 252156

Committed r183682: &lt;http://trac.webkit.org/changeset/183682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090834</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-01 11:21:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251993</attachid>
            <date>2015-04-29 15:24:40 -0700</date>
            <delta_ts>2015-04-30 09:19:12 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>44884</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTU5Yjg3Li5iZmMyOTk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMDQt
MjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG5l
dyBOYXZpZ2F0aW9uVHlwZSBmb3IgY2xpZW50IHJlZGlyZWN0cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9sb2FkZXIvcmVkaXJlY3QtdG8t
aW52YWxpZC11cmwtdXNpbmctbWV0YS1yZWZyZXNoLWNhbGxzLXBvbGljeS1kZWxlZ2F0ZS1leHBl
Y3RlZC50eHQ6IFVwZGF0ZSBmb3IgdGhlIG5ldyAiY2xpZW50IHJlZGlyZWN0IiBjYXNlLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtY2xpZW50LXJlZGlyZWN0LWZh
c3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcG9saWN5
LWRlbGVnYXRlLWNsaWVudC1yZWRpcmVjdC1mYXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtY2xpZW50LXJlZGlyZWN0LXNsb3ctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcG9saWN5LWRlbGVnYXRl
LWNsaWVudC1yZWRpcmVjdC1zbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgV2Ug
ZG9uJ3QgbmVlZCB0byBzdXBwb3J0IHRoZSBuZXcgRnJhbWVMb2FkVHlwZXMgb24gV2luZG93cyBy
aWdodCBub3c6CisgICAgICAgICogcGxhdGZvcm0vd2luL2Zhc3QvbG9hZGVyL3JlZGlyZWN0LXRv
LWludmFsaWQtdXJsLXVzaW5nLW1ldGEtcmVmcmVzaC1jYWxscy1wb2xpY3ktZGVsZWdhdGUtZXhw
ZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZWRpcmVjdC10
by1pbnZhbGlkLXVybC11c2luZy1tZXRhLXJlZnJlc2gtY2FsbHMtcG9saWN5LWRlbGVnYXRlLWV4
cGVjdGVkLnR4dC4KKwogMjAxNS0wNC0yNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICByZGFyOi8vcHJvYmxlbS8xNjY3ODM5MiBQYWdlIHZpc2liaWxpdHkg
dGVzdHMgYXJlIGJyb2tlbiBpbiBZb3NlbWl0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvcmVkaXJlY3QtdG8taW52YWxpZC11cmwtdXNpbmctbWV0YS1yZWZyZXNoLWNhbGxz
LXBvbGljeS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9y
ZWRpcmVjdC10by1pbnZhbGlkLXVybC11c2luZy1tZXRhLXJlZnJlc2gtY2FsbHMtcG9saWN5LWRl
bGVnYXRlLWV4cGVjdGVkLnR4dAppbmRleCBlYWE1YTBmLi4wNTk3ZGI2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZWRpcmVjdC10by1pbnZhbGlkLXVybC11c2luZy1tZXRh
LXJlZnJlc2gtY2FsbHMtcG9saWN5LWRlbGVnYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9yZWRpcmVjdC10by1pbnZhbGlkLXVybC11c2luZy1tZXRhLXJlZnJl
c2gtY2FsbHMtcG9saWN5LWRlbGVnYXRlLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVBv
bGljeSBkZWxlZ2F0ZTogYXR0ZW1wdCB0byBsb2FkIGh0dHA6Ly9BPWEmQj1iIHdpdGggbmF2aWdh
dGlvbiB0eXBlICdvdGhlcicKK1BvbGljeSBkZWxlZ2F0ZTogYXR0ZW1wdCB0byBsb2FkIGh0dHA6
Ly9BPWEmQj1iIHdpdGggbmF2aWdhdGlvbiB0eXBlICdjbGllbnQgcmVkaXJlY3QnCiBUZXN0cyB0
aGF0IHdlIGRvIG5vdCByZWRpcmVjdCB0byBhbiBpbnZhbGlkIFVSTCBpbml0aWF0ZWQgYnkgPG1l
dGEgaHR0cC1lcXVpdj0icmVmcmVzaCI+LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgYW4g
ZW50cnkgaW4gdGhlIGR1bXBlZCBmcmFtZSBsb2FkIGNhbGxiYWNrcyBvZiB0aGUgZm9ybTogIndp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovL0E9YSZCPWIiIGZvbGxvd2VkIGJ5
ICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lIi4KIAogTm90ZSwgdGhpcyB0ZXN0IG11
c3QgYmUgcnVuIGluIER1bXBSZW5kZXJUcmVlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jbGllbnQtcmVkaXJlY3QtZmFzdC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcG9saWN5LWRlbGVnYXRlLWNsaWVu
dC1yZWRpcmVjdC1mYXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40NTRjZDMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jbGllbnQtcmVkaXJlY3QtZmFzdC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyIEBACitQb2xpY3kgZGVsZWdhdGU6IGF0dGVtcHQgdG8gbG9hZCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwgd2l0aCBuYXZpZ2F0aW9u
IHR5cGUgJ2NsaWVudCByZWRpcmVjdCcKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jbGllbnQtcmVkaXJlY3QtZmFzdC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jbGllbnQtcmVkaXJlY3Qt
ZmFzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YzVhYTAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcG9saWN5LWRlbGVn
YXRlLWNsaWVudC1yZWRpcmVjdC1mYXN0Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGhlYWQ+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5zZXRDdXN0
b21Qb2xpY3lEZWxlZ2F0ZSh0cnVlLCB0cnVlKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKzwvc2NyaXB0PgorPG1ldGEg
aHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPWh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9yZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbCI+Cis8L2hlYWQ+Cis8IS0tVGhpcyB0ZXN0IG1h
a2VzIHN1cmUgdGhhdCBhIHF1aWNrIGNsaWVudCByZWRpcmVjdCByZXBvcnRzIHRoZSBjb3JyZWN0
IGxvYWQgdHlwZSB0byB0aGUgcG9saWN5IGRlbGVnYXRlLiBJdCBjYW4gb25seSBiZSBydW4gYXMg
cGFydCBvZiB0aGUgV2ViS2l0IHJlZ3Jlc3Npb24gdGVzdHMtLT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtY2xpZW50LXJlZGlyZWN0LXNs
b3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxl
Z2F0ZS1jbGllbnQtcmVkaXJlY3Qtc2xvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDU0Y2QzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtY2xpZW50LXJlZGlyZWN0LXNsb3ctZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorUG9saWN5IGRlbGVnYXRlOiBhdHRlbXB0IHRvIGxv
YWQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sIHdpdGgg
bmF2aWdhdGlvbiB0eXBlICdjbGllbnQgcmVkaXJlY3QnCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtY2xpZW50LXJlZGlyZWN0LXNsb3cu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtY2xpZW50
LXJlZGlyZWN0LXNsb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
ODVmMGIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Bv
bGljeS1kZWxlZ2F0ZS1jbGllbnQtcmVkaXJlY3Qtc2xvdy5odG1sCkBAIC0wLDAgKzEsMTEgQEAK
KzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUodHJ1ZSwgdHJ1ZSk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9Cis8L3Njcmlw
dD4KKzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjI7IHVybD1odHRwOi8vMTI3
LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwiPgorPC9oZWFkPgorPCEtLVRo
aXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSBzbG93IGNsaWVudCByZWRpcmVjdCByZXBvcnRzIHRo
ZSBjb3JyZWN0IGxvYWQgdHlwZSB0byB0aGUgcG9saWN5IGRlbGVnYXRlLiBJdCBjYW4gb25seSBi
ZSBydW4gYXMgcGFydCBvZiB0aGUgV2ViS2l0IHJlZ3Jlc3Npb24gdGVzdHMtLT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2xvYWRlci9yZWRpcmVjdC10by1pbnZh
bGlkLXVybC11c2luZy1tZXRhLXJlZnJlc2gtY2FsbHMtcG9saWN5LWRlbGVnYXRlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2xvYWRlci9yZWRpcmVjdC10by1p
bnZhbGlkLXVybC11c2luZy1tZXRhLXJlZnJlc2gtY2FsbHMtcG9saWN5LWRlbGVnYXRlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWE1YTBmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvbG9hZGVyL3JlZGly
ZWN0LXRvLWludmFsaWQtdXJsLXVzaW5nLW1ldGEtcmVmcmVzaC1jYWxscy1wb2xpY3ktZGVsZWdh
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorUG9saWN5IGRlbGVnYXRlOiBhdHRlbXB0
IHRvIGxvYWQgaHR0cDovL0E9YSZCPWIgd2l0aCBuYXZpZ2F0aW9uIHR5cGUgJ290aGVyJworVGVz
dHMgdGhhdCB3ZSBkbyBub3QgcmVkaXJlY3QgdG8gYW4gaW52YWxpZCBVUkwgaW5pdGlhdGVkIGJ5
IDxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giPi4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2Vl
IGFuIGVudHJ5IGluIHRoZSBkdW1wZWQgZnJhbWUgbG9hZCBjYWxsYmFja3Mgb2YgdGhlIGZvcm06
ICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly9BPWEmQj1iIiBmb2xsb3dl
ZCBieSAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSIuCisKK05vdGUsIHRoaXMgdGVz
dCBtdXN0IGJlIHJ1biBpbiBEdW1wUmVuZGVyVHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYWFlNzRiLi44
MTc0OTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTUtMDQtMjkgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBOYXZpZ2F0aW9u
VHlwZSBmb3IgY2xpZW50IHJlZGlyZWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL21pc2MvcG9saWN5LWRlbGVnYXRl
LWNsaWVudC1yZWRpcmVjdC1mYXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlz
Yy9wb2xpY3ktZGVsZWdhdGUtY2xpZW50LXJlZGlyZWN0LXNsb3cuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0
cEVxdWl2KToKKyAgICAgICAgCisgICAgICAgIEFsbG93IEZyYW1lTG9hZFJlcXVlc3QgdG8gaG9s
ZCBhIHByZXNldCBGcmFtZUxvYWRUeXBlIHdoaWNoIC0gZm9yIG5vdyAtIHdpbGwgb25seSBiZSB1
c2VkIGZvciBDbGllbnRSZWRpcmVjdDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0OjpzZXRGcmFtZUxvYWRU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6OmZyYW1lTG9hZFR5cGUp
OiBFaXRoZXIgcmV0dXJuIHRoZSBwcmVzZXQgbG9hZCB0eXBlLCBvciBjYWxjdWxhdGUgaXQgYmFz
ZWQgb24gZXhpc3RpbmcgRnJhbWVMb2FkZXIgbG9naWMuCisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6OkZyYW1l
TG9hZFJlcXVlc3QpOgorICAgICAgICAKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNCYWNrRm9yd2FyZExvYWRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdCk6IEluc3RlYWQgb2YgY2FsY3VsYXRpbmcg
YSBGcmFtZUxvYWRUeXBlIGhlcmUsIHVzZSB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIEZyYW1lTG9h
ZFJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpsb2dOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQpOiBIYW5kbGUgQ2xpZW50
UmVkaXJlY3QsIGFuZCBhZGQgYSBuZXcgY2FzZSBmb3IgQ2xpZW50UmVkaXJlY3RXaXRoTG9ja2Vk
QmFja0ZvcndhcmRMaXN0LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1YnJlc291
cmNlQ2FjaGVQb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisK
KyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKToKKworICAgICAgICAq
IGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hdmlnYXRp
b25UeXBlKToKKworICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFJlZGlyZWN0OjpTY2hlZHVsZWRSZWRpcmVjdCk6IElm
IHRoZSByZWRpcmVjdCBpcyBhIGNsaWVudCByZWRpcmVjdCwgc2V0IHRoZSBGcmFtZUxvYWRUeXBl
IG9uIHRoZSBGcmFtZUxvYWRSZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNj
aGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuaDoKKwogMjAxNS0wNC0yOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQ29uc29saWRhdGUgbW9zdCAiZnJhbWUgbG9hZCIgYXJndW1lbnRzIGlu
dG8gRnJhbWVMb2FkUmVxdWVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGY3N2E1ZGUu
LmZkNjQ3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzAxMSw3ICszMDExLDcgQEAg
dm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29t
cGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICAgICAgICAgIGlmICghcHJv
dG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+
bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJlY3QoZGVsYXksIGNvbXBsZXRlZFVS
TCk7CisgICAgICAgICAgICAgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVs
ZVJlZGlyZWN0KGRlbGF5LCBjb21wbGV0ZWRVUkwsIE5hdmlnYXRpb25TY2hlZHVsZXI6OlJlZGly
ZWN0VHlwZTo6Q2xpZW50KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFN0
cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gcmVmcmVzaCAiICsgbV91cmwuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiIHRvIGEgamF2YXNjcmlwdDogVVJMIjsKICAgICAgICAg
ICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
UmVxdWVzdC5jcHAKaW5kZXggN2I5NzRiMC4uYzYzYzhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcApAQCAtNTAsNCArNTAsMzAgQEAgRnJhbWVMb2FkUmVx
dWVzdDo6RnJhbWVMb2FkUmVxdWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2UKIHsKIH0KIAordm9pZCBGcmFtZUxvYWRSZXF1ZXN0OjpzZXRGcmFtZUxvYWRU
eXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKK3sKKyAgICBtX2ZyYW1lTG9hZFR5cGUg
PSBmcmFtZUxvYWRUeXBlOworICAgIG1fZnJhbWVMb2FkVHlwZUlzU2V0ID0gdHJ1ZTsKK30KKwor
RnJhbWVMb2FkVHlwZSBGcmFtZUxvYWRSZXF1ZXN0OjpmcmFtZUxvYWRUeXBlKCkgY29uc3QKK3sK
KyAgICBpZiAobV9mcmFtZUxvYWRUeXBlSXNTZXQpCisgICAgICAgIHJldHVybiBtX2ZyYW1lTG9h
ZFR5cGU7CisKKyAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHRoYXQgYXR0ZW1wdHMgdG8gZ3Vlc3Mg
dGhlIGFwcHJvcHJpYXRlIEZyYW1lTG9hZFR5cGUgaXMgYmFzZWQgb24gdGhlIGxvZ2ljIHRoYXQg
d2FzIG9uY2UKKyAgICAvLyBpbiBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoKSB3aGljaCBpcyBv
bmx5ICpvbmUqIG9mIHRoZSBtYW55IEZyYW1lTG9hZGVyIG1ldGhvZHMgdGhhdCBwZXJmb3JtcyBh
IGxvYWQKKyAgICAvLyBhbmQgcmVxdWlyZXMgYSBGcmFtZUxvYWRUeXBlLgorICAgIC8vIEdvaW5n
IGZvcndhcmQgd2UgbmVlZCB0byByZW1vdmUgdGhlIG5lZWQgZm9yIHRoaXMgImd1ZXNzaW5nIiBj
b2RlIGJ5IGZvcmNpbmcgYWxsIGNyZWF0b3JzIG9mIEZyYW1lTG9hZFJlcXVlc3RzCisgICAgLy8g
dG8gZXhwbGljaXRseSBzZXQgdGhlaXIgRnJhbWVMb2FkVHlwZS4KKworICAgIGlmIChtX3Jlc291
cmNlUmVxdWVzdC5jYWNoZVBvbGljeSgpID09IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKQorICAg
ICAgICByZXR1cm4gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOworCisgICAgaWYgKG1fbG9ja0JhY2tG
b3J3YXJkTGlzdCA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCisgICAgICAgIHJldHVybiBG
cmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q7CisKKyAgICBy
ZXR1cm4gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCmluZGV4IDY0NTg4ZDEy
Li5jZDVmOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKQEAg
LTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgICAgICAsIG1fYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMKGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKICAgICAgICAgLCBtX25ld0ZyYW1l
T3BlbmVyUG9saWN5KG5ld0ZyYW1lT3BlbmVyUG9saWN5KQogICAgICAgICAsIG1fc2hvdWxkUmVw
bGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCkKKyAgICAgICAgLCBtX2ZyYW1lTG9hZFR5cGUoRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQpCisg
ICAgICAgICwgbV9mcmFtZUxvYWRUeXBlSXNTZXQoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAt
NTgsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9hbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkwoYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKQogICAgICAgICAsIG1fbmV3RnJhbWVP
cGVuZXJQb2xpY3kobmV3RnJhbWVPcGVuZXJQb2xpY3kpCiAgICAgICAgICwgbV9zaG91bGRSZXBs
YWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwoUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
KQorICAgICAgICAsIG1fZnJhbWVMb2FkVHlwZShGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZCkKKyAg
ICAgICAgLCBtX2ZyYW1lTG9hZFR5cGVJc1NldChmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC03
Miw2ICs3Niw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2FsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTChhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpCiAgICAgICAgICwgbV9uZXdGcmFtZU9w
ZW5lclBvbGljeShuZXdGcmFtZU9wZW5lclBvbGljeSkKICAgICAgICAgLCBtX3Nob3VsZFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTChzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3Jp
cHRVUkwpCisgICAgICAgICwgbV9mcmFtZUxvYWRUeXBlKEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJk
KQorICAgICAgICAsIG1fZnJhbWVMb2FkVHlwZUlzU2V0KGZhbHNlKQogICAgIHsKICAgICB9CiAK
QEAgLTEwNCw2ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gY29ycmVzcG9uZGluZyBwYXJhbWV0
ZXIgZnJvbSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKCkgaXMgYWRk
cmVzc2VkLgogICAgIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRS
ZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJl
cGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTDsgfQogCisgICAgRnJhbWVMb2FkVHlwZSBmcmFt
ZUxvYWRUeXBlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRGcmFtZUxvYWRUeXBlKEZyYW1lTG9hZFR5
cGUpOworCiBwcml2YXRlOgogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9yZXF1ZXN0ZXI7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwpAQCAtMTE3LDYgKzEyNiw4
IEBAIHByaXZhdGU6CiAgICAgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIG1fYWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMOwogICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG1fbmV3RnJhbWVP
cGVuZXJQb2xpY3k7CiAgICAgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIG1f
c2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMOworICAgIEZyYW1lTG9hZFR5cGUg
bV9mcmFtZUxvYWRUeXBlOworICAgIGJvb2wgbV9mcmFtZUxvYWRUeXBlSXNTZXQ7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3Yzg4MzljLi5kNTI1NjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE1Myw2ICsxNTMsOCBA
QCBib29sIGlzQmFja0ZvcndhcmRMb2FkVHlwZShGcmFtZUxvYWRUeXBlIHR5cGUpCiAgICAgY2Fz
ZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFj
ZToKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OkNsaWVudFJlZGlyZWN0OgorICAgIGNhc2UgRnJh
bWVMb2FkVHlwZTo6Q2xpZW50UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpCYWNrOgogICAgIGNh
c2UgRnJhbWVMb2FkVHlwZTo6Rm9yd2FyZDoKQEAgLTY3Miw3ICs2NzQsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiAgICAgICAgIGNvbXBsZXRlZFVSTCA9IG1fZnJh
bWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAogICAgIGlmICghcHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKLSAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkZWxheSwgY29tcGxldGVkVVJMKTsKKyAgICAg
ICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkZWxheSwg
Y29tcGxldGVkVVJMLCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpSZWRpcmVjdFR5cGU6OlNlcnZlcik7
CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gcmVmcmVz
aCAiICsgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBVUkwiOwogICAgICAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKQEAgLTExNjEsMTggKzExNjMsMTAgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0
LCBQYXNzUmVmUHRyPEUKICAgICBpZiAocmVxdWVzdC5zaG91bGRTZW5kUmVmZXJyZXIoKSA9PSBO
ZXZlclNlbmRSZWZlcnJlcikKICAgICAgICAgcmVmZXJyZXIgPSBTdHJpbmcoKTsKIAotICAgIEZy
YW1lTG9hZFR5cGUgbG9hZFR5cGU7Ci0gICAgaWYgKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
Y2FjaGVQb2xpY3koKSA9PSBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSkKLSAgICAgICAgbG9hZFR5
cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7Ci0gICAgZWxzZSBpZiAocmVxdWVzdC5sb2NrQmFj
a0ZvcndhcmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQotICAgICAgICBsb2Fk
VHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDsK
LSAgICBlbHNlCi0gICAgICAgIGxvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7Ci0K
ICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIlBPU1Qi
KQotICAgICAgICBsb2FkUG9zdFJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgcmVm
ZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIHJlcXVlc3QubG9ja0hpc3RvcnkoKSwgbG9hZFR5
cGUsIGV2ZW50LCBmb3JtU3RhdGUuZ2V0KCksIHJlcXVlc3QuYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMKCksIHJlcXVlc3QubmV3RnJhbWVPcGVuZXJQb2xpY3koKSk7CisgICAgICAgIGxvYWRQ
b3N0UmVxdWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZWZlcnJlciwgcmVxdWVzdC5m
cmFtZU5hbWUoKSwgcmVxdWVzdC5sb2NrSGlzdG9yeSgpLCByZXF1ZXN0LmZyYW1lTG9hZFR5cGUo
KSwgZXZlbnQsIGZvcm1TdGF0ZS5nZXQoKSwgcmVxdWVzdC5hbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkwoKSwgcmVxdWVzdC5uZXdGcmFtZU9wZW5lclBvbGljeSgpKTsKICAgICBlbHNlCi0gICAg
ICAgIGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgcmVmZXJyZXIsIHJl
cXVlc3QuZnJhbWVOYW1lKCksIHJlcXVlc3QubG9ja0hpc3RvcnkoKSwgbG9hZFR5cGUsIGV2ZW50
LCBmb3JtU3RhdGUuZ2V0KCksIHJlcXVlc3QuYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKCks
IHJlcXVlc3QubmV3RnJhbWVPcGVuZXJQb2xpY3koKSk7CisgICAgICAgIGxvYWRVUkwocmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgcmVmZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCks
IHJlcXVlc3QubG9ja0hpc3RvcnkoKSwgcmVxdWVzdC5mcmFtZUxvYWRUeXBlKCksIGV2ZW50LCBm
b3JtU3RhdGUuZ2V0KCksIHJlcXVlc3QuYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKCksIHJl
cXVlc3QubmV3RnJhbWVPcGVuZXJQb2xpY3koKSk7CiAKICAgICAvLyBGSVhNRTogSXQncyBwb3Nz
aWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90IGJlIHRoZSBzYW1lIGZyYW1lIHRoYXQgd2Fz
IHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAvLyBsb2FkIGlmIGZyYW1lIG5hbWVzIGhhdmUg
Y2hhbmdlZC4KQEAgLTEzODQsNiArMTM3OCw4IEBAIHN0YXRpYyB2b2lkIGxvZ05hdmlnYXRpb24o
TWFpbkZyYW1lJiBmcmFtZSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogICAgIGNhc2UgRnJhbWVMb2Fk
VHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKICAgICAgICAgbmF2aWdhdGlvbkRlc2NyaXB0aW9uID0g
QVNDSUlMaXRlcmFsKCJyZWxvYWRGcm9tT3JpZ2luIik7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRnJhbWVMb2FkVHlwZTo6Q2xpZW50UmVkaXJlY3Q6CisgICAgY2FzZSBGcmFtZUxvYWRUeXBl
OjpDbGllbnRSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q6CiAgICAgY2FzZSBGcmFt
ZUxvYWRUeXBlOjpSZXBsYWNlOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgICAgICAvLyBOb3QgbG9nZ2luZyB0aG9zZSBmb3Ig
bm93LgpAQCAtMTkzOCw2ICsxOTM0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRv
Q29tbWl0dGVkKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UpCiAgICAgICAgIG1fY2xpZW50LnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNl
IEZyYW1lTG9hZFR5cGU6OkNsaWVudFJlZGlyZWN0OgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6
U3RhbmRhcmQ6CiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JTdGFuZGFyZExvYWQoKTsKICAg
ICAgICAgaWYgKG1fZnJhbWUudmlldygpKQpAQCAtMTk0NSwxNSArMTk0MiwxNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVkUGFnZSkK
ICAgICAgICAgbV9jbGllbnQudHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpOwogICAg
ICAgICBicmVhazsKIAotICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2Vk
QmFja0ZvcndhcmRMaXN0OgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6Q2xpZW50UmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgICAgICBoaXN0b3J5KCkudXBkYXRlRm9yUmVk
aXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIGlmIChtX2ZyYW1lLnZp
ZXcoKSkKKyAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRTY3JvbGxiYXJzU3VwcHJlc3Nl
ZCh0cnVlKTsKICAgICAgICAgbV9jbGllbnQudHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFn
ZSgpOwogICAgICAgICBicmVhazsKIAotICAgIC8vIEZJWE1FIFJlbW92ZSB0aGlzIGNoZWNrIHdo
ZW4gZHVtbXkgZHMgaXMgcmVtb3ZlZCAod2hhdGV2ZXIgImR1bW15IGRzIiBpcykuCi0gICAgLy8g
QW4gZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gaWYgd2UncmUgaW4gdGhlIEZyYW1lTG9hZFR5
cGVVbmluaXRpYWxpemVkIHN0YXRlLgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFj
a0ZvcndhcmRMaXN0OgorICAgICAgICBoaXN0b3J5KCkudXBkYXRlRm9yUmVkaXJlY3RXaXRoTG9j
a2VkQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIG1fY2xpZW50LnRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZvck5ld1BhZ2UoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgbV9kb2N1bWVu
dExvYWRlci0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoZGwtPnJlc3BvbnNlTUlNRVR5cGUoKSk7CkBA
IC0yMTU3LDYgKzIxNTYsOCBAQCBDYWNoZVBvbGljeSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VD
YWNoZVBvbGljeSgpIGNvbnN0CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZXBsYWNlOgogICAg
IGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5k
YXJkOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6Q2xpZW50UmVkaXJlY3Q6CisgICAgY2FzZSBG
cmFtZUxvYWRUeXBlOjpDbGllbnRSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q6CiAg
ICAgICAgIHJldHVybiBDYWNoZVBvbGljeVZlcmlmeTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IDRlZjhhYjYuLjFkYmYxYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaApAQCAtNDUsNiArNDUsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQb2xpY3lJZ25vcmUKICAgICB9OwogCisvLyBGSVhN
RTogRnJhbWVMb2FkZXIgY3VycmVudGx5IGhhbmdzIG9uIHRvIGl0cyBjdXJyZW50IEZyYW1lTG9h
ZFR5cGUsIHdoaWNoIGZvcmNlcyB1cyB0byByZW1lbWJlcgorLy8gdGhpbmdzIGxpa2UgIlJlZGly
ZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCIsICJDbGllbnRSZWRpcmVjdCIsIGFuZCAiQ2xp
ZW50UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0IgorLy8gQWxsIG9mIHRoZXNlIGxp
dHRsZSBiaXRzIG9mIGRhdGEgYXJlIG5vdyBrZXB0IGluc2lkZSBGcmFtZUxvYWRSZXF1ZXN0LCBh
bmQgbWFueSBwbGFjZXMgdGhhdCBoYW5nIG9uIHRvIGEgRnJhbWVMb2FkVHlwZQorLy8gc2hvdWxk
IGJlIGhhbmdpbmcgb24gdG8gb25lIG9mIHRob3NlIGluc3RlYWQuCisvLyBUaGVuIHdlIGNhbiBz
aW1wbGlmeSBkb3duIHRoZSBudW1iZXIgb2YgRnJhbWVMb2FkVHlwZXMuCiBlbnVtIGNsYXNzIEZy
YW1lTG9hZFR5cGUgewogICAgIFN0YW5kYXJkLAogICAgIEJhY2ssCkBAIC01Miw5ICs1NywxMSBA
QCBlbnVtIGNsYXNzIEZyYW1lTG9hZFR5cGUgewogICAgIEluZGV4ZWRCYWNrRm9yd2FyZCwgLy8g
YSBtdWx0aS1pdGVtIGhvcCBpbiB0aGUgYmFja2ZvcndhcmQgbGlzdAogICAgIFJlbG9hZCwKICAg
ICBTYW1lLCAvLyB1c2VyIGxvYWRzIHNhbWUgVVJMIGFnYWluIChidXQgbm90IHJlbG9hZCBidXR0
b24pCi0gICAgUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCAvLyBGSVhNRTogTWVy
Z2UgImxvY2tCYWNrRm9yd2FyZExpc3QiLCAibG9ja0hpc3RvcnkiLCAicXVpY2tSZWRpcmVjdCIg
YW5kICJjbGllbnRSZWRpcmVjdCIgaW50byBhIHNpbmdsZSBjb25jZXB0IG9mIHJlZGlyZWN0Lgor
ICAgIFJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwKICAgICBSZXBsYWNlLAogICAg
IFJlbG9hZEZyb21PcmlnaW4sCisgICAgQ2xpZW50UmVkaXJlY3QsCisgICAgQ2xpZW50UmVkaXJl
Y3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LAogfTsKIAogZW51bSBjbGFzcyBOZXdGcmFtZU9w
ZW5lclBvbGljeSB7CkBAIC02OCw2ICs3NSw3IEBAIGVudW0gY2xhc3MgTmF2aWdhdGlvblR5cGUg
ewogICAgIEJhY2tGb3J3YXJkLAogICAgIFJlbG9hZCwKICAgICBGb3JtUmVzdWJtaXR0ZWQsCisg
ICAgQ2xpZW50UmVkaXJlY3QsCiAgICAgT3RoZXIKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDc2YTA5NjQuLjhiNWU2MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMjEwLDYgKzIxMCw4
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKCkKICAgICBj
YXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW46CiAgICAgY2FzZSBGcmFtZUxvYWRU
eXBlOjpTYW1lOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKKyAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OkNsaWVudFJlZGlyZWN0OgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6Q2xp
ZW50UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgICAgICAvLyBOb3QgcmVz
dG9yaW5nIHRoZSBkb2N1bWVudCBzdGF0ZS4KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRnJh
bWVMb2FkVHlwZTo6QmFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmNwcAppbmRleCA4MzdlYmRkLi4yZmVhYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKEZyYW1lTG9hZFR5cGUgZnJh
bWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBib29sIGhhdmVFdmVudCkKIHsKKyAg
ICBpZiAoZnJhbWVMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpDbGllbnRSZWRpcmVjdCB8fCBm
cmFtZUxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OkNsaWVudFJlZGlyZWN0V2l0aExvY2tlZEJh
Y2tGb3J3YXJkTGlzdCkKKyAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25UeXBlOjpDbGllbnRSZWRp
cmVjdDsKICAgICBpZiAoaXNGb3JtU3VibWlzc2lvbikKICAgICAgICAgcmV0dXJuIE5hdmlnYXRp
b25UeXBlOjpGb3JtU3VibWl0dGVkOwogICAgIGlmIChoYXZlRXZlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggY2Y3YmRhYi4uNDM1ODdl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApA
QCAtMTU0LDggKzE1NCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNjaGVkdWxlZFJlZGlyZWN0IDog
cHVibGljIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gewogcHVibGljOgotICAgIFNjaGVkdWxlZFJl
ZGlyZWN0KGRvdWJsZSBkZWxheSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBVUkwmIHVybCwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Qg
bG9ja0JhY2tGb3J3YXJkTGlzdCkKKyAgICBTY2hlZHVsZWRSZWRpcmVjdChkb3VibGUgZGVsYXks
IFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIExvY2tIaXN0
b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3Qs
IE5hdmlnYXRpb25TY2hlZHVsZXI6OlJlZGlyZWN0VHlwZSByZWRpcmVjdFR5cGUpCiAgICAgICAg
IDogU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihkZWxheSwgc2VjdXJpdHlPcmlnaW4sIHVybCwgU3Ry
aW5nKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBmYWxzZSwgZmFsc2UpCisg
ICAgICAgICwgbV9yZWRpcmVjdFR5cGUocmVkaXJlY3RUeXBlKQogICAgIHsKICAgICAgICAgY2xl
YXJVc2VyR2VzdHVyZSgpOwogICAgIH0KQEAgLTE3Miw4ICsxNzMsMTggQEAgcHVibGljOgogICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KHVybCgpLCByZWZlcnJlcigpLCBy
ZWZyZXNoID8gUmVsb2FkSWdub3JpbmdDYWNoZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5
KTsKICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJlcXVlc3Qoc2VjdXJpdHlPcmlnaW4o
KSwgcmVzb3VyY2VSZXF1ZXN0LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCks
IE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5vLCBOZXdG
cmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOwogCisgICAgICAgIGlmIChtX3JlZGlyZWN0VHlwZSA9
PSBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpSZWRpcmVjdFR5cGU6OkNsaWVudCAmJiAhcmVmcmVzaCkg
eworICAgICAgICAgICAgaWYgKGxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFja0Zvcndh
cmRMaXN0OjpZZXMpCisgICAgICAgICAgICAgICAgZnJhbWVSZXF1ZXN0LnNldEZyYW1lTG9hZFR5
cGUoRnJhbWVMb2FkVHlwZTo6Q2xpZW50UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmFtZVJlcXVlc3Quc2V0RnJh
bWVMb2FkVHlwZShGcmFtZUxvYWRUeXBlOjpDbGllbnRSZWRpcmVjdCk7CisgICAgICAgIH0KKwog
ICAgICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihmcmFtZVJlcXVlc3QpOwogICAg
IH0KKworcHJpdmF0ZToKKyAgICBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpSZWRpcmVjdFR5cGUgbV9y
ZWRpcmVjdFR5cGU7CiB9OwogCiBjbGFzcyBTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZSA6IHB1Ymxp
YyBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uIHsKQEAgLTM1Myw3ICszNjQsNyBAQCBpbmxpbmUgYm9v
bCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIE5hdmlnYXRpb25EaXNhYmxlckZvckJlZm9yZVVubG9h
ZDo6aXNOYXZpZ2F0aW9uQWxsb3dlZCgpOwogfQogCi12b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6
OnNjaGVkdWxlUmVkaXJlY3QoZG91YmxlIGRlbGF5LCBjb25zdCBVUkwmIHVybCkKK3ZvaWQgTmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFVS
TCYgdXJsLCBSZWRpcmVjdFR5cGUgcmVkaXJlY3RUeXBlKQogewogICAgIGlmICghc2hvdWxkU2No
ZWR1bGVOYXZpZ2F0aW9uKHVybCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NSw3ICszNzYsNyBA
QCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoZG91YmxlIGRlbGF5
LCBjb25zdCBVUkwmIHVybCkKICAgICAvLyBXZSB3YW50IGEgbmV3IGJhY2svZm9yd2FyZCBsaXN0
IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25kLgogICAgIGlmICghbV9y
ZWRpcmVjdCB8fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKSB7CiAgICAgICAgIExvY2tC
YWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGRlbGF5IDw9IDEgPyBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpZZXMgOiBMb2NrQmFja0ZvcndhcmRMaXN0OjpObzsKLSAgICAgICAgc2No
ZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oZGVsYXksIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2Nr
QmFja0ZvcndhcmRMaXN0KSk7CisgICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVkUmVkaXJlY3Q+KGRlbGF5LCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCksIHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCwgcmVkaXJlY3RU
eXBlKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuaAppbmRleCA0YWU1YjEwLi44NTcwNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTYzLDEzICs2MywxOCBAQCBwcml2YXRlOgogCiBj
bGFzcyBOYXZpZ2F0aW9uU2NoZWR1bGVyIHsKIHB1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFJlZGly
ZWN0VHlwZSB7CisgICAgICAgIENsaWVudCwKKyAgICAgICAgU2VydmVyLAorICAgIH07CisKICAg
ICBleHBsaWNpdCBOYXZpZ2F0aW9uU2NoZWR1bGVyKEZyYW1lJik7CiAgICAgfk5hdmlnYXRpb25T
Y2hlZHVsZXIoKTsKIAogICAgIGJvb2wgcmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKCk7CiAg
ICAgYm9vbCBsb2NhdGlvbkNoYW5nZVBlbmRpbmcoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVSZWRp
cmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFVSTCYpOworICAgIHZvaWQgc2NoZWR1bGVSZWRpcmVj
dChkb3VibGUgZGVsYXksIGNvbnN0IFVSTCYsIFJlZGlyZWN0VHlwZSk7CiAgICAgdm9pZCBzY2hl
ZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgTG9ja0hpc3RvcnkgPSBMb2NrSGlzdG9yeTo6WWVzLCBMb2NrQmFja0Zv
cndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKICAgICB2b2lkIHNjaGVkdWxl
Rm9ybVN1Ym1pc3Npb24oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4pOwogICAgIHZvaWQgc2No
ZWR1bGVSZWZyZXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMTE1NGIyYi4uMWZlNmQzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA0LTI5ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBuZXcgTmF2aWdhdGlvblR5cGUg
Zm9yIGNsaWVudCByZWRpcmVjdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDQyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAoY29yZUFjdGlvblRvV2ViQWN0aW9uKToKKyAgICAgICAgKGlzUHJpdmF0ZU5hdmln
YXRpb25UeXBlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9u
YXJ5KTogSWYgdGhlIGNsaWVudCBoYXNuJ3QgdXBkYXRlZCB0byBvcHQtaW4gdG8gcmVjZWl2aW5n
CisgICAgICAgICAgdGhlIG5ldyBGcmFtZUxvYWRUeXBlcywgY29udmVydCB0aGVtIHRvICJPdGhl
ciIKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICh0b1dlYkZyYW1l
TG9hZFR5cGUpOiBBZGQgbWFwcGluZ3MgZm9yIHRoZSBuZXcgQ2xpZW50UmVkaXJlY3QgdHlwZS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6CisgICAgICAgICogV2ViVmll
dy9XZWJQb2xpY3lEZWxlZ2F0ZVByaXZhdGUuaDogQWRkIHRoZSBuZXcgQ2xpZW50UmVkaXJlY3Qg
dHlwZS4KKyAgICAgICAgCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZVNob3VsZEdldFByaXZhdGVOYXZpZ2F0aW9uVHlwZXNd
KTogU2VlIGlmIHRoZSBjbGllbnQgaGFzIG9wdGVkIGluLgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmg6CisKIDIwMTUtMDQtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIENvbnNvbGlkYXRlIG1vc3QgImZyYW1lIGxvYWQiIGFyZ3VtZW50
cyBpbnRvIEZyYW1lTG9hZFJlcXVlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDgzYjMyZmEuLjk4
ZThiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNTQzLDYgKzE1NDMsMzEgQEAgc3RhdGljIGNv
bnN0IE1vdXNlRXZlbnQqIGZpbmRNb3VzZUV2ZW50KGNvbnN0IEV2ZW50KiBldmVudCkKICAgICBy
ZXR1cm4gMDsKIH0KIAorc3RhdGljIE5TSW50ZWdlciBjb3JlQWN0aW9uVG9XZWJBY3Rpb24oTmF2
aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUpCit7CisgICAgc3dpdGNoIChuYXZpZ2F0aW9uVHlw
ZSkgeworICAgIGNhc2UgTmF2aWdhdGlvblR5cGU6OkxpbmtDbGlja2VkOgorICAgICAgICByZXR1
cm4gV2ViTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBl
OjpGb3JtU3VibWl0dGVkOgorICAgICAgICByZXR1cm4gV2ViTmF2aWdhdGlvblR5cGVGb3JtU3Vi
bWl0dGVkOworICAgIGNhc2UgTmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOgorICAgICAgICBy
ZXR1cm4gV2ViTmF2aWdhdGlvblR5cGVCYWNrRm9yd2FyZDsKKyAgICBjYXNlIE5hdmlnYXRpb25U
eXBlOjpSZWxvYWQ6CisgICAgICAgIHJldHVybiBXZWJOYXZpZ2F0aW9uVHlwZVJlbG9hZDsKKyAg
ICBjYXNlIE5hdmlnYXRpb25UeXBlOjpGb3JtUmVzdWJtaXR0ZWQ6CisgICAgICAgIHJldHVybiBX
ZWJOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZDsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBl
OjpDbGllbnRSZWRpcmVjdDoKKyAgICAgICAgcmV0dXJuIFdlYk5hdmlnYXRpb25UeXBlQ2xpZW50
UmVkaXJlY3Q7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZTo6T3RoZXI6CisgICAgICAgIHJldHVy
biBXZWJOYXZpZ2F0aW9uVHlwZU90aGVyOworICAgIH0KK30KKworc3RhdGljIGJvb2wgaXNQcml2
YXRlTmF2aWdhdGlvblR5cGUoTlNJbnRlZ2VyIG5hdmlnYXRpb25UeXBlKQoreworICAgIHJldHVy
biBuYXZpZ2F0aW9uVHlwZSA9PSBXZWJOYXZpZ2F0aW9uVHlwZUNsaWVudFJlZGlyZWN0OworfQor
CiBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1T
dGF0ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBtb2RpZmllckZsYWdzID0gMDsKQEAgLTE1NjUs
OCArMTU5MCwxMyBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25E
aWN0aW9uYXJ5KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdAogCiAgICAgTlNVUkwgKm9yaWdp
bmFsVVJMID0gYWN0aW9uLnVybCgpOwogCisgICAgTlNJbnRlZ2VyIGFjdGlvblR5cGUgPSBjb3Jl
QWN0aW9uVG9XZWJBY3Rpb24oYWN0aW9uLnR5cGUoKSk7CisKKyAgICBpZiAoaXNQcml2YXRlTmF2
aWdhdGlvblR5cGUoYWN0aW9uVHlwZSkgJiYgIVtnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkp
IF9wb2xpY3lEZWxlZ2F0ZVNob3VsZEdldFByaXZhdGVOYXZpZ2F0aW9uVHlwZXNdKQorICAgICAg
ICBhY3Rpb25UeXBlID0gV2ViTmF2aWdhdGlvblR5cGVPdGhlcjsKKwogICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKnJlc3VsdCA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnN0YXRpY19jYXN0
PGludD4oYWN0aW9uLnR5cGUoKSldLCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKKyAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmFjdGlvblR5cGVdLCBXZWJBY3Rpb25OYXZp
Z2F0aW9uVHlwZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bW9kaWZpZXJG
bGFnc10sIFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCiAgICAgICAgIG9yaWdpbmFsVVJMLCBX
ZWJBY3Rpb25PcmlnaW5hbFVSTEtleSwKICAgICAgICAgbmlsXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCmluZGV4IGVjMTVhYzMuLjNkNWFlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTA3MCw2ICsxMDcwLDkgQEAgc3RhdGljIFdlYkZyYW1l
TG9hZFR5cGUgdG9XZWJGcmFtZUxvYWRUeXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkK
ICAgICAgICAgcmV0dXJuIFdlYkZyYW1lTG9hZFR5cGVSZXBsYWNlOwogICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKICAgICAgICAgcmV0dXJuIFdlYkZyYW1lTG9hZFR5
cGVSZWxvYWRGcm9tT3JpZ2luOworICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6Q2xpZW50UmVkaXJl
Y3Q6CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpDbGllbnRSZWRpcmVjdFdpdGhMb2NrZWRCYWNr
Rm9yd2FyZExpc3Q6CisgICAgICAgIHJldHVybiBXZWJGcmFtZUxvYWRUeXBlQ2xpZW50UmVkaXJl
Y3Q7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZh
dGUuaAppbmRleCBjOGY4Mjc5Li40M2YwYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVQcml2YXRlLmgKQEAgLTc4LDYgKzc4LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAg
ICBXZWJGcmFtZUxvYWRUeXBlSW50ZXJuYWwsICAgICAgICAgICAvLyBtYXBzIHRvIFdlYkNvcmU6
OkZyYW1lTG9hZFR5cGVSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QKICAgICBXZWJG
cmFtZUxvYWRUeXBlUmVwbGFjZSwKICAgICBXZWJGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdp
biwKKyAgICBXZWJGcmFtZUxvYWRUeXBlQ2xpZW50UmVkaXJlY3QsCiB9IFdlYkZyYW1lTG9hZFR5
cGU7CiAKIEBpbnRlcmZhY2UgV2ViRnJhbWUgKFdlYlByaXZhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCA4ZWE0
Y2FmLi5iZjViNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBv
bGljeURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UG9saWN5RGVsZWdhdGVQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDEwIEBAIHR5cGVkZWYgZW51bSB7
CiAgICAgV2ViTmF2aWdhdGlvblR5cGVQbHVnSW5SZXF1ZXN0ID0gV2ViTmF2aWdhdGlvblR5cGVP
dGhlciArIDEKIH0gV2ViRXh0cmFOYXZpZ2F0aW9uVHlwZTsKIAordHlwZWRlZiBlbnVtIHsKKyAg
ICBXZWJOYXZpZ2F0aW9uVHlwZUNsaWVudFJlZGlyZWN0ID0gV2ViTmF2aWdhdGlvblR5cGVQbHVn
SW5SZXF1ZXN0ICsgMQorfSBXZWJQcml2YXRlTmF2aWdhdGlvblR5cGU7CisKIEBpbnRlcmZhY2Ug
V2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJQb2xpY3lEZWNpc2lvbkxp
c3RlbmVyPgogewogQHByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCBmZWM2MTlmLi44ZThiMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC04NjkxLDYgKzg2OTEsMTMgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXll
cnMoKQogfQogI2VuZGlmCiAKKy0gKEJPT0wpX3BvbGljeURlbGVnYXRlU2hvdWxkR2V0UHJpdmF0
ZU5hdmlnYXRpb25UeXBlcworeworICAgIGlmIChbX3ByaXZhdGUtPnBvbGljeURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dhbnRzUHJpdmF0ZU5hdmlnYXRpb25UeXBlcyld
KQorICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQ8Qk9PTD4oX3ByaXZhdGUtPnBvbGljeURl
bGVnYXRlLCBAc2VsZWN0b3IoX3dhbnRzUHJpdmF0ZU5hdmlnYXRpb25UeXBlcykpOworICAgIHJl
dHVybiBOTzsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld0Rl
dmljZU9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmgKaW5kZXggNTM3NDIwMC4uNzRkM2M5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0xMDIsNiArMTAyLDggQEAgT0JKQ19DTEFTUyBOU1Rl
eHRBbHRlcm5hdGl2ZXM7CiAKIC0gKEJPT0wpX2JlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tT3V0
c2lkZTsKIAorLSAoQk9PTClfcG9saWN5RGVsZWdhdGVTaG91bGRHZXRQcml2YXRlTmF2aWdhdGlv
blR5cGVzOworCiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKIC0gKHZvaWQpX3JlZ2lzdGVyRm9y
SWNvbk5vdGlmaWNhdGlvbjooQk9PTClsaXN0ZW47CiAtICh2b2lkKV9kaXNwYXRjaERpZFJlY2Vp
dmVJY29uRnJvbVdlYkZyYW1lOihXZWJGcmFtZSAqKXdlYkZyYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDZk
ZmY3YzYuLmEyZGE2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNS0wNC0yOSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IE5h
dmlnYXRpb25UeXBlIGZvciBjbGllbnQgcmVkaXJlY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVz
Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAo
V2ViS2l0Ojp0b0FQSSk6IEFkZCBtYXBwaW5ncyBmb3IgdGhlIG5ldyBDbGllbnRSZWRpcmVjdCB0
eXBlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24u
bW06CisgICAgICAgICh0b1dLTmF2aWdhdGlvblR5cGUpOiBBZGQgbWFwcGluZ3MgZm9yIHRoZSBu
ZXcgQ2xpZW50UmVkaXJlY3QgdHlwZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbik6IENvbnZlcnQgdGhlIG5ldyBGcmFtZUxvYWRUeXBlcworICAgICAgICAgIHRv
ICJPdGhlciIgaWYgdGhlIGNsaWVudCBoYXMgbm90IHVwZGF0ZWQgdG8gdmVyc2lvbiAxLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZVBvbGljeUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50Lmg6IEFkZCBhIG5ldyBjbGllbnQg
dmVyc2lvbiB0aGF0IGhhcyB0aGUKKyAgICAgICAgICBleGFjdCBzYW1lIGxheW91dCBidXQgb3B0
cyBpbiB0byByZWNlaXZpbmcgdGhlIG5ldyBGcmFtZUxvYWRUeXBlcy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxNS0wNC0yOCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29uc29saWRhdGUg
bW9zdCAiZnJhbWUgbG9hZCIgYXJndW1lbnRzIGludG8gRnJhbWVMb2FkUmVxdWVzdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAppbmRleCBmY2U3OWEz
Li5mNDdjODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdl
TG9hZFR5cGVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRU
eXBlcy5oCkBAIC0zOCw3ICszOCw4IEBAIGVudW0gewogICAgIGtXS0ZyYW1lTmF2aWdhdGlvblR5
cGVCYWNrRm9yd2FyZCA9IDIsCiAgICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZVJlbG9hZCA9IDMs
CiAgICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZCA9IDQsCi0gICAga1dL
RnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyID0gNQorICAgIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVP
dGhlciA9IDUsCisgICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUNsaWVudFJlZGlyZWN0ID0gNgog
fTsKIHR5cGVkZWYgdWludDMyX3QgV0tGcmFtZU5hdmlnYXRpb25UeXBlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKaW5kZXggYTM5ZjcyOS4uNjc5
NDQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJ
Q2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3Qu
aApAQCAtNzczLDYgKzc3Myw5IEBAIGlubGluZSBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdG9BUEko
V2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSkKICAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRp
b25UeXBlOjpPdGhlcjoKICAgICAgICAgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU90
aGVyOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpD
bGllbnRSZWRpcmVjdDoKKyAgICAgICAgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUNs
aWVudFJlZGlyZWN0OworICAgICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHdr
VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25BY3Rpb24ubW0KaW5kZXggOWY2MWZiNy4uZDUyN2U1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rp
b24ubW0KQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIFdLTmF2aWdhdGlvblR5cGUgdG9XS05hdmln
YXRpb25UeXBlKFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXAKICAgICAgICAg
cmV0dXJuIFdLTmF2aWdhdGlvblR5cGVSZWxvYWQ7CiAgICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0
aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVkOgogICAgICAgICByZXR1cm4gV0tOYXZpZ2F0aW9uVHlw
ZUZvcm1SZXN1Ym1pdHRlZDsKKyAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpDbGll
bnRSZWRpcmVjdDoKICAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpPdGhlcjoKICAg
ICAgICAgcmV0dXJuIFdLTmF2aWdhdGlvblR5cGVPdGhlcjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZVBvbGljeUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaAppbmRleCBlNWRiMTI1Li5mZGJjYWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmgKQEAg
LTU0LDYgKzU0LDE4IEBAIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudFYw
IHsKICAgICBXS0J1bmRsZVBhZ2VVbmFibGVUb0ltcGxlbWVudFBvbGljeUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5OwogfSBXS0J1bmRsZVBh
Z2VQb2xpY3lDbGllbnRWMDsKIAorLy8gVmVyc2lvbiAxIGNsaWVudHMgaGF2ZSB0aGUgZXhhY3Qg
c2FtZSBjYWxsYmFja3MgYXMgdmVyc2lvbiAwLCBidXQgdGhleSBhcmUgcHJlc2VudGVkIHdpdGgg
bmV3CisvLyBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdmFsdWVzIHRoYXQgdmVyc2lvbiAwIGNsaWVu
dHMgZG9uJ3QgZXhwZWN0LgordHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50
VjEgeworICAgIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS0J1
bmRsZVBhZ2VEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb247CisgICAgV0tCdW5kbGVQYWdl
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb247CisgICAgV0tCdW5kbGVQYWdlRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZTsKKyAgICBXS0J1bmRsZVBhZ2VVbmFibGVUb0ltcGxlbWVudFBvbGljeUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5Owor
fSBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRWMTsKKwogZW51bSB7IGtXS0J1bmRsZVBhZ2VQb2xp
Y3lDbGllbnRDdXJyZW50VmVyc2lvbiBXS19FTlVNX0RFUFJFQ0FURUQoIlVzZSBhbiBleHBsaWNp
dCB2ZXJzaW9uIG51bWJlciBpbnN0ZWFkIikgPSAwIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRs
ZVBhZ2VQb2xpY3lDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBmMzdmNzMzLi44
NDlkODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgiCiAKKyNpbmNsdWRlICJXS1NoYXJlZEFQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRI
YW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtODEsMTIgKzgyLDEyIEBA
IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1v
dXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjCiB9CiAKIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24+IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRl
KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBQYXNzUmVm
UHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQorUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24+IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZy
YW1lKiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4gZm9ybVN0YXRlLCBpbnQgdGFyZ2V0Q2xpZW50VmVyc2lvbikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihmcmFtZSwgYWN0
aW9uLCBmb3JtU3RhdGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbihmcmFtZSwgYWN0aW9uLCBmb3JtU3RhdGUsIHRhcmdldENsaWVudFZl
cnNpb24pKTsKIH0KIAotSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRl
KQorSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0
aW9uQWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlLCBpbnQgdGFyZ2V0
Q2xpZW50VmVyc2lvbikKICAgICA6IG1fbmF2aWdhdGlvblR5cGUobmF2aWdhdGlvbkFjdGlvbi50
eXBlKCkpCiAgICAgLCBtX21vZGlmaWVycyhtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5h
dmlnYXRpb25BY3Rpb24pKQogICAgICwgbV9tb3VzZUJ1dHRvbihXZWJNb3VzZUV2ZW50OjpOb0J1
dHRvbikKQEAgLTEwMSw2ICsxMDIsMTAgQEAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLAogICAgICAg
ICBBU1NFUlQoZm9ybVN0YXRlLT5mb3JtKCkpOwogICAgICAgICBtX2Zvcm1FbGVtZW50ICAgPSBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGZvcm1TdGF0ZS0+Zm9ybSgpKTsK
ICAgICB9CisKKyAgICAvLyBOYXZpZ2F0aW9uIHR5cGVzIG5ld2VyIHRoYW4gIk90aGVyIiB3aWxs
IG9ubHkgYmUgZGlzcGF0Y2hlZCB0byBwb2xpY3kgY2xpZW50cyBuZXdlciB0aGFuIHZlcnNpb24g
MC4KKyAgICBpZiAodGFyZ2V0Q2xpZW50VmVyc2lvbiA8IDEgJiYgdG9BUEkobV9uYXZpZ2F0aW9u
VHlwZSkgPiBrV0tGcmFtZU5hdmlnYXRpb25UeXBlT3RoZXIpCisgICAgICAgIG1fbmF2aWdhdGlv
blR5cGUgPSBOYXZpZ2F0aW9uVHlwZTo6T3RoZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXgg
MDRlN2E2Yi4uZjdlOGQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBjcmVhdGUo
V2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGb3JtU3RhdGU+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24+IGNyZWF0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGludCB0YXJnZXRD
bGllbnRWZXJzaW9uKTsKIAogICAgIHN0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVy
c0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwog
ICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSogZm9ybUVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2Zvcm1FbGVtZW50LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgaW50IHRhcmdl
dENsaWVudFZlcnNpb24pOwogCiAgICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgbV9uYXZpZ2F0
aW9uVHlwZTsKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1fbW9kaWZpZXJzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmgKaW5kZXggN2VmMmQxNC4uZGQ1
NjkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5o
CkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50VjA+IFZlcnNpb25zOworICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRWMCwgV0tCdW5kbGVQYWdl
UG9saWN5Q2xpZW50VjE+IFZlcnNpb25zOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA5YTQ3NGUwLi5hNThjMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtNzA5LDcgKzcwOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRp
CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uOjpjcmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsK
KyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0
aW9uLCBmb3JtU3RhdGUsIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuY2xp
ZW50KCkuYmFzZS52ZXJzaW9uKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4K
ICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRC
dW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFn
ZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsK
QEAgLTc0OCw3ICs3NDgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIFJlZlB0cjxB
UEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0g
cHJwRm9ybVN0YXRlOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9mcmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUsIHdlYlBhZ2Ut
PmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuY2xpZW50KCkuYmFzZS52ZXJzaW9uKTsKIAog
ICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQo
KSwgcmVxdWVzdCwgdXNlckRhdGEpOwpAQCAtNzgwLDYgKzc4MCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBOYXZpZ2F0CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTmF2aWdhdGlvblR5cGU6OkJhY2tG
b3J3YXJkOgogICAgIGNhc2UgTmF2aWdhdGlvblR5cGU6OlJlbG9hZDoKKyAgICBjYXNlIE5hdmln
YXRpb25UeXBlOjpDbGllbnRSZWRpcmVjdDoKICAgICBjYXNlIE5hdmlnYXRpb25UeXBlOjpPdGhl
cjoKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ2OTAyZmYuLjdiNzYwZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0w
NC0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEg
bmV3IE5hdmlnYXRpb25UeXBlIGZvciBjbGllbnQgcmVkaXJlY3RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUG9s
aWN5RGVsZWdhdGUubW06CisgICAgICAgICgtW1BvbGljeURlbGVnYXRlIF93YW50c1ByaXZhdGVO
YXZpZ2F0aW9uVHlwZXNdKTogSW1wbGVtZW50IGFuZCByZXR1cm4gWUVTIHRvIG9wdCBpbiB0byB0
aGUgbmV3IEZyYW1lTG9hZFR5cGUKKyAgICAgICAgKC1bUG9saWN5RGVsZWdhdGUgd2ViVmlldzpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJhbWU6ZGVjaXNpb25MaXN0
ZW5lcjpdKTogSGFuZGxlIHRoZQorICAgICAgICAgICJjbGllbnQgcmVkaXJlY3QiIGZyYW1lIGxv
YWQgdHlwZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6TmF2aWdhdGlvblR5cGVUb1N0cmlu
Zyk6IEhhbmRsZSB0aGUgImNsaWVudCByZWRpcmVjdCIgZnJhbWUgbG9hZCB0eXBlLgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZSk6IEJ1bXAgdG8g
dGhlIG5ldyBjbGllbnQgdmVyc2lvbiB0byBvcHQgaW4gdG8gdGhlIG5ldyBGcmFtZUxvYWRUeXBl
LgorCiAyMDE1LTA0LTI3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjE4Mjg3OSk6IEltYWdlcyBhbmQgdmlkZW8gY2FuIG5vIGxvbmdl
ciBiZSBkb3dubG9hZGVkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9s
aWN5RGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5RGVsZWdhdGUu
bW0KaW5kZXggYmU4MTZjYy4uZjZlOTYzMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1BvbGljeURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Q
b2xpY3lEZWxlZ2F0ZS5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCA8V2ViS2l0L0RPTUVs
ZW1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YlBvbGljeURlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViUG9saWN5RGVsZWdhdGVQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgogCiBAaW50ZXJmYWNlIE5TVVJMIChE
UlRFeHRyYXMpCkBAIC00NiwxMiArNDcsMTcgQEAKIAogQGltcGxlbWVudGF0aW9uIFBvbGljeURl
bGVnYXRlCiAKKy0gKEJPT0wpX3dhbnRzUHJpdmF0ZU5hdmlnYXRpb25UeXBlcworeworICAgIHJl
dHVybiBZRVM7Cit9CisKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooTlNEaWN0aW9uYXJ5ICopYWN0aW9uSW5mb3JtYXRp
b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlY2lzaW9uTGlzdGVuZXI6KGlkPFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXI+KWxpc3Rl
bmVyCiB7Ci0gICAgV2ViTmF2aWdhdGlvblR5cGUgbmF2VHlwZSA9IChXZWJOYXZpZ2F0aW9uVHlw
ZSlbW2FjdGlvbkluZm9ybWF0aW9uIG9iamVjdEZvcktleTpXZWJBY3Rpb25OYXZpZ2F0aW9uVHlw
ZUtleV0gaW50VmFsdWVdOworICAgIE5TSW50ZWdlciBuYXZUeXBlID0gW1thY3Rpb25JbmZvcm1h
dGlvbiBvYmplY3RGb3JLZXk6V2ViQWN0aW9uTmF2aWdhdGlvblR5cGVLZXldIGludGVnZXJWYWx1
ZV07CiAKICAgICBjb25zdCBjaGFyKiB0eXBlRGVzY3JpcHRpb247CiAgICAgc3dpdGNoIChuYXZU
eXBlKSB7CkBAIC03Myw2ICs3OSw5IEBACiAgICAgICAgIGNhc2UgV2ViTmF2aWdhdGlvblR5cGVP
dGhlcjoKICAgICAgICAgICAgIHR5cGVEZXNjcmlwdGlvbiA9ICJvdGhlciI7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJOYXZpZ2F0aW9uVHlwZUNsaWVudFJlZGlyZWN0Ogor
ICAgICAgICAgICAgdHlwZURlc2NyaXB0aW9uID0gImNsaWVudCByZWRpcmVjdCI7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHR5cGVEZXNjcmlwdGlv
biA9ICJpbGxlZ2FsIHZhbHVlIjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXgg
YjhiODI2ZS4uMzM5OTQ4NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtMTcwLDYgKzE3
MCw4IEBAIHN0YXRpYyBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gTmF2aWdhdGlvblR5cGVUb1N0
cmluZyhXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdHlwCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJyZWxvYWQiKSk7CiAgICAgY2FzZSBrV0tGcmFt
ZU5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkOgogICAgICAgICByZXR1cm4gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZm9ybSByZXN1Ym1pdHRlZCIpKTsKKyAgICBj
YXNlIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVDbGllbnRSZWRpcmVjdDoKKyAgICAgICAgcmV0dXJu
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNsaWVudCByZWRpcmVjdCIp
KTsKICAgICBjYXNlIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVPdGhlcjoKICAgICAgICAgcmV0dXJu
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIm90aGVyIikpOwogICAgIH0K
QEAgLTMyMiw4ICszMjQsOCBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFn
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldFJlc291
cmNlTG9hZENsaWVudChtX3BhZ2UsICZyZXNvdXJjZUxvYWRDbGllbnQuYmFzZSk7CiAKLSAgICBX
S0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRWMCBwb2xpY3lDbGllbnQgPSB7Ci0gICAgICAgIHsgMCwg
dGhpcyB9LAorICAgIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudFYxIHBvbGljeUNsaWVudCA9IHsK
KyAgICAgICAgeyAxLCB0aGlzIH0sCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24sCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbiwKICAgICAgICAg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252062</attachid>
            <date>2015-04-30 09:19:12 -0700</date>
            <delta_ts>2015-05-01 09:35:20 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43698</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTU5Yjg3Li4yNTM4MTZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMDQt
MjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG5l
dyBOYXZpZ2F0aW9uVHlwZSBmb3IgbWV0YSByZWZyZXNoLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9yZWRpcmVjdC10by1pbnZh
bGlkLXVybC11c2luZy1tZXRhLXJlZnJlc2gtY2FsbHMtcG9saWN5LWRlbGVnYXRlLWV4cGVjdGVk
LnR4dDogVXBkYXRlIGZvciB0aGUgbmV3ICJjbGllbnQgcmVkaXJlY3QiIGNhc2UuCisgICAgICAg
ICogaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1tZXRhLXJlZnJlc2gtZmFzdC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdh
dGUtbWV0YS1yZWZyZXNoLWZhc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9t
aXNjL3BvbGljeS1kZWxlZ2F0ZS1tZXRhLXJlZnJlc2gtc2xvdy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtbWV0YS1yZWZyZXNo
LXNsb3cuaHRtbDogQWRkZWQuCisgICAgICAgIAorICAgICAgICBXZSBkb24ndCBuZWVkIHRvIHN1
cHBvcnQgdGhlIG5ldyBGcmFtZUxvYWRUeXBlcyBvbiBXaW5kb3dzIHJpZ2h0IG5vdzoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9sb2FkZXIvcmVkaXJlY3QtdG8taW52YWxpZC11cmwtdXNp
bmctbWV0YS1yZWZyZXNoLWNhbGxzLXBvbGljeS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQ6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3JlZGlyZWN0LXRvLWludmFsaWQtdXJsLXVz
aW5nLW1ldGEtcmVmcmVzaC1jYWxscy1wb2xpY3ktZGVsZWdhdGUtZXhwZWN0ZWQudHh0LgorCiAy
MDE1LTA0LTI3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzE2Njc4MzkyIFBhZ2UgdmlzaWJpbGl0eSB0ZXN0cyBhcmUgYnJva2Vu
IGluIFlvc2VtaXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZWRpcmVj
dC10by1pbnZhbGlkLXVybC11c2luZy1tZXRhLXJlZnJlc2gtY2FsbHMtcG9saWN5LWRlbGVnYXRl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3JlZGlyZWN0LXRvLWludmFs
aWQtdXJsLXVzaW5nLW1ldGEtcmVmcmVzaC1jYWxscy1wb2xpY3ktZGVsZWdhdGUtZXhwZWN0ZWQu
dHh0CmluZGV4IGVhYTVhMGYuLjQxOWQ1NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3JlZGlyZWN0LXRvLWludmFsaWQtdXJsLXVzaW5nLW1ldGEtcmVmcmVzaC1jYWxscy1w
b2xpY3ktZGVsZWdhdGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3JlZGlyZWN0LXRvLWludmFsaWQtdXJsLXVzaW5nLW1ldGEtcmVmcmVzaC1jYWxscy1wb2xpY3kt
ZGVsZWdhdGUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotUG9saWN5IGRlbGVnYXRlOiBh
dHRlbXB0IHRvIGxvYWQgaHR0cDovL0E9YSZCPWIgd2l0aCBuYXZpZ2F0aW9uIHR5cGUgJ290aGVy
JworUG9saWN5IGRlbGVnYXRlOiBhdHRlbXB0IHRvIGxvYWQgaHR0cDovL0E9YSZCPWIgd2l0aCBu
YXZpZ2F0aW9uIHR5cGUgJ21ldGEgcmVmcmVzaCcKIFRlc3RzIHRoYXQgd2UgZG8gbm90IHJlZGly
ZWN0IHRvIGFuIGludmFsaWQgVVJMIGluaXRpYXRlZCBieSA8bWV0YSBodHRwLWVxdWl2PSJyZWZy
ZXNoIj4uIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSBhbiBlbnRyeSBpbiB0aGUgZHVtcGVk
IGZyYW1lIGxvYWQgY2FsbGJhY2tzIG9mIHRoZSBmb3JtOiAid2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdFRvVVJMOiBodHRwOi8vQT1hJkI9YiIgZm9sbG93ZWQgYnkgImRpZENhbmNlbENsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUiLgogCiBOb3RlLCB0aGlzIHRlc3QgbXVzdCBiZSBydW4gaW4gRHVtcFJl
bmRlclRyZWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcG9saWN5
LWRlbGVnYXRlLW1ldGEtcmVmcmVzaC1mYXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtbWV0YS1yZWZyZXNoLWZhc3QtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjIyNzcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcG9saWN5LWRlbGVnYXRlLW1l
dGEtcmVmcmVzaC1mYXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1BvbGljeSBkZWxl
Z2F0ZTogYXR0ZW1wdCB0byBsb2FkIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbm90
aWZ5LWRvbmUuaHRtbCB3aXRoIG5hdmlnYXRpb24gdHlwZSAnbWV0YSByZWZyZXNoJworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcG9saWN5LWRlbGVnYXRlLW1ldGEt
cmVmcmVzaC1mYXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcG9saWN5LWRl
bGVnYXRlLW1ldGEtcmVmcmVzaC1mYXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZTMzZmJlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtbWV0YS1yZWZyZXNoLWZhc3QuaHRtbApAQCAtMCwwICsx
LDExIEBACis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRydWUsIHRydWUpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQor
PC9zY3JpcHQ+Cis8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwOyB1cmw9aHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sIj4KKzwvaGVhZD4K
KzwhLS1UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgcXVpY2sgbWV0YSByZWZyZXNoIHJlcG9y
dHMgdGhlIGNvcnJlY3QgbG9hZCB0eXBlIHRvIHRoZSBwb2xpY3kgZGVsZWdhdGUuIEl0IGNhbiBv
bmx5IGJlIHJ1biBhcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcmVncmVzc2lvbiB0ZXN0cy0tPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1tZXRh
LXJlZnJlc2gtc2xvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
cG9saWN5LWRlbGVnYXRlLW1ldGEtcmVmcmVzaC1zbG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YyMjc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1tZXRhLXJlZnJlc2gtc2xv
dy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitQb2xpY3kgZGVsZWdhdGU6IGF0dGVtcHQg
dG8gbG9hZCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwg
d2l0aCBuYXZpZ2F0aW9uIHR5cGUgJ21ldGEgcmVmcmVzaCcKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1tZXRhLXJlZnJlc2gtc2xvdy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1tZXRhLXJl
ZnJlc2gtc2xvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZGQ3
ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcG9saWN5
LWRlbGVnYXRlLW1ldGEtcmVmcmVzaC1zbG93Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGhlYWQ+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5zZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZSh0cnVlLCB0cnVlKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKzwvc2NyaXB0PgorPG1l
dGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMjsgdXJsPWh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9yZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbCI+Cis8L2hlYWQ+Cis8IS0tVGhpcyB0ZXN0
IG1ha2VzIHN1cmUgdGhhdCBhIHNsb3cgbWV0YSByZWZyZXNoIHJlcG9ydHMgdGhlIGNvcnJlY3Qg
bG9hZCB0eXBlIHRvIHRoZSBwb2xpY3kgZGVsZWdhdGUuIEl0IGNhbiBvbmx5IGJlIHJ1biBhcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgcmVncmVzc2lvbiB0ZXN0cy0tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvbG9hZGVyL3JlZGlyZWN0LXRvLWludmFsaWQtdXJsLXVz
aW5nLW1ldGEtcmVmcmVzaC1jYWxscy1wb2xpY3ktZGVsZWdhdGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvbG9hZGVyL3JlZGlyZWN0LXRvLWludmFsaWQtdXJs
LXVzaW5nLW1ldGEtcmVmcmVzaC1jYWxscy1wb2xpY3ktZGVsZWdhdGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYTVhMGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9sb2FkZXIvcmVkaXJlY3QtdG8taW52
YWxpZC11cmwtdXNpbmctbWV0YS1yZWZyZXNoLWNhbGxzLXBvbGljeS1kZWxlZ2F0ZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitQb2xpY3kgZGVsZWdhdGU6IGF0dGVtcHQgdG8gbG9hZCBo
dHRwOi8vQT1hJkI9YiB3aXRoIG5hdmlnYXRpb24gdHlwZSAnb3RoZXInCitUZXN0cyB0aGF0IHdl
IGRvIG5vdCByZWRpcmVjdCB0byBhbiBpbnZhbGlkIFVSTCBpbml0aWF0ZWQgYnkgPG1ldGEgaHR0
cC1lcXVpdj0icmVmcmVzaCI+LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgYW4gZW50cnkg
aW4gdGhlIGR1bXBlZCBmcmFtZSBsb2FkIGNhbGxiYWNrcyBvZiB0aGUgZm9ybTogIndpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovL0E9YSZCPWIiIGZvbGxvd2VkIGJ5ICJkaWRD
YW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lIi4KKworTm90ZSwgdGhpcyB0ZXN0IG11c3QgYmUg
cnVuIGluIER1bXBSZW5kZXJUcmVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNhYWU3NGIuLmRlNzU3OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxNS0wNC0yOSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IE5hdmlnYXRpb25UeXBlIGZvciBt
ZXRhIHJlZnJlc2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0czogaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1tZXRhLXJlZnJlc2gt
ZmFzdC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvcG9saWN5LWRlbGVnYXRl
LW1ldGEtcmVmcmVzaC1zbG93Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAgIAor
ICAgICAgICBBbGxvdyBGcmFtZUxvYWRSZXF1ZXN0IHRvIGhvbGQgYSBwcmVzZXQgRnJhbWVMb2Fk
VHlwZSB3aGljaCAtIGZvciBub3cgLSB3aWxsIG9ubHkgYmUgdXNlZCBmb3IgTWV0YVJlZnJlc2g6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkUmVxdWVzdDo6c2V0RnJhbWVMb2FkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRSZXF1ZXN0OjpmcmFtZUxvYWRUeXBlKTogRWl0aGVyIHJldHVybiB0aGUgcHJl
c2V0IGxvYWQgdHlwZSwgb3IgY2FsY3VsYXRlIGl0IGJhc2VkIG9uIGV4aXN0aW5nIEZyYW1lTG9h
ZGVyIGxvZ2ljLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0OjpGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAg
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
QmFja0ZvcndhcmRMb2FkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVj
ZWl2ZWRGaXJzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFt
ZVJlcXVlc3QpOiBJbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIGEgRnJhbWVMb2FkVHlwZSBoZXJlLCB1
c2UgdGhlIHR5cGUgcmV0dXJuZWQgZnJvbSBGcmFtZUxvYWRSZXF1ZXN0LgorICAgICAgICAoV2Vi
Q29yZTo6bG9nTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkKTogSGFuZGxlIE1ldGFSZWZyZXNoLCBhbmQgYWRkIGEgbmV3IGNh
c2UgZm9yIE1ldGFSZWZyZXNoV2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdC4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5KToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3Jl
RG9jdW1lbnRTdGF0ZSk6CisKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpuYXZpZ2F0aW9uVHlwZSk6CisKKyAgICAgICAgKiBsb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRSZWRp
cmVjdDo6U2NoZWR1bGVkUmVkaXJlY3QpOiBJZiB0aGUgcmVkaXJlY3QgaXMgYSBtZXRhIHJlZnJl
c2gsIHNldCB0aGUgRnJhbWVMb2FkVHlwZSBvbiB0aGUgRnJhbWVMb2FkUmVxdWVzdC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgorICAg
ICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisKIDIwMTUtMDQtMjggIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENvbnNvbGlkYXRlIG1vc3Qg
ImZyYW1lIGxvYWQiIGFyZ3VtZW50cyBpbnRvIEZyYW1lTG9hZFJlcXVlc3QuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBmNzdhNWRlLi5mYmIyOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTMwMTEsNyArMzAxMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYo
Y29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmlu
Zyk7CiAgICAgICAgICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVSTCkp
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJl
ZGlyZWN0KGRlbGF5LCBjb21wbGV0ZWRVUkwpOworICAgICAgICAgICAgICAgIGZyYW1lLT5uYXZp
Z2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkZWxheSwgY29tcGxldGVkVVJMLCBO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpSZWRpcmVjdFR5cGU6Ok1ldGFSZWZyZXNoKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8g
cmVmcmVzaCAiICsgbV91cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiIHRv
IGEgamF2YXNjcmlwdDogVVJMIjsKICAgICAgICAgICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAKaW5kZXggN2I5NzRiMC4u
N2ZhOTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcApA
QCAtNTAsNCArNTAsMjQgQEAgRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChGcmFt
ZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2UKIHsKIH0KIAorRnJhbWVM
b2FkVHlwZSBGcmFtZUxvYWRSZXF1ZXN0OjpmcmFtZUxvYWRUeXBlKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9mcmFtZUxvYWRUeXBlKQorICAgICAgICByZXR1cm4gbV9mcmFtZUxvYWRUeXBlLnZhbHVl
KCk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHRoYXQgYXR0ZW1wdHMgdG8gZ3Vlc3MgdGhl
IGFwcHJvcHJpYXRlIEZyYW1lTG9hZFR5cGUgaXMgYmFzZWQgb24gdGhlIGxvZ2ljIHRoYXQgd2Fz
IG9uY2UKKyAgICAvLyBpbiBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoKSB3aGljaCBpcyBvbmx5
ICpvbmUqIG9mIHRoZSBtYW55IEZyYW1lTG9hZGVyIG1ldGhvZHMgdGhhdCBwZXJmb3JtcyBhIGxv
YWQKKyAgICAvLyBhbmQgcmVxdWlyZXMgYSBGcmFtZUxvYWRUeXBlLgorICAgIC8vIEdvaW5nIGZv
cndhcmQgd2UgbmVlZCB0byByZW1vdmUgdGhlIG5lZWQgZm9yIHRoaXMgImd1ZXNzaW5nIiBjb2Rl
IGJ5IGZvcmNpbmcgYWxsIGNyZWF0b3JzIG9mIEZyYW1lTG9hZFJlcXVlc3RzCisgICAgLy8gdG8g
ZXhwbGljaXRseSBzZXQgdGhlaXIgRnJhbWVMb2FkVHlwZS4KKworICAgIGlmIChtX3Jlc291cmNl
UmVxdWVzdC5jYWNoZVBvbGljeSgpID09IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKQorICAgICAg
ICByZXR1cm4gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOworCisgICAgaWYgKG1fbG9ja0JhY2tGb3J3
YXJkTGlzdCA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCisgICAgICAgIHJldHVybiBGcmFt
ZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q7CisKKyAgICByZXR1
cm4gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCmluZGV4IDY0NTg4ZDEyLi5k
YjQ4NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwpAQCAtMTA0
LDYgKzEwNSw5IEBAIHB1YmxpYzoKICAgICAvLyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlciBmcm9t
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoKSBpcyBhZGRyZXNzZWQu
CiAgICAgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmVwbGFjZURv
Y3VtZW50SWZKYXZhU2NyaXB0VVJMOyB9CiAKKyAgICBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5
cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEZyYW1lTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBmcmFt
ZUxvYWRUeXBlKSB7IG1fZnJhbWVMb2FkVHlwZSA9IGZyYW1lTG9hZFR5cGU7IH0KKwogcHJpdmF0
ZToKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fcmVxdWVzdGVyOwogICAgIFJlc291cmNl
UmVxdWVzdCBtX3Jlc291cmNlUmVxdWVzdDsKQEAgLTExNyw2ICsxMjEsNyBAQCBwcml2YXRlOgog
ICAgIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBtX2FsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTDsKICAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBtX25ld0ZyYW1lT3BlbmVyUG9saWN5Owog
ICAgIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBtX3Nob3VsZFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTDsKKyAgICBPcHRpb25hbDxGcmFtZUxvYWRUeXBlPiBtX2Zy
YW1lTG9hZFR5cGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCA3Yzg4MzljLi45OTNiNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTE1Myw2ICsxNTMsOCBAQCBib29sIGlzQmFja0ZvcndhcmRMb2FkVHlwZShGcmFtZUxv
YWRUeXBlIHR5cGUpCiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgogICAgIGNhc2UgRnJh
bWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6Ok1ldGFSZWZy
ZXNoOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6TWV0YVJlZnJlc2hXaXRoTG9ja2VkQmFja0Zv
cndhcmRMaXN0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBl
OjpCYWNrOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6Rm9yd2FyZDoKQEAgLTY3Miw3ICs2NzQs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiAgICAgICAgIGNvbXBs
ZXRlZFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAog
ICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKLSAgICAgICAgbV9m
cmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkZWxheSwgY29tcGxl
dGVkVVJMKTsKKyAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVS
ZWRpcmVjdChkZWxheSwgY29tcGxldGVkVVJMLCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpSZWRpcmVj
dFR5cGU6OlNlcnZlcik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJl
ZnVzZWQgdG8gcmVmcmVzaCAiICsgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBVUkwiOwogICAgICAg
ICBtX2ZyYW1lLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNl
Y3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKQEAgLTExNjEsMTggKzExNjMs
MTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxvYWRS
ZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEUKICAgICBpZiAocmVxdWVzdC5zaG91bGRTZW5k
UmVmZXJyZXIoKSA9PSBOZXZlclNlbmRSZWZlcnJlcikKICAgICAgICAgcmVmZXJyZXIgPSBTdHJp
bmcoKTsKIAotICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGU7Ci0gICAgaWYgKHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSA9PSBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSkK
LSAgICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7Ci0gICAgZWxzZSBpZiAo
cmVxdWVzdC5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVz
KQotICAgICAgICBsb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJh
Y2tGb3J3YXJkTGlzdDsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRUeXBlID0gRnJhbWVMb2FkVHlw
ZTo6U3RhbmRhcmQ7Ci0KICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0
aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICBsb2FkUG9zdFJlcXVlc3QocmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSwgcmVmZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIHJlcXVlc3QubG9ja0hp
c3RvcnkoKSwgbG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUuZ2V0KCksIHJlcXVlc3QuYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMKCksIHJlcXVlc3QubmV3RnJhbWVPcGVuZXJQb2xpY3koKSk7
CisgICAgICAgIGxvYWRQb3N0UmVxdWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZWZl
cnJlciwgcmVxdWVzdC5mcmFtZU5hbWUoKSwgcmVxdWVzdC5sb2NrSGlzdG9yeSgpLCByZXF1ZXN0
LmZyYW1lTG9hZFR5cGUoKSwgZXZlbnQsIGZvcm1TdGF0ZS5nZXQoKSwgcmVxdWVzdC5hbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwoKSwgcmVxdWVzdC5uZXdGcmFtZU9wZW5lclBvbGljeSgpKTsK
ICAgICBlbHNlCi0gICAgICAgIGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwo
KSwgcmVmZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIHJlcXVlc3QubG9ja0hpc3RvcnkoKSwg
bG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUuZ2V0KCksIHJlcXVlc3QuYWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMKCksIHJlcXVlc3QubmV3RnJhbWVPcGVuZXJQb2xpY3koKSk7CisgICAgICAg
IGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgcmVmZXJyZXIsIHJlcXVl
c3QuZnJhbWVOYW1lKCksIHJlcXVlc3QubG9ja0hpc3RvcnkoKSwgcmVxdWVzdC5mcmFtZUxvYWRU
eXBlKCksIGV2ZW50LCBmb3JtU3RhdGUuZ2V0KCksIHJlcXVlc3QuYWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMKCksIHJlcXVlc3QubmV3RnJhbWVPcGVuZXJQb2xpY3koKSk7CiAKICAgICAvLyBG
SVhNRTogSXQncyBwb3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90IGJlIHRoZSBzYW1l
IGZyYW1lIHRoYXQgd2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAvLyBsb2FkIGlmIGZy
YW1lIG5hbWVzIGhhdmUgY2hhbmdlZC4KQEAgLTEzODQsNiArMTM3OCw4IEBAIHN0YXRpYyB2b2lk
IGxvZ05hdmlnYXRpb24oTWFpbkZyYW1lJiBmcmFtZSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogICAg
IGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKICAgICAgICAgbmF2aWdhdGlv
bkRlc2NyaXB0aW9uID0gQVNDSUlMaXRlcmFsKCJyZWxvYWRGcm9tT3JpZ2luIik7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6TWV0YVJlZnJlc2g6CisgICAgY2FzZSBG
cmFtZUxvYWRUeXBlOjpNZXRhUmVmcmVzaFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q6CiAgICAg
Y2FzZSBGcmFtZUxvYWRUeXBlOjpSZXBsYWNlOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVk
aXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgICAgICAvLyBOb3QgbG9nZ2luZyB0
aG9zZSBmb3Igbm93LgpAQCAtMTkzOCw2ICsxOTM0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UpCiAgICAgICAgIG1fY2xp
ZW50LnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6Ok1ldGFSZWZyZXNoOgogICAgIGNhc2UgRnJhbWVMb2Fk
VHlwZTo6U3RhbmRhcmQ6CiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JTdGFuZGFyZExvYWQo
KTsKICAgICAgICAgaWYgKG1fZnJhbWUudmlldygpKQpAQCAtMTk0NSwxNSArMTk0MiwxNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVk
UGFnZSkKICAgICAgICAgbV9jbGllbnQudHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0OgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6TWV0YVJlZnJl
c2hXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgICAgICBoaXN0b3J5KCkudXBkYXRlRm9y
UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIGlmIChtX2ZyYW1l
LnZpZXcoKSkKKyAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRTY3JvbGxiYXJzU3VwcHJl
c3NlZCh0cnVlKTsKICAgICAgICAgbV9jbGllbnQudHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3
UGFnZSgpOwogICAgICAgICBicmVhazsKIAotICAgIC8vIEZJWE1FIFJlbW92ZSB0aGlzIGNoZWNr
IHdoZW4gZHVtbXkgZHMgaXMgcmVtb3ZlZCAod2hhdGV2ZXIgImR1bW15IGRzIiBpcykuCi0gICAg
Ly8gQW4gZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gaWYgd2UncmUgaW4gdGhlIEZyYW1lTG9h
ZFR5cGVVbmluaXRpYWxpemVkIHN0YXRlLgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2Vk
QmFja0ZvcndhcmRMaXN0OgorICAgICAgICBoaXN0b3J5KCkudXBkYXRlRm9yUmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIG1fY2xpZW50LnRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZvck5ld1BhZ2UoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgbV9kb2N1
bWVudExvYWRlci0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoZGwtPnJlc3BvbnNlTUlNRVR5cGUoKSk7
CkBAIC0yMTU3LDYgKzIxNTYsOCBAQCBDYWNoZVBvbGljeSBGcmFtZUxvYWRlcjo6c3VicmVzb3Vy
Y2VDYWNoZVBvbGljeSgpIGNvbnN0CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZXBsYWNlOgog
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0
YW5kYXJkOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6TWV0YVJlZnJlc2g6CisgICAgY2FzZSBG
cmFtZUxvYWRUeXBlOjpNZXRhUmVmcmVzaFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q6CiAgICAg
ICAgIHJldHVybiBDYWNoZVBvbGljeVZlcmlmeTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IDRlZjhhYjYuLjJkNjk4ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaApAQCAtNDUsNiArNDUsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBQb2xpY3lJZ25vcmUKICAgICB9OwogCisvLyBGSVhNRTog
RnJhbWVMb2FkZXIgY3VycmVudGx5IGhhbmdzIG9uIHRvIGl0cyBjdXJyZW50IEZyYW1lTG9hZFR5
cGUsIHdoaWNoIGZvcmNlcyB1cyB0byByZW1lbWJlcgorLy8gdGhpbmdzIGxpa2UgIlJlZGlyZWN0
V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCIsICJDbGllbnRSZWRpcmVjdCIsIGFuZCAiQ2xpZW50
UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0IgorLy8gQWxsIG9mIHRoZXNlIGxpdHRs
ZSBiaXRzIG9mIGRhdGEgYXJlIG5vdyBrZXB0IGluc2lkZSBGcmFtZUxvYWRSZXF1ZXN0LCBhbmQg
bWFueSBwbGFjZXMgdGhhdCBoYW5nIG9uIHRvIGEgRnJhbWVMb2FkVHlwZQorLy8gc2hvdWxkIGJl
IGhhbmdpbmcgb24gdG8gb25lIG9mIHRob3NlIGluc3RlYWQuCisvLyBUaGVuIHdlIGNhbiBzaW1w
bGlmeSBkb3duIHRoZSBudW1iZXIgb2YgRnJhbWVMb2FkVHlwZXMuCiBlbnVtIGNsYXNzIEZyYW1l
TG9hZFR5cGUgewogICAgIFN0YW5kYXJkLAogICAgIEJhY2ssCkBAIC01Miw5ICs1NywxMSBAQCBl
bnVtIGNsYXNzIEZyYW1lTG9hZFR5cGUgewogICAgIEluZGV4ZWRCYWNrRm9yd2FyZCwgLy8gYSBt
dWx0aS1pdGVtIGhvcCBpbiB0aGUgYmFja2ZvcndhcmQgbGlzdAogICAgIFJlbG9hZCwKICAgICBT
YW1lLCAvLyB1c2VyIGxvYWRzIHNhbWUgVVJMIGFnYWluIChidXQgbm90IHJlbG9hZCBidXR0b24p
Ci0gICAgUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCAvLyBGSVhNRTogTWVyZ2Ug
ImxvY2tCYWNrRm9yd2FyZExpc3QiLCAibG9ja0hpc3RvcnkiLCAicXVpY2tSZWRpcmVjdCIgYW5k
ICJjbGllbnRSZWRpcmVjdCIgaW50byBhIHNpbmdsZSBjb25jZXB0IG9mIHJlZGlyZWN0LgorICAg
IFJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwKICAgICBSZXBsYWNlLAogICAgIFJl
bG9hZEZyb21PcmlnaW4sCisgICAgTWV0YVJlZnJlc2gsCisgICAgTWV0YVJlZnJlc2hXaXRoTG9j
a2VkQmFja0ZvcndhcmRMaXN0LAogfTsKIAogZW51bSBjbGFzcyBOZXdGcmFtZU9wZW5lclBvbGlj
eSB7CkBAIC02OCw2ICs3NSw3IEBAIGVudW0gY2xhc3MgTmF2aWdhdGlvblR5cGUgewogICAgIEJh
Y2tGb3J3YXJkLAogICAgIFJlbG9hZCwKICAgICBGb3JtUmVzdWJtaXR0ZWQsCisgICAgTWV0YVJl
ZnJlc2gsCiAgICAgT3RoZXIKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCmluZGV4IDc2YTA5NjQuLjRiZDA4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMjEwLDYgKzIxMCw4IEBAIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKCkKICAgICBjYXNlIEZyYW1lTG9h
ZFR5cGU6OlJlbG9hZEZyb21PcmlnaW46CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgog
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
Ok1ldGFSZWZyZXNoOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6TWV0YVJlZnJlc2hXaXRoTG9j
a2VkQmFja0ZvcndhcmRMaXN0OgogICAgICAgICAvLyBOb3QgcmVzdG9yaW5nIHRoZSBkb2N1bWVu
dCBzdGF0ZS4KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA4MzdlYmRk
Li5mNTIwZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3Bw
CkBAIC0zNyw2ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5hdmlnYXRp
b25UeXBlIG5hdmlnYXRpb25UeXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBp
c0Zvcm1TdWJtaXNzaW9uLCBib29sIGhhdmVFdmVudCkKIHsKKyAgICBpZiAoZnJhbWVMb2FkVHlw
ZSA9PSBGcmFtZUxvYWRUeXBlOjpNZXRhUmVmcmVzaCB8fCBmcmFtZUxvYWRUeXBlID09IEZyYW1l
TG9hZFR5cGU6Ok1ldGFSZWZyZXNoV2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCkKKyAgICAgICAg
cmV0dXJuIE5hdmlnYXRpb25UeXBlOjpNZXRhUmVmcmVzaDsKICAgICBpZiAoaXNGb3JtU3VibWlz
c2lvbikKICAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25UeXBlOjpGb3JtU3VibWl0dGVkOwogICAg
IGlmIChoYXZlRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5jcHAKaW5kZXggY2Y3YmRhYi4uODRmOThmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMTU0LDggKzE1NCw5IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFNjaGVkdWxlZFJlZGlyZWN0IDogcHVibGljIFNjaGVkdWxlZFVSTE5hdmlnYXRp
b24gewogcHVibGljOgotICAgIFNjaGVkdWxlZFJlZGlyZWN0KGRvdWJsZSBkZWxheSwgU2VjdXJp
dHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBVUkwmIHVybCwgTG9ja0hpc3RvcnkgbG9j
a0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCkKKyAgICBT
Y2hlZHVsZWRSZWRpcmVjdChkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbiwgY29uc3QgVVJMJiB1cmwsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0Zv
cndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIE5hdmlnYXRpb25TY2hlZHVsZXI6OlJlZGly
ZWN0VHlwZSByZWRpcmVjdFR5cGUpCiAgICAgICAgIDogU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihk
ZWxheSwgc2VjdXJpdHlPcmlnaW4sIHVybCwgU3RyaW5nKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0LCBmYWxzZSwgZmFsc2UpCisgICAgICAgICwgbV9yZWRpcmVjdFR5cGUocmVk
aXJlY3RUeXBlKQogICAgIHsKICAgICAgICAgY2xlYXJVc2VyR2VzdHVyZSgpOwogICAgIH0KQEAg
LTE3Miw4ICsxNzMsMTggQEAgcHVibGljOgogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3Vy
Y2VSZXF1ZXN0KHVybCgpLCByZWZlcnJlcigpLCByZWZyZXNoID8gUmVsb2FkSWdub3JpbmdDYWNo
ZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KTsKICAgICAgICAgRnJhbWVMb2FkUmVxdWVz
dCBmcmFtZVJlcXVlc3Qoc2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCBsb2NrSGlz
dG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5vLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOwog
CisgICAgICAgIGlmIChtX3JlZGlyZWN0VHlwZSA9PSBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpSZWRp
cmVjdFR5cGU6Ok1ldGFSZWZyZXNoICYmICFyZWZyZXNoKSB7CisgICAgICAgICAgICBpZiAobG9j
a0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcykKKyAgICAgICAg
ICAgICAgICBmcmFtZVJlcXVlc3Quc2V0RnJhbWVMb2FkVHlwZShGcmFtZUxvYWRUeXBlOjpNZXRh
UmVmcmVzaFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGZyYW1lUmVxdWVzdC5zZXRGcmFtZUxvYWRUeXBlKEZyYW1lTG9hZFR5cGU6
Ok1ldGFSZWZyZXNoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZyYW1lLmxvYWRlcigpLmNoYW5n
ZUxvY2F0aW9uKGZyYW1lUmVxdWVzdCk7CiAgICAgfQorCitwcml2YXRlOgorICAgIE5hdmlnYXRp
b25TY2hlZHVsZXI6OlJlZGlyZWN0VHlwZSBtX3JlZGlyZWN0VHlwZTsKIH07CiAKIGNsYXNzIFNj
aGVkdWxlZExvY2F0aW9uQ2hhbmdlIDogcHVibGljIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gewpA
QCAtMzUzLDcgKzM2NCw3IEBAIGlubGluZSBib29sIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNob3Vs
ZFNjaGVkdWxlTmF2aWdhdGlvbihjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gTmF2
aWdhdGlvbkRpc2FibGVyRm9yQmVmb3JlVW5sb2FkOjppc05hdmlnYXRpb25BbGxvd2VkKCk7CiB9
CiAKLXZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVs
YXksIGNvbnN0IFVSTCYgdXJsKQordm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJl
ZGlyZWN0KGRvdWJsZSBkZWxheSwgY29uc3QgVVJMJiB1cmwsIFJlZGlyZWN0VHlwZSByZWRpcmVj
dFR5cGUpCiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24odXJsKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzY1LDcgKzM3Niw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6
c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFVSTCYgdXJsKQogICAgIC8vIFdl
IHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0
IGlzID4gMSBzZWNvbmQuCiAgICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJl
Y3QtPmRlbGF5KCkpIHsKICAgICAgICAgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0Zvcndh
cmRMaXN0ID0gZGVsYXkgPD0gMSA/IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyA6IExvY2tCYWNr
Rm9yd2FyZExpc3Q6Ok5vOwotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVk
dWxlZFJlZGlyZWN0PihkZWxheSwgbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKKyAgICAgICAg
c2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oZGVsYXksIG1fZnJh
bWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBs
b2NrQmFja0ZvcndhcmRMaXN0LCByZWRpcmVjdFR5cGUpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCmluZGV4IDRhZTViMTAuLjVjY2Mz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaApAQCAt
NjMsMTMgKzYzLDE4IEBAIHByaXZhdGU6CiAKIGNsYXNzIE5hdmlnYXRpb25TY2hlZHVsZXIgewog
cHVibGljOgorICAgIGVudW0gY2xhc3MgUmVkaXJlY3RUeXBlIHsKKyAgICAgICAgTWV0YVJlZnJl
c2gsCisgICAgICAgIFNlcnZlciwKKyAgICB9OworCiAgICAgZXhwbGljaXQgTmF2aWdhdGlvblNj
aGVkdWxlcihGcmFtZSYpOwogICAgIH5OYXZpZ2F0aW9uU2NoZWR1bGVyKCk7CiAKICAgICBib29s
IHJlZGlyZWN0U2NoZWR1bGVkRHVyaW5nTG9hZCgpOwogICAgIGJvb2wgbG9jYXRpb25DaGFuZ2VQ
ZW5kaW5nKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlUmVkaXJlY3QoZG91YmxlIGRlbGF5LCBjb25z
dCBVUkwmKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVkaXJlY3QoZG91YmxlIGRlbGF5LCBjb25zdCBV
UkwmLCBSZWRpcmVjdFR5cGUpOwogICAgIHZvaWQgc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0
b3J5ID0gTG9ja0hpc3Rvcnk6OlllcywgTG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNrRm9y
d2FyZExpc3Q6Olllcyk7CiAgICAgdm9pZCBzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQ
dHI8Rm9ybVN1Ym1pc3Npb24+KTsKICAgICB2b2lkIHNjaGVkdWxlUmVmcmVzaCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDExNTRiMmIuLjZjN2NjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAxNS0wNC0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgbmV3IE5hdmlnYXRpb25UeXBlIGZvciBtZXRhIHJlZnJlc2guCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQyNjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoY29yZUFjdGlvblRvV2ViQWN0
aW9uKToKKyAgICAgICAgKGlzUHJpdmF0ZU5hdmlnYXRpb25UeXBlKToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KTogSWYgdGhlIGNsaWVudCBoYXNuJ3Qg
dXBkYXRlZCB0byBvcHQtaW4gdG8gcmVjZWl2aW5nCisgICAgICAgICAgdGhlIG5ldyBGcmFtZUxv
YWRUeXBlcywgY29udmVydCB0aGVtIHRvICJPdGhlciIKKworICAgICAgICAqIFdlYlZpZXcvV2Vi
RnJhbWUubW06CisgICAgICAgICh0b1dlYkZyYW1lTG9hZFR5cGUpOiBBZGQgbWFwcGluZ3MgZm9y
IHRoZSBuZXcgTWV0YVJlZnJlc2ggdHlwZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVQ
cml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZVByaXZhdGUuaDog
QWRkIHRoZSBuZXcgTWV0YVJlZnJlc2ggdHlwZS4KKyAgICAgICAgCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZVNob3VsZEdl
dFByaXZhdGVOYXZpZ2F0aW9uVHlwZXNdKTogU2VlIGlmIHRoZSBjbGllbnQgaGFzIG9wdGVkIGlu
LgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIwMTUtMDQtMjggIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENvbnNvbGlkYXRlIG1v
c3QgImZyYW1lIGxvYWQiIGFyZ3VtZW50cyBpbnRvIEZyYW1lTG9hZFJlcXVlc3QuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCmluZGV4IDgzYjMyZmEuLmFlODNlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNTQz
LDYgKzE1NDMsMzEgQEAgc3RhdGljIGNvbnN0IE1vdXNlRXZlbnQqIGZpbmRNb3VzZUV2ZW50KGNv
bnN0IEV2ZW50KiBldmVudCkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIE5TSW50ZWdlciBj
b3JlQWN0aW9uVG9XZWJBY3Rpb24oTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUpCit7Cisg
ICAgc3dpdGNoIChuYXZpZ2F0aW9uVHlwZSkgeworICAgIGNhc2UgTmF2aWdhdGlvblR5cGU6Okxp
bmtDbGlja2VkOgorICAgICAgICByZXR1cm4gV2ViTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDsK
KyAgICBjYXNlIE5hdmlnYXRpb25UeXBlOjpGb3JtU3VibWl0dGVkOgorICAgICAgICByZXR1cm4g
V2ViTmF2aWdhdGlvblR5cGVGb3JtU3VibWl0dGVkOworICAgIGNhc2UgTmF2aWdhdGlvblR5cGU6
OkJhY2tGb3J3YXJkOgorICAgICAgICByZXR1cm4gV2ViTmF2aWdhdGlvblR5cGVCYWNrRm9yd2Fy
ZDsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlOjpSZWxvYWQ6CisgICAgICAgIHJldHVybiBXZWJO
YXZpZ2F0aW9uVHlwZVJlbG9hZDsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlOjpGb3JtUmVzdWJt
aXR0ZWQ6CisgICAgICAgIHJldHVybiBXZWJOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZDsK
KyAgICBjYXNlIE5hdmlnYXRpb25UeXBlOjpNZXRhUmVmcmVzaDoKKyAgICAgICAgcmV0dXJuIFdl
Yk5hdmlnYXRpb25UeXBlTWV0YVJlZnJlc2g7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZTo6T3Ro
ZXI6CisgICAgICAgIHJldHVybiBXZWJOYXZpZ2F0aW9uVHlwZU90aGVyOworICAgIH0KK30KKwor
c3RhdGljIGJvb2wgaXNQcml2YXRlTmF2aWdhdGlvblR5cGUoTlNJbnRlZ2VyIG5hdmlnYXRpb25U
eXBlKQoreworICAgIHJldHVybiBuYXZpZ2F0aW9uVHlwZSA9PSBXZWJOYXZpZ2F0aW9uVHlwZU1l
dGFSZWZyZXNoOworfQorCiBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rp
b25EaWN0aW9uYXJ5KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IGZvcm1TdGF0ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBtb2RpZmllckZsYWdz
ID0gMDsKQEAgLTE1NjUsOCArMTU5MCwxMyBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVy
Q2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdAogCiAg
ICAgTlNVUkwgKm9yaWdpbmFsVVJMID0gYWN0aW9uLnVybCgpOwogCisgICAgTlNJbnRlZ2VyIGFj
dGlvblR5cGUgPSBjb3JlQWN0aW9uVG9XZWJBY3Rpb24oYWN0aW9uLnR5cGUoKSk7CisKKyAgICBp
ZiAoaXNQcml2YXRlTmF2aWdhdGlvblR5cGUoYWN0aW9uVHlwZSkgJiYgIVtnZXRXZWJWaWV3KG1f
d2ViRnJhbWUuZ2V0KCkpIF9wb2xpY3lEZWxlZ2F0ZVNob3VsZEdldFByaXZhdGVOYXZpZ2F0aW9u
VHlwZXNdKQorICAgICAgICBhY3Rpb25UeXBlID0gV2ViTmF2aWdhdGlvblR5cGVPdGhlcjsKKwog
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnJlc3VsdCA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
SW50OnN0YXRpY19jYXN0PGludD4oYWN0aW9uLnR5cGUoKSldLCBXZWJBY3Rpb25OYXZpZ2F0aW9u
VHlwZUtleSwKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmFjdGlvblR5cGVd
LCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6bW9kaWZpZXJGbGFnc10sIFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCiAgICAgICAg
IG9yaWdpbmFsVVJMLCBXZWJBY3Rpb25PcmlnaW5hbFVSTEtleSwKICAgICAgICAgbmlsXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGVjMTVhYzMuLjE4ZDc0ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTA3MCw2ICsxMDcwLDkgQEAg
c3RhdGljIFdlYkZyYW1lTG9hZFR5cGUgdG9XZWJGcmFtZUxvYWRUeXBlKEZyYW1lTG9hZFR5cGUg
ZnJhbWVMb2FkVHlwZSkKICAgICAgICAgcmV0dXJuIFdlYkZyYW1lTG9hZFR5cGVSZXBsYWNlOwog
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKICAgICAgICAgcmV0dXJu
IFdlYkZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luOworICAgIGNhc2UgRnJhbWVMb2FkVHlw
ZTo6TWV0YVJlZnJlc2g6CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpNZXRhUmVmcmVzaFdpdGhM
b2NrZWRCYWNrRm9yd2FyZExpc3Q6CisgICAgICAgIHJldHVybiBXZWJGcmFtZUxvYWRUeXBlTWV0
YVJlZnJlc2g7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZVByaXZhdGUuaAppbmRleCBjOGY4Mjc5Li5mOGZmZTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCkBAIC03OCw2ICs3OCw3IEBAIHR5cGVkZWYgZW51
bSB7CiAgICAgV2ViRnJhbWVMb2FkVHlwZUludGVybmFsLCAgICAgICAgICAgLy8gbWFwcyB0byBX
ZWJDb3JlOjpGcmFtZUxvYWRUeXBlUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0CiAg
ICAgV2ViRnJhbWVMb2FkVHlwZVJlcGxhY2UsCiAgICAgV2ViRnJhbWVMb2FkVHlwZVJlbG9hZEZy
b21PcmlnaW4sCisgICAgV2ViRnJhbWVMb2FkVHlwZU1ldGFSZWZyZXNoLAogfSBXZWJGcmFtZUxv
YWRUeXBlOwogCiBAaW50ZXJmYWNlIFdlYkZyYW1lIChXZWJQcml2YXRlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGVQcml2YXRlLmgKaW5kZXgg
OGVhNGNhZi4uZDc3MGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQb2xpY3lEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlBvbGljeURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0zNyw2ICszNywxMCBAQCB0eXBlZGVmIGVu
dW0gewogICAgIFdlYk5hdmlnYXRpb25UeXBlUGx1Z0luUmVxdWVzdCA9IFdlYk5hdmlnYXRpb25U
eXBlT3RoZXIgKyAxCiB9IFdlYkV4dHJhTmF2aWdhdGlvblR5cGU7CiAKK3R5cGVkZWYgZW51bSB7
CisgICAgV2ViTmF2aWdhdGlvblR5cGVNZXRhUmVmcmVzaCA9IFdlYk5hdmlnYXRpb25UeXBlUGx1
Z0luUmVxdWVzdCArIDEKK30gV2ViUHJpdmF0ZU5hdmlnYXRpb25UeXBlOworCiBAaW50ZXJmYWNl
IFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIgOiBOU09iamVjdCA8V2ViUG9saWN5RGVjaXNpb25M
aXN0ZW5lcj4KIHsKIEBwcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5k
ZXggZmVjNjE5Zi4uOGU4YjFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtODY5MSw2ICs4NjkxLDEzIEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5
ZXJzKCkKIH0KICNlbmRpZgogCistIChCT09MKV9wb2xpY3lEZWxlZ2F0ZVNob3VsZEdldFByaXZh
dGVOYXZpZ2F0aW9uVHlwZXMKK3sKKyAgICBpZiAoW19wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93YW50c1ByaXZhdGVOYXZpZ2F0aW9uVHlwZXMp
XSkKKyAgICAgICAgcmV0dXJuIHd0Zk9iamNNc2dTZW5kPEJPT0w+KF9wcml2YXRlLT5wb2xpY3lE
ZWxlZ2F0ZSwgQHNlbGVjdG9yKF93YW50c1ByaXZhdGVOYXZpZ2F0aW9uVHlwZXMpKTsKKyAgICBy
ZXR1cm4gTk87Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdE
ZXZpY2VPcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oCmluZGV4IDUzNzQyMDAuLjc0ZDNjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMTAyLDYgKzEwMiw4IEBAIE9CSkNfQ0xBU1MgTlNU
ZXh0QWx0ZXJuYXRpdmVzOwogCiAtIChCT09MKV9iZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbU91
dHNpZGU7CiAKKy0gKEJPT0wpX3BvbGljeURlbGVnYXRlU2hvdWxkR2V0UHJpdmF0ZU5hdmlnYXRp
b25UeXBlczsKKwogI2lmIEVOQUJMRShJQ09OREFUQUJBU0UpCiAtICh2b2lkKV9yZWdpc3RlckZv
ckljb25Ob3RpZmljYXRpb246KEJPT0wpbGlzdGVuOwogLSAodm9pZClfZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbkZyb21XZWJGcmFtZTooV2ViRnJhbWUgKil3ZWJGcmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2
ZGZmN2M2Li42ODlhNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTUtMDQtMjkg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBO
YXZpZ2F0aW9uVHlwZSBmb3IgbWV0YSByZWZyZXNoLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmg6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAoV2Vi
S2l0Ojp0b0FQSSk6IEFkZCBtYXBwaW5ncyBmb3IgdGhlIG5ldyBNZXRhUmVmcmVzaCB0eXBlLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW06Cisg
ICAgICAgICh0b1dLTmF2aWdhdGlvblR5cGUpOiBBZGQgbWFwcGluZ3MgZm9yIHRoZSBuZXcgTWV0
YVJlZnJlc2ggdHlwZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bik6IENvbnZlcnQgdGhlIG5ldyBGcmFtZUxvYWRUeXBlcworICAgICAgICAgIHRvICJPdGhlciIg
aWYgdGhlIGNsaWVudCBoYXMgbm90IHVwZGF0ZWQgdG8gdmVyc2lvbiAxLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmg6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZVBvbGljeUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50Lmg6IEFkZCBhIG5ldyBjbGllbnQgdmVyc2lvbiB0
aGF0IGhhcyB0aGUKKyAgICAgICAgICBleGFjdCBzYW1lIGxheW91dCBidXQgb3B0cyBpbiB0byBy
ZWNlaXZpbmcgdGhlIG5ldyBGcmFtZUxvYWRUeXBlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxNS0wNC0yOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29uc29saWRhdGUgbW9zdCAiZnJh
bWUgbG9hZCIgYXJndW1lbnRzIGludG8gRnJhbWVMb2FkUmVxdWVzdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAppbmRleCBmY2U3OWEzLi5iMjhiM2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oCkBA
IC0zOCw3ICszOCw4IEBAIGVudW0gewogICAgIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVCYWNrRm9y
d2FyZCA9IDIsCiAgICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZVJlbG9hZCA9IDMsCiAgICAga1dL
RnJhbWVOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZCA9IDQsCi0gICAga1dLRnJhbWVOYXZp
Z2F0aW9uVHlwZU90aGVyID0gNQorICAgIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVPdGhlciA9IDUs
CisgICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU1ldGFSZWZyZXNoID0gNgogfTsKIHR5cGVkZWYg
dWludDMyX3QgV0tGcmFtZU5hdmlnYXRpb25UeXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKaW5kZXggYTM5ZjcyOS4uOTc5MTAwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtNzczLDYg
Kzc3Myw5IEBAIGlubGluZSBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdG9BUEkoV2ViQ29yZTo6TmF2
aWdhdGlvblR5cGUgdHlwZSkKICAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpPdGhl
cjoKICAgICAgICAgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpNZXRhUmVmcmVzaDoK
KyAgICAgICAgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU1ldGFSZWZyZXNoOworICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHdrVHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24u
bW0KaW5kZXggOWY2MWZiNy4uYWMwODAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTQ3LDYgKzQ3
LDcgQEAgc3RhdGljIFdLTmF2aWdhdGlvblR5cGUgdG9XS05hdmlnYXRpb25UeXBlKFdlYkNvcmU6
Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXAKICAgICAgICAgcmV0dXJuIFdLTmF2aWdhdGlv
blR5cGVSZWxvYWQ7CiAgICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3Vi
bWl0dGVkOgogICAgICAgICByZXR1cm4gV0tOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZDsK
KyAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpNZXRhUmVmcmVzaDoKICAgICBjYXNl
IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpPdGhlcjoKICAgICAgICAgcmV0dXJuIFdLTmF2aWdh
dGlvblR5cGVPdGhlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQ
b2xpY3lDbGllbnQuaAppbmRleCBlNWRiMTI1Li5mZGJjYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVBvbGlj
eUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmgKQEAgLTU0LDYgKzU0LDE4IEBAIHR5cGVk
ZWYgc3RydWN0IFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudFYwIHsKICAgICBXS0J1bmRsZVBhZ2VV
bmFibGVUb0ltcGxlbWVudFBvbGljeUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIHVu
YWJsZVRvSW1wbGVtZW50UG9saWN5OwogfSBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRWMDsKIAor
Ly8gVmVyc2lvbiAxIGNsaWVudHMgaGF2ZSB0aGUgZXhhY3Qgc2FtZSBjYWxsYmFja3MgYXMgdmVy
c2lvbiAwLCBidXQgdGhleSBhcmUgcHJlc2VudGVkIHdpdGggbmV3CisvLyBXS0ZyYW1lTmF2aWdh
dGlvblR5cGUgdmFsdWVzIHRoYXQgdmVyc2lvbiAwIGNsaWVudHMgZG9uJ3QgZXhwZWN0LgordHlw
ZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50VjEgeworICAgIFdLQnVuZGxlUGFn
ZVBvbGljeUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS0J1bmRsZVBhZ2VEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb247CisgICAgV0tCdW5kbGVQYWdlRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb247CisgICAgV0tCdW5kbGVQYWdlRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZTsKKyAgICBX
S0J1bmRsZVBhZ2VVbmFibGVUb0ltcGxlbWVudFBvbGljeUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5OworfSBXS0J1bmRsZVBhZ2VQb2xpY3lD
bGllbnRWMTsKKwogZW51bSB7IGtXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRDdXJyZW50VmVyc2lv
biBXS19FTlVNX0RFUFJFQ0FURUQoIlVzZSBhbiBleHBsaWNpdCB2ZXJzaW9uIG51bWJlciBpbnN0
ZWFkIikgPSAwIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQgewog
ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBmMzdmNzMzLi44NDlkODUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmgiCiAKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZS5oPgpAQCAtODEsMTIgKzgyLDEyIEBAIFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
biBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vdXNlQnV0dG9uRm9yTmF2aWdhdGlv
bkFjCiB9CiAKIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IElu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlKQorUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBp
bnQgdGFyZ2V0Q2xpZW50VmVyc2lvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihmcmFtZSwgYWN0aW9uLCBmb3JtU3RhdGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihmcmFt
ZSwgYWN0aW9uLCBmb3JtU3RhdGUsIHRhcmdldENsaWVudFZlcnNpb24pKTsKIH0KIAotSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24o
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9u
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQorSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlLCBpbnQgdGFyZ2V0Q2xpZW50VmVyc2lvbikKICAgICA6
IG1fbmF2aWdhdGlvblR5cGUobmF2aWdhdGlvbkFjdGlvbi50eXBlKCkpCiAgICAgLCBtX21vZGlm
aWVycyhtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKQogICAg
ICwgbV9tb3VzZUJ1dHRvbihXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbikKQEAgLTEwMSw2ICsxMDIs
MTAgQEAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLAogICAgICAgICBBU1NFUlQoZm9ybVN0YXRlLT5m
b3JtKCkpOwogICAgICAgICBtX2Zvcm1FbGVtZW50ICAgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6OmdldE9yQ3JlYXRlKGZvcm1TdGF0ZS0+Zm9ybSgpKTsKICAgICB9CisKKyAgICAvLyBOYXZp
Z2F0aW9uIHR5cGVzIG5ld2VyIHRoYW4gIk90aGVyIiB3aWxsIG9ubHkgYmUgZGlzcGF0Y2hlZCB0
byBwb2xpY3kgY2xpZW50cyBuZXdlciB0aGFuIHZlcnNpb24gMC4KKyAgICBpZiAodGFyZ2V0Q2xp
ZW50VmVyc2lvbiA8IDEgJiYgdG9BUEkobV9uYXZpZ2F0aW9uVHlwZSkgPiBrV0tGcmFtZU5hdmln
YXRpb25UeXBlT3RoZXIpCisgICAgICAgIG1fbmF2aWdhdGlvblR5cGUgPSBOYXZpZ2F0aW9uVHlw
ZTo6T3RoZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggMDRlN2E2Yi4uZjdlOGQ0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBjcmVhdGUoV2ViRnJhbWUqLCBjb25zdCBXZWJD
b3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IGNy
ZWF0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGludCB0YXJnZXRDbGllbnRWZXJzaW9uKTsKIAogICAg
IHN0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2
ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb24mKTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZSogZm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1F
bGVtZW50LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgaW50IHRhcmdldENsaWVudFZlcnNpb24pOwogCiAg
ICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgbV9uYXZpZ2F0aW9uVHlwZTsKICAgICBXZWJFdmVu
dDo6TW9kaWZpZXJzIG1fbW9kaWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlUG9saWN5Q2xpZW50LmgKaW5kZXggN2VmMmQxNC4uZGQ1NjkxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQ
b2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBBUEkgewogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxl
UGFnZVBvbGljeUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQ
YWdlUG9saWN5Q2xpZW50VjA+IFZlcnNpb25zOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0J1
bmRsZVBhZ2VQb2xpY3lDbGllbnRWMCwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50VjE+IFZlcnNp
b25zOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5YTQ3
NGUwLi42OGQxMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNzA5
LDcgKzcwOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAKICAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9m
cmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUsIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuY2xpZW50KCkuYmFzZS52ZXJzaW9uKTsK
IAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQb2xp
Y3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5k
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdl
dCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsKQEAgLTc0OCw3ICs3NDgsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7
CiAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0gcHJwRm9ybVN0YXRlOwogCi0gICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwg
Zm9ybVN0YXRlKTsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBh
Y3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBu
YXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUsIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5
Q2xpZW50KCkuY2xpZW50KCkuYmFzZS52ZXJzaW9uKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVu
ZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgdXNlckRhdGEp
OwpAQCAtNzgwLDYgKzc4MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOgogICAgIGNhc2UgTmF2
aWdhdGlvblR5cGU6OlJlbG9hZDoKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlOjpNZXRhUmVmcmVz
aDoKICAgICBjYXNlIE5hdmlnYXRpb25UeXBlOjpPdGhlcjoKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ2
OTAyZmYuLmRjZTE4MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wNC0yOSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IE5hdmlnYXRpb25UeXBlIGZvciBt
ZXRhIHJlZnJlc2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1b
UG9saWN5RGVsZWdhdGUgX3dhbnRzUHJpdmF0ZU5hdmlnYXRpb25UeXBlc10pOiBJbXBsZW1lbnQg
YW5kIHJldHVybiBZRVMgdG8gb3B0IGluIHRvIHRoZSBuZXcgRnJhbWVMb2FkVHlwZQorICAgICAg
ICAoLVtQb2xpY3lEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246cmVxdWVzdDpmcmFtZTpkZWNpc2lvbkxpc3RlbmVyOl0pOiBIYW5kbGUgdGhlCisgICAgICAg
ICAgIm1ldGEgcmVmcmVzaCIgZnJhbWUgbG9hZCB0eXBlLgorCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAo
V1RSOjpOYXZpZ2F0aW9uVHlwZVRvU3RyaW5nKTogSGFuZGxlIHRoZSAibWV0YSByZWZyZXNoIiBm
cmFtZSBsb2FkIHR5cGUuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0
ZWRCdW5kbGVQYWdlKTogQnVtcCB0byB0aGUgbmV3IGNsaWVudCB2ZXJzaW9uIHRvIG9wdCBpbiB0
byB0aGUgbmV3IEZyYW1lTG9hZFR5cGUuCisKIDIwMTUtMDQtMjcgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTgyODc5KTogSW1hZ2Vz
IGFuZCB2aWRlbyBjYW4gbm8gbG9uZ2VyIGJlIGRvd25sb2FkZWQKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbQppbmRleCBiZTgxNmNjLi5kYjA3MzRiIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5RGVsZWdhdGUubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1BvbGljeURlbGVnYXRlLm1tCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvRE9NRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUG9saWN5RGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9XZWJQb2xpY3lEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+
CiAKIEBpbnRlcmZhY2UgTlNVUkwgKERSVEV4dHJhcykKQEAgLTQ2LDEyICs0NywxNyBAQAogCiBA
aW1wbGVtZW50YXRpb24gUG9saWN5RGVsZWdhdGUKIAorLSAoQk9PTClfd2FudHNQcml2YXRlTmF2
aWdhdGlvblR5cGVzCit7CisgICAgcmV0dXJuIFlFUzsKK30KKwogLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihOU0RpY3Rp
b25hcnkgKilhY3Rpb25JbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWU6KFdlYkZyYW1lICopZnJhbWUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjooaWQ8V2ViUG9saWN5
RGVjaXNpb25MaXN0ZW5lcj4pbGlzdGVuZXIKIHsKLSAgICBXZWJOYXZpZ2F0aW9uVHlwZSBuYXZU
eXBlID0gKFdlYk5hdmlnYXRpb25UeXBlKVtbYWN0aW9uSW5mb3JtYXRpb24gb2JqZWN0Rm9yS2V5
OldlYkFjdGlvbk5hdmlnYXRpb25UeXBlS2V5XSBpbnRWYWx1ZV07CisgICAgTlNJbnRlZ2VyIG5h
dlR5cGUgPSBbW2FjdGlvbkluZm9ybWF0aW9uIG9iamVjdEZvcktleTpXZWJBY3Rpb25OYXZpZ2F0
aW9uVHlwZUtleV0gaW50ZWdlclZhbHVlXTsKIAogICAgIGNvbnN0IGNoYXIqIHR5cGVEZXNjcmlw
dGlvbjsKICAgICBzd2l0Y2ggKG5hdlR5cGUpIHsKQEAgLTczLDYgKzc5LDkgQEAKICAgICAgICAg
Y2FzZSBXZWJOYXZpZ2F0aW9uVHlwZU90aGVyOgogICAgICAgICAgICAgdHlwZURlc2NyaXB0aW9u
ID0gIm90aGVyIjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYk5hdmlnYXRp
b25UeXBlTWV0YVJlZnJlc2g6CisgICAgICAgICAgICB0eXBlRGVzY3JpcHRpb24gPSAibWV0YSBy
ZWZyZXNoIjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgdHlwZURlc2NyaXB0aW9uID0gImlsbGVnYWwgdmFsdWUiOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcAppbmRleCBiOGI4MjZlLi5iYmQzNDg3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCkBAIC0xNzAsNiArMTcwLDggQEAgc3RhdGljIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBO
YXZpZ2F0aW9uVHlwZVRvU3RyaW5nKFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSB0eXAKICAgICAgICAg
cmV0dXJuIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInJlbG9hZCIpKTsK
ICAgICBjYXNlIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQ6CiAgICAgICAg
IHJldHVybiBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmb3JtIHJlc3Vi
bWl0dGVkIikpOworICAgIGNhc2Uga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU1ldGFSZWZyZXNoOgor
ICAgICAgICByZXR1cm4gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibWV0
YSByZWZyZXNoIikpOwogICAgIGNhc2Uga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyOgogICAg
ICAgICByZXR1cm4gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygib3RoZXIi
KSk7CiAgICAgfQpAQCAtMzIyLDggKzMyNCw4IEBAIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0
ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIH07CiAgICAgV0tCdW5kbGVQ
YWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KG1fcGFnZSwgJnJlc291cmNlTG9hZENsaWVudC5iYXNl
KTsKIAotICAgIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudFYwIHBvbGljeUNsaWVudCA9IHsKLSAg
ICAgICAgeyAwLCB0aGlzIH0sCisgICAgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5
Q2xpZW50ID0geworICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
LAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252118</attachid>
            <date>2015-04-30 17:14:06 -0700</date>
            <delta_ts>2015-04-30 22:50:52 -0700</delta_ts>
            <desc>New approach - v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13448</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NDdlMDNhLi5mYWU5MzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTUtMDQt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBBUEkg
dG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMzMz
MTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVy
L21ldGEtcmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVy
L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sOiBBZGRlZC4KKworMjAxNS0wNC0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgSmF2YXNjcmlwdCB1c2luZyBX
ZWJTUUwgY2FuIGNyZWF0ZSB0aGVpciBvd24gV2ViS2l0IGluZm8gdGFibGUuCiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMDY4ODc5Mj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQ0NjYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL21ldGEt
cmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbWV0YS1y
ZWZyZXNoLWRpc2FibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iYjliNWVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbG9hZGVyL21l
dGEtcmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRl
c3QgbWFrZXMgc3VyZSB0aGUgcHJlZmVyZW5jZSB0byBkaXNhYmxlIG1ldGEgcmVmcmVzaGVzIHdv
cmtzIGFzIGV4cGVjdGVkLgorWW91IHNob3VsZCBzZWUgdGhpcyB0ZXh0IHdoZW4gdGhlIHRlc3Qg
aXMgZG9uZS4KK0lmIHlvdSBkbyBub3Qgc2VlIHRoaXMgdGV4dCwgYW5kIGluc3RlYWQgeW91IHNl
ZSBhIGJsYW5rIHBhZ2UsIHRoZW4gdGhlIHJlZGlyZWN0IGhhcHBlbmVkLCB3aGljaCBpdCBzaG91
bGQgbm90IGhhdmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2xvYWRlci9tZXRhLXJlZnJl
c2gtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2xvYWRlci9tZXRhLXJlZnJlc2gtZGlzYWJs
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGJjMDBiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbG9hZGVyL21ldGEtcmVmcmVzaC1kaXNhYmxlZC5o
dG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRNZXRhUmVm
cmVzaEVuYWJsZWQiLCAiMCIpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2FkZWQoKQoreworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgc2V0VGltZW91dCgidGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7IiwgMTAwKTsKK30KKzwvc2NyaXB0PgorPG1ldGEgaHR0cC1lcXVpdj0icmVm
cmVzaCIgY29udGVudD0iMDt1cmw9cmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwiPiAgICAKKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRo
ZSBwcmVmZXJlbmNlIHRvIGRpc2FibGUgbWV0YSByZWZyZXNoZXMgd29ya3MgYXMgZXhwZWN0ZWQu
PGJyPgorWW91IHNob3VsZCBzZWUgdGhpcyB0ZXh0IHdoZW4gdGhlIHRlc3QgaXMgZG9uZS48YnI+
CitJZiB5b3UgZG8gbm90IHNlZSB0aGlzIHRleHQsIGFuZCBpbnN0ZWFkIHlvdSBzZWUgYSBibGFu
ayBwYWdlLCB0aGVuIHRoZSByZWRpcmVjdCBoYXBwZW5lZCwgd2hpY2ggaXQgc2hvdWxkIG5vdCBo
YXZlLjxicj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2xvYWRlci9yZXNvdXJj
ZXMvbm90aWZ5LWRvbmUuaHRtbCBiL0xheW91dFRlc3RzL2xvYWRlci9yZXNvdXJjZXMvbm90aWZ5
LWRvbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmQ2MmUzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbG9hZGVyL3Jlc291cmNlcy9ub3RpZnktZG9u
ZS5odG1sCkBAIC0wLDAgKzEsNCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJm
ZTA2Y2QuLmU1YmY0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNC0zMCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBk
aXNhYmxlIG1ldGEgcmVmcmVzaGVzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAzMzMxOTg+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbG9hZGVy
L21ldGEtcmVmcmVzaC1kaXNhYmxlZC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYpOiBCYWlsIGVh
cmx5IGlmIFNldHRpbmdzIGhhdmUgbWV0YSByZWZyZXNoZXMgZGlzYWJsZWQuCisKIDIwMTUtMDQt
MzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBET00gYmluZGlu
Z3Mgc2hvdWxkIG5vdCBiZSB1c2luZyBhIHJlZmVyZW5jZSB0eXBlIHRvIHBvaW50IHRvIGEgdGVt
cG9yYXJ5IG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNWRhZTE4Ni4uZmFlZDhm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMDAyLDYgKzMwMDIsOSBAQCB2b2lkIERv
Y3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhUVFBIZWFkZXJOYW1lOjpS
ZWZyZXNoOiB7CisgICAgICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+c2V0dGluZ3MoKS5tZXRh
UmVmcmVzaEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRvdWJsZSBk
ZWxheTsKICAgICAgICAgU3RyaW5nIHVybFN0cmluZzsKICAgICAgICAgaWYgKGZyYW1lICYmIHBh
cnNlSFRUUFJlZnJlc2goY29udGVudCwgdHJ1ZSwgZGVsYXksIHVybFN0cmluZykpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA0ZDcyYzZmLi5hMTBlMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTUtMDQtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBBUEkgdG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcy4KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIwMzMzMTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NDI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIHByZWZlcmVuY2UgdG8gZW5hYmxlL2Rpc2FibGUgbWV0YSByZWZyZXNo
ZXMsIGVuYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAg
ICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyBzZXRNZXRhUmVmcmVzaEVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIG1ldGFSZWZyZXNoRW5hYmxlZF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTUtMDQtMjkgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbT1MgWF0gVXNlIENURm9u
dENyZWF0ZUZvckNTUyBpbnN0ZWFkIG9mIGRvaW5nIGZvbnQgc2VhcmNoIG91cnNlbHZlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
LmgKaW5kZXggNGU5MDViYi4uYWVhOTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xNzIsNiArMTcyLDcgQEAK
ICNkZWZpbmUgV2ViS2l0RGVidWdGdWxsUGFnZVpvb21QcmVmZXJlbmNlS2V5IEAiV2ViS2l0RGVi
dWdGdWxsUGFnZVpvb21QcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRNaW5pbXVtWm9vbUZv
bnRTaXplUHJlZmVyZW5jZUtleSBAIldlYktpdE1pbmltdW1ab29tRm9udFNpemVQcmVmZXJlbmNl
S2V5IgogI2RlZmluZSBXZWJLaXRBbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWRLZXkgQCJB
bnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQiCisjZGVmaW5lIFdlYktpdE1ldGFSZWZyZXNo
RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRNZXRhUmVmcmVzaEVuYWJsZWQiCiAKICNpZiBU
QVJHRVRfT1NfSVBIT05FCiAjZGVmaW5lIFdlYktpdFN0YW5kYWxvbmVQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0U3RhbmRhbG9uZVByZWZlcmVuY2VLZXkiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCBkNGZjMjE4Li4yOTc0ZTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTQ0NCw2ICs0NDQsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBX
ZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXksCisg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0TWV0YVJlZnJlc2hF
bmFibGVkUHJlZmVyZW5jZUtleSwKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0U3RvcmFnZVRyYWNrZXJFbmFibGVkUHJlZmVy
ZW5jZUtleSwKICNlbmRpZgpAQCAtMjQ5Niw2ICsyNDk3LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAq
Y2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktl
eTpXZWJLaXRBbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWRLZXldOwogfQogCistICh2b2lk
KXNldE1ldGFSZWZyZXNoRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgW3NlbGYgX3NldEJv
b2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRNZXRhUmVmcmVzaEVuYWJsZWRQcmVmZXJlbmNl
S2V5XTsKK30KKworLSAoQk9PTCltZXRhUmVmcmVzaEVuYWJsZWQKK3sKKyAgICByZXR1cm4gW3Nl
bGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRNZXRhUmVmcmVzaEVuYWJsZWRQcmVmZXJlbmNlS2V5
XTsKK30KKwogLSAoQk9PTClqYXZhU2NyaXB0TWFya3VwRW5hYmxlZAogewogICAgIHJldHVybiBb
c2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEphdmFTY3JpcHRNYXJrdXBFbmFibGVkUHJlZmVy
ZW5jZUtleV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAppbmRleCAxMWFjNDgzLi42ZWIyOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTQzOSw2ICs0MzksOSBA
QCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRlcm5h
bE5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpc2V0QW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVk
OihCT09MKWZsYWc7CiAtIChCT09MKWFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZDsKIAor
LSAodm9pZClzZXRNZXRhUmVmcmVzaEVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0gKEJPT0wpbWV0YVJl
ZnJlc2hFbmFibGVkOworCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBqYXZhU2NyaXB0TWFy
a3VwRW5hYmxlZDsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCA4MDAwMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IDE0NmEwNGIuLmI2YjA3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTIzMzEsNiArMjMzMSw4IEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9h
ZGluZ1F1aXJrKCkKIAogICAgIHNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQo
W3ByZWZlcmVuY2VzIHBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWRdKTsKIAorICAgIHNldHRpbmdz
LnNldE1ldGFSZWZyZXNoRW5hYmxlZChbcHJlZmVyZW5jZXMgbWV0YVJlZnJlc2hFbmFibGVkXSk7
CisKICAgICBzZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0
cnVlKTsKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMDAwCiAgICAgc2V0dGluZ3Muc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZp
eGVkUG9zaXRpb25FbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYwMDJiM2QuLjZkN2FhYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wNC0zMCAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBkaXNhYmxlIG1ldGEgcmVm
cmVzaGVzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAzMzMxOTg+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgcHJlZmVyZW5jZSB0byBlbmFibGUv
ZGlzYWJsZSBtZXRhIHJlZnJlc2hlcywgZW5hYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgICog
U2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0TWV0YVJl
ZnJlc2hFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRNZXRhUmVmcmVzaEVuYWJs
ZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldElnbm9yZVZpZXdwb3J0U2NhbGluZ0NvbnN0
cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRl
Qm9vbFByZWZlcmVuY2VGb3JUZXN0UnVubmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVu
Y2VzKToKKwogMjAxNS0wNC0zMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBBc3luY2hyb25vdXMgKG9yIHRpbWVkLW91dCBzeW5jaHJvbm91cykgcmVz
aXplIGZsYXNoZXMgd2hpdGUgaW5zdGVhZCBvZiBwYWdlIGJhY2tncm91bmQgY29sb3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCmluZGV4
IDMxZTlkZjkuLjQ2MmUwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc0RlZmluaXRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzRGVmaW5pdGlvbnMuaApAQCAtMTk2LDYgKzE5Niw3IEBACiAgICAgbWFjcm8oTG9u
Z01vdXNlUHJlc3NFbmFibGVkLCBsb25nTW91c2VQcmVzc0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZh
bHNlKSBcCiAgICAgbWFjcm8oTmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQsIG5ld0Js
b2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1h
Y3JvKEFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZCwgYW50aWFsaWFzZWRGb250RGlsYXRp
b25FbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCisgICAgbWFjcm8oTWV0YVJlZnJlc2hFbmFi
bGVkLCBtZXRhUmVmcmVzaEVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKIAogI2RlZmluZSBG
T1JfRUFDSF9XRUJLSVRfRE9VQkxFX1BSRUZFUkVOQ0UobWFjcm8pIFwKICAgICBtYWNybyhJbmNy
ZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dCwgaW5jcmVtZW50YWxSZW5kZXJpbmdT
dXBwcmVzc2lvblRpbWVvdXQsIERvdWJsZSwgZG91YmxlLCA1KSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggYWUxNDNhMS4uZTc4
Yjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzLmNwcApAQCAtMTM1NiwzICsxMzU2LDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldElnbm9y
ZVZpZXdwb3J0U2NhbGluZ0NvbnN0cmFpbnRzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jCiB7
CiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmlnbm9yZVZpZXdwb3J0U2NhbGlu
Z0NvbnN0cmFpbnRzKCk7CiB9CisKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldE1ldGFSZWZyZXNoRW5h
YmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7Cisg
ICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0TWV0YVJlZnJlc2hFbmFibGVkKGVuYWJsZWQp
OworfQorCitib29sIFdLUHJlZmVyZW5jZXNHZXRNZXRhUmVmcmVzaEVuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+bWV0YVJlZnJlc2hFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCmluZGV4IGEwYjQy
NzkuLjQ0NmEwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCkBAIC0zNjksNiArMzY5LDEwIEBAIFdLX0VY
UE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRBbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZiBwCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SmF2YVNj
cmlwdFJ1bnRpbWVGbGFncyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzLCBXS0phdmFTY3Jp
cHRSdW50aW1lRmxhZ1NldCBqYXZhc2NyaXB0UnVudGltZUZsYWdTZXQpOwogV0tfRVhQT1JUIFdL
SmF2YVNjcmlwdFJ1bnRpbWVGbGFnU2V0IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0UnVudGlt
ZUZsYWdzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMpOwogCisvLyBEZWZhdWx0cyB0byB0
cnVlLgorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldE1ldGFSZWZyZXNoRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJv
b2wgV0tQcmVmZXJlbmNlc0dldE1ldGFSZWZyZXNoRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKaW5kZXggZjdiNmE2ZC4uZjE4ZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
QEAgLTIwNiw3ICsyMDYsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpvdmVycmlkZUJvb2xQcmVm
ZXJlbmNlRm9yVGVzdFJ1bm5lcihXZWJQYWdlR3JvdXBQcm94eSogcGFnZQogICAgIG1hY3JvKFdl
YktpdFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCBTaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbiwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIFwKICAgICBtYWNybyhXZWJL
aXRFbmFibGVDYXJldEJyb3dzaW5nLCBDYXJldEJyb3dzaW5nRW5hYmxlZCwgY2FyZXRCcm93c2lu
Z0VuYWJsZWQpIFwKICAgICBtYWNybyhXZWJLaXREaXNwbGF5SW1hZ2VzS2V5LCBMb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHksIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkgXAotICAgIG1hY3JvKFdl
YktpdE1lZGlhU3RyZWFtRW5hYmxlZCwgTWVkaWFTdHJlYW1FbmFibGVkLCBtZWRpYVN0cmVhbUVu
YWJsZWQpCisgICAgbWFjcm8oV2ViS2l0TWVkaWFTdHJlYW1FbmFibGVkLCBNZWRpYVN0cmVhbUVu
YWJsZWQsIG1lZGlhU3RyZWFtRW5hYmxlZCkgXAorICAgIG1hY3JvKFdlYktpdE1ldGFSZWZyZXNo
RW5hYmxlZCwgTWV0YVJlZnJlc2hFbmFibGVkLCBtZXRhUmVmcmVzaEVuYWJsZWQpCiAKICNkZWZp
bmUgT1ZFUlJJREVfUFJFRkVSRU5DRV9BTkRfU0VUX0lOX0VYSVNUSU5HX1BBR0VTKFRlc3RSdW5u
ZXJOYW1lLCBTZXR0aW5nc05hbWUsIFdlYlByZWZlcmVuY2VzTmFtZSkgXAogICAgIGlmIChwcmVm
ZXJlbmNlID09ICNUZXN0UnVubmVyTmFtZSkgeyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjA0MjA3NS4uMDczOGFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjc1Niw2ICsy
NzU2LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy5zZXRGb3JjZVVwZGF0ZVNjcm9sbGJhcnNP
bk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3Rpbmcoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojpmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQ
ZXJmb3JtYW5jZVRlc3RpbmdLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldEludGVyYWN0aXZlRm9y
bVZhbGlkYXRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6aW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRp
bmdzLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OnNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZEtleSgpKSk7CisgICAg
c2V0dGluZ3Muc2V0TWV0YVJlZnJlc2hFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6bWV0YVJlZnJlc2hFbmFibGVkS2V5KCkpKTsKIAogICAgIERhdGFi
YXNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0SXNBdmFpbGFibGUoc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkYXRhYmFzZXNFbmFibGVkS2V5KCkpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252134</attachid>
            <date>2015-04-30 22:50:52 -0700</date>
            <delta_ts>2015-05-01 08:49:18 -0700</delta_ts>
            <desc>New approach v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13842</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NDdlMDNhLi5mYWU5MzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTUtMDQt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBBUEkg
dG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMzMz
MTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVy
L21ldGEtcmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVy
L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sOiBBZGRlZC4KKworMjAxNS0wNC0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgSmF2YXNjcmlwdCB1c2luZyBX
ZWJTUUwgY2FuIGNyZWF0ZSB0aGVpciBvd24gV2ViS2l0IGluZm8gdGFibGUuCiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMDY4ODc5Mj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQ0NjYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL21ldGEt
cmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbWV0YS1y
ZWZyZXNoLWRpc2FibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iYjliNWVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbG9hZGVyL21l
dGEtcmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRl
c3QgbWFrZXMgc3VyZSB0aGUgcHJlZmVyZW5jZSB0byBkaXNhYmxlIG1ldGEgcmVmcmVzaGVzIHdv
cmtzIGFzIGV4cGVjdGVkLgorWW91IHNob3VsZCBzZWUgdGhpcyB0ZXh0IHdoZW4gdGhlIHRlc3Qg
aXMgZG9uZS4KK0lmIHlvdSBkbyBub3Qgc2VlIHRoaXMgdGV4dCwgYW5kIGluc3RlYWQgeW91IHNl
ZSBhIGJsYW5rIHBhZ2UsIHRoZW4gdGhlIHJlZGlyZWN0IGhhcHBlbmVkLCB3aGljaCBpdCBzaG91
bGQgbm90IGhhdmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2xvYWRlci9tZXRhLXJlZnJl
c2gtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2xvYWRlci9tZXRhLXJlZnJlc2gtZGlzYWJs
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGJjMDBiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbG9hZGVyL21ldGEtcmVmcmVzaC1kaXNhYmxlZC5o
dG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRNZXRhUmVm
cmVzaEVuYWJsZWQiLCAiMCIpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2FkZWQoKQoreworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgc2V0VGltZW91dCgidGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7IiwgMTAwKTsKK30KKzwvc2NyaXB0PgorPG1ldGEgaHR0cC1lcXVpdj0icmVm
cmVzaCIgY29udGVudD0iMDt1cmw9cmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwiPiAgICAKKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRo
ZSBwcmVmZXJlbmNlIHRvIGRpc2FibGUgbWV0YSByZWZyZXNoZXMgd29ya3MgYXMgZXhwZWN0ZWQu
PGJyPgorWW91IHNob3VsZCBzZWUgdGhpcyB0ZXh0IHdoZW4gdGhlIHRlc3QgaXMgZG9uZS48YnI+
CitJZiB5b3UgZG8gbm90IHNlZSB0aGlzIHRleHQsIGFuZCBpbnN0ZWFkIHlvdSBzZWUgYSBibGFu
ayBwYWdlLCB0aGVuIHRoZSByZWRpcmVjdCBoYXBwZW5lZCwgd2hpY2ggaXQgc2hvdWxkIG5vdCBo
YXZlLjxicj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2xvYWRlci9yZXNvdXJj
ZXMvbm90aWZ5LWRvbmUuaHRtbCBiL0xheW91dFRlc3RzL2xvYWRlci9yZXNvdXJjZXMvbm90aWZ5
LWRvbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmQ2MmUzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbG9hZGVyL3Jlc291cmNlcy9ub3RpZnktZG9u
ZS5odG1sCkBAIC0wLDAgKzEsNCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJm
ZTA2Y2QuLmU1YmY0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNC0zMCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBk
aXNhYmxlIG1ldGEgcmVmcmVzaGVzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAzMzMxOTg+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbG9hZGVy
L21ldGEtcmVmcmVzaC1kaXNhYmxlZC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYpOiBCYWlsIGVh
cmx5IGlmIFNldHRpbmdzIGhhdmUgbWV0YSByZWZyZXNoZXMgZGlzYWJsZWQuCisKIDIwMTUtMDQt
MzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBET00gYmluZGlu
Z3Mgc2hvdWxkIG5vdCBiZSB1c2luZyBhIHJlZmVyZW5jZSB0eXBlIHRvIHBvaW50IHRvIGEgdGVt
cG9yYXJ5IG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNWRhZTE4Ni4uZmFlZDhm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMDAyLDYgKzMwMDIsOSBAQCB2b2lkIERv
Y3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhUVFBIZWFkZXJOYW1lOjpS
ZWZyZXNoOiB7CisgICAgICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+c2V0dGluZ3MoKS5tZXRh
UmVmcmVzaEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRvdWJsZSBk
ZWxheTsKICAgICAgICAgU3RyaW5nIHVybFN0cmluZzsKICAgICAgICAgaWYgKGZyYW1lICYmIHBh
cnNlSFRUUFJlZnJlc2goY29udGVudCwgdHJ1ZSwgZGVsYXksIHVybFN0cmluZykpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmluCmluZGV4IDViMWQ0ODMuLjcwMTU2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5pbgpAQCAtMjQxLDMgKzI0MSw0IEBAIGF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCBpbml0
aWFsPXRydWUsIGNvbmRpdGlvbmFsPUFUVEFDSE1FTlRfRUxFTUVOVAogCiBuZXdCbG9ja0luc2lk
ZUlubGluZU1vZGVsRW5hYmxlZCBpbml0aWFsPWZhbHNlLCBzZXROZWVkc1N0eWxlUmVjYWxjSW5B
bGxGcmFtZXM9MQogCittZXRhUmVmcmVzaEVuYWJsZWQgaW5pdGlhbD10cnVlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggNGQ3MmM2Zi4uYTEwZTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE1LTA0LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgQVBJIHRvIGRpc2FibGUgbWV0YSByZWZyZXNoZXMuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yMDMzMzE5OD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBwcmVmZXJlbmNlIHRvIGVuYWJsZS9kaXNhYmxlIG1ldGEgcmVmcmVzaGVzLCBl
bmFibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgc2V0TWV0YVJlZnJlc2hFbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBt
ZXRhUmVmcmVzaEVuYWJsZWRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgorCiAyMDE1LTA0LTI5ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW09TIFhdIFVzZSBDVEZvbnRDcmVh
dGVGb3JDU1MgaW5zdGVhZCBvZiBkb2luZyBmb250IHNlYXJjaCBvdXJzZWx2ZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmlu
ZGV4IDRlOTA1YmIuLmFlYTkwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtMTcyLDYgKzE3Miw3IEBACiAjZGVm
aW5lIFdlYktpdERlYnVnRnVsbFBhZ2Vab29tUHJlZmVyZW5jZUtleSBAIldlYktpdERlYnVnRnVs
bFBhZ2Vab29tUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0TWluaW11bVpvb21Gb250U2l6
ZVByZWZlcmVuY2VLZXkgQCJXZWJLaXRNaW5pbXVtWm9vbUZvbnRTaXplUHJlZmVyZW5jZUtleSIK
ICNkZWZpbmUgV2ViS2l0QW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkS2V5IEAiQW50aWFs
aWFzZWRGb250RGlsYXRpb25FbmFibGVkIgorI2RlZmluZSBXZWJLaXRNZXRhUmVmcmVzaEVuYWJs
ZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TWV0YVJlZnJlc2hFbmFibGVkIgogCiAjaWYgVEFSR0VU
X09TX0lQSE9ORQogI2RlZmluZSBXZWJLaXRTdGFuZGFsb25lUHJlZmVyZW5jZUtleSBAIldlYktp
dFN0YW5kYWxvbmVQcmVmZXJlbmNlS2V5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0KaW5kZXggZDRmYzIxOC4uMjk3NGUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC00NDQsNiArNDQ0LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0
UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6WUVTXSwgIFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdE1ldGFSZWZyZXNoRW5hYmxl
ZFByZWZlcmVuY2VLZXksCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFN0b3JhZ2VUcmFja2VyRW5hYmxlZFByZWZlcmVuY2VL
ZXksCiAjZW5kaWYKQEAgLTI0OTYsNiArMjQ5NywxNiBAQCBzdGF0aWMgTlNTdHJpbmcgKmNsYXNz
SUJDcmVhdG9ySUQgPSBuaWw7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2Vi
S2l0QW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkS2V5XTsKIH0KIAorLSAodm9pZClzZXRN
ZXRhUmVmcmVzaEVuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIFtzZWxmIF9zZXRCb29sVmFs
dWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0TWV0YVJlZnJlc2hFbmFibGVkUHJlZmVyZW5jZUtleV07
Cit9CisKKy0gKEJPT0wpbWV0YVJlZnJlc2hFbmFibGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9i
b29sVmFsdWVGb3JLZXk6V2ViS2l0TWV0YVJlZnJlc2hFbmFibGVkUHJlZmVyZW5jZUtleV07Cit9
CisKIC0gKEJPT0wpamF2YVNjcmlwdE1hcmt1cEVuYWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYg
X2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRKYXZhU2NyaXB0TWFya3VwRW5hYmxlZFByZWZlcmVuY2VL
ZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmgKaW5kZXggMTFhYzQ4My4uNmViMjk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC00MzksNiArNDM5LDkgQEAgZXh0
ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3Rp
ZmljYXRpb247CiAtICh2b2lkKXNldEFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZDooQk9P
TClmbGFnOwogLSAoQk9PTClhbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQ7CiAKKy0gKHZv
aWQpc2V0TWV0YVJlZnJlc2hFbmFibGVkOihCT09MKWZsYWc7CistIChCT09MKW1ldGFSZWZyZXNo
RW5hYmxlZDsKKwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgamF2YVNjcmlwdE1hcmt1cEVu
YWJsZWQ7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgODAwMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAx
NDZhMDRiLi5iNmIwNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0y
MzMxLDYgKzIzMzEsOCBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdR
dWlyaygpCiAKICAgICBzZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKFtwcmVm
ZXJlbmNlcyBwbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkXSk7CiAKKyAgICBzZXR0aW5ncy5zZXRN
ZXRhUmVmcmVzaEVuYWJsZWQoW3ByZWZlcmVuY2VzIG1ldGFSZWZyZXNoRW5hYmxlZF0pOworCiAg
ICAgc2V0dGluZ3Muc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQodHJ1ZSk7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTAwMAogICAgIHNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBv
c2l0aW9uRW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmMDAyYjNkLi42ZDdhYWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDQtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkgdG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hl
cy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMzMzMTk4PiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHByZWZlcmVuY2UgdG8gZW5hYmxlL2Rpc2Fi
bGUgbWV0YSByZWZyZXNoZXMsIGVuYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldE1ldGFSZWZyZXNo
RW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0TWV0YVJlZnJlc2hFbmFibGVkKToK
KyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRJZ25vcmVWaWV3cG9ydFNjYWxpbmdDb25zdHJhaW50
cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpvdmVycmlkZUJvb2xQ
cmVmZXJlbmNlRm9yVGVzdFJ1bm5lcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6
CisKIDIwMTUtMDQtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQXN5bmNocm9ub3VzIChvciB0aW1lZC1vdXQgc3luY2hyb25vdXMpIHJlc2l6ZSBm
bGFzaGVzIHdoaXRlIGluc3RlYWQgb2YgcGFnZSBiYWNrZ3JvdW5kIGNvbG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAppbmRleCAzMWU5
ZGY5Li40NjJlMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNEZWZpbml0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJl
bmNlc0RlZmluaXRpb25zLmgKQEAgLTE5Niw2ICsxOTYsNyBAQAogICAgIG1hY3JvKExvbmdNb3Vz
ZVByZXNzRW5hYmxlZCwgbG9uZ01vdXNlUHJlc3NFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkg
XAogICAgIG1hY3JvKE5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkLCBuZXdCbG9ja0lu
c2lkZUlubGluZU1vZGVsRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhB
bnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQsIGFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5h
YmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXAorICAgIG1hY3JvKE1ldGFSZWZyZXNoRW5hYmxlZCwg
bWV0YVJlZnJlc2hFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCiAKICNkZWZpbmUgRk9SX0VB
Q0hfV0VCS0lUX0RPVUJMRV9QUkVGRVJFTkNFKG1hY3JvKSBcCiAgICAgbWFjcm8oSW5jcmVtZW50
YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXQsIGluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb25UaW1lb3V0LCBEb3VibGUsIGRvdWJsZSwgNSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGFlMTQzYTEuLmU3OGI3NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAKQEAgLTEzNTYsMyArMTM1NiwxMyBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRJZ25vcmVWaWV3
cG9ydFNjYWxpbmdDb25zdHJhaW50cyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuYwogewogICAg
IHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5pZ25vcmVWaWV3cG9ydFNjYWxpbmdDb25z
dHJhaW50cygpOwogfQorCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRNZXRhUmVmcmVzaEVuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQoreworICAgIHRv
SW1wbChwcmVmZXJlbmNlc1JlZiktPnNldE1ldGFSZWZyZXNoRW5hYmxlZChlbmFibGVkKTsKK30K
KworYm9vbCBXS1ByZWZlcmVuY2VzR2V0TWV0YVJlZnJlc2hFbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
Pm1ldGFSZWZyZXNoRW5hYmxlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAppbmRleCBhMGI0Mjc5Li40
NDZhMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlc1JlZlByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaApAQCAtMzY5LDYgKzM2OSwxMCBAQCBXS19FWFBPUlQg
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0QW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKFdLUHJl
ZmVyZW5jZXNSZWYgcAogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRS
dW50aW1lRmxhZ3MoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcywgV0tKYXZhU2NyaXB0UnVu
dGltZUZsYWdTZXQgamF2YXNjcmlwdFJ1bnRpbWVGbGFnU2V0KTsKIFdLX0VYUE9SVCBXS0phdmFT
Y3JpcHRSdW50aW1lRmxhZ1NldCBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFn
cyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzKTsKIAorLy8gRGVmYXVsdHMgdG8gdHJ1ZS4K
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRNZXRhUmVmcmVzaEVuYWJsZWQoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlcywgYm9vbCBlbmFibGVkKTsKK1dLX0VYUE9SVCBib29sIFdL
UHJlZmVyZW5jZXNHZXRNZXRhUmVmcmVzaEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlcyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IGY3YjZhNmQuLmYxOGU0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0y
MDYsNyArMjA2LDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6b3ZlcnJpZGVCb29sUHJlZmVyZW5j
ZUZvclRlc3RSdW5uZXIoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2UKICAgICBtYWNybyhXZWJLaXRT
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgU2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24sIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBcCiAgICAgbWFjcm8oV2ViS2l0RW5h
YmxlQ2FyZXRCcm93c2luZywgQ2FyZXRCcm93c2luZ0VuYWJsZWQsIGNhcmV0QnJvd3NpbmdFbmFi
bGVkKSBcCiAgICAgbWFjcm8oV2ViS2l0RGlzcGxheUltYWdlc0tleSwgTG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5LCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpIFwKLSAgICBtYWNybyhXZWJLaXRN
ZWRpYVN0cmVhbUVuYWJsZWQsIE1lZGlhU3RyZWFtRW5hYmxlZCwgbWVkaWFTdHJlYW1FbmFibGVk
KQorICAgIG1hY3JvKFdlYktpdE1lZGlhU3RyZWFtRW5hYmxlZCwgTWVkaWFTdHJlYW1FbmFibGVk
LCBtZWRpYVN0cmVhbUVuYWJsZWQpIFwKKyAgICBtYWNybyhXZWJLaXRNZXRhUmVmcmVzaEVuYWJs
ZWQsIE1ldGFSZWZyZXNoRW5hYmxlZCwgbWV0YVJlZnJlc2hFbmFibGVkKQogCiAjZGVmaW5lIE9W
RVJSSURFX1BSRUZFUkVOQ0VfQU5EX1NFVF9JTl9FWElTVElOR19QQUdFUyhUZXN0UnVubmVyTmFt
ZSwgU2V0dGluZ3NOYW1lLCBXZWJQcmVmZXJlbmNlc05hbWUpIFwKICAgICBpZiAocHJlZmVyZW5j
ZSA9PSAjVGVzdFJ1bm5lck5hbWUpIHsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDIwNDIwNzUuLjA3MzhhZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI3NTYsNiArMjc1Niw3
IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUpCiAgICAgc2V0dGluZ3Muc2V0Rm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWlu
VGhyZWFkRm9yUGVyZm9ybWFuY2VUZXN0aW5nKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6Zm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9y
bWFuY2VUZXN0aW5nS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxp
ZGF0aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OmludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5z
ZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5OjpzcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRLZXkoKSkpOworICAgIHNldHRp
bmdzLnNldE1ldGFSZWZyZXNoRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6Om1ldGFSZWZyZXNoRW5hYmxlZEtleSgpKSk7CiAKICAgICBEYXRhYmFzZU1h
bmFnZXI6OnNpbmdsZXRvbigpLnNldElzQXZhaWxhYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6ZGF0YWJhc2VzRW5hYmxlZEtleSgpKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252151</attachid>
            <date>2015-05-01 08:49:18 -0700</date>
            <delta_ts>2015-05-01 09:35:20 -0700</delta_ts>
            <desc>New approach v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15632</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZDA1MmM3Li43MzY1MjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDUt
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkg
dG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMzMz
MTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVy
L21ldGEtcmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVy
L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNS0wNC0zMCAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBVcGRhdGUg
cmVzdWx0cyBvZiBpbnNwZWN0b3IgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9sb2Fk
ZXIvbWV0YS1yZWZyZXNoLWRpc2FibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2xvYWRl
ci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmJiOWI1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9s
b2FkZXIvbWV0YS1yZWZyZXNoLWRpc2FibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoZSBwcmVmZXJlbmNlIHRvIGRpc2FibGUgbWV0YSByZWZy
ZXNoZXMgd29ya3MgYXMgZXhwZWN0ZWQuCitZb3Ugc2hvdWxkIHNlZSB0aGlzIHRleHQgd2hlbiB0
aGUgdGVzdCBpcyBkb25lLgorSWYgeW91IGRvIG5vdCBzZWUgdGhpcyB0ZXh0LCBhbmQgaW5zdGVh
ZCB5b3Ugc2VlIGEgYmxhbmsgcGFnZSwgdGhlbiB0aGUgcmVkaXJlY3QgaGFwcGVuZWQsIHdoaWNo
IGl0IHNob3VsZCBub3QgaGF2ZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL21l
dGEtcmVmcmVzaC1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvbG9hZGVyL21ldGEtcmVmcmVz
aC1kaXNhYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YmMw
MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbWV0YS1yZWZyZXNoLWRp
c2FibGVkLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dE1ldGFSZWZyZXNoRW5hYmxlZCIsICIwIik7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZCgp
Cit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBzZXRUaW1lb3V0KCJ0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsiLCAxMDApOworfQorPC9zY3JpcHQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD1yZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbCI+
ICAgIAorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgorVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhlIHByZWZlcmVuY2UgdG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcyB3b3JrcyBhcyBl
eHBlY3RlZC48YnI+CitZb3Ugc2hvdWxkIHNlZSB0aGlzIHRleHQgd2hlbiB0aGUgdGVzdCBpcyBk
b25lLjxicj4KK0lmIHlvdSBkbyBub3Qgc2VlIHRoaXMgdGV4dCwgYW5kIGluc3RlYWQgeW91IHNl
ZSBhIGJsYW5rIHBhZ2UsIHRoZW4gdGhlIHJlZGlyZWN0IGhhcHBlbmVkLCB3aGljaCBpdCBzaG91
bGQgbm90IGhhdmUuPGJyPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVy
L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvbG9hZGVyL3Jlc291cmNl
cy9ub3RpZnktZG9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNi
ZDYyZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9sb2FkZXIvcmVzb3VyY2VzL25v
dGlmeS1kb25lLmh0bWwKQEAgLTAsMCArMSw0IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDQyNDNkZjIuLmM5OGJkOGUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMDgzLDYg
KzMwODMsOSBAQCBodHRwL3Rlc3RzL2NvbnRlbnRmaWx0ZXJpbmcgWyBTa2lwIF0KIFsgUmVsZWFz
ZSBdIGluc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5ZXJzLWZvci1ub2RlLmh0bWwgWyBTa2lw
IF0gIyBUaW1lb3V0cwogWyBSZWxlYXNlIF0gaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXll
cnMtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbCAgWyBTa2lwIF0gIyBUaW1lb3V0cwogCisjIFdpbmRv
d3MgZG9lc24ndCBoYXZlIEFQSSBmb3IgZGlzYWJsaW5nIG1ldGEgcmVmcmVzaAorbG9hZGVyL21l
dGEtcmVmcmVzaC1kaXNhYmxlZC5odG1sIFsgU2tpcCBdCisKICMgU3RhcnRlZCBmYWlsaW5nIHJl
Y2VudGx5Lgogd2Via2l0Lm9yZy9iLzE0MzI3NSBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWhp
ZGVzLWFsbC1lbGVtZW50cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY5
OTRlNzkuLjQwMzk5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wNS0wMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBk
aXNhYmxlIG1ldGEgcmVmcmVzaGVzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAzMzMxOTg+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbG9hZGVy
L21ldGEtcmVmcmVzaC1kaXNhYmxlZC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYpOiBCYWlsIGVh
cmx5IGlmIFNldHRpbmdzIGhhdmUgbWV0YSByZWZyZXNoZXMgZGlzYWJsZWQuCisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5pbjoKKwogMjAxNS0wNC0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENvbXBpbGUgZml4IHdoZW4gdXNpbmcgY29u
dGVudCBleHRlbnNpb25zIGRlYnVnZ2luZyBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggNWRhZTE4Ni4uZmFlZDhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMDAyLDYg
KzMwMDIsOSBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYg
ZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEhUVFBIZWFkZXJOYW1lOjpSZWZyZXNoOiB7CisgICAgICAgIGlmIChwYWdlKCkgJiYgIXBhZ2Uo
KS0+c2V0dGluZ3MoKS5tZXRhUmVmcmVzaEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGRvdWJsZSBkZWxheTsKICAgICAgICAgU3RyaW5nIHVybFN0cmluZzsKICAgICAg
ICAgaWYgKGZyYW1lICYmIHBhcnNlSFRUUFJlZnJlc2goY29udGVudCwgdHJ1ZSwgZGVsYXksIHVy
bFN0cmluZykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCmluZGV4IDViMWQ0ODMuLjcwMTU2ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpAQCAtMjQxLDMgKzI0MSw0IEBAIGF0dGFjaG1lbnRF
bGVtZW50RW5hYmxlZCBpbml0aWFsPXRydWUsIGNvbmRpdGlvbmFsPUFUVEFDSE1FTlRfRUxFTUVO
VAogCiBuZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCBpbml0aWFsPWZhbHNlLCBzZXRO
ZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM9MQogCittZXRhUmVmcmVzaEVuYWJsZWQgaW5pdGlh
bD10cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOTMwZDkyNy4uZjM1MTQyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA1LTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGRpc2FibGUgbWV0YSByZWZyZXNoZXMu
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDMzMzE5OD4gYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBwcmVmZXJlbmNlIHRvIGVuYWJsZS9kaXNhYmxl
IG1ldGEgcmVmcmVzaGVzLCBlbmFibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVy
ZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0TWV0YVJlZnJlc2hFbmFibGVkOl0pOgorICAgICAgICAo
LVtXZWJQcmVmZXJlbmNlcyBtZXRhUmVmcmVzaEVuYWJsZWRdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgorCiAyMDE1LTA0LTMw
ICBKb24gRGF2aXMgIDxqb25kQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBj
b25zb2xlIHNob3VsZCBzaG93IGFuIGljb24gZm9yIGNvbnNvbGUuaW5mbygpIG1lc3NhZ2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaAppbmRleCA0ZTkwNWJiLi5hZWE5MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTE3Miw2ICsxNzIsNyBA
QAogI2RlZmluZSBXZWJLaXREZWJ1Z0Z1bGxQYWdlWm9vbVByZWZlcmVuY2VLZXkgQCJXZWJLaXRE
ZWJ1Z0Z1bGxQYWdlWm9vbVByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdE1pbmltdW1ab29t
Rm9udFNpemVQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TWluaW11bVpvb21Gb250U2l6ZVByZWZlcmVu
Y2VLZXkiCiAjZGVmaW5lIFdlYktpdEFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZEtleSBA
IkFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0TWV0YVJlZnJl
c2hFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1ldGFSZWZyZXNoRW5hYmxlZCIKIAogI2lm
IFRBUkdFVF9PU19JUEhPTkUKICNkZWZpbmUgV2ViS2l0U3RhbmRhbG9uZVByZWZlcmVuY2VLZXkg
QCJXZWJLaXRTdGFuZGFsb25lUHJlZmVyZW5jZUtleSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGQ0ZmMyMTguLjI5NzRlMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNDQ0LDYgKzQ0NCw3IEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZQogI2VuZGlmCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdLCAgV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVm
ZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktp
dE1ldGFSZWZyZXNoRW5hYmxlZFByZWZlcmVuY2VLZXksCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFN0b3JhZ2VUcmFja2Vy
RW5hYmxlZFByZWZlcmVuY2VLZXksCiAjZW5kaWYKQEAgLTI0OTYsNiArMjQ5NywxNiBAQCAtIChC
T09MKWFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZAogICAgIHJldHVybiBbc2VsZiBfYm9v
bFZhbHVlRm9yS2V5OldlYktpdEFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZEtleV07CiB9
CiAKKy0gKHZvaWQpc2V0TWV0YVJlZnJlc2hFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBb
c2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdE1ldGFSZWZyZXNoRW5hYmxl
ZFByZWZlcmVuY2VLZXldOworfQorCistIChCT09MKW1ldGFSZWZyZXNoRW5hYmxlZAoreworICAg
IHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE1ldGFSZWZyZXNoRW5hYmxlZFBy
ZWZlcmVuY2VLZXldOworfQorCiAtIChCT09MKWphdmFTY3JpcHRNYXJrdXBFbmFibGVkCiB7CiAg
ICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0SmF2YVNjcmlwdE1hcmt1cEVu
YWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDExYWM0ODMuLjZlYjI5NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtNDM5
LDYgKzQzOSw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1vZGVsQ2hh
bmdlZEludGVybmFsTm90aWZpY2F0aW9uOwogLSAodm9pZClzZXRBbnRpYWxpYXNlZEZvbnREaWxh
dGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKIC0gKEJPT0wpYW50aWFsaWFzZWRGb250RGlsYXRpb25F
bmFibGVkOwogCistICh2b2lkKXNldE1ldGFSZWZyZXNoRW5hYmxlZDooQk9PTClmbGFnOworLSAo
Qk9PTCltZXRhUmVmcmVzaEVuYWJsZWQ7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGph
dmFTY3JpcHRNYXJrdXBFbmFibGVkOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDgwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KaW5kZXggMTQ2YTA0Yi4uZmFhMDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMjMzMCw2ICsyMzMwLDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFu
Z2VkOihXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCiAgICAgfQogCiAgICAgc2V0dGluZ3Mu
c2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgcGx1Z0luU25hcHNob3R0
aW5nRW5hYmxlZF0pOworICAgIHNldHRpbmdzLnNldE1ldGFSZWZyZXNoRW5hYmxlZChbcHJlZmVy
ZW5jZXMgbWV0YVJlZnJlc2hFbmFibGVkXSk7CiAKICAgICBzZXR0aW5ncy5zZXRGaXhlZFBvc2l0
aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0cnVlKTsKICNpZiBQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTli
NjE2OC4uM2RkMzE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA1LTAxICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGRp
c2FibGUgbWV0YSByZWZyZXNoZXMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDMzMzE5OD4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQyNjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBwcmVmZXJl
bmNlIHRvIGVuYWJsZS9kaXNhYmxlIG1ldGEgcmVmcmVzaGVzLCBlbmFibGVkIGJ5IGRlZmF1bHQu
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVy
ZW5jZXNTZXRNZXRhUmVmcmVzaEVuYWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldE1l
dGFSZWZyZXNoRW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0SWdub3JlVmlld3Bv
cnRTY2FsaW5nQ29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZTo6b3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMpOgorCiAyMDE1LTA0LTMwICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbG9uZy1kZXByZWNhdGVkIHVu
dXNlZCBXS1ZpZXcgbWluaW11bUxheW91dFdpZHRoIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCmluZGV4IDMxZTlkZjku
LjQ2MmUwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNl
c0RlZmluaXRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
RGVmaW5pdGlvbnMuaApAQCAtMTk2LDYgKzE5Niw3IEBACiAgICAgbWFjcm8oTG9uZ01vdXNlUHJl
c3NFbmFibGVkLCBsb25nTW91c2VQcmVzc0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAg
ICAgbWFjcm8oTmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQsIG5ld0Jsb2NrSW5zaWRl
SW5saW5lTW9kZWxFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKEFudGlh
bGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZCwgYW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVk
LCBCb29sLCBib29sLCB0cnVlKSBcCisgICAgbWFjcm8oTWV0YVJlZnJlc2hFbmFibGVkLCBtZXRh
UmVmcmVzaEVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKIAogI2RlZmluZSBGT1JfRUFDSF9X
RUJLSVRfRE9VQkxFX1BSRUZFUkVOQ0UobWFjcm8pIFwKICAgICBtYWNybyhJbmNyZW1lbnRhbFJl
bmRlcmluZ1N1cHByZXNzaW9uVGltZW91dCwgaW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lv
blRpbWVvdXQsIERvdWJsZSwgZG91YmxlLCA1KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggYWUxNDNhMS4uZTc4Yjc0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApA
QCAtMTM1NiwzICsxMzU2LDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldElnbm9yZVZpZXdwb3J0
U2NhbGluZ0NvbnN0cmFpbnRzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jCiB7CiAgICAgcmV0
dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmlnbm9yZVZpZXdwb3J0U2NhbGluZ0NvbnN0cmFp
bnRzKCk7CiB9CisKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldE1ldGFSZWZyZXNoRW5hYmxlZChXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBs
KHByZWZlcmVuY2VzUmVmKS0+c2V0TWV0YVJlZnJlc2hFbmFibGVkKGVuYWJsZWQpOworfQorCiti
b29sIFdLUHJlZmVyZW5jZXNHZXRNZXRhUmVmcmVzaEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+bWV0
YVJlZnJlc2hFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCmluZGV4IGEwYjQyNzkuLjQ0NmEw
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzUmVmUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCkBAIC0zNjksNiArMzY5LDEwIEBAIFdLX0VYUE9SVCBib29s
IFdLUHJlZmVyZW5jZXNHZXRBbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdFJ1bnRp
bWVGbGFncyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzLCBXS0phdmFTY3JpcHRSdW50aW1l
RmxhZ1NldCBqYXZhc2NyaXB0UnVudGltZUZsYWdTZXQpOwogV0tfRVhQT1JUIFdLSmF2YVNjcmlw
dFJ1bnRpbWVGbGFnU2V0IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMpOwogCisvLyBEZWZhdWx0cyB0byB0cnVlLgorV0tf
RVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldE1ldGFSZWZyZXNoRW5hYmxlZChXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVm
ZXJlbmNlc0dldE1ldGFSZWZyZXNoRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
aW5kZXggZjdiNmE2ZC4uZjE4ZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTIwNiw3
ICsyMDYsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpvdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9y
VGVzdFJ1bm5lcihXZWJQYWdlR3JvdXBQcm94eSogcGFnZQogICAgIG1hY3JvKFdlYktpdFNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCBTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwg
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIFwKICAgICBtYWNybyhXZWJLaXRFbmFibGVD
YXJldEJyb3dzaW5nLCBDYXJldEJyb3dzaW5nRW5hYmxlZCwgY2FyZXRCcm93c2luZ0VuYWJsZWQp
IFwKICAgICBtYWNybyhXZWJLaXREaXNwbGF5SW1hZ2VzS2V5LCBMb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHksIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkgXAotICAgIG1hY3JvKFdlYktpdE1lZGlh
U3RyZWFtRW5hYmxlZCwgTWVkaWFTdHJlYW1FbmFibGVkLCBtZWRpYVN0cmVhbUVuYWJsZWQpCisg
ICAgbWFjcm8oV2ViS2l0TWVkaWFTdHJlYW1FbmFibGVkLCBNZWRpYVN0cmVhbUVuYWJsZWQsIG1l
ZGlhU3RyZWFtRW5hYmxlZCkgXAorICAgIG1hY3JvKFdlYktpdE1ldGFSZWZyZXNoRW5hYmxlZCwg
TWV0YVJlZnJlc2hFbmFibGVkLCBtZXRhUmVmcmVzaEVuYWJsZWQpCiAKICNkZWZpbmUgT1ZFUlJJ
REVfUFJFRkVSRU5DRV9BTkRfU0VUX0lOX0VYSVNUSU5HX1BBR0VTKFRlc3RSdW5uZXJOYW1lLCBT
ZXR0aW5nc05hbWUsIFdlYlByZWZlcmVuY2VzTmFtZSkgXAogICAgIGlmIChwcmVmZXJlbmNlID09
ICNUZXN0UnVubmVyTmFtZSkgeyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggMjA0MjA3NS4uOTc1YTIzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjc1Nyw2ICsyNzU3LDggQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSkKICAgICBzZXR0aW5ncy5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxl
ZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmludGVyYWN0aXZl
Rm9ybVZhbGlkYXRpb25FbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRTcGF0aWFsTmF2
aWdhdGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpzcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRLZXkoKSkpOwogCisgICAgc2V0dGluZ3Muc2V0TWV0
YVJlZnJlc2hFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6bWV0YVJlZnJlc2hFbmFibGVkS2V5KCkpKTsKKwogICAgIERhdGFiYXNlTWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0SXNBdmFpbGFibGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjpkYXRhYmFzZXNFbmFibGVkS2V5KCkpKTsKIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAwMjdmNzUwLi42Y2I1NWVkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDUtMDEgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkgdG8gZGlzYWJsZSBtZXRh
IHJlZnJlc2hlcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMzMzMTk4PiBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcyk6IFJlc2V0IHRoZSBtZXRhIHJlZnJlc2ggcHJlZiBiZXR3ZWVuIHRlc3RzLgorCiAy
MDE1LTA0LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFByb3ZpZGUgYSBydW50aW1lIGZsYWcgdG8gcnVuLXdlYmtpdC10ZXN0cyB0aGF0IHNob3dzIHRo
ZSB0ZXN0IHZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpp
bmRleCA0YjU4N2Y0Li5iY2NkNGE5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCkBAIC05MjgsNiArOTI4LDggQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpCiAgICAgW3ByZWZlcmVuY2VzIHNldExvYWRzU2l0
ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlOk5PXTsKICAgICBbcHJlZmVyZW5j
ZXMgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldFNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZDpOT107CisgICAgW3ByZWZlcmVuY2VzIHNldE1ldGFSZWZy
ZXNoRW5hYmxlZDpZRVNdOworCiAgICAgaWYgKHBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKSB7CiAgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOltO
U1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKShwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbi5nZXQoKSldXTsKICAgICAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXJTdHlsZVNoZWV0
RW5hYmxlZDpZRVNdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252153</attachid>
            <date>2015-05-01 09:35:20 -0700</date>
            <delta_ts>2015-05-01 10:33:35 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16270</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZDA1MmM3Li43MzY1MjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDUt
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkg
dG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMzMz
MTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVy
L21ldGEtcmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVy
L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNS0wNC0zMCAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBVcGRhdGUg
cmVzdWx0cyBvZiBpbnNwZWN0b3IgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9sb2Fk
ZXIvbWV0YS1yZWZyZXNoLWRpc2FibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2xvYWRl
ci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmJiOWI1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9s
b2FkZXIvbWV0YS1yZWZyZXNoLWRpc2FibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoZSBwcmVmZXJlbmNlIHRvIGRpc2FibGUgbWV0YSByZWZy
ZXNoZXMgd29ya3MgYXMgZXhwZWN0ZWQuCitZb3Ugc2hvdWxkIHNlZSB0aGlzIHRleHQgd2hlbiB0
aGUgdGVzdCBpcyBkb25lLgorSWYgeW91IGRvIG5vdCBzZWUgdGhpcyB0ZXh0LCBhbmQgaW5zdGVh
ZCB5b3Ugc2VlIGEgYmxhbmsgcGFnZSwgdGhlbiB0aGUgcmVkaXJlY3QgaGFwcGVuZWQsIHdoaWNo
IGl0IHNob3VsZCBub3QgaGF2ZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL21l
dGEtcmVmcmVzaC1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvbG9hZGVyL21ldGEtcmVmcmVz
aC1kaXNhYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYWUw
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbWV0YS1yZWZyZXNoLWRp
c2FibGVkLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dE1ldGFSZWZyZXNoRW5hYmxlZCIsICIwIik7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKKy8vIFRoaXMgYml6YXJyZSBw
cmFjdGljZSBvZiBjb250aW51b3VzbHkgZGVsYXlpbmcgbm90aWZ5RG9uZSgpIGJ5IG11bHRpcGxl
IDAtZGVsYXkgdGltZXJzCisvLyBpcyBtZWFudCB0byB3b3JrIGFyb3VuZCBhIGZldyAwLWRlbGF5
cyBpbiB0aGUgbWV0YSByZWZyZXNoIHByb2Nlc3MuCisvLyBUaGUgcmVmcmVzaCBpdHNlbGYgaXMg
b24gYSB0aW1lciwgYW5kIHRoZW4gdGhlIHBvbGljeSBkZWxlZ2F0ZSdzIHJlcGx5IG1pZ2h0IGJl
IG9uIGEgdGltZXIuCisvLyBUaGUgZ29hbCBoZXJlIGlzIHRvIGdpdmUgYSBzdWNjZXNzZnVsbHkg
c2NoZWR1bGVkIG1ldGEgcmVmcmVzaCBsb25nIGVub3VnaCB0byBvY2N1ciwKKy8vIGJ1dCB0byBu
b3QgYWxzbyB3YWl0IGFuIGFyYml0cmFyeSBhbW91bnQgb2YgY2xvY2sgdGltZSBiZWZvcmUgY29u
Y2x1ZGluZyB0aGUgdGVzdC4KK2Z1bmN0aW9uIG5vdGlmeURvbmVEZWxheWVyKGl0ZXJhdGlvbikK
K3sKKyAgICBpZiAoaXRlcmF0aW9uID09IDEwKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIHNldFRpbWVvdXQoIm5vdGlmeURvbmVEZWxheWVyKCIgKyAr
K2l0ZXJhdGlvbiArICIpOyIsIDApOworfQorCitmdW5jdGlvbiBsb2FkZWQoKQoreworICAgIHNl
dFRpbWVvdXQoIm5vdGlmeURvbmVEZWxheWVyKDEpOyIsIDApOworfQorCis8L3NjcmlwdD4KKzxt
ZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPXJlc291cmNlcy9ub3RpZnkt
ZG9uZS5odG1sIj4gICAgCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyI+CitUaGlz
IHRlc3QgbWFrZXMgc3VyZSB0aGUgcHJlZmVyZW5jZSB0byBkaXNhYmxlIG1ldGEgcmVmcmVzaGVz
IHdvcmtzIGFzIGV4cGVjdGVkLjxicj4KK1lvdSBzaG91bGQgc2VlIHRoaXMgdGV4dCB3aGVuIHRo
ZSB0ZXN0IGlzIGRvbmUuPGJyPgorSWYgeW91IGRvIG5vdCBzZWUgdGhpcyB0ZXh0LCBhbmQgaW5z
dGVhZCB5b3Ugc2VlIGEgYmxhbmsgcGFnZSwgdGhlbiB0aGUgcmVkaXJlY3QgaGFwcGVuZWQsIHdo
aWNoIGl0IHNob3VsZCBub3QgaGF2ZS48YnI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9sb2FkZXIvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwgYi9MYXlvdXRUZXN0cy9sb2Fk
ZXIvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uY2JkNjJlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2xvYWRlci9y
ZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbApAQCAtMCwwICsxLDQgQEAKKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDI0M2Rm
Mi4uYzk4YmQ4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTMwODMsNiArMzA4Myw5IEBAIGh0dHAvdGVzdHMvY29udGVudGZpbHRlcmluZyBbIFNraXAg
XQogWyBSZWxlYXNlIF0gaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZm9yLW5vZGUu
aHRtbCBbIFNraXAgXSAjIFRpbWVvdXRzCiBbIFJlbGVhc2UgXSBpbnNwZWN0b3ItcHJvdG9jb2wv
bGF5ZXJzL2xheWVycy1nZW5lcmF0ZWQtY29udGVudC5odG1sICBbIFNraXAgXSAjIFRpbWVvdXRz
CiAKKyMgV2luZG93cyBkb2Vzbid0IGhhdmUgQVBJIGZvciBkaXNhYmxpbmcgbWV0YSByZWZyZXNo
Citsb2FkZXIvbWV0YS1yZWZyZXNoLWRpc2FibGVkLmh0bWwgWyBTa2lwIF0KKwogIyBTdGFydGVk
IGZhaWxpbmcgcmVjZW50bHkuCiB3ZWJraXQub3JnL2IvMTQzMjc1IGFjY2Vzc2liaWxpdHkvYXJp
YS1oaWRkZW4taGlkZXMtYWxsLWVsZW1lbnRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNjk5NGU3OS4uNDAzOTk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDE1LTA1LTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgQVBJIHRvIGRpc2FibGUgbWV0YSByZWZyZXNoZXMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMDMzMzE5OD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDQyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0OiBsb2FkZXIvbWV0YS1yZWZyZXNoLWRpc2FibGVkLmh0bWwKKworICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVp
dik6IEJhaWwgZWFybHkgaWYgU2V0dGluZ3MgaGF2ZSBtZXRhIHJlZnJlc2hlcyBkaXNhYmxlZC4K
KyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmluOgorCiAyMDE1LTA0LTMwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29tcGlsZSBmaXggd2hl
biB1c2luZyBjb250ZW50IGV4dGVuc2lvbnMgZGVidWdnaW5nIGNvZGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA1ZGFlMTg2Li5mYWVkOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTMwMDIsNiArMzAwMiw5IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29u
c3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgSFRUUEhlYWRlck5hbWU6OlJlZnJlc2g6IHsKKyAgICAgICAgaWYgKHBhZ2Uo
KSAmJiAhcGFnZSgpLT5zZXR0aW5ncygpLm1ldGFSZWZyZXNoRW5hYmxlZCgpKQorICAgICAgICAg
ICAgYnJlYWs7CisKICAgICAgICAgZG91YmxlIGRlbGF5OwogICAgICAgICBTdHJpbmcgdXJsU3Ry
aW5nOwogICAgICAgICBpZiAoZnJhbWUgJiYgcGFyc2VIVFRQUmVmcmVzaChjb250ZW50LCB0cnVl
LCBkZWxheSwgdXJsU3RyaW5nKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggNWIxZDQ4
My4uNzAxNTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC0yNDEsMyArMjQxLDQgQEAg
YXR0YWNobWVudEVsZW1lbnRFbmFibGVkIGluaXRpYWw9dHJ1ZSwgY29uZGl0aW9uYWw9QVRUQUNI
TUVOVF9FTEVNRU5UCiAKIG5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkIGluaXRpYWw9
ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcz0xCiAKK21ldGFSZWZyZXNoRW5h
YmxlZCBpbml0aWFsPXRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA5MzBkOTI3Li5mMzUxNDI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTUtMDUtMDEgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkgdG8gZGlzYWJsZSBtZXRh
IHJlZnJlc2hlcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMzMzMTk4PiBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHByZWZlcmVuY2UgdG8gZW5h
YmxlL2Rpc2FibGUgbWV0YSByZWZyZXNoZXMsIGVuYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6
ZV0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRNZXRhUmVmcmVzaEVuYWJsZWQ6XSk6
CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIG1ldGFSZWZyZXNoRW5hYmxlZF0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisK
IDIwMTUtMDQtMzAgIEpvbiBEYXZpcyAgPGpvbmRAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGNvbnNvbGUgc2hvdWxkIHNob3cgYW4gaWNvbiBmb3IgY29uc29sZS5pbmZvKCkg
bWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VLZXlzUHJpdmF0ZS5oCmluZGV4IDRlOTA1YmIuLmFlYTkwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtMTcy
LDYgKzE3Miw3IEBACiAjZGVmaW5lIFdlYktpdERlYnVnRnVsbFBhZ2Vab29tUHJlZmVyZW5jZUtl
eSBAIldlYktpdERlYnVnRnVsbFBhZ2Vab29tUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0
TWluaW11bVpvb21Gb250U2l6ZVByZWZlcmVuY2VLZXkgQCJXZWJLaXRNaW5pbXVtWm9vbUZvbnRT
aXplUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0QW50aWFsaWFzZWRGb250RGlsYXRpb25F
bmFibGVkS2V5IEAiQW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkIgorI2RlZmluZSBXZWJL
aXRNZXRhUmVmcmVzaEVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TWV0YVJlZnJlc2hFbmFi
bGVkIgogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogI2RlZmluZSBXZWJLaXRTdGFuZGFsb25lUHJl
ZmVyZW5jZUtleSBAIldlYktpdFN0YW5kYWxvbmVQcmVmZXJlbmNlS2V5IgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggZDRmYzIxOC4uMjk3NGUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC00NDQs
NiArNDQ0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXks
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0RGF0YWJhc2Vz
RW5hYmxlZFByZWZlcmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZ
RVNdLCAgV2ViS2l0TWV0YVJlZnJlc2hFbmFibGVkUHJlZmVyZW5jZUtleSwKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0U3Rv
cmFnZVRyYWNrZXJFbmFibGVkUHJlZmVyZW5jZUtleSwKICNlbmRpZgpAQCAtMjQ5Niw2ICsyNDk3
LDE2IEBAIC0gKEJPT0wpYW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkCiAgICAgcmV0dXJu
IFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0QW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFi
bGVkS2V5XTsKIH0KIAorLSAodm9pZClzZXRNZXRhUmVmcmVzaEVuYWJsZWQ6KEJPT0wpZW5hYmxl
ZAoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0TWV0YVJl
ZnJlc2hFbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKEJPT0wpbWV0YVJlZnJlc2hFbmFi
bGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TWV0YVJlZnJl
c2hFbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKIC0gKEJPT0wpamF2YVNjcmlwdE1hcmt1cEVu
YWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRKYXZhU2Ny
aXB0TWFya3VwRW5hYmxlZFByZWZlcmVuY2VLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggMTFhYzQ4My4uNmViMjk3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0
ZS5oCkBAIC00MzksNiArNDM5LDkgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0Nh
Y2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb247CiAtICh2b2lkKXNldEFudGlhbGlh
c2VkRm9udERpbGF0aW9uRW5hYmxlZDooQk9PTClmbGFnOwogLSAoQk9PTClhbnRpYWxpYXNlZEZv
bnREaWxhdGlvbkVuYWJsZWQ7CiAKKy0gKHZvaWQpc2V0TWV0YVJlZnJlc2hFbmFibGVkOihCT09M
KWZsYWc7CistIChCT09MKW1ldGFSZWZyZXNoRW5hYmxlZDsKKwogQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgamF2YVNjcmlwdE1hcmt1cEVuYWJsZWQ7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05F
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgODAwMDAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxNDZhMDRiLi5mYWEwMjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yMzMwLDYgKzIzMzAsNyBAQCAtICh2b2lkKV9wcmVm
ZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKICAgICB9CiAKICAg
ICBzZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBwbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkXSk7CisgICAgc2V0dGluZ3Muc2V0TWV0YVJlZnJlc2hFbmFi
bGVkKFtwcmVmZXJlbmNlcyBtZXRhUmVmcmVzaEVuYWJsZWRdKTsKIAogICAgIHNldHRpbmdzLnNl
dEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KHRydWUpOwogI2lmIFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAxOWI2MTY4Li4zZGQzMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MTUtMDUtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBBUEkgdG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIwMzMzMTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIHByZWZlcmVuY2UgdG8gZW5hYmxlL2Rpc2FibGUgbWV0YSByZWZyZXNoZXMsIGVuYWJsZWQg
YnkgZGVmYXVsdC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25z
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAg
ICAoV0tQcmVmZXJlbmNlc1NldE1ldGFSZWZyZXNoRW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZl
cmVuY2VzR2V0TWV0YVJlZnJlc2hFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRJ
Z25vcmVWaWV3cG9ydFNjYWxpbmdDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpvdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTUtMDQtMzAgIFRpbW90aHkgSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBsb25nLWRl
cHJlY2F0ZWQgdW51c2VkIFdLVmlldyBtaW5pbXVtTGF5b3V0V2lkdGggcHJvcGVydGllcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgKaW5k
ZXggMzFlOWRmOS4uNDYyZTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCkBAIC0xOTYsNiArMTk2LDcgQEAKICAgICBtYWNybyhM
b25nTW91c2VQcmVzc0VuYWJsZWQsIGxvbmdNb3VzZVByZXNzRW5hYmxlZCwgQm9vbCwgYm9vbCwg
ZmFsc2UpIFwKICAgICBtYWNybyhOZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCwgbmV3
QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAg
bWFjcm8oQW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkLCBhbnRpYWxpYXNlZEZvbnREaWxh
dGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKKyAgICBtYWNybyhNZXRhUmVmcmVzaEVu
YWJsZWQsIG1ldGFSZWZyZXNoRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXAogCiAjZGVmaW5l
IEZPUl9FQUNIX1dFQktJVF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXAogICAgIG1hY3JvKElu
Y3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0LCBpbmNyZW1lbnRhbFJlbmRlcmlu
Z1N1cHByZXNzaW9uVGltZW91dCwgRG91YmxlLCBkb3VibGUsIDUpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCBhZTE0M2ExLi5l
NzhiNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwCkBAIC0xMzU2LDMgKzEzNTYsMTMgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0SWdu
b3JlVmlld3BvcnRTY2FsaW5nQ29uc3RyYWludHMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmMK
IHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+aWdub3JlVmlld3BvcnRTY2Fs
aW5nQ29uc3RyYWludHMoKTsKIH0KKwordm9pZCBXS1ByZWZlcmVuY2VzU2V0TWV0YVJlZnJlc2hF
bmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sK
KyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRNZXRhUmVmcmVzaEVuYWJsZWQoZW5hYmxl
ZCk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldE1ldGFSZWZyZXNoRW5hYmxlZChXS1ByZWZl
cmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5j
ZXNSZWYpLT5tZXRhUmVmcmVzaEVuYWJsZWQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKaW5kZXggYTBi
NDI3OS4uNDQ2YTBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKQEAgLTM2OSw2ICszNjksMTAgQEAgV0tf
RVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxl
ZChXS1ByZWZlcmVuY2VzUmVmIHAKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRKYXZh
U2NyaXB0UnVudGltZUZsYWdzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMsIFdLSmF2YVNj
cmlwdFJ1bnRpbWVGbGFnU2V0IGphdmFzY3JpcHRSdW50aW1lRmxhZ1NldCk7CiBXS19FWFBPUlQg
V0tKYXZhU2NyaXB0UnVudGltZUZsYWdTZXQgV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRSdW50
aW1lRmxhZ3MoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyk7CiAKKy8vIERlZmF1bHRzIHRv
IHRydWUuCitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0TWV0YVJlZnJlc2hFbmFibGVk
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMsIGJvb2wgZW5hYmxlZCk7CitXS19FWFBPUlQg
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0TWV0YVJlZnJlc2hFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXMpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAppbmRleCBmN2I2YTZkLi5mMThlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cApAQCAtMjA2LDcgKzIwNiw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9vbFBy
ZWZlcmVuY2VGb3JUZXN0UnVubmVyKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlCiAgICAgbWFjcm8o
V2ViS2l0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIFNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgXAogICAgIG1hY3JvKFdl
YktpdEVuYWJsZUNhcmV0QnJvd3NpbmcsIENhcmV0QnJvd3NpbmdFbmFibGVkLCBjYXJldEJyb3dz
aW5nRW5hYmxlZCkgXAogICAgIG1hY3JvKFdlYktpdERpc3BsYXlJbWFnZXNLZXksIExvYWRzSW1h
Z2VzQXV0b21hdGljYWxseSwgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KSBcCi0gICAgbWFjcm8o
V2ViS2l0TWVkaWFTdHJlYW1FbmFibGVkLCBNZWRpYVN0cmVhbUVuYWJsZWQsIG1lZGlhU3RyZWFt
RW5hYmxlZCkKKyAgICBtYWNybyhXZWJLaXRNZWRpYVN0cmVhbUVuYWJsZWQsIE1lZGlhU3RyZWFt
RW5hYmxlZCwgbWVkaWFTdHJlYW1FbmFibGVkKSBcCisgICAgbWFjcm8oV2ViS2l0TWV0YVJlZnJl
c2hFbmFibGVkLCBNZXRhUmVmcmVzaEVuYWJsZWQsIG1ldGFSZWZyZXNoRW5hYmxlZCkKIAogI2Rl
ZmluZSBPVkVSUklERV9QUkVGRVJFTkNFX0FORF9TRVRfSU5fRVhJU1RJTkdfUEFHRVMoVGVzdFJ1
bm5lck5hbWUsIFNldHRpbmdzTmFtZSwgV2ViUHJlZmVyZW5jZXNOYW1lKSBcCiAgICAgaWYgKHBy
ZWZlcmVuY2UgPT0gI1Rlc3RSdW5uZXJOYW1lKSB7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMDQyMDc1Li45NzVhMjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNzU3LDYg
KzI3NTcsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNldHRpbmdzLnNldEludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
aW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNl
dFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OnNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZEtleSgpKSk7CiAKKyAgICBzZXR0
aW5ncy5zZXRNZXRhUmVmcmVzaEVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5OjptZXRhUmVmcmVzaEVuYWJsZWRLZXkoKSkpOworCiAgICAgRGF0YWJhc2VN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRJc0F2YWlsYWJsZShzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRhdGFiYXNlc0VuYWJsZWRLZXkoKSkpOwogCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDAyN2Y3NTAuLjZjYjU1ZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wNS0wMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBk
aXNhYmxlIG1ldGEgcmVmcmVzaGVzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAzMzMxOTg+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKTogUmVzZXQgdGhlIG1ldGEgcmVmcmVzaCBwcmVmIGJldHdlZW4g
dGVzdHMuCisKIDIwMTUtMDQtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUHJvdmlkZSBhIHJ1bnRpbWUgZmxhZyB0byBydW4td2Via2l0LXRlc3RzIHRo
YXQgc2hvd3MgdGhlIHRlc3QgdmlldwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IDRiNTg3ZjQuLmJjY2Q0YTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTkyOCw2ICs5MjgsOCBAQCBzdGF0aWMgdm9pZCBy
ZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBbcHJlZmVyZW5jZXMg
c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2U6Tk9dOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkOk5PXTsKICAgICBbcHJlZmVy
ZW5jZXMgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkOk5PXTsKKyAgICBbcHJlZmVyZW5jZXMg
c2V0TWV0YVJlZnJlc2hFbmFibGVkOllFU107CisKICAgICBpZiAocGVyc2lzdGVudFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24pIHsKICAgICAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb246W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopKHBlcnNpc3RlbnRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uLmdldCgpKV1dOwogICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNl
clN0eWxlU2hlZXRFbmFibGVkOllFU107Cg==
</data>
<flag name="review"
          id="276982"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252156</attachid>
            <date>2015-05-01 10:33:35 -0700</date>
            <delta_ts>2015-05-01 11:21:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16392</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZDA1MmM3Li4xYjQ0NTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDUt
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkg
dG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMzMz
MTk4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBs
b2FkZXIvbWV0YS1yZWZyZXNoLWRpc2FibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogbG9hZGVyL21ldGEtcmVmcmVzaC1kaXNhYmxlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBs
b2FkZXIvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE1LTA0LTMwICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIFVw
ZGF0ZSByZXN1bHRzIG9mIGluc3BlY3RvciB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2xvYWRlci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
bG9hZGVyL21ldGEtcmVmcmVzaC1kaXNhYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYmI5YjVlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2xvYWRlci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhlIHByZWZlcmVuY2UgdG8gZGlzYWJsZSBtZXRh
IHJlZnJlc2hlcyB3b3JrcyBhcyBleHBlY3RlZC4KK1lvdSBzaG91bGQgc2VlIHRoaXMgdGV4dCB3
aGVuIHRoZSB0ZXN0IGlzIGRvbmUuCitJZiB5b3UgZG8gbm90IHNlZSB0aGlzIHRleHQsIGFuZCBp
bnN0ZWFkIHlvdSBzZWUgYSBibGFuayBwYWdlLCB0aGVuIHRoZSByZWRpcmVjdCBoYXBwZW5lZCwg
d2hpY2ggaXQgc2hvdWxkIG5vdCBoYXZlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9sb2Fk
ZXIvbWV0YS1yZWZyZXNoLWRpc2FibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbWV0YS1y
ZWZyZXNoLWRpc2FibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MjczZTM4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2xvYWRlci9tZXRhLXJlZnJl
c2gtZGlzYWJsZWQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0TWV0YVJlZnJlc2hFbmFibGVkIiwgIjAiKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworLy8gVGhpcyBiaXph
cnJlIHByYWN0aWNlIG9mIGNvbnRpbnVvdXNseSBkZWxheWluZyBub3RpZnlEb25lKCkgYnkgbXVs
dGlwbGUgMC1kZWxheSB0aW1lcnMKKy8vIGlzIG1lYW50IHRvIHdvcmsgYXJvdW5kIGEgZmV3IDAt
ZGVsYXlzIGluIHRoZSBtZXRhIHJlZnJlc2ggcHJvY2Vzcy4KKy8vIFRoZSByZWZyZXNoIGl0c2Vs
ZiBpcyBvbiBhIHRpbWVyLCBhbmQgdGhlbiB0aGUgcG9saWN5IGRlbGVnYXRlJ3MgcmVwbHkgbWln
aHQgYmUgb24gYSB0aW1lci4KKy8vIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2l2ZSBhIHN1Y2Nlc3Nm
dWxseSBzY2hlZHVsZWQgbWV0YSByZWZyZXNoIGxvbmcgZW5vdWdoIHRvIG9jY3VyLAorLy8gYnV0
IHRvIG5vdCBhbHNvIHdhaXQgYW4gYXJiaXRyYXJ5IGFtb3VudCBvZiBjbG9jayB0aW1lIGJlZm9y
ZSBjb25jbHVkaW5nIHRoZSB0ZXN0LgorZnVuY3Rpb24gbm90aWZ5RG9uZURlbGF5ZXIoaXRlcmF0
aW9uKQoreworICAgIGlmIChpdGVyYXRpb24gPT0gMTApIHsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlRoaXMgdGVzdCBj
YW4gb25seSBiZSBydW4gdW5kZXIgRFJUL1dLVFIiOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIHNldFRpbWVvdXQoIm5vdGlmeURvbmVEZWxheWVyKCIgKyArK2l0ZXJhdGlvbiAr
ICIpOyIsIDApOworfQorCitmdW5jdGlvbiBsb2FkZWQoKQoreworICAgIHNldFRpbWVvdXQoIm5v
dGlmeURvbmVEZWxheWVyKDEpOyIsIDApOworfQorCis8L3NjcmlwdD4KKzxtZXRhIGh0dHAtZXF1
aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPXJlc291cmNlcy9ub3RpZnktZG9uZS5odG1sIj4g
ICAgCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyI+CitUaGlzIHRlc3QgbWFrZXMg
c3VyZSB0aGUgcHJlZmVyZW5jZSB0byBkaXNhYmxlIG1ldGEgcmVmcmVzaGVzIHdvcmtzIGFzIGV4
cGVjdGVkLjxicj4KK1lvdSBzaG91bGQgc2VlIHRoaXMgdGV4dCB3aGVuIHRoZSB0ZXN0IGlzIGRv
bmUuPGJyPgorSWYgeW91IGRvIG5vdCBzZWUgdGhpcyB0ZXh0LCBhbmQgaW5zdGVhZCB5b3Ugc2Vl
IGEgYmxhbmsgcGFnZSwgdGhlbiB0aGUgcmVkaXJlY3QgaGFwcGVuZWQsIHdoaWNoIGl0IHNob3Vs
ZCBub3QgaGF2ZS48YnI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9sb2FkZXIv
cmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwgYi9MYXlvdXRUZXN0cy9sb2FkZXIvcmVzb3VyY2Vz
L25vdGlmeS1kb25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Jk
NjJlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2xvYWRlci9yZXNvdXJjZXMvbm90
aWZ5LWRvbmUuaHRtbApAQCAtMCwwICsxLDQgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDI0M2RmMi4uYzk4YmQ4ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMwODMsNiAr
MzA4Myw5IEBAIGh0dHAvdGVzdHMvY29udGVudGZpbHRlcmluZyBbIFNraXAgXQogWyBSZWxlYXNl
IF0gaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZm9yLW5vZGUuaHRtbCBbIFNraXAg
XSAjIFRpbWVvdXRzCiBbIFJlbGVhc2UgXSBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVy
cy1nZW5lcmF0ZWQtY29udGVudC5odG1sICBbIFNraXAgXSAjIFRpbWVvdXRzCiAKKyMgV2luZG93
cyBkb2Vzbid0IGhhdmUgQVBJIGZvciBkaXNhYmxpbmcgbWV0YSByZWZyZXNoCitsb2FkZXIvbWV0
YS1yZWZyZXNoLWRpc2FibGVkLmh0bWwgWyBTa2lwIF0KKwogIyBTdGFydGVkIGZhaWxpbmcgcmVj
ZW50bHkuCiB3ZWJraXQub3JnL2IvMTQzMjc1IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4taGlk
ZXMtYWxsLWVsZW1lbnRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk5
NGU3OS4uMTI1NTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA1LTAxICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGRp
c2FibGUgbWV0YSByZWZyZXNoZXMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDMzMzE5OD4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQyNjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIFRlc3Q6IGxv
YWRlci9tZXRhLXJlZnJlc2gtZGlzYWJsZWQuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KTogQmFp
bCBlYXJseSBpZiBTZXR0aW5ncyBoYXZlIG1ldGEgcmVmcmVzaGVzIGRpc2FibGVkLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuaW46CisKIDIwMTUtMDQtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDb21waWxlIGZpeCB3aGVuIHVzaW5n
IGNvbnRlbnQgZXh0ZW5zaW9ucyBkZWJ1Z2dpbmcgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDVkYWUxODYuLmZhZWQ4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzAw
Miw2ICszMDAyLDkgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdHJp
bmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBIVFRQSGVhZGVyTmFtZTo6UmVmcmVzaDogeworICAgICAgICBpZiAocGFnZSgpICYmICFw
YWdlKCktPnNldHRpbmdzKCkubWV0YVJlZnJlc2hFbmFibGVkKCkpCisgICAgICAgICAgICBicmVh
azsKKwogICAgICAgICBkb3VibGUgZGVsYXk7CiAgICAgICAgIFN0cmluZyB1cmxTdHJpbmc7CiAg
ICAgICAgIGlmIChmcmFtZSAmJiBwYXJzZUhUVFBSZWZyZXNoKGNvbnRlbnQsIHRydWUsIGRlbGF5
LCB1cmxTdHJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCA1YjFkNDgzLi43MDE1
NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTI0MSwzICsyNDEsNCBAQCBhdHRhY2ht
ZW50RWxlbWVudEVuYWJsZWQgaW5pdGlhbD10cnVlLCBjb25kaXRpb25hbD1BVFRBQ0hNRU5UX0VM
RU1FTlQKIAogbmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQgaW5pdGlhbD1mYWxzZSwg
c2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKIAorbWV0YVJlZnJlc2hFbmFibGVkIGlu
aXRpYWw9dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDkzMGQ5MjcuLmFmZWJiNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0wNS0wMSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBkaXNhYmxlIG1ldGEgcmVmcmVz
aGVzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAzMzMxOTg+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBBZGQgYSBwcmVmZXJlbmNlIHRvIGVuYWJs
ZS9kaXNhYmxlIG1ldGEgcmVmcmVzaGVzLCBlbmFibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVd
KToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0TWV0YVJlZnJlc2hFbmFibGVkOl0pOgor
ICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBtZXRhUmVmcmVzaEVuYWJsZWRdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgorCiAy
MDE1LTA0LTMwICBKb24gRGF2aXMgIDxqb25kQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBjb25zb2xlIHNob3VsZCBzaG93IGFuIGljb24gZm9yIGNvbnNvbGUuaW5mbygpIG1l
c3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAppbmRleCA0ZTkwNWJiLi5hZWE5MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTE3Miw2
ICsxNzIsNyBAQAogI2RlZmluZSBXZWJLaXREZWJ1Z0Z1bGxQYWdlWm9vbVByZWZlcmVuY2VLZXkg
QCJXZWJLaXREZWJ1Z0Z1bGxQYWdlWm9vbVByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdE1p
bmltdW1ab29tRm9udFNpemVQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TWluaW11bVpvb21Gb250U2l6
ZVByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdEFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5h
YmxlZEtleSBAIkFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0
TWV0YVJlZnJlc2hFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1ldGFSZWZyZXNoRW5hYmxl
ZCIKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKICNkZWZpbmUgV2ViS2l0U3RhbmRhbG9uZVByZWZl
cmVuY2VLZXkgQCJXZWJLaXRTdGFuZGFsb25lUHJlZmVyZW5jZUtleSIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGQ0ZmMyMTguLjI5NzRlMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNDQ0LDYg
KzQ0NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogI2VuZGlmCiAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAog
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdERhdGFiYXNlc0Vu
YWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVT
XSwgIFdlYktpdE1ldGFSZWZyZXNoRW5hYmxlZFByZWZlcmVuY2VLZXksCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFN0b3Jh
Z2VUcmFja2VyRW5hYmxlZFByZWZlcmVuY2VLZXksCiAjZW5kaWYKQEAgLTI0OTYsNiArMjQ5Nywx
NiBAQCAtIChCT09MKWFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZAogICAgIHJldHVybiBb
c2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxl
ZEtleV07CiB9CiAKKy0gKHZvaWQpc2V0TWV0YVJlZnJlc2hFbmFibGVkOihCT09MKWVuYWJsZWQK
K3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdE1ldGFSZWZy
ZXNoRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCistIChCT09MKW1ldGFSZWZyZXNoRW5hYmxl
ZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE1ldGFSZWZyZXNo
RW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiAtIChCT09MKWphdmFTY3JpcHRNYXJrdXBFbmFi
bGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0SmF2YVNjcmlw
dE1hcmt1cEVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDExYWM0ODMuLjZlYjI5NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUu
aApAQCAtNDM5LDYgKzQzOSw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNo
ZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uOwogLSAodm9pZClzZXRBbnRpYWxpYXNl
ZEZvbnREaWxhdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKIC0gKEJPT0wpYW50aWFsaWFzZWRGb250
RGlsYXRpb25FbmFibGVkOwogCistICh2b2lkKXNldE1ldGFSZWZyZXNoRW5hYmxlZDooQk9PTClm
bGFnOworLSAoQk9PTCltZXRhUmVmcmVzaEVuYWJsZWQ7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIGphdmFTY3JpcHRNYXJrdXBFbmFibGVkOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDgwMDAwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMTQ2YTA0Yi4uZmFhMDI1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjMzMCw2ICsyMzMwLDcgQEAgLSAodm9pZClfcHJlZmVy
ZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCiAgICAgfQogCiAgICAg
c2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgcGx1Z0lu
U25hcHNob3R0aW5nRW5hYmxlZF0pOworICAgIHNldHRpbmdzLnNldE1ldGFSZWZyZXNoRW5hYmxl
ZChbcHJlZmVyZW5jZXMgbWV0YVJlZnJlc2hFbmFibGVkXSk7CiAKICAgICBzZXR0aW5ncy5zZXRG
aXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0cnVlKTsKICNpZiBQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggMTliNjE2OC4uNjViM2I2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1
LTA1LTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
QVBJIHRvIGRpc2FibGUgbWV0YSByZWZyZXNoZXMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
MDMzMzE5OD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQy
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAg
IEFkZCBhIHByZWZlcmVuY2UgdG8gZW5hYmxlL2Rpc2FibGUgbWV0YSByZWZyZXNoZXMsIGVuYWJs
ZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRp
b25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV0tQcmVmZXJlbmNlc1NldE1ldGFSZWZyZXNoRW5hYmxlZCk6CisgICAgICAgIChXS1By
ZWZlcmVuY2VzR2V0TWV0YVJlZnJlc2hFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNH
ZXRJZ25vcmVWaWV3cG9ydFNjYWxpbmdDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjpvdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTUtMDQtMzAgIFRpbW90aHkg
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBsb25n
LWRlcHJlY2F0ZWQgdW51c2VkIFdLVmlldyBtaW5pbXVtTGF5b3V0V2lkdGggcHJvcGVydGllcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlv
bnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgK
aW5kZXggMzFlOWRmOS4uNDYyZTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCkBAIC0xOTYsNiArMTk2LDcgQEAKICAgICBtYWNy
byhMb25nTW91c2VQcmVzc0VuYWJsZWQsIGxvbmdNb3VzZVByZXNzRW5hYmxlZCwgQm9vbCwgYm9v
bCwgZmFsc2UpIFwKICAgICBtYWNybyhOZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCwg
bmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAg
ICAgbWFjcm8oQW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkLCBhbnRpYWxpYXNlZEZvbnRE
aWxhdGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKKyAgICBtYWNybyhNZXRhUmVmcmVz
aEVuYWJsZWQsIG1ldGFSZWZyZXNoRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXAogCiAjZGVm
aW5lIEZPUl9FQUNIX1dFQktJVF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXAogICAgIG1hY3Jv
KEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0LCBpbmNyZW1lbnRhbFJlbmRl
cmluZ1N1cHByZXNzaW9uVGltZW91dCwgRG91YmxlLCBkb3VibGUsIDUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCBhZTE0M2Ex
Li5lNzhiNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
cmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXMuY3BwCkBAIC0xMzU2LDMgKzEzNTYsMTMgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0
SWdub3JlVmlld3BvcnRTY2FsaW5nQ29uc3RyYWludHMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmMKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+aWdub3JlVmlld3BvcnRT
Y2FsaW5nQ29uc3RyYWludHMoKTsKIH0KKwordm9pZCBXS1ByZWZlcmVuY2VzU2V0TWV0YVJlZnJl
c2hFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkK
K3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRNZXRhUmVmcmVzaEVuYWJsZWQoZW5h
YmxlZCk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldE1ldGFSZWZyZXNoRW5hYmxlZChXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJlZmVy
ZW5jZXNSZWYpLT5tZXRhUmVmcmVzaEVuYWJsZWQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKaW5kZXgg
YTBiNDI3OS4uNDQ2YTBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKQEAgLTM2OSw2ICszNjksMTAgQEAg
V0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5h
YmxlZChXS1ByZWZlcmVuY2VzUmVmIHAKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRK
YXZhU2NyaXB0UnVudGltZUZsYWdzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMsIFdLSmF2
YVNjcmlwdFJ1bnRpbWVGbGFnU2V0IGphdmFzY3JpcHRSdW50aW1lRmxhZ1NldCk7CiBXS19FWFBP
UlQgV0tKYXZhU2NyaXB0UnVudGltZUZsYWdTZXQgV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRS
dW50aW1lRmxhZ3MoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyk7CiAKKy8vIERlZmF1bHRz
IHRvIHRydWUuCitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0TWV0YVJlZnJlc2hFbmFi
bGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMsIGJvb2wgZW5hYmxlZCk7CitXS19FWFBP
UlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TWV0YVJlZnJlc2hFbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXMpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAppbmRleCBmN2I2YTZkLi5mMThlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcApAQCAtMjA2LDcgKzIwNiw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9v
bFByZWZlcmVuY2VGb3JUZXN0UnVubmVyKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlCiAgICAgbWFj
cm8oV2ViS2l0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIFNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgXAogICAgIG1hY3Jv
KFdlYktpdEVuYWJsZUNhcmV0QnJvd3NpbmcsIENhcmV0QnJvd3NpbmdFbmFibGVkLCBjYXJldEJy
b3dzaW5nRW5hYmxlZCkgXAogICAgIG1hY3JvKFdlYktpdERpc3BsYXlJbWFnZXNLZXksIExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseSwgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KSBcCi0gICAgbWFj
cm8oV2ViS2l0TWVkaWFTdHJlYW1FbmFibGVkLCBNZWRpYVN0cmVhbUVuYWJsZWQsIG1lZGlhU3Ry
ZWFtRW5hYmxlZCkKKyAgICBtYWNybyhXZWJLaXRNZWRpYVN0cmVhbUVuYWJsZWQsIE1lZGlhU3Ry
ZWFtRW5hYmxlZCwgbWVkaWFTdHJlYW1FbmFibGVkKSBcCisgICAgbWFjcm8oV2ViS2l0TWV0YVJl
ZnJlc2hFbmFibGVkLCBNZXRhUmVmcmVzaEVuYWJsZWQsIG1ldGFSZWZyZXNoRW5hYmxlZCkKIAog
I2RlZmluZSBPVkVSUklERV9QUkVGRVJFTkNFX0FORF9TRVRfSU5fRVhJU1RJTkdfUEFHRVMoVGVz
dFJ1bm5lck5hbWUsIFNldHRpbmdzTmFtZSwgV2ViUHJlZmVyZW5jZXNOYW1lKSBcCiAgICAgaWYg
KHByZWZlcmVuY2UgPT0gI1Rlc3RSdW5uZXJOYW1lKSB7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMDQyMDc1Li45NzVhMjM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNzU3
LDYgKzI3NTcsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNldHRpbmdzLnNldEludGVyYWN0aXZlRm9ybVZh
bGlkYXRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6aW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdz
LnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OnNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZEtleSgpKSk7CiAKKyAgICBz
ZXR0aW5ncy5zZXRNZXRhUmVmcmVzaEVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5OjptZXRhUmVmcmVzaEVuYWJsZWRLZXkoKSkpOworCiAgICAgRGF0YWJh
c2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRJc0F2YWlsYWJsZShzdG9yZS5nZXRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRhdGFiYXNlc0VuYWJsZWRLZXkoKSkpOwogCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDAyN2Y3NTAuLjQ1YjFjMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wNS0w
MSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0
byBkaXNhYmxlIG1ldGEgcmVmcmVzaGVzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAzMzMx
OTg+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJlc2V0V2ViUHJl
ZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOiBSZXNldCB0aGUgbWV0YSByZWZyZXNoIHByZWYg
YmV0d2VlbiB0ZXN0cy4KKwogMjAxNS0wNC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBQcm92aWRlIGEgcnVudGltZSBmbGFnIHRvIHJ1bi13ZWJraXQt
dGVzdHMgdGhhdCBzaG93cyB0aGUgdGVzdCB2aWV3CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KaW5kZXggNGI1ODdmNC4uYmNjZDRhOSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtOTI4LDYgKzkyOCw4IEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIFtwcmVm
ZXJlbmNlcyBzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZTpO
T107CiAgICAgW3ByZWZlcmVuY2VzIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQ6Tk9dOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQ6Tk9dOworICAgIFtwcmVm
ZXJlbmNlcyBzZXRNZXRhUmVmcmVzaEVuYWJsZWQ6WUVTXTsKKwogICAgIGlmIChwZXJzaXN0ZW50
VXNlclN0eWxlU2hlZXRMb2NhdGlvbikgewogICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlclN0
eWxlU2hlZXRMb2NhdGlvbjpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKikocGVyc2lz
dGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24uZ2V0KCkpXV07CiAgICAgICAgIFtwcmVmZXJlbmNl
cyBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6WUVTXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>