<?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>60177</bug_id>
          
          <creation_ts>2011-05-04 09:21:24 -0700</creation_ts>
          <short_desc>Media Stream API: add local stream requests</short_desc>
          <delta_ts>2012-09-19 07:21:49 -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>DOM</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>56922</dependson>
    
    <dependson>60387</dependson>
          <blocked>56459</blocked>
    
    <blocked>56666</blocked>
    
    <blocked>58550</blocked>
    
    <blocked>60205</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Leandro Graciá Gil">leandrogracia</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>tbassetto+bugzilla</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>397961</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-04 09:21:24 -0700</bug_when>
    <thetext>Add the code and messages for requesting the generation of local streams and getting the reply back. This affects the page and frame controllers as well as the embedder client interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398015</commentid>
    <comment_count>1</comment_count>
      <attachid>92267</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-04 10:02:42 -0700</bug_when>
    <thetext>Created attachment 92267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398647</commentid>
    <comment_count>2</comment_count>
      <attachid>92267</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-05-05 03:35:49 -0700</bug_when>
    <thetext>Comment on attachment 92267
Patch

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

Mostly just questions.

&gt; Source/WebCore/page/CallbackTask.h:25
&gt; +#ifndef CallbackTask_h

The name CallbackTask under page/ implies a general purpose utility. However, this is only enabled for media stream.

Do you have additional plans for this class? If not, perhaps it should just be implemented in NavigatorUserMediaErrorCallback.h?

&gt; Source/WebCore/page/CallbackTask.h:40
&gt; +class CallbackTask1 : public ScriptExecutionContext::Task {

Why the &quot;1&quot; in the name? Are you planning other versions?

&gt; Source/WebCore/page/CallbackTask.h:52
&gt; +    class Scheduler {

Why a subclass instead of a static method on the parent? If it should be a class, it needs a virtual dtor, right?

&gt; Source/WebCore/page/MediaStreamClient.h:42
&gt; +    virtual void generateStream(int requestId, bool audio, bool video, PassRefPtr&lt;SecurityOrigin&gt;) = 0;

Instead of two bools, do you think an enum or bitfield would help ensure the args are passed properly? Could also prevent argument proliferation if there ever happen to be more types of streams in the future (e.g. front facing vs rear facing video or speaker vs handset audio).

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:196
&gt; +bool MediaStreamFrameController::generateStream(const String&amp; options,

Probably worth adding a comment mentioning that this method is meant to implement this:
http://www.whatwg.org/specs/web-apps/current-work/#dom-navigator-getusermedia

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:206
&gt; +    options.split(&quot;,&quot;, splitOptions);

Can you split on the char &apos;,&apos; instead of string?

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:207
&gt; +    for (Vector&lt;String&gt;::const_iterator it = splitOptions.begin(); it != splitOptions.end() &amp;&amp; (!audio || !video); ++it)

Won&apos;t the (!audio || !video) condition prevent this loop from setting both audio and video?

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:210
&gt; +        else if (*it == &quot;video&quot;)

Probably worth adding a FIXME about parsing out suboptions.

That will require splitting on spaces which effectively strips whitespace so that &quot;audio, video&quot; matches as well as &quot;audio,video&quot;. So in the meantime, you should probably call stripWhiteSpace() on each *it.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:214
&gt; +        return false;

This should throw a NOT_SUPPORTED_ERROR as well.

&gt; Source/WebCore/page/MediaStreamFrameController.h:141
&gt; +    class IdGenerator {

For the new classes, can you use WTF_MAKE_NONCOPYABLE where possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399763</commentid>
    <comment_count>3</comment_count>
      <attachid>92632</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-06 13:15:46 -0700</bug_when>
    <thetext>Created attachment 92632
Patch

Updating to the lastest navigator.getUserMedia spec. Please ignore the ChangeLog diff problem as it will be automatically solved when rebasing after landing 60387.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399765</commentid>
    <comment_count>4</comment_count>
      <attachid>92267</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-06 13:17:17 -0700</bug_when>
    <thetext>Comment on attachment 92267
Patch

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

&gt;&gt; Source/WebCore/page/CallbackTask.h:25
&gt;&gt; +#ifndef CallbackTask_h
&gt; 
&gt; The name CallbackTask under page/ implies a general purpose utility. However, this is only enabled for media stream.
&gt; 
&gt; Do you have additional plans for this class? If not, perhaps it should just be implemented in NavigatorUserMediaErrorCallback.h?

It will be also implemented by the future BlobCallback when stream recording is implemented. In the same way, it will be used by the PeerConnection API (see next comment for details).

&gt;&gt; Source/WebCore/page/CallbackTask.h:40
&gt;&gt; +class CallbackTask1 : public ScriptExecutionContext::Task {
&gt; 
&gt; Why the &quot;1&quot; in the name? Are you planning other versions?

Yes, there should be a 2-argument version used by the PeerConnection API. Concretely, to implement the SignalingCallback: http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#signalingcallback

&gt;&gt; Source/WebCore/page/CallbackTask.h:52
&gt;&gt; +    class Scheduler {
&gt; 
&gt; Why a subclass instead of a static method on the parent? If it should be a class, it needs a virtual dtor, right?

It&apos;s a subclass because the callbacks inherit from the scheduler to simplify the usage and increase the reuse of the code. That way they also avoid passing the this pointer everytime.

It could be changed into a static method removing the inheritance as you propose, but then scheduling would change from something like this:
m_errorCallback-&gt;scheduleCallback(scriptExecutionContext(), error);

To something like this:
CallbackTask1&lt;NavigatorUserMediaErrorCallback, NavigatorUserMediaError&gt;::schedule(scriptExecutionContext(), m_errorCallback, error);

Which I think is a lot dirtier. In any case, the existing option would require a virtual dtor as you say. What do you think?

&gt;&gt; Source/WebCore/page/MediaStreamClient.h:42
&gt;&gt; +    virtual void generateStream(int requestId, bool audio, bool video, PassRefPtr&lt;SecurityOrigin&gt;) = 0;
&gt; 
&gt; Instead of two bools, do you think an enum or bitfield would help ensure the args are passed properly? Could also prevent argument proliferation if there ever happen to be more types of streams in the future (e.g. front facing vs rear facing video or speaker vs handset audio).

After noticing the lastest changes in the getUserMedia spec I&apos;m following your proposal. Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:196
&gt;&gt; +bool MediaStreamFrameController::generateStream(const String&amp; options,
&gt; 
&gt; Probably worth adding a comment mentioning that this method is meant to implement this:
&gt; http://www.whatwg.org/specs/web-apps/current-work/#dom-navigator-getusermedia

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:206
&gt;&gt; +    options.split(&quot;,&quot;, splitOptions);
&gt; 
&gt; Can you split on the char &apos;,&apos; instead of string?

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:207
&gt;&gt; +    for (Vector&lt;String&gt;::const_iterator it = splitOptions.begin(); it != splitOptions.end() &amp;&amp; (!audio || !video); ++it)
&gt; 
&gt; Won&apos;t the (!audio || !video) condition prevent this loop from setting both audio and video?

Maybe I&apos;m wrong, but I think it won&apos;t. It should stop going through the loop after both have been set, not before. Anyway I&apos;m removing it as I&apos;m reimplementing this.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:210
&gt;&gt; +        else if (*it == &quot;video&quot;)
&gt; 
&gt; Probably worth adding a FIXME about parsing out suboptions.
&gt; 
&gt; That will require splitting on spaces which effectively strips whitespace so that &quot;audio, video&quot; matches as well as &quot;audio,video&quot;. So in the meantime, you should probably call stripWhiteSpace() on each *it.

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:214
&gt;&gt; +        return false;
&gt; 
&gt; This should throw a NOT_SUPPORTED_ERROR as well.

Fixed, although it will require landing the bug 60387 first.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.h:141
&gt;&gt; +    class IdGenerator {
&gt; 
&gt; For the new classes, can you use WTF_MAKE_NONCOPYABLE where possible?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400413</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-05-09 02:43:01 -0700</bug_when>
    <thetext>
&gt; &gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:214
&gt; &gt;&gt; +        return false;
&gt; &gt; 
&gt; &gt; This should throw a NOT_SUPPORTED_ERROR as well.
&gt; 
&gt; Fixed, although it will require landing the bug 60387 first.

You could just add a FIXME here if it is easier to land this first. I&apos;ll take a look at 60387.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400414</commentid>
    <comment_count>6</comment_count>
      <attachid>92632</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-05-09 02:43:24 -0700</bug_when>
    <thetext>Comment on attachment 92632
Patch

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

Everything else looks good. Could you sync up your client so the EWS bots can run?

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:110
&gt; +    while (!this-&gt;isEmpty())

Since there is a comment, this loop should have {} braces.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:111
&gt; +        // unregister should remove the element from the map.

Is there some way to ASSERT this? If it doesn&apos;t, this could just spin forever.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:250
&gt; +    ec = 0;

Should this be the first line in the method so that if (!successCallback) is reached, then ec is cleared?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400529</commentid>
    <comment_count>7</comment_count>
      <attachid>92795</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-09 08:47:01 -0700</bug_when>
    <thetext>Created attachment 92795
Patch

Patch. Bots should be able to test this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400530</commentid>
    <comment_count>8</comment_count>
      <attachid>92632</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-09 08:47:56 -0700</bug_when>
    <thetext>Comment on attachment 92632
Patch

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

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:110
&gt;&gt; +    while (!this-&gt;isEmpty())
&gt; 
&gt; Since there is a comment, this loop should have {} braces.

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:111
&gt;&gt; +        // unregister should remove the element from the map.
&gt; 
&gt; Is there some way to ASSERT this? If it doesn&apos;t, this could just spin forever.

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:250
&gt;&gt; +    ec = 0;
&gt; 
&gt; Should this be the first line in the method so that if (!successCallback) is reached, then ec is cleared?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404508</commentid>
    <comment_count>9</comment_count>
      <attachid>93649</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-16 08:58:14 -0700</bug_when>
    <thetext>Created attachment 93649
Patch

Rebasing to avoid problems with test_expectations.txt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404561</commentid>
    <comment_count>10</comment_count>
      <attachid>93649</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-16 10:16:42 -0700</bug_when>
    <thetext>Comment on attachment 93649
Patch

Clearing flags on attachment: 93649

Committed r86583: &lt;http://trac.webkit.org/changeset/86583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404562</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-16 10:16:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92267</attachid>
            <date>2011-05-04 10:02:42 -0700</date>
            <delta_ts>2011-05-06 13:17:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60177-20110504180240.patch</filename>
            <type>text/plain</type>
            <size>32807</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU3NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMzdiM2FlZDI0YTllMjBj
Mjg1OTExYjg3M2Q2M2RlZjMwNTBhNzQ2Li5iNzJjYTVkZmQwMDk5M2JlZDEyYTRkMzg2NWExNjZl
NjZmMDIwNmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTEtMDUtMDQgIExlYW5k
cm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhIFN0cmVhbSBBUEk6IGFk
ZCBsb2NhbCBzdHJlYW0gcmVxdWVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MDE3NworCisgICAgICAgIEFkZCB0aGUgY29kZSBhbmQgbWVzc2Fn
ZXMgZm9yIHJlcXVlc3RpbmcgdGhlIGdlbmVyYXRpb24gb2YgbG9jYWwgc3RyZWFtcyBhbmQgZ2V0
dGluZyB0aGUgcmVwbHkgYmFjay4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVh
bSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uv
Q2FsbGJhY2tUYXNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FsbGJhY2tUYXNrMTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrVGFzazE6OnBlcmZvcm1UYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrVGFzazE6OlNjaGVkdWxlcjo6c2NoZWR1bGVDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxsYmFja1Rhc2sxOjpDYWxsYmFja1Rhc2sxKToK
KyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9NZWRp
YVN0cmVhbUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250
cm9sbGVyOjp1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpnZW5lcmF0ZVN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRpb25GYWlsZWQpOgor
ICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9N
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6R2VuZXJhdGVTdHJlYW1SZXF1ZXN0OjpHZW5lcmF0ZVN0cmVh
bVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OkdlbmVyYXRlU3RyZWFtUmVxdWVzdDo6fkdlbmVyYXRlU3RyZWFtUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6R2VuZXJhdGVTdHJlYW1SZXF1
ZXN0Ojppc0dlbmVyYXRlU3RyZWFtUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6R2VuZXJhdGVTdHJlYW1SZXF1ZXN0OjphYm9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6R2VuZXJhdGVTdHJlYW1S
ZXF1ZXN0OjpzdWNjZXNzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OkdlbmVyYXRlU3RyZWFtUmVxdWVzdDo6ZXJyb3JDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjo6OnVucmVnaXN0ZXJBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Ojpk
ZXRhY2hFbWJlZGRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6dW5yZWdpc3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6ZW50ZXJEZXRhY2hlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmdlbmVyYXRlU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRp
b25GYWlsZWQpOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNl
OjpDbGllbnRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpDbGllbnRCYXNlOjp+Q2xpZW50QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50QmFzZTo6ZnJhbWVDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjpjbGll
bnRJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xp
ZW50QmFzZTo6aXNTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OkNsaWVudEJhc2U6OmlzR2VuZXJhdGVkU3RyZWFtKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjpkZXRhY2hFbWJlZGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50
QmFzZTo6YXNzb2NpYXRlRnJhbWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjp1bnJlZ2lzdGVyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpTdHJlYW1DbGllbnQ6
OlN0cmVhbUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6U3RyZWFtQ2xpZW50Ojp+U3RyZWFtQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpTdHJlYW1DbGllbnQ6OmlzU3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpTdHJlYW1DbGllbnQ6OnVu
cmVnaXN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OklkR2VuZXJhdG9yOjpJZEdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcjo6SWRHZW5lcmF0b3I6OmdldE5leHRJZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRHZXRV
c2VyTWVkaWEpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFj
ay5oOgorCiAyMDExLTA1LTA0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDNjZWY5MWNhZTY2NjZmY2RlZGMyMDRmOTZmNzNjYWNjZGQ5YWU4
MGQuLmI5OTMwOGMxYzQ5NzBhZTI2ZTFmYTFkZWRkZWVlZTNiNDdlMzYwYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjEzMyw2ICsyMTMzLDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL0JhckluZm8uaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9DYWxsYmFja1Rhc2suaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBhMzJmZmQzYTAwNDY1NzVmOGE2YjMyMTY2NTEwOTk1OGI5ZGY2NjA1Li5hMTY3
MDg4YjJiZmY3YjBhNTg1Y2Q2MjNkNTgyNDk4ZTdmNDU4OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zMzg1LDYgKzMzODUsNyBAQAogICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ29udGVudHMuaCcsCiAgICAgICAgICAgICAncGFnZS9CYXJJbmZvLmNwcCcsCiAgICAgICAg
ICAgICAncGFnZS9CYXJJbmZvLmgnLAorICAgICAgICAgICAgJ3BhZ2UvQ2FsbGJhY2tUYXNrLmgn
LAogICAgICAgICAgICAgJ3BhZ2UvQ2hyb21lLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9Db25z
b2xlLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggOTk0M2YzYjEyOWM3YzY3ZDZhZmJmZDAyYWFiOGQ1M2Y2OGJjNzNk
Ny4uYjVmY2YyNGNjZGI1ZDY3YTkxNDNlOTBjZjgyMzg2MzA4ODcyNDU2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KQEAgLTMwNzEsNiArMzA3MSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HRU9MT0NB
VElPTj0xKSB7CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewog
ICAgIEhFQURFUlMgKz0gXAorICAgICAgICBwYWdlL0NhbGxiYWNrVGFzay5oIFwKICAgICAgICAg
cGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuaCBcCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDE4YTcz
Mzk0YWFmYmZhNDkwMTczNTU0YmE2ZjVmMTNkOGM4M2I1MmMuLmE4ZGNhMWViZjBjYjA0MWQ1MWRj
NmQ4MGRjNDgzOGFiZTg5NDYwMDQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC0yNDM5NCw2ICsyNDM5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXENhbGxiYWNrVGFzay5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXENo
cm9tZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAzNTEzNjliNzI5MmYxMTQ0MDI5ZTkx
ODQ4YjFlYTdhNTI1NmNiNGEuLmI1N2M0ODA3YjUwOWM1Yjg5M2VhNzhiYjJiY2VmMWVkMDg5YWNm
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQwODIsNiArNDA4Miw3IEBACiAJCUIxRTU0NTk4MTM0NjI5QzEwMDkyQTU0NSAv
KiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxRTU0NThDMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNv
bnRyb2xsZXIuaCAqLzsgfTsKIAkJQjFFNTQ1OTUxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIxRTU0NTg5MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCUIxRTU0NTk2MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjFFNTQ1OEExMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmggKi87IH07CisJCUIxRTU0NTkzMTM0NjI5QzEwMDkyQTU0NSAvKiBDYWxs
YmFja1Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIxRTU0NTg3MTM0NjI5QzEwMDkyQTU0NSAvKiBDYWxsYmFja1Rhc2suaCAqLzsgfTsKIAkJQjFF
NTQ1OTkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4RDEzNDYyOUMx
MDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCAqLzsgfTsKIAkJQjFFNTQ1OUIx
MzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThGMTM0NjI5
QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggKi87IH07CiAJ
CUIxRTU0NTlEMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIx
RTU0NTkxMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2suaCAqLzsgfTsKQEAgLTEwMzI0LDYgKzEwMzI1LDcgQEAKIAkJQjFFNTQ1OEMxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFF
NTQ1OEExMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRTU0NTg3MTM0NjI5QzEwMDkyQTU0
NSAvKiBDYWxsYmFja1Rhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2Fs
bGJhY2tUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThEMTM0NjI5
QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMUU1NDU4RTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEYxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQwNjIsNiArMTQwNjQsNyBAQAogCQkJ
CUJDMTI0RUU0MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmNwcCAqLywKIAkJCQlCQzEyNEVF
NTBDMjY0MUNEMDA5RTIzNDkgLyogQmFySW5mby5oICovLAogCQkJCUJDMTI0RUU2MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJJbmZvLmlkbCAqLywKKwkJCQlCMUU1NDU4NzEzNDYyOUMxMDA5MkE1NDUg
LyogQ2FsbGJhY2tUYXNrLmggKi8sCiAJCQkJMTREODIzOEEwQUY5MkRGNjAwMDRGMDU3IC8qIENo
cm9tZS5jcHAgKi8sCiAJCQkJMTREODIzNTAwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oICov
LAogCQkJCTE0RDgyNDA2MEFGOTNBRUIwMDA0RjA1NyAvKiBDaHJvbWVDbGllbnQuaCAqLywKQEAg
LTIyNzIwLDYgKzIyNzIzLDcgQEAKIAkJCQlCMUU1NDU5NDEzNDYyOUMxMDA5MkE1NDUgLyogTWVk
aWFTdHJlYW1DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRTU0NTk4MTM0NjI5QzEwMDky
QTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRTU0
NTk2MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQjFFNTQ1OTMxMzQ2MjlDMTAwOTJBNTQ1IC8qIENhbGxiYWNrVGFzay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhbGxiYWNr
VGFzay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYWxsYmFja1Rhc2suaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MjZlYjI2OTYxYmQ3MWIyZTE3NWU4MTBkNzJkNDI3MjAyOWY0YzM3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYWxsYmFja1Rhc2suaApAQCAtMCwwICsxLDc5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENhbGxiYWNrVGFza19oCisjZGVmaW5lIENhbGxiYWNrVGFz
a19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLy8gSGVscGVyIHRlbXBsYXRlIHRvIHNjaGVkdWxlIGNhbGxzIHRvIGNhbGxiYWNrcyB1
c2luZyB0aGVpciBvd24gc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgorLy8gQ2FsbGJhY2tUeXBl
IGlzIGFzc3VtZWQgdG8gaW1wbGVtZW50IFNjaGVkdWxlciBhbmQgdG8gYmUgcmVmZXJlbmNlLWNv
dW50ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlLCB0eXBlbmFtZSBBcmd1bWVu
dFR5cGU+CitjbGFzcyBDYWxsYmFja1Rhc2sxIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENhbGxiYWNrVGFzazE+
IGNyZWF0ZShQYXNzUmVmUHRyPENhbGxiYWNrVHlwZT4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8QXJn
dW1lbnRUeXBlPiBkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxs
YmFja1Rhc2sxKGNhbGxiYWNrLCBkYXRhKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgbV9jYWxs
YmFjay0+aGFuZGxlRXZlbnQobV9kYXRhLmdldCgpKTsKKyAgICB9CisKKyAgICBjbGFzcyBTY2hl
ZHVsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgYm9vbCBzY2hlZHVsZUNhbGxiYWNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8QXJndW1lbnRUeXBlPiBkYXRh
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY29udGV4dCkgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPnBvc3RUYXNrKENhbGxiYWNrVGFzazE8Q2FsbGJhY2tUeXBlLCBBcmd1bWVudFR5
cGU+OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Q2FsbGJhY2tUeXBlKj4odGhpcyksIGRhdGEpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisKK3ByaXZhdGU6CisgICAgQ2FsbGJhY2tU
YXNrMShQYXNzUmVmUHRyPENhbGxiYWNrVHlwZT4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8QXJndW1l
bnRUeXBlPiBkYXRhKQorICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwg
bV9kYXRhKGRhdGEpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxDYWxsYmFja1R5cGU+IG1f
Y2FsbGJhY2s7CisgICAgUmVmUHRyPEFyZ3VtZW50VHlwZT4gbV9kYXRhOworfTsKKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIENhbGxiYWNrVGFza19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKaW5kZXggOWU5ZmJmNWYyZmUz
ZmI0ZGQyNDJjYTE1YjE4YzE2MGI4ZmQ1MmM5Yi4uYjA2NjI0YTg4ZDg4NjMxMDBkODc4YTc5MDUy
OTRkODExYTZjNmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApA
QCAtMjcsMTQgKzI3LDE5IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZWN1cml0
eU9yaWdpbjsKKwogY2xhc3MgTWVkaWFTdHJlYW1DbGllbnQgewogcHVibGljOgogICAgIC8vIE5v
dGlmeSB0aGUgZW1iZWRkZXIgY2xpZW50IGFib3V0IHRoZSBwYWdlIGNvbnRyb2xsZXIgYmVpbmcg
ZGVzdHJveWVkLgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVN0cmVhbURlc3Ryb3llZCgpID0gMDsK
IAotICAgIC8vIEZJWE1FOiBhZGQgaGVyZSB0aGUgcmVxdWVzdHMgdG8gdGhlIGVtYmVkZGVyLgor
ICAgIC8vIEdlbmVyYXRlIGEgbmV3IGxvY2FsIHN0cmVhbS4KKyAgICB2aXJ0dWFsIHZvaWQgZ2Vu
ZXJhdGVTdHJlYW0oaW50IHJlcXVlc3RJZCwgYm9vbCBhdWRpbywgYm9vbCB2aWRlbywgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4pID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
ZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFt
Q29udHJvbGxlci5jcHAKaW5kZXggNTIxNjFiMGVmY2Q4OWQ4YjhlNzIwMzY0M2Y4OTQxMWE5N2Q0
MTQxMy4uYjM1MmU2NDQ5N2MxODU1ZmJlM2Q1NmJiNWI0YTY4NzRmZjlhNzE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Myw2ICs2NCwx
MSBAQCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6On5NZWRpYVN0cmVhbUNvbnRyb2xsZXIoKQogICAg
ICAgICBtX2NsaWVudC0+bWVkaWFTdHJlYW1EZXN0cm95ZWQoKTsKIH0KIAorYm9vbCBNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6OmlzQ2xpZW50QXZhaWxhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jbGllbnQ7Cit9CisKIHZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjp1bnJlZ2lzdGVyRnJh
bWVDb250cm9sbGVyKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIp
CiB7CiAgICAgQVNTRVJUKGZyYW1lQ29udHJvbGxlcik7CkBAIC03NSwxNCArODEsNjEgQEAgdm9p
ZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIoTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIKIAogICAgIGZvciAoVmVjdG9yPGludD46Oml0ZXJhdG9yIGl0
ID0gZnJhbWVSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBmcmFtZVJlcXVlc3RzLmVuZCgpOyArK2l0
KQogICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZSgqaXQpOworCisgICAgVmVjdG9yPFN0cmluZz4g
ZnJhbWVTdHJlYW1zOworICAgIGZvciAoU3RyZWFtTWFwOjppdGVyYXRvciBpdCA9IG1fc3RyZWFt
cy5iZWdpbigpOyBpdCAhPSBtX3N0cmVhbXMuZW5kKCk7ICsraXQpCisgICAgICAgIGlmIChpdC0+
c2Vjb25kID09IGZyYW1lQ29udHJvbGxlcikKKyAgICAgICAgICAgIGZyYW1lU3RyZWFtcy5hcHBl
bmQoaXQtPmZpcnN0KTsKKworICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0g
ZnJhbWVTdHJlYW1zLmJlZ2luKCk7IGl0ICE9IGZyYW1lU3RyZWFtcy5lbmQoKTsgKytpdCkKKyAg
ICAgICAgbV9zdHJlYW1zLnJlbW92ZSgqaXQpOwogfQogCiBpbnQgTWVkaWFTdHJlYW1Db250cm9s
bGVyOjpyZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsSWQsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKiBmcmFtZUNvbnRyb2xsZXIpCiB7CisgICAgQVNTRVJUKGxvY2FsSWQgPiAwKTsKKyAgICBB
U1NFUlQoZnJhbWVDb250cm9sbGVyKTsKICAgICBtX3JlcXVlc3RzLmFkZChtX25leHRHbG9iYWxS
ZXF1ZXN0SWQsIFJlcXVlc3QobG9jYWxJZCwgZnJhbWVDb250cm9sbGVyKSk7CiAgICAgcmV0dXJu
IG1fbmV4dEdsb2JhbFJlcXVlc3RJZCsrOwogfQogCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6cmVnaXN0ZXJTdHJlYW0oY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlcikKK3sKKyAgICBBU1NFUlQoZnJhbWVDb250
cm9sbGVyKTsKKyAgICBBU1NFUlQoIW1fc3RyZWFtcy5jb250YWlucyhzdHJlYW1MYWJlbCkpOwor
ICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtTGFiZWwsIGZyYW1lQ29udHJvbGxlcik7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpnZW5lcmF0ZVN0cmVhbShNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgbG9jYWxJZCwgYm9vbCBhdWRpbywgYm9v
bCB2aWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKK3sKKyAgICBBU1NFUlQobV9j
bGllbnQpOworICAgIGludCBjb250cm9sbGVyUmVxdWVzdElkID0gcmVnaXN0ZXJSZXF1ZXN0KGxv
Y2FsSWQsIGZyYW1lQ29udHJvbGxlcik7CisgICAgbV9jbGllbnQtPmdlbmVyYXRlU3RyZWFtKGNv
bnRyb2xsZXJSZXF1ZXN0SWQsIGF1ZGlvLCB2aWRlbywgc2VjdXJpdHlPcmlnaW4pOworfQorCit2
b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RyZWFtR2VuZXJhdGVkKGludCBjb250cm9sbGVy
UmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIC8vIERvbid0IGFz
c2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZCB3
aGlsZSB0aGUgcmVxdWVzdCByZXBseSB3YXMgY29taW5nIGJhY2suCisgICAgaWYgKG1fcmVxdWVz
dHMuY29udGFpbnMoY29udHJvbGxlclJlcXVlc3RJZCkpIHsKKyAgICAgICAgY29uc3QgUmVxdWVz
dCYgcmVxdWVzdCA9IG1fcmVxdWVzdHMuZ2V0KGNvbnRyb2xsZXJSZXF1ZXN0SWQpOworICAgICAg
ICByZWdpc3RlclN0cmVhbShzdHJlYW1MYWJlbCwgcmVxdWVzdC5mcmFtZUNvbnRyb2xsZXIoKSk7
CisgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNvbnRyb2xsZXJSZXF1ZXN0SWQpOworICAgICAg
ICBBU1NFUlQocmVxdWVzdC5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHJlcXVlc3QuZnJh
bWVDb250cm9sbGVyKCktPnN0cmVhbUdlbmVyYXRlZChyZXF1ZXN0LmxvY2FsSWQoKSwgc3RyZWFt
TGFiZWwpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUdl
bmVyYXRpb25GYWlsZWQoaW50IGNvbnRyb2xsZXJSZXF1ZXN0SWQsIE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yOjpFcnJvckNvZGUgY29kZSkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhl
IGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQgd2hpbGUgdGhlIHJlcXVl
c3QgcmVwbHkgd2FzIGNvbWluZyBiYWNrLgorICAgIGlmIChtX3JlcXVlc3RzLmNvbnRhaW5zKGNv
bnRyb2xsZXJSZXF1ZXN0SWQpKSB7CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHJlcXVlc3QgPSBt
X3JlcXVlc3RzLmdldChjb250cm9sbGVyUmVxdWVzdElkKTsKKyAgICAgICAgbV9yZXF1ZXN0cy5y
ZW1vdmUoY29udHJvbGxlclJlcXVlc3RJZCk7CisgICAgICAgIHJlcXVlc3QuZnJhbWVDb250cm9s
bGVyKCktPnN0cmVhbUdlbmVyYXRpb25GYWlsZWQocmVxdWVzdC5sb2NhbElkKCksIGNvZGUpOwor
ICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1D
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5o
CmluZGV4IGQ3NDlhNTg2ZGUxNTMwMjYzM2EwZjRiMjJkNzhhZTNhYmM2YmM2NDcuLjg4ZDZkNWUy
MTI2ZTk2N2NkYjk4OWM4OTdiZGQ4Zjg4OWQ4ZjNiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaApAQCAtMjcsMTQgKzI3LDE3IEBACiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQ2xpZW50OwogY2xh
c3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAog
Y2xhc3MgTWVkaWFTdHJlYW1Db250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShN
ZWRpYVN0cmVhbUNvbnRyb2xsZXIpOwpAQCAtNDIsMTUgKzQ1LDI0IEBAIHB1YmxpYzoKICAgICBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5N
ZWRpYVN0cmVhbUNvbnRyb2xsZXIoKTsKIAorICAgIGJvb2wgaXNDbGllbnRBdmFpbGFibGUoKSBj
b25zdDsKICAgICB2b2lkIHVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqKTsKIAorICAgIHZvaWQgZ2VuZXJhdGVTdHJlYW0oTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqLCBpbnQgcmVxdWVzdElkLCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CisKKyAgICB2b2lkIHN0cmVhbUdlbmVyYXRlZChpbnQg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIHN0cmVhbUdl
bmVyYXRpb25GYWlsZWQoaW50IHJlcXVlc3RJZCwgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OkVy
cm9yQ29kZSk7CisKIHByaXZhdGU6CiAgICAgaW50IHJlZ2lzdGVyUmVxdWVzdChpbnQgbG9jYWxS
ZXF1ZXN0SWQsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKik7CisgICAgdm9pZCByZWdpc3Rl
clN0cmVhbShjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlciopOwogCiAgICAgY2xhc3MgUmVxdWVzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBS
ZXF1ZXN0PiBSZXF1ZXN0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKj4gU3RyZWFtTWFwOwogCiAgICAgUmVxdWVzdE1hcCBtX3JlcXVl
c3RzOworICAgIFN0cmVhbU1hcCBtX3N0cmVhbXM7CiAKICAgICBNZWRpYVN0cmVhbUNsaWVudCog
bV9jbGllbnQ7CiAgICAgaW50IG1fbmV4dEdsb2JhbFJlcXVlc3RJZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKaW5kZXggMDYxNzU2
MTc4Nzk3OTE2YzllZGUxOWExNTFkMjVjNjU3MzA3Yjc2MS4uNzhmNTFhYjNlYTQ3OTNlNmUxYWJj
NjhkODRhZTRmNjU5MmYwNmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKQEAgLTU4LDYgKzU4LDM2IEBAIHByaXZhdGU6CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogfTsK
IAorY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkdlbmVyYXRlU3RyZWFtUmVxdWVz
dCA6IHB1YmxpYyBSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0ZVN0cmVhbVJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1Jl
ZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAg
ICAgICA6IFJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX3N1Y2Nl
c3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICwgbV9lcnJvckNhbGxiYWNrKGVy
cm9yQ2FsbGJhY2spIHsgfQorCisgICAgdmlydHVhbCB+R2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fZXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAgUmVmUHRyPE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yPiBlcnJvciA9IGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
cihOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQpKTsKKyAgICAgICAg
ICAgIC8vIFRoZSBjYWxsYmFjayBpdHNlbGYgaXMgbWFkZSB3aXRoIHRoZSBKUyBjYWxsYmFjaydz
IGNvbnRleHQsIG5vdCB3aXRoIHRoZSBmcmFtZSdzIGNvbnRleHQuCisgICAgICAgICAgICBtX2Vy
cm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBl
cnJvcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJN
ZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9z
dWNjZXNzQ2FsbGJhY2s7IH0KKyAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2s7
IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOworfTsKKwogdm9pZCBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6UmVxdWVzdE1hcDo6YWJvcnQoaW50IHJlcXVlc3RJZCkKIHsKICAgICBnZXQo
cmVxdWVzdElkKS0+YWJvcnQoKTsKQEAgLTcyLDYgKzEwMiwyMSBAQCB2b2lkIE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0TWFwOjphYm9ydEFsbCgpCiAgICAgfQogfQogCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkNsaWVu
dE1hcEJhc2U8VD46OnVucmVnaXN0ZXJBbGwoKQoreworICAgIHdoaWxlICghdGhpcy0+aXNFbXB0
eSgpKQorICAgICAgICAvLyB1bnJlZ2lzdGVyIHNob3VsZCByZW1vdmUgdGhlIGVsZW1lbnQgZnJv
bSB0aGUgbWFwLgorICAgICAgICB0aGlzLT5iZWdpbigpLT5zZWNvbmQtPnVucmVnaXN0ZXIoKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpDbGllbnRNYXBCYXNlPFQ+OjpkZXRhY2hFbWJlZGRlcigpCit7CisgICAgZm9yICh0eXBl
bmFtZSBNYXBUeXBlOjppdGVyYXRvciBpdCA9IHRoaXMtPmJlZ2luKCk7IGl0ICE9IHRoaXMtPmVu
ZCgpOyArK2l0KQorICAgICAgICBpdC0+c2Vjb25kLT5kZXRhY2hFbWJlZGRlcigpOworfQorCiBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoRnJh
bWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1faXNJbkRldGFjaGVkU3Rh
dGUoZmFsc2UpCkBAIC05Nyw2ICsxNDIsMTIgQEAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFnZUNvbnRyb2xsZXIoKSBjb25zdAogICAgIHJldHVy
biAhbV9pc0luRGV0YWNoZWRTdGF0ZSAmJiBtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSA/IG1f
ZnJhbWUtPnBhZ2UoKS0+bWVkaWFTdHJlYW1Db250cm9sbGVyKCkgOiAwOwogfQogCit2b2lkIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjp1bnJlZ2lzdGVyKFN0cmVhbUNsaWVudCogY2xpZW50
KQoreworICAgIEFTU0VSVChtX3N0cmVhbXMuY29udGFpbnMoY2xpZW50LT5jbGllbnRJZCgpKSk7
CisgICAgbV9zdHJlYW1zLnJlbW92ZShjbGllbnQtPmNsaWVudElkKCkpOworfQorCiB2b2lkIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjplbnRlckRldGFjaGVkU3RhdGUoKQogewogICAgIGlm
IChtX2lzSW5EZXRhY2hlZFN0YXRlKSB7CkBAIC0xMDUsOSArMTU2LDE2IEBAIHZvaWQgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OmVudGVyRGV0YWNoZWRTdGF0ZSgpCiAgICAgfQogCiAgICAg
bV9yZXF1ZXN0cy5hYm9ydEFsbCgpOworICAgIG1fc3RyZWFtcy5kZXRhY2hFbWJlZGRlcigpOwog
ICAgIG1faXNJbkRldGFjaGVkU3RhdGUgPSB0cnVlOwogfQogCitib29sIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjppc0NsaWVudEF2YWlsYWJsZSgpIGNvbnN0Cit7CisgICAgTWVkaWFTdHJl
YW1Db250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZUNvbnRyb2xsZXIoKTsKKyAgICByZXR1cm4g
Y29udHJvbGxlciAmJiBjb250cm9sbGVyLT5pc0NsaWVudEF2YWlsYWJsZSgpOworfQorCiAvLyBD
YWxsZWQgYWxzbyB3aGVuIHRoZSBmcmFtZSBpcyBkZXRhY2hlZCBmcm9tIHRoZSBwYWdlLCBpbiB3
aGljaCBjYXNlIHRoZSBwYWdlIGNvbnRyb2xsZXIgd2lsbCByZW1haW4gYWxpdmUuCiB2b2lkIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0UGFnZSgpCiB7CkBAIC0xMjMsNiAr
MTgxLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyYW1l
KCkKICAgICBkaXNjb25uZWN0UGFnZSgpOwogCiAgICAgQVNTRVJUKG1fcmVxdWVzdHMuaXNFbXB0
eSgpKTsKKyAgICBtX3N0cmVhbXMudW5yZWdpc3RlckFsbCgpOwogCiAgICAgbV9mcmFtZSA9IDA7
CiB9CkBAIC0xMzQsNiArMTkzLDY3IEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OnRyYW5zZmVyVG9OZXdQYWdlKFBhZ2UqKQogICAgIGRpc2Nvbm5lY3RQYWdlKCk7CiB9CiAKK2Jv
b2wgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmdlbmVyYXRlU3RyZWFtKGNvbnN0IFN0cmlu
ZyYgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCit7CisgICAgaWYgKCFzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGJvb2wgdmlkZW8gPSBmYWxzZTsKKyAgICBib29sIGF1ZGlvID0gZmFsc2U7CisgICAg
VmVjdG9yPFN0cmluZz4gc3BsaXRPcHRpb25zOworICAgIG9wdGlvbnMuc3BsaXQoIiwiLCBzcGxp
dE9wdGlvbnMpOworICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
c3BsaXRPcHRpb25zLmJlZ2luKCk7IGl0ICE9IHNwbGl0T3B0aW9ucy5lbmQoKSAmJiAoIWF1ZGlv
IHx8ICF2aWRlbyk7ICsraXQpCisgICAgICAgIGlmICgqaXQgPT0gImF1ZGlvIikKKyAgICAgICAg
ICAgIGF1ZGlvID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoKml0ID09ICJ2aWRlbyIpCisgICAg
ICAgICAgICB2aWRlbyA9IHRydWU7CisKKyAgICBpZiAoIWF1ZGlvICYmICF2aWRlbykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IHJlcXVlc3RJZCA9IG1fcmVxdWVzdHMuZ2V0TmV4
dElkKCk7CisgICAgbV9yZXF1ZXN0cy5hZGQocmVxdWVzdElkLCBhZG9wdFJlZihuZXcgR2VuZXJh
dGVTdHJlYW1SZXF1ZXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSkpOworCisgICAgaWYgKCFpc0NsaWVudEF2YWlsYWJsZSgpKSB7Cisg
ICAgICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0byBjYWxsIHRoZSBlcnJvciBjYWxsYmFjayBpZiBw
cm92aWRlZC4KKyAgICAgICAgbV9yZXF1ZXN0cy5hYm9ydChyZXF1ZXN0SWQpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcGFnZUNvbnRyb2xsZXIoKS0+Z2VuZXJhdGVTdHJl
YW0odGhpcywgcmVxdWVzdElkLCBhdWRpbywgdmlkZW8sIHNlY3VyaXR5T3JpZ2luKCkpOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzdHJl
YW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICAv
LyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIHJlcXVlc3QgY2FuIGhhdmUgYmVlbiBhYm9ydGVkIGFz
IGEgcmVzdWx0IG9mIGVtYmVkZGVyIGRldGFjaG1lbnQuCisgICAgaWYgKG1fcmVxdWVzdHMuY29u
dGFpbnMocmVxdWVzdElkKSkgeworICAgICAgICBBU1NFUlQobV9yZXF1ZXN0cy5nZXQocmVxdWVz
dElkKS0+aXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSk7CisgICAgICAgIEFTU0VSVCghbGFiZWwu
aXNOdWxsKCkpOworCisgICAgICAgIC8vIEZJWE1FOiBjcmVhdGUgYSBHZW5lcmF0ZWRTdHJlYW0g
b2JqZWN0IGFuZCBpbnZva2UgdGhlIGNhbGxiYWNrIHdoZW4gdGhlIGNsYXNzIGlzIGF2YWlsYWJs
ZS4KKyAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUocmVxdWVzdElkKTsKKyAgICB9Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRpb25GYWlsZWQoaW50
IHJlcXVlc3RJZCwgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OkVycm9yQ29kZSBjb2RlKQorewor
ICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgcmVxdWVzdCBjYW4gaGF2ZSBiZWVuIGFib3J0
ZWQgYXMgYSByZXN1bHQgb2YgZW1iZWRkZXIgZGV0YWNobWVudC4KKyAgICBpZiAobV9yZXF1ZXN0
cy5jb250YWlucyhyZXF1ZXN0SWQpKSB7CisgICAgICAgIEFTU0VSVChtX3JlcXVlc3RzLmdldChy
ZXF1ZXN0SWQpLT5pc0dlbmVyYXRlU3RyZWFtUmVxdWVzdCgpKTsKKworICAgICAgICBSZWZQdHI8
R2VuZXJhdGVTdHJlYW1SZXF1ZXN0PiBzdHJlYW1SZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8R2VuZXJh
dGVTdHJlYW1SZXF1ZXN0Kj4obV9yZXF1ZXN0cy5nZXQocmVxdWVzdElkKS5nZXQoKSk7CisgICAg
ICAgIG1fcmVxdWVzdHMucmVtb3ZlKHJlcXVlc3RJZCk7CisKKyAgICAgICAgaWYgKHN0cmVhbVJl
cXVlc3QtPmVycm9yQ2FsbGJhY2soKSkgeworICAgICAgICAgICAgUmVmUHRyPE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yPiBlcnJvciA9IGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
cihjb2RlKSk7CisgICAgICAgICAgICBzdHJlYW1SZXF1ZXN0LT5lcnJvckNhbGxiYWNrKCktPmhh
bmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaAppbmRleCBlOTVh
NDRhYTdmMjhkNzJkMWMwOTZmNzZmN2ZiM2NkNDY3NTBmMWQ3Li42NGQ0YjdlMjI1MDg3ZWFhNzlh
NmE0NmFiZjgzYjU1ZjllMDg4YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCkBAIC0yNywxNCArMjcsMTggQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CiBjbGFzcyBNZWRpYVN0cmVh
bUNvbnRyb2xsZXI7CitjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOworY2xh
c3MgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOwogY2xhc3MgUGFnZTsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTQyLDMx
ICs0NiwxMzIgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIpOwogcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJZFR5cGU+CisgICAg
Y2xhc3MgQ2xpZW50QmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBDbGllbnRCYXNlKCkgOiBt
X2ZyYW1lQ29udHJvbGxlcigwKSwgbV9jbGllbnRJZCgwKSB7IH0KKworICAgICAgICBDbGllbnRC
YXNlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGNvbnN0IElk
VHlwZSYgaWQpCisgICAgICAgICAgICA6IG1fZnJhbWVDb250cm9sbGVyKGZyYW1lQ29udHJvbGxl
cikKKyAgICAgICAgICAgICwgbV9jbGllbnRJZChpZCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB+
Q2xpZW50QmFzZSgpIHsgfQorCisgICAgICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBm
cmFtZUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lQ29udHJvbGxlcjsgfQorICAg
ICAgICBjb25zdCBJZFR5cGUmIGNsaWVudElkKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZDsg
fQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dlbmVyYXRlZFN0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKKyAgICAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIGZyYW1lIGNvbnRyb2xs
ZXIgaXMgYmVpbmcgZGlzY29ubmVjdGVkIHRvIHRoZSBNZWRpYVN0cmVhbUNsaWVudCBlbWJlZGRl
ci4KKyAgICAgICAgLy8gQ2xpZW50cyBzaG91bGQgb3ZlcnJpZGUgdGhpcyB0byBzZW5kIGFueSBy
ZXF1aXJlZCBzaHV0ZG93biBtZXNzYWdlcy4KKyAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaEVt
YmVkZGVyKCkgeyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIC8vIFVzZWQgZm9yIG9iamVj
dHMgdGhhdCBhcmUgb3B0aW9uYWxseSBhc3NvY2lhdGVkIHRvIHRoZSBmcmFtZSBjb250cm9sbGVy
IGFmdGVyIGNvbnN0cnVjdGlvbiwgbGlrZSB0aGUgdHJhY2sgbGlzdHMuCisgICAgICAgIHZvaWQg
YXNzb2NpYXRlRnJhbWVDb250cm9sbGVyKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFt
ZUNvbnRyb2xsZXIsIGNvbnN0IElkVHlwZSYgaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVCghbV9mcmFtZUNvbnRyb2xsZXIgJiYgIW1fY2xpZW50SWQpOworICAgICAgICAgICAgbV9m
cmFtZUNvbnRyb2xsZXIgPSBmcmFtZUNvbnRyb2xsZXI7CisgICAgICAgICAgICBtX2NsaWVudElk
ID0gaWQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBBdm9pZHMgcmVwZWF0aW5nIHRoZSBzYW1l
IGNvZGUgaW4gdGhlIHVucmVnaXN0ZXIgbWV0aG9kIG9mIGVhY2ggZGVyaXZlZCBjbGFzcy4KKyAg
ICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBzaW5jZSB0aGUgY29udHJvbGxlcidzIHVucmVnaXN0
ZXIgbWV0aG9kcyBtYWtlIHVzZSBvZiB0aGUgaXNPYmplY3QgdmlydHVhbHMsCisgICAgICAgIC8v
IGFuZCB0aGUgdW5yZWdpc3RyYXRpb24gY2FuIGJlIHRyaWdnZXJlZCBlaXRoZXIgYnkgdGhlIGRl
c3RydWN0b3Igb2YgdGhlIGNsaWVudCBvciBieSB0aGUgZGlzY29ubmVjdGlvbiBvZiB0aGUgZnJh
bWUuCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGllbnRUeXBlPgorICAgICAgICB2b2lk
IHVucmVnaXN0ZXJDbGllbnQoQ2xpZW50VHlwZSogY2xpZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIWZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgZnJhbWVDb250cm9sbGVyKCktPnVucmVnaXN0ZXIoc3RhdGljX2Nhc3Q8Q2xp
ZW50VHlwZSo+KGNsaWVudCkpOworICAgICAgICAgICAgbV9mcmFtZUNvbnRyb2xsZXIgPSAwOwor
ICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXIoKSA9IDA7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjsKKworICAgICAgICBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogbV9mcmFtZUNvbnRyb2xsZXI7CisgICAgICAgIElk
VHlwZSBtX2NsaWVudElkOworICAgIH07CisKKyAgICBjbGFzcyBTdHJlYW1DbGllbnQgOiBwdWJs
aWMgQ2xpZW50QmFzZTxTdHJpbmc+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFN0cmVhbUNsaWVu
dChNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBjb25zdCBTdHJp
bmcmIGxhYmVsKSA6IENsaWVudEJhc2U8U3RyaW5nPihmcmFtZUNvbnRyb2xsZXIsIGxhYmVsKSB7
IH0KKyAgICAgICAgdmlydHVhbCB+U3RyZWFtQ2xpZW50KCkgeyB1bnJlZ2lzdGVyKCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisK
KyAgICAgICAgLy8gU3RyZWFtIGhhcyBlbmRlZCBmb3Igc29tZSBleHRlcm5hbCByZWFzb24uCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1FbmRlZCgpID0gMDsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyKCkgeyB1bnJlZ2lzdGVyQ2xpZW50KHRoaXMp
OyB9CisgICAgfTsKKwogICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKik7CiAg
ICAgdmlydHVhbCB+TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKTsKIAogICAgIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAorICAgIGJvb2wgaXNDbGllbnRB
dmFpbGFibGUoKSBjb25zdDsKICAgICB2b2lkIGRpc2Nvbm5lY3RQYWdlKCk7CiAgICAgdm9pZCBk
aXNjb25uZWN0RnJhbWUoKTsKICAgICB2b2lkIHRyYW5zZmVyVG9OZXdQYWdlKFBhZ2UqKTsKIAor
ICAgIC8vIENyZWF0ZSBhIG5ldyBnZW5lcmF0ZWQgc3RyZWFtIGFzeW5jaHJvbm91c2x5IHdpdGgg
dGhlIHByb3ZpZGVkIG9wdGlvbnMuCisgICAgYm9vbCBnZW5lcmF0ZVN0cmVhbShjb25zdCBTdHJp
bmcmIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPE5hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sCisgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
UmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+KTsKKworICAgIC8vIC0tLSBD
YWxscyBjb21pbmcgYmFjayBmcm9tIHRoZSBjb250cm9sbGVyLiAtLS0gLy8KKworICAgIC8vIFJl
cG9ydCB0aGUgZ2VuZXJhdGlvbiBvZiBhIG5ldyBsb2NhbCBzdHJlYW0uCisgICAgdm9pZCBzdHJl
YW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisK
KyAgICAvLyBSZXBvcnQgYSBmYWlsdXJlIGluIHRoZSBnZW5lcmF0aW9uIG9mIGEgbmV3IHN0cmVh
bS4KKyAgICB2b2lkIHN0cmVhbUdlbmVyYXRpb25GYWlsZWQoaW50IHJlcXVlc3RJZCwgTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3I6OkVycm9yQ29kZSk7CisKIHByaXZhdGU6CiAgICAgY2xhc3MgUmVx
dWVzdDsKKyAgICBjbGFzcyBHZW5lcmF0ZVN0cmVhbVJlcXVlc3Q7CisKKyAgICBjbGFzcyBJZEdl
bmVyYXRvciB7CisgICAgcHVibGljOgorICAgICAgICBJZEdlbmVyYXRvcigpIDogbV9pZCgwKSB7
IH0KKyAgICAgICAgaW50IGdldE5leHRJZCgpIHsgcmV0dXJuICsrbV9pZDsgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgaW50IG1faWQ7CisgICAgfTsKIAotICAgIGNsYXNzIFJlcXVlc3RNYXAg
OiBwdWJsaWMgSGFzaE1hcDxpbnQsIFJlZlB0cjxSZXF1ZXN0PiA+IHsKKyAgICBjbGFzcyBSZXF1
ZXN0TWFwIDogcHVibGljIElkR2VuZXJhdG9yLCBwdWJsaWMgSGFzaE1hcDxpbnQsIFJlZlB0cjxS
ZXF1ZXN0PiA+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQgYWJvcnQoaW50IHJlcXVlc3RJ
ZCk7CiAgICAgICAgIHZvaWQgYWJvcnRBbGwoKTsKICAgICB9OwogCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIElkVHlwZT4KKyAgICBjbGFzcyBDbGllbnRNYXBCYXNlIDogcHVibGljIEhhc2hNYXA8
SWRUeXBlLCBDbGllbnRCYXNlPElkVHlwZT4qID4geworICAgIHB1YmxpYzoKKyAgICAgICAgdHlw
ZWRlZiBIYXNoTWFwPElkVHlwZSwgQ2xpZW50QmFzZTxJZFR5cGU+KiA+IE1hcFR5cGU7CisgICAg
ICAgIHZvaWQgdW5yZWdpc3RlckFsbCgpOworICAgICAgICB2b2lkIGRldGFjaEVtYmVkZGVyKCk7
CisgICAgfTsKKworICAgIC8vIFN0cmVhbXMgYXJlIGEgc3BlY2lhbCBjbGFzcyBvZiBjbGllbnRz
IHNpbmNlIHRoZXkgYXJlIGlkZW50aWZpZWQgYnkgYSBnbG9iYWwgbGFiZWwgc3RyaW5nIGluc3Rl
YWQgb2YgYW4gaWQuCisgICAgdHlwZWRlZiBDbGllbnRNYXBCYXNlPFN0cmluZz4gU3RyZWFtTWFw
OworCiAgICAgLy8gRGV0YWNoZWQgZnJvbSBhIHBhZ2UsIGFuZCBoZW5jZSBmcm9tIGEgZW1iZWRk
ZXIgY2xpZW50LgogICAgIHZvaWQgZW50ZXJEZXRhY2hlZFN0YXRlKCk7CiAKKyAgICB2b2lkIHVu
cmVnaXN0ZXIoU3RyZWFtQ2xpZW50Kik7CiAgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBwYWdl
Q29udHJvbGxlcigpIGNvbnN0OwogCiAgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworICAgIFN0
cmVhbU1hcCBtX3N0cmVhbXM7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBib29sIG1faXNJ
bkRldGFjaGVkU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYzllODQwOGY5
NTU2MzdiZDI1MmE5OGY4YTA0N2QwZGFkZDE2ZmFjMC4uODY3NTEwYzY5ZmE4M2Q2NmFhOWQzM2Nl
MTc3YzI1ODc0ZmVhMjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgpAQCAtMjQ5LDcgKzI1MCw4IEBAIHZvaWQgTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEo
Y29uc3QgU3RyaW5nJiBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPE5h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudCBhIGNhbGwgdG8gdGhlIG1lZGlhIHN0cmVhbSBjb250ZXh0IHdoZW4g
YXZhaWxhYmxlLgorICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPm1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKCkpCisgICAgICAgIG1fZnJhbWUtPm1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KCktPmdlbmVyYXRlU3RyZWFtKG9wdGlvbnMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
ayk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaAppbmRleCAxOWZiOWY2OTk0MjEzZWViNDlkMWY3Yjk1
MzdjYjA5NzUxOTczNDU1Li4xNTM5NzA5MTdhN2RiZmQ0NDAwMGRhNTY1NTA4MDA4NjEyOTEwYmNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2suaApAQCAtMjcsMTMgKzI3LDE0IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCisjaW5jbHVkZSAiQ2FsbGJhY2tUYXNrLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOwotCi1jbGFzcyBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjaz4geworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JD
YWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2s+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBDYWxs
YmFja1Rhc2sxPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2ssIE5hdmlnYXRvclVzZXJN
ZWRpYUVycm9yPjo6U2NoZWR1bGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50
KE5hdmlnYXRvclVzZXJNZWRpYUVycm9yKikgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92632</attachid>
            <date>2011-05-06 13:15:46 -0700</date>
            <delta_ts>2011-05-09 08:47:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60177-20110506211544.patch</filename>
            <type>text/plain</type>
            <size>37686</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU5NTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYTYzMGYzN2IyMTFhYWRkODZjZGVj
NGY2ZmY1ZTIzOTJmNWUwNjM0Li44NmE2YWRhZTdiYjRiNmMyMjAwZWMwOGZjY2FiZDg1Y2U4NDVi
ZDczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0yLDYgKzIsMTggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KIAorICAgICAgICBNZWRpYSBTdHJlYW0gQVBJOiBhZGQgbG9jYWwgc3RyZWFtIHJl
cXVlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjAxNzcKKworICAgICAgICBSZS1lbmFibGUgdGhlIGFyZ3VtZW50LXR5cGVzIHRlc3QgYXMgdGhl
IG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgb3B0aW9ucworICAgICAgICBhcmUgbm93IGJlaW5nIHBh
cnNlZCBhbmQgcmFpc2UgdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKKzIwMTEtMDUtMDYgIExl
YW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIE1lZGlhIFN0cmVhbSBBUEk6
IGFkZCBleGNlcHRpb24gcmFpc2luZyB0byB0aGUgZ2V0VXNlck1lZGlhIG1ldGhvZC4KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMzg3CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApp
bmRleCAyZDYzNDBjNWNlNTYwOWJkYjZlYjA2MjkwMzVhMjY1YTI1ZDNlMGE5Li4wYzlkYWZkMGZi
MTVmODY5NDQyN2ViNWE0YTBkN2NlZTUzYmI3Y2MwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00MDkwLDYgKzQwOTAs
MyBAQCBCVUdXSzYwMzU2IDogc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLXR3by1lZmZlY3RzLnN2ZyA9
IElNQUdFCiAKIC8vIE5lZWRzIGJhc2VsaW5lcyBldmVyeXdoZXJlCiBCVUdFTk5FIEdQVSA6IGNv
bXBvc2l0aW5nL2ZsYXQtd2l0aC10cmFuc2Zvcm1lZC1jaGlsZC5odG1sID0gUEFTUyBGQUlMIE1J
U1NJTkcKLQotLy8gVG8gYmUgcmUtZW5hYmxlZCBhZnRlciBsYW5kaW5nIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDE3Ny4KLUJVR1dLNjAzODcgOiBmYXN0L2RvbS9N
ZWRpYVN0cmVhbS9hcmd1bWVudC10eXBlcy5odG1sID0gRkFJTApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIwN2Y2
MGZjNThmMjkxZGQ2Y2ZjYWRjNDY1MjQ5M2Y1ZWUzODk0NjEuLjUzMDAzMWYwYjdiNTU2MDMwNDg3
NzY0NzY5MmQzODhkZGMwNTUxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw4MCBAQAogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIE1lZGlhIFN0cmVhbSBB
UEk6IGFkZCBsb2NhbCBzdHJlYW0gcmVxdWVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDE3NworCisgICAgICAgIEFkZCB0aGUgY29kZSBhbmQg
bWVzc2FnZXMgZm9yIHJlcXVlc3RpbmcgdGhlIGdlbmVyYXRpb24gb2YgbG9jYWwgc3RyZWFtcyBh
bmQgZ2V0dGluZyB0aGUgcmVwbHkgYmFjay4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlh
IFN0cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LgorICAgICAgICBP
bmUgdGVzdCBpcyByZS1lbmFibGVkIHdpdGggdGhpcyBwYXRjaC4KKworICAgICAgICBUZXN0OiBm
YXN0L2RvbS9NZWRpYVN0cmVhbS9hcmd1bWVudC10eXBlcy5odG1sCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9D
YWxsYmFja1Rhc2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWxsYmFja1Rhc2sxOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbGJhY2tUYXNrMTo6cGVyZm9ybVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsbGJhY2tUYXNrMTo6U2NoZWR1bGVyOjpzY2hlZHVsZUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrVGFzazE6OkNhbGxiYWNrVGFzazEpOgor
ICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL01lZGlh
U3RyZWFtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRy
b2xsZXI6OmlzQ2xpZW50QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6Z2VuZXJhdGVTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0aW9uRmFpbGVk
KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oOgorICAgICAgICAqIHBh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkdlbmVyYXRlU3RyZWFtUmVxdWVzdDo6R2VuZXJhdGVT
dHJlYW1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpHZW5lcmF0ZVN0cmVhbVJlcXVlc3Q6On5HZW5lcmF0ZVN0cmVhbVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkdlbmVyYXRlU3RyZWFt
UmVxdWVzdDo6aXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkdlbmVyYXRlU3RyZWFtUmVxdWVzdDo6YWJvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkdlbmVyYXRlU3Ry
ZWFtUmVxdWVzdDo6c3VjY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmF0ZVN0cmVhbVJlcXVlc3Q6OmVycm9yQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6Ojp1bnJlZ2lzdGVyQWxsKToKKyAgICAgICAgKFdlYkNvcmU6
Ojo6ZGV0YWNoRW1iZWRkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpwYWdlQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6dW5yZWdpc3Rlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZW50ZXJEZXRhY2hlZFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjppc0NsaWVu
dEF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpwYXJzZUdlbmVyYXRlU3RyZWFtT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Z2VuZXJhdGVTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RyZWFtR2VuZXJh
dGlvbkZhaWxlZCk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkNsaWVudEJh
c2U6OkNsaWVudEJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OkNsaWVudEJhc2U6On5DbGllbnRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjptZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xp
ZW50QmFzZTo6Y2xpZW50SWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OkNsaWVudEJhc2U6OmlzU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjppc0dlbmVyYXRlZFN0cmVhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50QmFzZTo6
ZGV0YWNoRW1iZWRkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OkNsaWVudEJhc2U6OmFzc29jaWF0ZUZyYW1lQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50QmFzZTo6dW5yZWdpc3Rl
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
U3RyZWFtQ2xpZW50OjpTdHJlYW1DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6OlN0cmVhbUNsaWVudDo6flN0cmVhbUNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6U3RyZWFtQ2xpZW50Ojppc1N0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6U3Ry
ZWFtQ2xpZW50Ojp1bnJlZ2lzdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjpJZEdlbmVyYXRvcjo6SWRHZW5lcmF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OklkR2VuZXJhdG9yOjpnZXROZXh0SWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkNsaWVudE1hcEJh
c2U6OkNsaWVudE1hcEJhc2UpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBw
YWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaDoKKworMjAxMS0wNS0wNiAgTGVh
bmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgTWVkaWEgU3RyZWFtIEFQSTog
YWRkIGV4Y2VwdGlvbiByYWlzaW5nIHRvIHRoZSBnZXRVc2VyTWVkaWEgbWV0aG9kLgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAzODcKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOWZjOTI2MTUzZGQyY2I5ODVlZDc4NTgxMDc2Mzgx
YmQyODU0MmIyYS4uZTRlODFmOGQxYTVlNmNhZTA3NWUxYjM0ZjNhYjFiYmRhYzBlNTU3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMTM1LDYgKzIxMzUsNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5p
bWF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQmFySW5mby5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQmFySW5mby5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0NhbGxiYWNrVGFz
ay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDUwMWE3NmQ4NDE0NGUxNmFlN2M4OGUzZTFjNjgxOGI2MGYzMDhm
NzcuLmYxYzExY2IwY2Q4YTMwMDdiYmVkZTI1OGM1M2MwNmM1ODhiMmE3NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTMzODgsNiArMzM4OCw3IEBACiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25Db250ZW50cy5oJywKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uY3BwJywK
ICAgICAgICAgICAgICdwYWdlL0JhckluZm8uaCcsCisgICAgICAgICAgICAncGFnZS9DYWxsYmFj
a1Rhc2suaCcsCiAgICAgICAgICAgICAncGFnZS9DaHJvbWUuY3BwJywKICAgICAgICAgICAgICdw
YWdlL0NvbnNvbGUuY3BwJywKICAgICAgICAgICAgICdwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA2NTY1NDBhYzRkMDU1ZDRmNTk3YTdhOTYwN2JiODRm
Mjg1OWI0OTJlLi5lMTEyNDQ1ZGEwODAxMjAwZDgxMGE3N2Q1YzBiNGQ2OTNlNmYwY2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwpAQCAtMzA5Myw2ICszMDkzLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X0dFT0xPQ0FUSU9OPTEpIHsKIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVB
TT0xKSB7CiAgICAgSEVBREVSUyArPSBcCisgICAgICAgIHBhZ2UvQ2FsbGJhY2tUYXNrLmggXAog
ICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggXAogICAgICAgICBwYWdlL01lZGlhU3Ry
ZWFtQ29udHJvbGxlci5oIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggM2RjMDJjODk3ODk0ZjU2ZmUzNDgwZGE5ODVkZDAyYWY3YzYwMzg3YS4uNDlhMTQ2YjI4ZDNk
YzZjYjRhNjg0MzcwZDI1YTExYzc2NGRkZTZkNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI0Mzk0LDYgKzI0Mzk0LDEwIEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQ2FsbGJhY2tU
YXNrLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBhZ2VcQ2hyb21lLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTY3Mzk1ZTM2MWNlN2M1
MDBlZmJhNzZjOTBlNTEzNDJiYTVkMGZiMC4uMzllM2Q0MzBiNzY5MjM2ZGI1ODNhMDNhYTcxOTQw
MmFiN2YwMTkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDA4OCw2ICs0MDg4LDcgQEAKIAkJQjFFNTQ1OTYxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QTEzNDYyOUMxMDA5MkE1NDUgLyog
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQjFFNTQ1OTcxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVk
aWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQjFFNTQ1OTgxMzQ2MjlDMTAwOTJBNTQ1
IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEMxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFt
Q29udHJvbGxlci5oICovOyB9OworCQlCMUU1NDU5MzEzNDYyOUMxMDA5MkE1NDUgLyogQ2FsbGJh
Y2tUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MUU1NDU4NzEzNDYyOUMxMDA5MkE1NDUgLyogQ2FsbGJhY2tUYXNrLmggKi87IH07CiAJCUIxRTU0
NTk5MTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEQxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggKi87IH07CiAJCUIxRTU0NTlCMTM0
NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4RjEzNDYyOUMx
MDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oICovOyB9OwogCQlC
MUU1NDU5RDEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1
NDU5MTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
LmggKi87IH07CkBAIC0xMDMzNiw2ICsxMDMzNyw3IEBACiAJCUIxRTU0NThBMTM0NjI5QzEwMDky
QTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMUU1NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1D
b250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
U3RyZWFtQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0
NThDMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRTU0NTg3MTM0NjI5QzEwMDkyQTU0NSAvKiBDYWxsYmFj
a1Rhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tUYXNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThEMTM0NjI5QzEwMDkyQTU0NSAv
KiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMUU1NDU4RTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEYxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQwNzYsNiArMTQwNzgsNyBAQAogCQkJCUJDMTI0RUU0MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmNwcCAqLywKIAkJCQlCQzEyNEVFNTBDMjY0MUNEMDA5
RTIzNDkgLyogQmFySW5mby5oICovLAogCQkJCUJDMTI0RUU2MEMyNjQxQ0QwMDlFMjM0OSAvKiBC
YXJJbmZvLmlkbCAqLywKKwkJCQlCMUU1NDU4NzEzNDYyOUMxMDA5MkE1NDUgLyogQ2FsbGJhY2tU
YXNrLmggKi8sCiAJCQkJMTREODIzOEEwQUY5MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgKi8s
CiAJCQkJMTREODIzNTAwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oICovLAogCQkJCTE0RDgy
NDA2MEFGOTNBRUIwMDA0RjA1NyAvKiBDaHJvbWVDbGllbnQuaCAqLywKQEAgLTIyNzQxLDYgKzIy
NzQ0LDcgQEAKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzN0FGRkRGNzEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVy
Q1JMRkxpbmVSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUUzNzE3MTM3MzZBNjYwMEI5
RTkxOSAvKiBRdW90ZWRQcmludGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxRTU0NTkzMTM0
NjI5QzEwMDkyQTU0NSAvKiBDYWxsYmFja1Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYWxsYmFja1Rhc2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FsbGJhY2tUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2ZWIyNjk2MWJkNzFiMmUxNzVlODEwZDcy
ZDQyNzIwMjlmNGMzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fs
bGJhY2tUYXNrLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYWxs
YmFja1Rhc2tfaAorI2RlZmluZSBDYWxsYmFja1Rhc2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEhlbHBlciB0ZW1wbGF0ZSB0
byBzY2hlZHVsZSBjYWxscyB0byBjYWxsYmFja3MgdXNpbmcgdGhlaXIgb3duIHNjcmlwdCBleGVj
dXRpb24gY29udGV4dC4KKy8vIENhbGxiYWNrVHlwZSBpcyBhc3N1bWVkIHRvIGltcGxlbWVudCBT
Y2hlZHVsZXIgYW5kIHRvIGJlIHJlZmVyZW5jZS1jb3VudGVkLgordGVtcGxhdGUgPHR5cGVuYW1l
IENhbGxiYWNrVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlPgorY2xhc3MgQ2FsbGJhY2tUYXNr
MSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxDYWxsYmFja1Rhc2sxPiBjcmVhdGUoUGFzc1JlZlB0cjxDYWxsYmFj
a1R5cGU+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPEFyZ3VtZW50VHlwZT4gZGF0YSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsbGJhY2tUYXNrMShjYWxsYmFjaywgZGF0YSkp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YS5n
ZXQoKSk7CisgICAgfQorCisgICAgY2xhc3MgU2NoZWR1bGVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIGJvb2wgc2NoZWR1bGVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPEFyZ3VtZW50VHlwZT4gZGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhDYWxsYmFj
a1Rhc2sxPENhbGxiYWNrVHlwZSwgQXJndW1lbnRUeXBlPjo6Y3JlYXRlKHN0YXRpY19jYXN0PENh
bGxiYWNrVHlwZSo+KHRoaXMpLCBkYXRhKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9OworCitwcml2YXRlOgorICAgIENhbGxiYWNrVGFzazEoUGFzc1JlZlB0cjxDYWxsYmFja1R5
cGU+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPEFyZ3VtZW50VHlwZT4gZGF0YSkKKyAgICAgICAgOiBt
X2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fZGF0YShkYXRhKQorICAgIHsKKyAgICB9
CisKKyAgICBSZWZQdHI8Q2FsbGJhY2tUeXBlPiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxBcmd1
bWVudFR5cGU+IG1fZGF0YTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNlbmRpZiAvLyBDYWxsYmFja1Rhc2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNsaWVudC5oCmluZGV4IDllOWZiZjVmMmZlM2ZiNGRkMjQyY2ExNWIxOGMxNjBiOGZkNTJj
OWIuLmU3YjUxNGM3MzY5ZjhiZmIwMzM4NDc5MGUyMTFlMWUzYWRmYzFkMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKQEAgLTI3LDE0ICsyNywyNyBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK2VudW0gR2VuZXJhdGVT
dHJlYW1PcHRpb25GbGFnIHsKKyAgICBHZW5lcmF0ZVN0cmVhbVJlcXVlc3RBdWRpbyA9IDEsCisg
ICAgR2VuZXJhdGVTdHJlYW1SZXF1ZXN0VmlkZW9GYWNpbmdVc2VyID0gMSA8PCAxLAorICAgIEdl
bmVyYXRlU3RyZWFtUmVxdWVzdFZpZGVvRmFjaW5nRW52aXJvbm1lbnQgPSAxIDw8IDIsCit9Owor
Cit0eXBlZGVmIHVuc2lnbmVkIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3M7CisKIGNsYXNzIE1l
ZGlhU3RyZWFtQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBOb3RpZnkgdGhlIGVtYmVkZGVyIGNs
aWVudCBhYm91dCB0aGUgcGFnZSBjb250cm9sbGVyIGJlaW5nIGRlc3Ryb3llZC4KICAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFTdHJlYW1EZXN0cm95ZWQoKSA9IDA7CiAKLSAgICAvLyBGSVhNRTogYWRk
IGhlcmUgdGhlIHJlcXVlc3RzIHRvIHRoZSBlbWJlZGRlci4KKyAgICAvLyBHZW5lcmF0ZSBhIG5l
dyBsb2NhbCBzdHJlYW0uCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlU3RyZWFtKGludCByZXF1
ZXN0SWQsIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNsaWVudCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDUyMTYxYjBlZmNkODlkOGI4ZTcyMDM2NDNmODk0MTFhOTdkNDE0MTMuLmY5OTkzMjNmNWEz
MmI1YTE1ZjdlMDkwMDA3MDM4Y2NmNmUzNzc5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUNsaWVudC5oIgogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYzLDYgKzYzLDExIEBAIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6fk1lZGlhU3RyZWFtQ29udHJv
bGxlcigpCiAgICAgICAgIG1fY2xpZW50LT5tZWRpYVN0cmVhbURlc3Ryb3llZCgpOwogfQogCiti
b29sIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6aXNDbGllbnRBdmFpbGFibGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NsaWVudDsKK30KKwogdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVu
cmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1l
Q29udHJvbGxlcikKIHsKICAgICBBU1NFUlQoZnJhbWVDb250cm9sbGVyKTsKQEAgLTc1LDE0ICs4
MCw2MCBAQCB2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJv
bGxlcihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcgogCiAgICAgZm9yIChWZWN0b3I8aW50Pjo6
aXRlcmF0b3IgaXQgPSBmcmFtZVJlcXVlc3RzLmJlZ2luKCk7IGl0ICE9IGZyYW1lUmVxdWVzdHMu
ZW5kKCk7ICsraXQpCiAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKCppdCk7CisKKyAgICBWZWN0
b3I8U3RyaW5nPiBmcmFtZVN0cmVhbXM7CisgICAgZm9yIChTdHJlYW1NYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zdHJlYW1zLmJlZ2luKCk7IGl0ICE9IG1fc3RyZWFtcy5lbmQoKTsgKytpdCkKKyAgICAg
ICAgaWYgKGl0LT5zZWNvbmQgPT0gZnJhbWVDb250cm9sbGVyKQorICAgICAgICAgICAgZnJhbWVT
dHJlYW1zLmFwcGVuZChpdC0+Zmlyc3QpOworCisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRl
cmF0b3IgaXQgPSBmcmFtZVN0cmVhbXMuYmVnaW4oKTsgaXQgIT0gZnJhbWVTdHJlYW1zLmVuZCgp
OyArK2l0KQorICAgICAgICBtX3N0cmVhbXMucmVtb3ZlKCppdCk7CiB9CiAKIGludCBNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyUmVxdWVzdChpbnQgbG9jYWxJZCwgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlcikKIHsKKyAgICBBU1NFUlQobG9jYWxJZCA+
IDApOworICAgIEFTU0VSVChmcmFtZUNvbnRyb2xsZXIpOwogICAgIG1fcmVxdWVzdHMuYWRkKG1f
bmV4dEdsb2JhbFJlcXVlc3RJZCwgUmVxdWVzdChsb2NhbElkLCBmcmFtZUNvbnRyb2xsZXIpKTsK
ICAgICByZXR1cm4gbV9uZXh0R2xvYmFsUmVxdWVzdElkKys7CiB9CiAKK3ZvaWQgTWVkaWFTdHJl
YW1Db250cm9sbGVyOjpyZWdpc3RlclN0cmVhbShjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKQoreworICAgIEFTU0VS
VChmcmFtZUNvbnRyb2xsZXIpOworICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVh
bUxhYmVsKSk7CisgICAgbV9zdHJlYW1zLmFkZChzdHJlYW1MYWJlbCwgZnJhbWVDb250cm9sbGVy
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmdlbmVyYXRlU3RyZWFtKE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBsb2NhbElkLCBHZW5l
cmF0ZVN0cmVhbU9wdGlvbkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbikKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIGludCBjb250cm9s
bGVyUmVxdWVzdElkID0gcmVnaXN0ZXJSZXF1ZXN0KGxvY2FsSWQsIGZyYW1lQ29udHJvbGxlcik7
CisgICAgbV9jbGllbnQtPmdlbmVyYXRlU3RyZWFtKGNvbnRyb2xsZXJSZXF1ZXN0SWQsIGZsYWdz
LCBzZWN1cml0eU9yaWdpbik7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJl
YW1HZW5lcmF0ZWQoaW50IGNvbnRyb2xsZXJSZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgc3RyZWFt
TGFiZWwpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVy
IGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkIHdoaWxlIHRoZSByZXF1ZXN0IHJlcGx5IHdhcyBjb21p
bmcgYmFjay4KKyAgICBpZiAobV9yZXF1ZXN0cy5jb250YWlucyhjb250cm9sbGVyUmVxdWVzdElk
KSkgeworICAgICAgICBjb25zdCBSZXF1ZXN0JiByZXF1ZXN0ID0gbV9yZXF1ZXN0cy5nZXQoY29u
dHJvbGxlclJlcXVlc3RJZCk7CisgICAgICAgIHJlZ2lzdGVyU3RyZWFtKHN0cmVhbUxhYmVsLCBy
ZXF1ZXN0LmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY29u
dHJvbGxlclJlcXVlc3RJZCk7CisgICAgICAgIEFTU0VSVChyZXF1ZXN0LmZyYW1lQ29udHJvbGxl
cigpKTsKKyAgICAgICAgcmVxdWVzdC5mcmFtZUNvbnRyb2xsZXIoKS0+c3RyZWFtR2VuZXJhdGVk
KHJlcXVlc3QubG9jYWxJZCgpLCBzdHJlYW1MYWJlbCk7CisgICAgfQorfQorCit2b2lkIE1lZGlh
U3RyZWFtQ29udHJvbGxlcjo6c3RyZWFtR2VuZXJhdGlvbkZhaWxlZChpbnQgY29udHJvbGxlclJl
cXVlc3RJZCwgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OkVycm9yQ29kZSBjb2RlKQoreworICAg
IC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVu
IGRlc3Ryb3llZCB3aGlsZSB0aGUgcmVxdWVzdCByZXBseSB3YXMgY29taW5nIGJhY2suCisgICAg
aWYgKG1fcmVxdWVzdHMuY29udGFpbnMoY29udHJvbGxlclJlcXVlc3RJZCkpIHsKKyAgICAgICAg
Y29uc3QgUmVxdWVzdCYgcmVxdWVzdCA9IG1fcmVxdWVzdHMuZ2V0KGNvbnRyb2xsZXJSZXF1ZXN0
SWQpOworICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjb250cm9sbGVyUmVxdWVzdElkKTsKKyAg
ICAgICAgcmVxdWVzdC5mcmFtZUNvbnRyb2xsZXIoKS0+c3RyZWFtR2VuZXJhdGlvbkZhaWxlZChy
ZXF1ZXN0LmxvY2FsSWQoKSwgY29kZSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKaW5kZXggZDc0OWE1ODZkZTE1MzAyNjMzYTBmNGIy
MmQ3OGFlM2FiYzZiYzY0Ny4uN2IyOTM4YTI5ZTYwMDE2MGJjZDVkMDk5NTBmNDlkZTEyMTc5Yjdl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCkBAIC0y
NywxNCArMjcsMTggQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbUNsaWVudC5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbUNsaWVudDsKIGNs
YXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAK
IGNsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TWVkaWFTdHJlYW1Db250cm9sbGVyKTsKQEAgLTQyLDE1ICs0NiwyNCBAQCBwdWJsaWM6CiAgICAg
TWVkaWFTdHJlYW1Db250cm9sbGVyKE1lZGlhU3RyZWFtQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+
TWVkaWFTdHJlYW1Db250cm9sbGVyKCk7CiAKKyAgICBib29sIGlzQ2xpZW50QXZhaWxhYmxlKCkg
Y29uc3Q7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKik7CiAKKyAgICB2b2lkIGdlbmVyYXRlU3RyZWFtKE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKiwgaW50IHJlcXVlc3RJZCwgR2VuZXJhdGVTdHJlYW1PcHRpb25GbGFncywg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOworCisgICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQo
aW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBzdHJl
YW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
OjpFcnJvckNvZGUpOworCiBwcml2YXRlOgogICAgIGludCByZWdpc3RlclJlcXVlc3QoaW50IGxv
Y2FsUmVxdWVzdElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciopOworICAgIHZvaWQgcmVn
aXN0ZXJTdHJlYW0oY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIqKTsKIAogICAgIGNsYXNzIFJlcXVlc3Q7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGlu
dCwgUmVxdWVzdD4gUmVxdWVzdE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcio+IFN0cmVhbU1hcDsKIAogICAgIFJlcXVlc3RNYXAgbV9y
ZXF1ZXN0czsKKyAgICBTdHJlYW1NYXAgbV9zdHJlYW1zOwogCiAgICAgTWVkaWFTdHJlYW1DbGll
bnQqIG1fY2xpZW50OwogICAgIGludCBtX25leHRHbG9iYWxSZXF1ZXN0SWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCmluZGV4IDA2
MTc1NjE3ODc5NzkxNmM5ZWRlMTlhMTUxZDI1YzY1NzMwN2I3NjEuLmEwZDdhZjIxNjFiMmQzMWZl
YjE0YjYzYmRjOWNlZjgzYjQ4NDJhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVxdWVzdD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlcXVlc3QpOwogcHVibGljOgogICAgIFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyB9CkBAIC01OCw2ICs1OSwzNyBAQCBwcml2YXRl
OgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IH07CiAKK2NsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmF0ZVN0cmVhbVJl
cXVlc3QgOiBwdWJsaWMgUmVxdWVzdCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2VuZXJh
dGVTdHJlYW1SZXF1ZXN0KTsKK3B1YmxpYzoKKyAgICBHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0
cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgICAg
ICA6IFJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX3N1Y2Nlc3ND
YWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9y
Q2FsbGJhY2spIHsgfQorCisgICAgdmlydHVhbCB+R2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkgeyB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKQorICAgIHsKKyAgICAgICAg
aWYgKG1fZXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJN
ZWRpYUVycm9yPiBlcnJvciA9IGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcihO
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQpKTsKKyAgICAgICAgICAg
IC8vIFRoZSBjYWxsYmFjayBpdHNlbGYgaXMgbWFkZSB3aXRoIHRoZSBKUyBjYWxsYmFjaydzIGNv
bnRleHQsIG5vdCB3aXRoIHRoZSBmcmFtZSdzIGNvbnRleHQuCisgICAgICAgICAgICBtX2Vycm9y
Q2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlcnJv
cik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRp
YVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdWNj
ZXNzQ2FsbGJhY2s7IH0KKyAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2s7IH0K
KworcHJpdmF0ZToKKyAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
PiBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JD
YWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOworfTsKKwogdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6UmVxdWVzdE1hcDo6YWJvcnQoaW50IHJlcXVlc3RJZCkKIHsKICAgICBnZXQocmVx
dWVzdElkKS0+YWJvcnQoKTsKQEAgLTcyLDEwICsxMDQsMjcgQEAgdm9pZCBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6UmVxdWVzdE1hcDo6YWJvcnRBbGwoKQogICAgIH0KIH0KIAordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Cit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRN
YXBCYXNlPFQ+Ojp1bnJlZ2lzdGVyQWxsKCkKK3sKKyAgICB3aGlsZSAoIXRoaXMtPmlzRW1wdHko
KSkKKyAgICAgICAgLy8gdW5yZWdpc3RlciBzaG91bGQgcmVtb3ZlIHRoZSBlbGVtZW50IGZyb20g
dGhlIG1hcC4KKyAgICAgICAgdGhpcy0+YmVnaW4oKS0+c2Vjb25kLT51bnJlZ2lzdGVyKCk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6Q2xpZW50TWFwQmFzZTxUPjo6ZGV0YWNoRW1iZWRkZXIoKQoreworICAgIGZvciAodHlwZW5h
bWUgTWFwVHlwZTo6aXRlcmF0b3IgaXQgPSB0aGlzLT5iZWdpbigpOyBpdCAhPSB0aGlzLT5lbmQo
KTsgKytpdCkKKyAgICAgICAgaXQtPnNlY29uZC0+ZGV0YWNoRW1iZWRkZXIoKTsKK30KKwogTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1l
KiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2lzSW5EZXRhY2hlZFN0YXRl
KGZhbHNlKQogeworICAgIGlmICghaXNDbGllbnRBdmFpbGFibGUoKSkKKyAgICAgICAgZW50ZXJE
ZXRhY2hlZFN0YXRlKCk7CiB9CiAKIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjp+TWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIoKQpAQCAtOTQsNyArMTQzLDEzIEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uCiAKIE1lZGlhU3RyZWFtQ29udHJvbGxlciogTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OnBhZ2VDb250cm9sbGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1faXNJbkRldGFj
aGVkU3RhdGUgJiYgbV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCkt
Pm1lZGlhU3RyZWFtQ29udHJvbGxlcigpIDogMDsKKyAgICByZXR1cm4gbV9mcmFtZSAmJiBtX2Zy
YW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPm1lZGlhU3RyZWFtQ29udHJvbGxlcigpIDog
MDsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6dW5yZWdpc3RlcihTdHJl
YW1DbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9zdHJlYW1zLmNvbnRhaW5zKGNsaWVu
dC0+Y2xpZW50SWQoKSkpOworICAgIG1fc3RyZWFtcy5yZW1vdmUoY2xpZW50LT5jbGllbnRJZCgp
KTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZW50ZXJEZXRhY2hlZFN0
YXRlKCkKQEAgLTEwNSw5ICsxNjAsMTkgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6ZW50ZXJEZXRhY2hlZFN0YXRlKCkKICAgICB9CiAKICAgICBtX3JlcXVlc3RzLmFib3J0QWxs
KCk7CisgICAgbV9zdHJlYW1zLmRldGFjaEVtYmVkZGVyKCk7CiAgICAgbV9pc0luRGV0YWNoZWRT
dGF0ZSA9IHRydWU7CiB9CiAKK2Jvb2wgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmlzQ2xp
ZW50QXZhaWxhYmxlKCkgY29uc3QKK3sKKyAgICBpZiAobV9pc0luRGV0YWNoZWRTdGF0ZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBjb250cm9s
bGVyID0gcGFnZUNvbnRyb2xsZXIoKTsKKyAgICByZXR1cm4gY29udHJvbGxlciAmJiBjb250cm9s
bGVyLT5pc0NsaWVudEF2YWlsYWJsZSgpOworfQorCiAvLyBDYWxsZWQgYWxzbyB3aGVuIHRoZSBm
cmFtZSBpcyBkZXRhY2hlZCBmcm9tIHRoZSBwYWdlLCBpbiB3aGljaCBjYXNlIHRoZSBwYWdlIGNv
bnRyb2xsZXIgd2lsbCByZW1haW4gYWxpdmUuCiB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpkaXNjb25uZWN0UGFnZSgpCiB7CkBAIC0xMjMsNiArMTg4LDcgQEAgdm9pZCBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyYW1lKCkKICAgICBkaXNjb25uZWN0UGFn
ZSgpOwogCiAgICAgQVNTRVJUKG1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBtX3N0cmVhbXMu
dW5yZWdpc3RlckFsbCgpOwogCiAgICAgbV9mcmFtZSA9IDA7CiB9CkBAIC0xMzQsNiArMjAwLDk1
IEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnRyYW5zZmVyVG9OZXdQYWdlKFBh
Z2UqKQogICAgIGRpc2Nvbm5lY3RQYWdlKCk7CiB9CiAKK0dlbmVyYXRlU3RyZWFtT3B0aW9uRmxh
Z3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnBhcnNlR2VuZXJhdGVTdHJlYW1PcHRpb25z
KGNvbnN0IFN0cmluZyYgb3B0aW9ucykKK3sKKyAgICBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdz
IGZsYWdzID0gMDsKKyAgICBWZWN0b3I8U3RyaW5nPiBvcHRpb25MaXN0OworICAgIG9wdGlvbnMu
c3BsaXQoJywnLCBvcHRpb25MaXN0KTsKKworICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIG9wdGlvbiA9IG9wdGlvbkxpc3QuYmVnaW4oKTsgb3B0aW9uICE9IG9wdGlvbkxp
c3QuZW5kKCk7ICsrb3B0aW9uKSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHN1Ym9wdGlvbkxp
c3Q7CisgICAgICAgIG9wdGlvbi0+c3BsaXQoJyAnLCBzdWJvcHRpb25MaXN0KTsKKworICAgICAg
ICBpZiAoc3Vib3B0aW9uTGlzdC5maXJzdCgpID09ICJhdWRpbyIpCisgICAgICAgICAgICBmbGFn
cyB8PSBHZW5lcmF0ZVN0cmVhbVJlcXVlc3RBdWRpbzsKKyAgICAgICAgZWxzZSBpZiAoc3Vib3B0
aW9uTGlzdC5maXJzdCgpID09ICJ2aWRlbyIpIHsKKyAgICAgICAgICAgIGJvb2wgdmlkZW9TdWJv
cHRpb25zID0gZmFsc2U7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3Igc3Vib3B0aW9uID0gc3Vib3B0aW9uTGlzdC5iZWdpbigpOworICAgICAgICAgICAgZm9yICgr
K3N1Ym9wdGlvbjsgc3Vib3B0aW9uICE9IHN1Ym9wdGlvbkxpc3QuZW5kKCk7ICsrc3Vib3B0aW9u
KQorICAgICAgICAgICAgICAgIGlmICgqc3Vib3B0aW9uID09ICJ1c2VyIikgeworICAgICAgICAg
ICAgICAgICAgICBmbGFncyB8PSBHZW5lcmF0ZVN0cmVhbVJlcXVlc3RWaWRlb0ZhY2luZ1VzZXI7
CisgICAgICAgICAgICAgICAgICAgIHZpZGVvU3Vib3B0aW9ucyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICgqc3Vib3B0aW9uID09ICJlbnZpcm9ubWVudCIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MgfD0gR2VuZXJhdGVTdHJlYW1SZXF1ZXN0VmlkZW9GYWNpbmdFbnZp
cm9ubWVudDsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9TdWJvcHRpb25zID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFzayBmb3IgYWxsIGtpbmQgb2YgY2Ft
ZXJhcyBpZiBubyBzdWJvcHRpb24gd2FzIHNwZWNpZmllZC4KKyAgICAgICAgICAgIGlmICghdmlk
ZW9TdWJvcHRpb25zKQorICAgICAgICAgICAgICAgIGZsYWdzIHw9IEdlbmVyYXRlU3RyZWFtUmVx
dWVzdFZpZGVvRmFjaW5nVXNlciB8IEdlbmVyYXRlU3RyZWFtUmVxdWVzdFZpZGVvRmFjaW5nRW52
aXJvbm1lbnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKKy8v
IEltcGxlbWVudHMgdGhlIGdldFVzZXJNZWRpYSBtZXRob2QgZnJvbSBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tbmF2aWdhdG9yLWdldHVzZXJt
ZWRpYS4KK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmdlbmVyYXRlU3RyZWFtKGNv
bnN0IFN0cmluZyYgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXN1Y2Nlc3NDYWxsYmFjaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgR2VuZXJhdGVTdHJlYW1PcHRpb25GbGFncyBmbGFncyA9IHBh
cnNlR2VuZXJhdGVTdHJlYW1PcHRpb25zKG9wdGlvbnMpOworICAgIGlmICghZmxhZ3MpIHsKKyAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBlYyA9IDA7CisKKyAgICBpbnQgcmVxdWVzdElkID0gbV9yZXF1ZXN0cy5nZXROZXh0SWQoKTsK
KyAgICBtX3JlcXVlc3RzLmFkZChyZXF1ZXN0SWQsIGFkb3B0UmVmKG5ldyBHZW5lcmF0ZVN0cmVh
bVJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spKSk7CisKKyAgICBpZiAoIWlzQ2xpZW50QXZhaWxhYmxlKCkpIHsKKyAgICAgICAg
Ly8gVGhpcyBtYWtlcyBzdXJlIHRvIGNhbGwgdGhlIGVycm9yIGNhbGxiYWNrIGlmIHByb3ZpZGVk
LgorICAgICAgICBtX3JlcXVlc3RzLmFib3J0KHJlcXVlc3RJZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBwYWdlQ29udHJvbGxlcigpLT5nZW5lcmF0ZVN0cmVhbSh0aGlzLCByZXF1
ZXN0SWQsIGZsYWdzLCBzZWN1cml0eU9yaWdpbigpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6c3RyZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSByZXF1ZXN0IGNhbiBo
YXZlIGJlZW4gYWJvcnRlZCBhcyBhIHJlc3VsdCBvZiBlbWJlZGRlciBkZXRhY2htZW50LgorICAg
IGlmIChtX3JlcXVlc3RzLmNvbnRhaW5zKHJlcXVlc3RJZCkpIHsKKyAgICAgICAgQVNTRVJUKG1f
cmVxdWVzdHMuZ2V0KHJlcXVlc3RJZCktPmlzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkpOworICAg
ICAgICBBU1NFUlQoIWxhYmVsLmlzTnVsbCgpKTsKKworICAgICAgICAvLyBGSVhNRTogY3JlYXRl
IGEgR2VuZXJhdGVkU3RyZWFtIG9iamVjdCBhbmQgaW52b2tlIHRoZSBjYWxsYmFjayB3aGVuIHRo
ZSBjbGFzcyBpcyBhdmFpbGFibGUuCisgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKHJlcXVlc3RJ
ZCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzdHJlYW1H
ZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpF
cnJvckNvZGUgY29kZSkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIHJlcXVlc3Qg
Y2FuIGhhdmUgYmVlbiBhYm9ydGVkIGFzIGEgcmVzdWx0IG9mIGVtYmVkZGVyIGRldGFjaG1lbnQu
CisgICAgaWYgKG1fcmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElkKSkgeworICAgICAgICBBU1NF
UlQobV9yZXF1ZXN0cy5nZXQocmVxdWVzdElkKS0+aXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSk7
CisKKyAgICAgICAgUmVmUHRyPEdlbmVyYXRlU3RyZWFtUmVxdWVzdD4gc3RyZWFtUmVxdWVzdCA9
IHN0YXRpY19jYXN0PEdlbmVyYXRlU3RyZWFtUmVxdWVzdCo+KG1fcmVxdWVzdHMuZ2V0KHJlcXVl
c3RJZCkuZ2V0KCkpOworICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SWQpOworCisg
ICAgICAgIGlmIChzdHJlYW1SZXF1ZXN0LT5lcnJvckNhbGxiYWNrKCkpIHsKKyAgICAgICAgICAg
IFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcj4gZXJyb3IgPSBhZG9wdFJlZihuZXcgTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IoY29kZSkpOworICAgICAgICAgICAgc3RyZWFtUmVxdWVzdC0+
ZXJyb3JDYWxsYmFjaygpLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyLmgKaW5kZXggZTk1YTQ0YWE3ZjI4ZDcyZDFjMDk2Zjc2ZjdmYjNjZDQ2NzUwZjFkNy4u
NDk0NjFhOTdjMzVlNjg3MTIzNmExYjY2ZmY3MmE2YTJiNThkZTY0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaApAQCAtMjcsMTQgKzI3
LDIwIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2xpZW50LmgiCisjaW5jbHVkZSAiTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZy
YW1lOwogY2xhc3MgTWVkaWFTdHJlYW1Db250cm9sbGVyOworY2xhc3MgTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjazsKK2NsYXNzIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
azsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CkBAIC00MiwzMSArNDgsMTM4IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKTsKIHB1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSWRUeXBlPgorICAgIGNsYXNzIENsaWVudEJhc2UgeworICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDbGllbnRCYXNlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIENsaWVudEJh
c2UoKSA6IG1fZnJhbWVDb250cm9sbGVyKDApLCBtX2NsaWVudElkKDApIHsgfQorCisgICAgICAg
IENsaWVudEJhc2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwg
Y29uc3QgSWRUeXBlJiBpZCkKKyAgICAgICAgICAgIDogbV9mcmFtZUNvbnRyb2xsZXIoZnJhbWVD
b250cm9sbGVyKQorICAgICAgICAgICAgLCBtX2NsaWVudElkKGlkKSB7IH0KKworICAgICAgICB2
aXJ0dWFsIH5DbGllbnRCYXNlKCkgeyB9CisKKyAgICAgICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUNvbnRyb2xsZXI7IH0KKyAgICAgICAgY29uc3QgSWRUeXBlJiBjbGllbnRJZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50SWQ7IH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJlYW0oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmF0ZWRT
dHJlYW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgICAgIC8vIENhbGxlZCB3aGVu
IHRoZSBmcmFtZSBjb250cm9sbGVyIGlzIGJlaW5nIGRpc2Nvbm5lY3RlZCB0byB0aGUgTWVkaWFT
dHJlYW1DbGllbnQgZW1iZWRkZXIuCisgICAgICAgIC8vIENsaWVudHMgc2hvdWxkIG92ZXJyaWRl
IHRoaXMgdG8gc2VuZCBhbnkgcmVxdWlyZWQgc2h1dGRvd24gbWVzc2FnZXMuCisgICAgICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hFbWJlZGRlcigpIHsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICAvLyBVc2VkIGZvciBvYmplY3RzIHRoYXQgYXJlIG9wdGlvbmFsbHkgYXNzb2NpYXRlZCB0byB0
aGUgZnJhbWUgY29udHJvbGxlciBhZnRlciBjb25zdHJ1Y3Rpb24sIGxpa2UgdGhlIHRyYWNrIGxp
c3RzLgorICAgICAgICB2b2lkIGFzc29jaWF0ZUZyYW1lQ29udHJvbGxlcihNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBjb25zdCBJZFR5cGUmIGlkKQorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQoIW1fZnJhbWVDb250cm9sbGVyICYmICFtX2NsaWVudElk
KTsKKyAgICAgICAgICAgIG1fZnJhbWVDb250cm9sbGVyID0gZnJhbWVDb250cm9sbGVyOworICAg
ICAgICAgICAgbV9jbGllbnRJZCA9IGlkOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXZvaWRz
IHJlcGVhdGluZyB0aGUgc2FtZSBjb2RlIGluIHRoZSB1bnJlZ2lzdGVyIG1ldGhvZCBvZiBlYWNo
IGRlcml2ZWQgY2xhc3MuCisgICAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgc2luY2UgdGhlIGNv
bnRyb2xsZXIncyB1bnJlZ2lzdGVyIG1ldGhvZHMgbWFrZSB1c2Ugb2YgdGhlIGlzT2JqZWN0IHZp
cnR1YWxzLAorICAgICAgICAvLyBhbmQgdGhlIHVucmVnaXN0cmF0aW9uIGNhbiBiZSB0cmlnZ2Vy
ZWQgZWl0aGVyIGJ5IHRoZSBkZXN0cnVjdG9yIG9mIHRoZSBjbGllbnQgb3IgYnkgdGhlIGRpc2Nv
bm5lY3Rpb24gb2YgdGhlIGZyYW1lLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xpZW50
VHlwZT4KKyAgICAgICAgdm9pZCB1bnJlZ2lzdGVyQ2xpZW50KENsaWVudFR5cGUqIGNsaWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2ZyYW1lQ29udHJvbGxlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fZnJhbWVDb250cm9sbGVyLT51bnJlZ2lz
dGVyKHN0YXRpY19jYXN0PENsaWVudFR5cGUqPihjbGllbnQpKTsKKyAgICAgICAgICAgIG1fZnJh
bWVDb250cm9sbGVyID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyKCkgPSAwOworICAgICAgICBmcmllbmQgY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI7CisKKyAgICAgICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIG1fZnJhbWVDb250
cm9sbGVyOworICAgICAgICBJZFR5cGUgbV9jbGllbnRJZDsKKyAgICB9OworCisgICAgY2xhc3Mg
U3RyZWFtQ2xpZW50IDogcHVibGljIENsaWVudEJhc2U8U3RyaW5nPiB7CisgICAgcHVibGljOgor
ICAgICAgICBTdHJlYW1DbGllbnQoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29u
dHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCkgOiBDbGllbnRCYXNlPFN0cmluZz4oZnJhbWVD
b250cm9sbGVyLCBsYWJlbCkgeyB9CisgICAgICAgIHZpcnR1YWwgflN0cmVhbUNsaWVudCgpIHsg
dW5yZWdpc3RlcigpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIGlzU3RyZWFtKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIC8vIFN0cmVhbSBoYXMgZW5kZWQgZm9yIHNvbWUg
ZXh0ZXJuYWwgcmVhc29uLgorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRW5kZWQoKSA9IDA7
CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlcigpIHsgdW5y
ZWdpc3RlckNsaWVudCh0aGlzKTsgfQorICAgIH07CisKICAgICBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcihGcmFtZSopOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KCk7CiAKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAK
KyAgICBib29sIGlzQ2xpZW50QXZhaWxhYmxlKCkgY29uc3Q7CiAgICAgdm9pZCBkaXNjb25uZWN0
UGFnZSgpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRv
TmV3UGFnZShQYWdlKik7CiAKKyAgICAvLyBQYXJzZSB0aGUgb3B0aW9ucyBzdHJpbmcgcHJvdmlk
ZWQgdG8gdGhlIGdlbmVyYXRlU3RyZWFtIG1ldGhvZC4KKyAgICBzdGF0aWMgR2VuZXJhdGVTdHJl
YW1PcHRpb25GbGFncyBwYXJzZUdlbmVyYXRlU3RyZWFtT3B0aW9ucyhjb25zdCBTdHJpbmcmKTsK
KworICAgIC8vIENyZWF0ZSBhIG5ldyBnZW5lcmF0ZWQgc3RyZWFtIGFzeW5jaHJvbm91c2x5IHdp
dGggdGhlIHByb3ZpZGVkIG9wdGlvbnMuCisgICAgdm9pZCBnZW5lcmF0ZVN0cmVhbShjb25zdCBT
dHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0
aW9uQ29kZSYpOworCisgICAgLy8gLS0tIENhbGxzIGNvbWluZyBiYWNrIGZyb20gdGhlIGNvbnRy
b2xsZXIuIC0tLSAvLworCisgICAgLy8gUmVwb3J0IHRoZSBnZW5lcmF0aW9uIG9mIGEgbmV3IGxv
Y2FsIHN0cmVhbS4KKyAgICB2b2lkIHN0cmVhbUdlbmVyYXRlZChpbnQgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKworICAgIC8vIFJlcG9ydCBhIGZhaWx1cmUgaW4gdGhl
IGdlbmVyYXRpb24gb2YgYSBuZXcgc3RyZWFtLgorICAgIHZvaWQgc3RyZWFtR2VuZXJhdGlvbkZh
aWxlZChpbnQgcmVxdWVzdElkLCBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjo6RXJyb3JDb2RlKTsK
KwogcHJpdmF0ZToKICAgICBjbGFzcyBSZXF1ZXN0OworICAgIGNsYXNzIEdlbmVyYXRlU3RyZWFt
UmVxdWVzdDsKKworICAgIGNsYXNzIElkR2VuZXJhdG9yIHsKKyAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSWRHZW5lcmF0b3IpOworICAgIHB1YmxpYzoKKyAgICAgICAgSWRHZW5lcmF0b3Io
KSA6IG1faWQoMCkgeyB9CisgICAgICAgIGludCBnZXROZXh0SWQoKSB7IHJldHVybiArK21faWQ7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX2lkOworICAgIH07CiAKLSAgICBjbGFz
cyBSZXF1ZXN0TWFwIDogcHVibGljIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVxdWVzdD4gPiB7Cisg
ICAgY2xhc3MgUmVxdWVzdE1hcCA6IHB1YmxpYyBJZEdlbmVyYXRvciwgcHVibGljIEhhc2hNYXA8
aW50LCBSZWZQdHI8UmVxdWVzdD4gPiB7CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIGFib3J0
KGludCByZXF1ZXN0SWQpOwogICAgICAgICB2b2lkIGFib3J0QWxsKCk7CiAgICAgfTsKIAorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBJZFR5cGU+CisgICAgY2xhc3MgQ2xpZW50TWFwQmFzZSA6IHB1
YmxpYyBIYXNoTWFwPElkVHlwZSwgQ2xpZW50QmFzZTxJZFR5cGU+KiA+IHsKKyAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ2xpZW50TWFwQmFzZSk7CisgICAgcHVibGljOgorICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8SWRUeXBlLCBDbGllbnRCYXNlPElkVHlwZT4qID4gTWFwVHlwZTsKKwor
ICAgICAgICBDbGllbnRNYXBCYXNlKCkgeyB9CisgICAgICAgIHZvaWQgdW5yZWdpc3RlckFsbCgp
OworICAgICAgICB2b2lkIGRldGFjaEVtYmVkZGVyKCk7CisgICAgfTsKKworICAgIC8vIFN0cmVh
bXMgYXJlIGEgc3BlY2lhbCBjbGFzcyBvZiBjbGllbnRzIHNpbmNlIHRoZXkgYXJlIGlkZW50aWZp
ZWQgYnkgYSBnbG9iYWwgbGFiZWwgc3RyaW5nIGluc3RlYWQgb2YgYW4gaWQuCisgICAgdHlwZWRl
ZiBDbGllbnRNYXBCYXNlPFN0cmluZz4gU3RyZWFtTWFwOworCiAgICAgLy8gRGV0YWNoZWQgZnJv
bSBhIHBhZ2UsIGFuZCBoZW5jZSBmcm9tIGEgZW1iZWRkZXIgY2xpZW50LgogICAgIHZvaWQgZW50
ZXJEZXRhY2hlZFN0YXRlKCk7CiAKKyAgICB2b2lkIHVucmVnaXN0ZXIoU3RyZWFtQ2xpZW50Kik7
CiAgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBwYWdlQ29udHJvbGxlcigpIGNvbnN0OwogCiAg
ICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworICAgIFN0cmVhbU1hcCBtX3N0cmVhbXM7CiAKICAg
ICBGcmFtZSogbV9mcmFtZTsKICAgICBib29sIG1faXNJbkRldGFjaGVkU3RhdGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5jcHAKaW5kZXggNmVhMzc3ZWFiMDc1MDRiZGNiNDRjN2QxZjNiMjJhZDFj
Yjg4MzBlNi4uYTkyYjczOWE1NmIyYjM3NDk2ZDdkODEwZWQwZTc1MTY3Y2ZiMWYxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjQ1LDkgKzI0NiwxMCBAQCB2
b2lkIE5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hl
bWUsIGNvbnN0IFN0cmluZyYgdXJsLAogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotdm9pZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShjb25zdCBTdHJpbmcmLCBQYXNz
UmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBOYXZp
Z2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQ
dHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCBhIGNhbGwgdG8g
dGhlIG1lZGlhIHN0cmVhbSBjb250ZXh0IHdoZW4gYXZhaWxhYmxlLgorICAgIGlmIChtX2ZyYW1l
ICYmIG1fZnJhbWUtPm1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIG1fZnJh
bWUtPm1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmdlbmVyYXRlU3RyZWFtKG9wdGlvbnMs
IHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgZWMpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNr
LmgKaW5kZXggMTlmYjlmNjk5NDIxM2VlYjQ5ZDFmN2I5NTM3Y2IwOTc1MTk3MzQ1NS4uMTUzOTcw
OTE3YTdkYmZkNDQwMDBkYTU2NTUwODAwODYxMjkxMGJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgKQEAgLTI3LDEz
ICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkNhbGxi
YWNrVGFzay5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvcjsKLQotY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxs
YmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+
IHsKK2NsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291
bnRlZDxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ2FsbGJhY2tUYXNrMTxOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrLCBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcj46OlNjaGVkdWxlciB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaygp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ciopID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92795</attachid>
            <date>2011-05-09 08:47:01 -0700</date>
            <delta_ts>2011-05-16 08:58:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60177-20110509164659.patch</filename>
            <type>text/plain</type>
            <size>37928</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwNTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNTIxY2YwMjJkNWZmZjcwNjgyYzFj
NzNlMTJmZjkyOWVlYTE1ZDdhLi5iN2NhMzRjNjFjOTNjY2Q0MTU2NTZhMzJhZDdjYjU5NDk3MTI4
ZWE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTEtMDUtMDkgIExlYW5kcm8gR3JhY2lhIEdp
bCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhIFN0cmVhbSBBUEk6IGFkZCBsb2NhbCBzdHJl
YW0gcmVxdWVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MDE3NworCisgICAgICAgIFJlLWVuYWJsZSB0aGUgYXJndW1lbnQtdHlwZXMgdGVzdCBh
cyB0aGUgbmF2aWdhdG9yLmdldFVzZXJNZWRpYSBvcHRpb25zCisgICAgICAgIGFyZSBub3cgYmVp
bmcgcGFyc2VkIGFuZCByYWlzZSB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9ucy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKworMjAxMS0wNS0w
OSAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBHZW50aWxjb3JlLgogCiAgICAgICAgIE1lZGlhIFN0cmVh
bSBBUEk6IGFkZCBleGNlcHRpb24gcmFpc2luZyB0byB0aGUgZ2V0VXNlck1lZGlhIG1ldGhvZC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCBlNjg5YjEwYjVkNjAzNjQxMDRjZmJjOTEwMTBlZWY2Yjc1MDM4OWY4Li4xN2I2
ZDc3MDBhZmZhMDI5M2RmNjkxNDBkZWU0YWVkMjkxYjc2NDVkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00MDQ1LDYg
KzQwNDUsMyBAQCBCVUdXSzU0MTgxIDogZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LWlmcmFt
ZS1kZWxldGUtdGVzdC5odG1sID0gVElNRU9VVAogQlVHV0s1NDE4MSA6IGZhc3QvZXZlbnRzL3Bh
Z2UtdmlzaWJpbGl0eS1pZnJhbWUtbW92ZS10ZXN0Lmh0bWwgPSBUSU1FT1VUCiBCVUdXSzU0MTgx
IDogZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LWlmcmFtZS1wcm9wYWdhdGlvbi10ZXN0Lmh0
bWwgPSBUSU1FT1VUCiBCVUdXSzU0MTgxIDogZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRy
YW5zaXRpb24tdGVzdC5odG1sID0gVElNRU9VVAotCi0vLyBUbyBiZSByZS1lbmFibGVkIGFmdGVy
IGxhbmRpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMTc3Lgot
QlVHV0s2MDM4NyA6IGZhc3QvZG9tL01lZGlhU3RyZWFtL2FyZ3VtZW50LXR5cGVzLmh0bWwgPSBG
QUlMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNGNhNTZhZGUxZmYyZjQzZDBhMWZiZTcxMTdjYzFhZmQyMmUxOWQ1
Mi4uZTZiYTM2YTNkYThmOTE4NWY3NDllZjlkNGNkNGVkNjliMmVmOTI4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDc5IEBACiAyMDExLTA1LTA5ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJv
Z3JhY2lhQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNZWRpYSBTdHJlYW0gQVBJOiBhZGQgbG9jYWwgc3RyZWFtIHJlcXVlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAxNzcK
KworICAgICAgICBBZGQgdGhlIGNvZGUgYW5kIG1lc3NhZ2VzIGZvciByZXF1ZXN0aW5nIHRoZSBn
ZW5lcmF0aW9uIG9mIGxvY2FsIHN0cmVhbXMgYW5kIGdldHRpbmcgdGhlIHJlcGx5IGJhY2suCisK
KyAgICAgICAgVGVzdHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJIHdpbGwgYmUgcHJvdmlkZWQg
YnkgdGhlIGJ1ZyA1NjU4Ny4KKyAgICAgICAgT25lIHRlc3QgaXMgcmUtZW5hYmxlZCB3aXRoIHRo
aXMgcGF0Y2guCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJndW1lbnQt
dHlwZXMuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2FsbGJhY2tUYXNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FsbGJhY2tUYXNrMTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bGxiYWNrVGFzazE6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrVGFz
azE6OlNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxs
YmFja1Rhc2sxOjpDYWxsYmFja1Rhc2sxKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ2xp
ZW50Lmg6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjppc0NsaWVudEF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdp
c3RlclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpy
ZWdpc3RlclN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OmdlbmVyYXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6c3RyZWFtR2VuZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6c3RyZWFtR2VuZXJhdGlvbkZhaWxlZCk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5l
cmF0ZVN0cmVhbVJlcXVlc3Q6OkdlbmVyYXRlU3RyZWFtUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6R2VuZXJhdGVTdHJlYW1SZXF1ZXN0Ojp+
R2VuZXJhdGVTdHJlYW1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjpHZW5lcmF0ZVN0cmVhbVJlcXVlc3Q6OmlzR2VuZXJhdGVTdHJlYW1SZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5l
cmF0ZVN0cmVhbVJlcXVlc3Q6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjpHZW5lcmF0ZVN0cmVhbVJlcXVlc3Q6OnN1Y2Nlc3NDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6R2VuZXJhdGVT
dHJlYW1SZXF1ZXN0OjplcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5yZWdp
c3RlckFsbCk6CisgICAgICAgIChXZWJDb3JlOjo6OmRldGFjaEVtYmVkZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
cGFnZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OnVucmVnaXN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OmVudGVyRGV0YWNoZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6aXNDbGllbnRBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFyc2VHZW5lcmF0ZVN0cmVh
bU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OmdlbmVyYXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRpb25GYWlsZWQpOgorICAgICAgICAqIHBhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjpDbGllbnRCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjp+Q2xpZW50QmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50
QmFzZTo6bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OkNsaWVudEJhc2U6OmNsaWVudElkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjppc1N0cmVh
bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50
QmFzZTo6aXNHZW5lcmF0ZWRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OkNsaWVudEJhc2U6OmRldGFjaEVtYmVkZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjphc3NvY2lhdGVG
cmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OkNsaWVudEJhc2U6OnVucmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlN0cmVhbUNsaWVudDo6U3RyZWFtQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpTdHJlYW1DbGll
bnQ6On5TdHJlYW1DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OlN0cmVhbUNsaWVudDo6aXNTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlN0cmVhbUNsaWVudDo6dW5yZWdpc3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6SWRHZW5lcmF0b3I6Oklk
R2VuZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpJZEdlbmVyYXRvcjo6Z2V0TmV4dElkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjpDbGllbnRNYXBCYXNlOjpDbGllbnRNYXBCYXNlKToKKyAgICAgICAg
KiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OndlYmtp
dEdldFVzZXJNZWRpYSk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrLmg6CisKKzIwMTEtMDUtMDkgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFj
aWFAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgR2VudGlsY29yZS4K
IAogICAgICAgICBNZWRpYSBTdHJlYW0gQVBJOiBhZGQgZXhjZXB0aW9uIHJhaXNpbmcgdG8gdGhl
IGdldFVzZXJNZWRpYSBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5
ZjcyYTI3ZGU4NjAyMzczMzAwNzNmMTU3MjNhODNiNDY4MGEzZjMwLi45MjQ3ZDhhNGZiYTY0ZDI2
OGFiMGYyZTA3NTAxN2UxYjNjODY3YzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTIxMzMsNiArMjEzMyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9CYXJJbmZvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9CYXJJbmZvLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FsbGJhY2tUYXNrLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNmE3YThmYjZk
YjBkMjI0ZjNhYWI5ODk1MDVkOTNkNTNmMmM3OGExNS4uYTBmMDdiYTc1ZjRkMTYwMThjNjlmZjE2
MzdjZWY2NjVkY2VjZmUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzM4Nyw2ICszMzg3LDcgQEAK
ICAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmgnLAogICAg
ICAgICAgICAgJ3BhZ2UvQmFySW5mby5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvQmFySW5mby5o
JywKKyAgICAgICAgICAgICdwYWdlL0NhbGxiYWNrVGFzay5oJywKICAgICAgICAgICAgICdwYWdl
L0Nocm9tZS5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvQ29uc29sZS5jcHAnLAogICAgICAgICAg
ICAgJ3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDI3
YjkyMWJhNWMyMTQ4YzUwMGY5OGIxZmJlMjBjZDU2NmU5M2JiYWQuLjQwZGQzNmQxNTM2OGUwYTMw
MmQ3ZTg4NGM0OWE1ZmFmMDZiMDkxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMDkyLDYgKzMwOTIs
NyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfR0VPTE9DQVRJT049MSkgewogCiBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAgICBIRUFERVJTICs9IFwKKyAg
ICAgICAgcGFnZS9DYWxsYmFja1Rhc2suaCBcCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1DbGll
bnQuaCBcCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmggXAogICAgICAgICBw
YWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBmNDkyZjNhZTU1YTA0ZjFiNDRhZDZkNTU0
YmJlOTEzY2M5MjAxYzVkLi5kNDIwNGI1ODcyODNlZjhkYjg2NDQyNDJmYjc0NmYzNDk2NDM0ZWQ2
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
MjQzOTQsNiArMjQzOTQsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGFnZVxDYWxsYmFja1Rhc2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxDaHJvbWUuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlYzc1OTZkNDMwN2NiZDVhZjcxMjdmMjNkMGMzZTI4YzdjMGIxNjkwLi5k
NTEzNjBiMTEzYzgyNWZhYmY1ZThhNGZkNTU2ODA1MmU5NjU3NTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDg2LDYgKzQw
ODYsNyBAQAogCQlCMUU1NDU5NjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIxRTU0NThBMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
ICovOyB9OwogCQlCMUU1NDU5NzEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIx
RTU0NThCMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9
OwogCQlCMUU1NDU5ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QzEz
NDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggKi87IH07CisJCUIxRTU0
NTkzMTM0NjI5QzEwMDkyQTU0NSAvKiBDYWxsYmFja1Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTg3MTM0NjI5QzEwMDkyQTU0NSAvKiBD
YWxsYmFja1Rhc2suaCAqLzsgfTsKIAkJQjFFNTQ1OTkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmln
YXRvclVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMUU1NDU4RDEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3IuaCAqLzsgfTsKIAkJQjFFNTQ1OUIxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIxRTU0NThGMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmggKi87IH07CiAJCUIxRTU0NTlEMTM0NjI5QzEwMDkyQTU0NSAvKiBO
YXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTkxMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCAqLzsgfTsKQEAgLTEwMzM0LDYgKzEwMzM1
LDcgQEAKIAkJQjFFNTQ1OEExMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThCMTM0
NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEMxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlh
U3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVN0cmVhbUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1
ODcxMzQ2MjlDMTAwOTJBNTQ1IC8qIENhbGxiYWNrVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsYmFja1Rhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjFFNTQ1OEQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThFMTM0NjI5QzEwMDkyQTU0
NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMUU1NDU4RjEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxs
YmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDA3Niw2
ICsxNDA3OCw3IEBACiAJCQkJQkMxMjRFRTQwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uY3Bw
ICovLAogCQkJCUJDMTI0RUU1MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmggKi8sCiAJCQkJ
QkMxMjRFRTYwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaWRsICovLAorCQkJCUIxRTU0NTg3
MTM0NjI5QzEwMDkyQTU0NSAvKiBDYWxsYmFja1Rhc2suaCAqLywKIAkJCQkxNEQ4MjM4QTBBRjky
REY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCAqLywKIAkJCQkxNEQ4MjM1MDBBRjkyQTc5MDAwNEYw
NTcgLyogQ2hyb21lLmggKi8sCiAJCQkJMTREODI0MDYwQUY5M0FFQjAwMDRGMDU3IC8qIENocm9t
ZUNsaWVudC5oICovLApAQCAtMjI3NDEsNiArMjI3NDQsNyBAQAogCQkJCTk3N0UyRTBGMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QUZGREY3MTM3
MEEwQjgwMEU4OTVDMCAvKiBTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQjFFNTQ1OTMxMzQ2MjlDMTAwOTJBNTQ1IC8qIENhbGxiYWNrVGFz
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhbGxi
YWNrVGFzay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYWxsYmFja1Rhc2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MjZlYjI2OTYxYmQ3MWIyZTE3NWU4MTBkNzJkNDI3MjAyOWY0YzM3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYWxsYmFja1Rhc2suaApAQCAtMCwwICsxLDc5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhbGxiYWNrVGFza19oCisjZGVmaW5lIENhbGxiYWNr
VGFza19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gSGVscGVyIHRlbXBsYXRlIHRvIHNjaGVkdWxlIGNhbGxzIHRvIGNhbGxiYWNr
cyB1c2luZyB0aGVpciBvd24gc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgorLy8gQ2FsbGJhY2tU
eXBlIGlzIGFzc3VtZWQgdG8gaW1wbGVtZW50IFNjaGVkdWxlciBhbmQgdG8gYmUgcmVmZXJlbmNl
LWNvdW50ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlLCB0eXBlbmFtZSBBcmd1
bWVudFR5cGU+CitjbGFzcyBDYWxsYmFja1Rhc2sxIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENhbGxiYWNrVGFz
azE+IGNyZWF0ZShQYXNzUmVmUHRyPENhbGxiYWNrVHlwZT4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8
QXJndW1lbnRUeXBlPiBkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
YWxsYmFja1Rhc2sxKGNhbGxiYWNrLCBkYXRhKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgbV9j
YWxsYmFjay0+aGFuZGxlRXZlbnQobV9kYXRhLmdldCgpKTsKKyAgICB9CisKKyAgICBjbGFzcyBT
Y2hlZHVsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgYm9vbCBzY2hlZHVsZUNhbGxiYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8QXJndW1lbnRUeXBlPiBk
YXRhKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY29udGV4dCkgeworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnBvc3RUYXNrKENhbGxiYWNrVGFzazE8Q2FsbGJhY2tUeXBlLCBBcmd1bWVu
dFR5cGU+OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Q2FsbGJhY2tUeXBlKj4odGhpcyksIGRhdGEpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisKK3ByaXZhdGU6CisgICAgQ2FsbGJh
Y2tUYXNrMShQYXNzUmVmUHRyPENhbGxiYWNrVHlwZT4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8QXJn
dW1lbnRUeXBlPiBkYXRhKQorICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAg
ICwgbV9kYXRhKGRhdGEpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxDYWxsYmFja1R5cGU+
IG1fY2FsbGJhY2s7CisgICAgUmVmUHRyPEFyZ3VtZW50VHlwZT4gbV9kYXRhOworfTsKKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIENhbGxiYWNrVGFz
a19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKaW5kZXggOWU5ZmJmNWYy
ZmUzZmI0ZGQyNDJjYTE1YjE4YzE2MGI4ZmQ1MmM5Yi4uZTdiNTE0YzczNjlmOGJmYjAzMzg0Nzkw
ZTIxMWUxZTNhZGZjMWQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQu
aApAQCAtMjcsMTQgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZWN1
cml0eU9yaWdpbjsKKworZW51bSBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWcgeworICAgIEdlbmVy
YXRlU3RyZWFtUmVxdWVzdEF1ZGlvID0gMSwKKyAgICBHZW5lcmF0ZVN0cmVhbVJlcXVlc3RWaWRl
b0ZhY2luZ1VzZXIgPSAxIDw8IDEsCisgICAgR2VuZXJhdGVTdHJlYW1SZXF1ZXN0VmlkZW9GYWNp
bmdFbnZpcm9ubWVudCA9IDEgPDwgMiwKK307CisKK3R5cGVkZWYgdW5zaWduZWQgR2VuZXJhdGVT
dHJlYW1PcHRpb25GbGFnczsKKwogY2xhc3MgTWVkaWFTdHJlYW1DbGllbnQgewogcHVibGljOgog
ICAgIC8vIE5vdGlmeSB0aGUgZW1iZWRkZXIgY2xpZW50IGFib3V0IHRoZSBwYWdlIGNvbnRyb2xs
ZXIgYmVpbmcgZGVzdHJveWVkLgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVN0cmVhbURlc3Ryb3ll
ZCgpID0gMDsKIAotICAgIC8vIEZJWE1FOiBhZGQgaGVyZSB0aGUgcmVxdWVzdHMgdG8gdGhlIGVt
YmVkZGVyLgorICAgIC8vIEdlbmVyYXRlIGEgbmV3IGxvY2FsIHN0cmVhbS4KKyAgICB2aXJ0dWFs
IHZvaWQgZ2VuZXJhdGVTdHJlYW0oaW50IHJlcXVlc3RJZCwgR2VuZXJhdGVTdHJlYW1PcHRpb25G
bGFncywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pID0gMDsKIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKaW5kZXggNTIxNjFiMGVmY2Q4OWQ4YjhlNzIwMzY0
M2Y4OTQxMWE5N2Q0MTQxMy4uZjk5OTMyM2Y1YTMyYjVhMTVmN2UwOTAwMDcwMzhjY2Y2ZTM3Nzli
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcApA
QCAtMjcsOCArMjcsOCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsNiArNjMsMTEgQEAgTWVkaWFTdHJlYW1D
b250cm9sbGVyOjp+TWVkaWFTdHJlYW1Db250cm9sbGVyKCkKICAgICAgICAgbV9jbGllbnQtPm1l
ZGlhU3RyZWFtRGVzdHJveWVkKCk7CiB9CiAKK2Jvb2wgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpp
c0NsaWVudEF2YWlsYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50OworfQorCiB2
b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcihNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKQogewogICAgIEFTU0VSVChm
cmFtZUNvbnRyb2xsZXIpOwpAQCAtNzUsMTQgKzgwLDYwIEBAIHZvaWQgTWVkaWFTdHJlYW1Db250
cm9sbGVyOjp1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyCiAKICAgICBmb3IgKFZlY3RvcjxpbnQ+OjppdGVyYXRvciBpdCA9IGZyYW1lUmVxdWVzdHMu
YmVnaW4oKTsgaXQgIT0gZnJhbWVSZXF1ZXN0cy5lbmQoKTsgKytpdCkKICAgICAgICAgbV9yZXF1
ZXN0cy5yZW1vdmUoKml0KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGZyYW1lU3RyZWFtczsKKyAg
ICBmb3IgKFN0cmVhbU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N0cmVhbXMuYmVnaW4oKTsgaXQgIT0g
bV9zdHJlYW1zLmVuZCgpOyArK2l0KQorICAgICAgICBpZiAoaXQtPnNlY29uZCA9PSBmcmFtZUNv
bnRyb2xsZXIpCisgICAgICAgICAgICBmcmFtZVN0cmVhbXMuYXBwZW5kKGl0LT5maXJzdCk7CisK
KyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IGZyYW1lU3RyZWFtcy5iZWdp
bigpOyBpdCAhPSBmcmFtZVN0cmVhbXMuZW5kKCk7ICsraXQpCisgICAgICAgIG1fc3RyZWFtcy5y
ZW1vdmUoKml0KTsKIH0KIAogaW50IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJSZXF1
ZXN0KGludCBsb2NhbElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9s
bGVyKQogeworICAgIEFTU0VSVChsb2NhbElkID4gMCk7CisgICAgQVNTRVJUKGZyYW1lQ29udHJv
bGxlcik7CiAgICAgbV9yZXF1ZXN0cy5hZGQobV9uZXh0R2xvYmFsUmVxdWVzdElkLCBSZXF1ZXN0
KGxvY2FsSWQsIGZyYW1lQ29udHJvbGxlcikpOwogICAgIHJldHVybiBtX25leHRHbG9iYWxSZXF1
ZXN0SWQrKzsKIH0KIAordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyU3RyZWFt
KGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBm
cmFtZUNvbnRyb2xsZXIpCit7CisgICAgQVNTRVJUKGZyYW1lQ29udHJvbGxlcik7CisgICAgQVNT
RVJUKCFtX3N0cmVhbXMuY29udGFpbnMoc3RyZWFtTGFiZWwpKTsKKyAgICBtX3N0cmVhbXMuYWRk
KHN0cmVhbUxhYmVsLCBmcmFtZUNvbnRyb2xsZXIpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6Z2VuZXJhdGVTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1l
Q29udHJvbGxlciwgaW50IGxvY2FsSWQsIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3MgZmxhZ3Ms
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQoreworICAgIEFTU0VS
VChtX2NsaWVudCk7CisgICAgaW50IGNvbnRyb2xsZXJSZXF1ZXN0SWQgPSByZWdpc3RlclJlcXVl
c3QobG9jYWxJZCwgZnJhbWVDb250cm9sbGVyKTsKKyAgICBtX2NsaWVudC0+Z2VuZXJhdGVTdHJl
YW0oY29udHJvbGxlclJlcXVlc3RJZCwgZmxhZ3MsIHNlY3VyaXR5T3JpZ2luKTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRlZChpbnQgY29udHJvbGxlclJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICAvLyBEb24ndCBhc3Nl
cnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQgd2hp
bGUgdGhlIHJlcXVlc3QgcmVwbHkgd2FzIGNvbWluZyBiYWNrLgorICAgIGlmIChtX3JlcXVlc3Rz
LmNvbnRhaW5zKGNvbnRyb2xsZXJSZXF1ZXN0SWQpKSB7CisgICAgICAgIGNvbnN0IFJlcXVlc3Qm
IHJlcXVlc3QgPSBtX3JlcXVlc3RzLmdldChjb250cm9sbGVyUmVxdWVzdElkKTsKKyAgICAgICAg
cmVnaXN0ZXJTdHJlYW0oc3RyZWFtTGFiZWwsIHJlcXVlc3QuZnJhbWVDb250cm9sbGVyKCkpOwor
ICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjb250cm9sbGVyUmVxdWVzdElkKTsKKyAgICAgICAg
QVNTRVJUKHJlcXVlc3QuZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICByZXF1ZXN0LmZyYW1l
Q29udHJvbGxlcigpLT5zdHJlYW1HZW5lcmF0ZWQocmVxdWVzdC5sb2NhbElkKCksIHN0cmVhbUxh
YmVsKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5l
cmF0aW9uRmFpbGVkKGludCBjb250cm9sbGVyUmVxdWVzdElkLCBOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvcjo6RXJyb3JDb2RlIGNvZGUpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBm
cmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkIHdoaWxlIHRoZSByZXF1ZXN0
IHJlcGx5IHdhcyBjb21pbmcgYmFjay4KKyAgICBpZiAobV9yZXF1ZXN0cy5jb250YWlucyhjb250
cm9sbGVyUmVxdWVzdElkKSkgeworICAgICAgICBjb25zdCBSZXF1ZXN0JiByZXF1ZXN0ID0gbV9y
ZXF1ZXN0cy5nZXQoY29udHJvbGxlclJlcXVlc3RJZCk7CisgICAgICAgIG1fcmVxdWVzdHMucmVt
b3ZlKGNvbnRyb2xsZXJSZXF1ZXN0SWQpOworICAgICAgICByZXF1ZXN0LmZyYW1lQ29udHJvbGxl
cigpLT5zdHJlYW1HZW5lcmF0aW9uRmFpbGVkKHJlcXVlc3QubG9jYWxJZCgpLCBjb2RlKTsKKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaApp
bmRleCBkNzQ5YTU4NmRlMTUzMDI2MzNhMGY0YjIyZDc4YWUzYWJjNmJjNjQ3Li43YjI5MzhhMjll
NjAwMTYwYmNkNWQwOTk1MGY0OWRlMTIxNzliN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1Db250cm9sbGVyLmgKQEAgLTI3LDE0ICsyNywxOCBAQAogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2xpZW50LmgiCisjaW5jbHVk
ZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1lZGlhU3RyZWFtQ2xpZW50OwogY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgTWVkaWFTdHJlYW1Db250cm9sbGVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVN0cmVhbUNvbnRyb2xsZXIpOwpAQCAt
NDIsMTUgKzQ2LDI0IEBAIHB1YmxpYzoKICAgICBNZWRpYVN0cmVhbUNvbnRyb2xsZXIoTWVkaWFT
dHJlYW1DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNvbnRyb2xsZXIoKTsKIAor
ICAgIGJvb2wgaXNDbGllbnRBdmFpbGFibGUoKSBjb25zdDsKICAgICB2b2lkIHVucmVnaXN0ZXJG
cmFtZUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKIAorICAgIHZvaWQg
Z2VuZXJhdGVTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgcmVxdWVzdElk
LCBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7
CisKKyAgICB2b2lkIHN0cmVhbUdlbmVyYXRlZChpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIHN0cmVhbUdlbmVyYXRpb25GYWlsZWQoaW50IHJlcXVl
c3RJZCwgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OkVycm9yQ29kZSk7CisKIHByaXZhdGU6CiAg
ICAgaW50IHJlZ2lzdGVyUmVxdWVzdChpbnQgbG9jYWxSZXF1ZXN0SWQsIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKik7CisgICAgdm9pZCByZWdpc3RlclN0cmVhbShjb25zdCBTdHJpbmcmIHN0
cmVhbUxhYmVsLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciopOwogCiAgICAgY2xhc3MgUmVx
dWVzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZXF1ZXN0PiBSZXF1ZXN0TWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKj4gU3Ry
ZWFtTWFwOwogCiAgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworICAgIFN0cmVhbU1hcCBtX3N0
cmVhbXM7CiAKICAgICBNZWRpYVN0cmVhbUNsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fbmV4
dEdsb2JhbFJlcXVlc3RJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlci5jcHAKaW5kZXggMDYxNzU2MTc4Nzk3OTE2YzllZGUxOWExNTFkMjVj
NjU3MzA3Yjc2MS4uYmRhMjdjMDBmNTAxNDA3ZGI2ODM4NmU2NGZlM2YyNzNkNzRmMTFiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5j
cHAKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXF1ZXN0
PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVxdWVzdCk7CiBwdWJsaWM6CiAgICAgUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAg
ICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7
IH0KQEAgLTU4LDYgKzU5LDM3IEBAIHByaXZhdGU6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogfTsKIAorY2xhc3MgTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6OkdlbmVyYXRlU3RyZWFtUmVxdWVzdCA6IHB1YmxpYyBSZXF1ZXN0IHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZW5lcmF0ZVN0cmVhbVJlcXVlc3QpOworcHVibGljOgor
ICAgIEdlbmVyYXRlU3RyZWFtUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPE5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgICAgIDogUmVxdWVzdChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQorICAgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAg
ICAgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykgeyB9CisKKyAgICB2aXJ0dWFs
IH5HZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0dlbmVy
YXRlU3RyZWFtUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBhYm9ydCgpCisgICAgeworICAgICAgICBpZiAobV9lcnJvckNhbGxiYWNrKSB7CisgICAg
ICAgICAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+IGVycm9yID0gYWRvcHRSZWYo
bmV3IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yKE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpQRVJN
SVNTSU9OX0RFTklFRCkpOworICAgICAgICAgICAgLy8gVGhlIGNhbGxiYWNrIGl0c2VsZiBpcyBt
YWRlIHdpdGggdGhlIEpTIGNhbGxiYWNrJ3MgY29udGV4dCwgbm90IHdpdGggdGhlIGZyYW1lJ3Mg
Y29udGV4dC4KKyAgICAgICAgICAgIG1fZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2soKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NDYWxsYmFjazsgfQorICAgIFBhc3NSZWZQ
dHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaygpIGNvbnN0
IHsgcmV0dXJuIG1fZXJyb3JDYWxsYmFjazsgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxOYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOworICAgIFJl
ZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7Cit9
OworCiB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0TWFwOjphYm9ydChp
bnQgcmVxdWVzdElkKQogewogICAgIGdldChyZXF1ZXN0SWQpLT5hYm9ydCgpOwpAQCAtNzIsMTAg
KzEwNCwzMCBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0TWFwOjph
Ym9ydEFsbCgpCiAgICAgfQogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OkNsaWVudE1hcEJhc2U8VD46OnVucmVnaXN0ZXJBbGwoKQor
eworICAgIHdoaWxlICghdGhpcy0+aXNFbXB0eSgpKSB7CisgICAgICAgIFQga2V5ID0gdGhpcy0+
YmVnaW4oKS0+Zmlyc3Q7CisgICAgICAgIC8vIHVucmVnaXN0ZXIgc2hvdWxkIHJlbW92ZSB0aGUg
ZWxlbWVudCBmcm9tIHRoZSBtYXAuCisgICAgICAgIHRoaXMtPmJlZ2luKCktPnNlY29uZC0+dW5y
ZWdpc3RlcigpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGtleSwgIXRoaXMtPmNvbnRhaW5zKGtl
eSkpOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjpDbGllbnRNYXBCYXNlPFQ+OjpkZXRhY2hFbWJlZGRlcigpCit7Cisg
ICAgZm9yICh0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBpdCA9IHRoaXMtPmJlZ2luKCk7IGl0
ICE9IHRoaXMtPmVuZCgpOyArK2l0KQorICAgICAgICBpdC0+c2Vjb25kLT5kZXRhY2hFbWJlZGRl
cigpOworfQorCiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIoRnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1faXNJ
bkRldGFjaGVkU3RhdGUoZmFsc2UpCiB7CisgICAgaWYgKCFpc0NsaWVudEF2YWlsYWJsZSgpKQor
ICAgICAgICBlbnRlckRldGFjaGVkU3RhdGUoKTsKIH0KIAogTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6On5NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpCkBAIC05NCw3ICsxNDYsMTMgQEAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb24KIAogTWVkaWFTdHJlYW1Db250cm9sbGVyKiBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFnZUNvbnRyb2xsZXIoKSBjb25zdAogewotICAgIHJldHVy
biAhbV9pc0luRGV0YWNoZWRTdGF0ZSAmJiBtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSA/IG1f
ZnJhbWUtPnBhZ2UoKS0+bWVkaWFTdHJlYW1Db250cm9sbGVyKCkgOiAwOworICAgIHJldHVybiBt
X2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+bWVkaWFTdHJlYW1D
b250cm9sbGVyKCkgOiAwOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjp1
bnJlZ2lzdGVyKFN0cmVhbUNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVChtX3N0cmVhbXMu
Y29udGFpbnMoY2xpZW50LT5jbGllbnRJZCgpKSk7CisgICAgbV9zdHJlYW1zLnJlbW92ZShjbGll
bnQtPmNsaWVudElkKCkpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpl
bnRlckRldGFjaGVkU3RhdGUoKQpAQCAtMTA1LDkgKzE2MywxOSBAQCB2b2lkIE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjplbnRlckRldGFjaGVkU3RhdGUoKQogICAgIH0KIAogICAgIG1fcmVx
dWVzdHMuYWJvcnRBbGwoKTsKKyAgICBtX3N0cmVhbXMuZGV0YWNoRW1iZWRkZXIoKTsKICAgICBt
X2lzSW5EZXRhY2hlZFN0YXRlID0gdHJ1ZTsKIH0KIAorYm9vbCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6aXNDbGllbnRBdmFpbGFibGUoKSBjb25zdAoreworICAgIGlmIChtX2lzSW5EZXRh
Y2hlZFN0YXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBNZWRpYVN0cmVhbUNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBwYWdlQ29udHJvbGxlcigpOworICAgIHJldHVybiBjb250cm9s
bGVyICYmIGNvbnRyb2xsZXItPmlzQ2xpZW50QXZhaWxhYmxlKCk7Cit9CisKIC8vIENhbGxlZCBh
bHNvIHdoZW4gdGhlIGZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhlIHBhZ2UsIGluIHdoaWNoIGNh
c2UgdGhlIHBhZ2UgY29udHJvbGxlciB3aWxsIHJlbWFpbiBhbGl2ZS4KIHZvaWQgTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RQYWdlKCkKIHsKQEAgLTEyMyw2ICsxOTEsNyBA
QCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0RnJhbWUoKQogICAg
IGRpc2Nvbm5lY3RQYWdlKCk7CiAKICAgICBBU1NFUlQobV9yZXF1ZXN0cy5pc0VtcHR5KCkpOwor
ICAgIG1fc3RyZWFtcy51bnJlZ2lzdGVyQWxsKCk7CiAKICAgICBtX2ZyYW1lID0gMDsKIH0KQEAg
LTEzNCw2ICsyMDMsOTUgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6dHJhbnNm
ZXJUb05ld1BhZ2UoUGFnZSopCiAgICAgZGlzY29ubmVjdFBhZ2UoKTsKIH0KIAorR2VuZXJhdGVT
dHJlYW1PcHRpb25GbGFncyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFyc2VHZW5lcmF0
ZVN0cmVhbU9wdGlvbnMoY29uc3QgU3RyaW5nJiBvcHRpb25zKQoreworICAgIEdlbmVyYXRlU3Ry
ZWFtT3B0aW9uRmxhZ3MgZmxhZ3MgPSAwOworICAgIFZlY3RvcjxTdHJpbmc+IG9wdGlvbkxpc3Q7
CisgICAgb3B0aW9ucy5zcGxpdCgnLCcsIG9wdGlvbkxpc3QpOworCisgICAgZm9yIChWZWN0b3I8
U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Igb3B0aW9uID0gb3B0aW9uTGlzdC5iZWdpbigpOyBvcHRp
b24gIT0gb3B0aW9uTGlzdC5lbmQoKTsgKytvcHRpb24pIHsKKyAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gc3Vib3B0aW9uTGlzdDsKKyAgICAgICAgb3B0aW9uLT5zcGxpdCgnICcsIHN1Ym9wdGlvbkxp
c3QpOworCisgICAgICAgIGlmIChzdWJvcHRpb25MaXN0LmZpcnN0KCkgPT0gImF1ZGlvIikKKyAg
ICAgICAgICAgIGZsYWdzIHw9IEdlbmVyYXRlU3RyZWFtUmVxdWVzdEF1ZGlvOworICAgICAgICBl
bHNlIGlmIChzdWJvcHRpb25MaXN0LmZpcnN0KCkgPT0gInZpZGVvIikgeworICAgICAgICAgICAg
Ym9vbCB2aWRlb1N1Ym9wdGlvbnMgPSBmYWxzZTsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBzdWJvcHRpb24gPSBzdWJvcHRpb25MaXN0LmJlZ2luKCk7CisgICAg
ICAgICAgICBmb3IgKCsrc3Vib3B0aW9uOyBzdWJvcHRpb24gIT0gc3Vib3B0aW9uTGlzdC5lbmQo
KTsgKytzdWJvcHRpb24pCisgICAgICAgICAgICAgICAgaWYgKCpzdWJvcHRpb24gPT0gInVzZXIi
KSB7CisgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEdlbmVyYXRlU3RyZWFtUmVxdWVzdFZp
ZGVvRmFjaW5nVXNlcjsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9TdWJvcHRpb25zID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCpzdWJvcHRpb24gPT0gImVudmlyb25tZW50
IikgeworICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBHZW5lcmF0ZVN0cmVhbVJlcXVlc3RW
aWRlb0ZhY2luZ0Vudmlyb25tZW50OworICAgICAgICAgICAgICAgICAgICB2aWRlb1N1Ym9wdGlv
bnMgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQXNrIGZvciBh
bGwga2luZCBvZiBjYW1lcmFzIGlmIG5vIHN1Ym9wdGlvbiB3YXMgc3BlY2lmaWVkLgorICAgICAg
ICAgICAgaWYgKCF2aWRlb1N1Ym9wdGlvbnMpCisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gR2Vu
ZXJhdGVTdHJlYW1SZXF1ZXN0VmlkZW9GYWNpbmdVc2VyIHwgR2VuZXJhdGVTdHJlYW1SZXF1ZXN0
VmlkZW9GYWNpbmdFbnZpcm9ubWVudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBm
bGFnczsKK30KKworLy8gSW1wbGVtZW50cyB0aGUgZ2V0VXNlck1lZGlhIG1ldGhvZCBmcm9tIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2RvbS1uYXZp
Z2F0b3ItZ2V0dXNlcm1lZGlhLgordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Z2Vu
ZXJhdGVTdHJlYW0oY29uc3QgU3RyaW5nJiBvcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFT
dWNjZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAg
ICBpZiAoIXN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgR2VuZXJhdGVT
dHJlYW1PcHRpb25GbGFncyBmbGFncyA9IHBhcnNlR2VuZXJhdGVTdHJlYW1PcHRpb25zKG9wdGlv
bnMpOworICAgIGlmICghZmxhZ3MpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCByZXF1ZXN0SWQgPSBtX3JlcXVlc3Rz
LmdldE5leHRJZCgpOworICAgIG1fcmVxdWVzdHMuYWRkKHJlcXVlc3RJZCwgYWRvcHRSZWYobmV3
IEdlbmVyYXRlU3RyZWFtUmVxdWVzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykpKTsKKworICAgIGlmICghaXNDbGllbnRBdmFpbGFibGUo
KSkgeworICAgICAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdG8gY2FsbCB0aGUgZXJyb3IgY2FsbGJh
Y2sgaWYgcHJvdmlkZWQuCisgICAgICAgIG1fcmVxdWVzdHMuYWJvcnQocmVxdWVzdElkKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBhZ2VDb250cm9sbGVyKCktPmdlbmVyYXRlU3Ry
ZWFtKHRoaXMsIHJlcXVlc3RJZCwgZmxhZ3MsIHNlY3VyaXR5T3JpZ2luKCkpOworfQorCit2b2lk
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhl
IHJlcXVlc3QgY2FuIGhhdmUgYmVlbiBhYm9ydGVkIGFzIGEgcmVzdWx0IG9mIGVtYmVkZGVyIGRl
dGFjaG1lbnQuCisgICAgaWYgKG1fcmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElkKSkgeworICAg
ICAgICBBU1NFUlQobV9yZXF1ZXN0cy5nZXQocmVxdWVzdElkKS0+aXNHZW5lcmF0ZVN0cmVhbVJl
cXVlc3QoKSk7CisgICAgICAgIEFTU0VSVCghbGFiZWwuaXNOdWxsKCkpOworCisgICAgICAgIC8v
IEZJWE1FOiBjcmVhdGUgYSBHZW5lcmF0ZWRTdHJlYW0gb2JqZWN0IGFuZCBpbnZva2UgdGhlIGNh
bGxiYWNrIHdoZW4gdGhlIGNsYXNzIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgbV9yZXF1ZXN0cy5y
ZW1vdmUocmVxdWVzdElkKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OnN0cmVhbUdlbmVyYXRpb25GYWlsZWQoaW50IHJlcXVlc3RJZCwgTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3I6OkVycm9yQ29kZSBjb2RlKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5j
ZSB0aGUgcmVxdWVzdCBjYW4gaGF2ZSBiZWVuIGFib3J0ZWQgYXMgYSByZXN1bHQgb2YgZW1iZWRk
ZXIgZGV0YWNobWVudC4KKyAgICBpZiAobV9yZXF1ZXN0cy5jb250YWlucyhyZXF1ZXN0SWQpKSB7
CisgICAgICAgIEFTU0VSVChtX3JlcXVlc3RzLmdldChyZXF1ZXN0SWQpLT5pc0dlbmVyYXRlU3Ry
ZWFtUmVxdWVzdCgpKTsKKworICAgICAgICBSZWZQdHI8R2VuZXJhdGVTdHJlYW1SZXF1ZXN0PiBz
dHJlYW1SZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8R2VuZXJhdGVTdHJlYW1SZXF1ZXN0Kj4obV9yZXF1
ZXN0cy5nZXQocmVxdWVzdElkKS5nZXQoKSk7CisgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKHJl
cXVlc3RJZCk7CisKKyAgICAgICAgaWYgKHN0cmVhbVJlcXVlc3QtPmVycm9yQ2FsbGJhY2soKSkg
eworICAgICAgICAgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPiBlcnJvciA9IGFk
b3B0UmVmKG5ldyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcihjb2RlKSk7CisgICAgICAgICAgICBz
dHJlYW1SZXF1ZXN0LT5lcnJvckNhbGxiYWNrKCktPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuaAppbmRleCBlOTVhNDRhYTdmMjhkNzJkMWMwOTZmNzZmN2Zi
M2NkNDY3NTBmMWQ3Li40OTQ2MWE5N2MzNWU2ODcxMjM2YTFiNjZmZjcyYTZhMmI1OGRlNjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
CkBAIC0yNywxNCArMjcsMjAgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DbGllbnQuaCIKKyNp
bmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRnJhbWU7CiBjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXI7CitjbGFzcyBO
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlh
U3VjY2Vzc0NhbGxiYWNrOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTQyLDMxICs0OCwxMzggQEAgY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOwogcHVibGljOgor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJZFR5cGU+CisgICAgY2xhc3MgQ2xpZW50QmFzZSB7Cisg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsaWVudEJhc2UpOworICAgIHB1YmxpYzoKKyAg
ICAgICAgQ2xpZW50QmFzZSgpIDogbV9mcmFtZUNvbnRyb2xsZXIoMCksIG1fY2xpZW50SWQoMCkg
eyB9CisKKyAgICAgICAgQ2xpZW50QmFzZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJh
bWVDb250cm9sbGVyLCBjb25zdCBJZFR5cGUmIGlkKQorICAgICAgICAgICAgOiBtX2ZyYW1lQ29u
dHJvbGxlcihmcmFtZUNvbnRyb2xsZXIpCisgICAgICAgICAgICAsIG1fY2xpZW50SWQoaWQpIHsg
fQorCisgICAgICAgIHZpcnR1YWwgfkNsaWVudEJhc2UoKSB7IH0KKworICAgICAgICBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciogbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lQ29udHJvbGxlcjsgfQorICAgICAgICBjb25zdCBJZFR5cGUmIGNsaWVu
dElkKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZDsgfQorCisgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0dlbmVyYXRlZFN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAgICAg
Ly8gQ2FsbGVkIHdoZW4gdGhlIGZyYW1lIGNvbnRyb2xsZXIgaXMgYmVpbmcgZGlzY29ubmVjdGVk
IHRvIHRoZSBNZWRpYVN0cmVhbUNsaWVudCBlbWJlZGRlci4KKyAgICAgICAgLy8gQ2xpZW50cyBz
aG91bGQgb3ZlcnJpZGUgdGhpcyB0byBzZW5kIGFueSByZXF1aXJlZCBzaHV0ZG93biBtZXNzYWdl
cy4KKyAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaEVtYmVkZGVyKCkgeyB9CisKKyAgICBwcm90
ZWN0ZWQ6CisgICAgICAgIC8vIFVzZWQgZm9yIG9iamVjdHMgdGhhdCBhcmUgb3B0aW9uYWxseSBh
c3NvY2lhdGVkIHRvIHRoZSBmcmFtZSBjb250cm9sbGVyIGFmdGVyIGNvbnN0cnVjdGlvbiwgbGlr
ZSB0aGUgdHJhY2sgbGlzdHMuCisgICAgICAgIHZvaWQgYXNzb2NpYXRlRnJhbWVDb250cm9sbGVy
KE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGNvbnN0IElkVHlw
ZSYgaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9mcmFtZUNvbnRyb2xsZXIg
JiYgIW1fY2xpZW50SWQpOworICAgICAgICAgICAgbV9mcmFtZUNvbnRyb2xsZXIgPSBmcmFtZUNv
bnRyb2xsZXI7CisgICAgICAgICAgICBtX2NsaWVudElkID0gaWQ7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBBdm9pZHMgcmVwZWF0aW5nIHRoZSBzYW1lIGNvZGUgaW4gdGhlIHVucmVnaXN0ZXIg
bWV0aG9kIG9mIGVhY2ggZGVyaXZlZCBjbGFzcy4KKyAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJl
ZCBzaW5jZSB0aGUgY29udHJvbGxlcidzIHVucmVnaXN0ZXIgbWV0aG9kcyBtYWtlIHVzZSBvZiB0
aGUgaXNPYmplY3QgdmlydHVhbHMsCisgICAgICAgIC8vIGFuZCB0aGUgdW5yZWdpc3RyYXRpb24g
Y2FuIGJlIHRyaWdnZXJlZCBlaXRoZXIgYnkgdGhlIGRlc3RydWN0b3Igb2YgdGhlIGNsaWVudCBv
ciBieSB0aGUgZGlzY29ubmVjdGlvbiBvZiB0aGUgZnJhbWUuCisgICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDbGllbnRUeXBlPgorICAgICAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoQ2xpZW50
VHlwZSogY2xpZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZnJhbWVDb250cm9s
bGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9mcmFtZUNvbnRy
b2xsZXItPnVucmVnaXN0ZXIoc3RhdGljX2Nhc3Q8Q2xpZW50VHlwZSo+KGNsaWVudCkpOworICAg
ICAgICAgICAgbV9mcmFtZUNvbnRyb2xsZXIgPSAwOworICAgICAgICB9CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXIoKSA9IDA7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjsKKworICAgICAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ciogbV9mcmFtZUNvbnRyb2xsZXI7CisgICAgICAgIElkVHlwZSBtX2NsaWVudElkOworICAgIH07
CisKKyAgICBjbGFzcyBTdHJlYW1DbGllbnQgOiBwdWJsaWMgQ2xpZW50QmFzZTxTdHJpbmc+IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFN0cmVhbUNsaWVudChNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlciogZnJhbWVDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsKSA6IENsaWVudEJhc2U8
U3RyaW5nPihmcmFtZUNvbnRyb2xsZXIsIGxhYmVsKSB7IH0KKyAgICAgICAgdmlydHVhbCB+U3Ry
ZWFtQ2xpZW50KCkgeyB1bnJlZ2lzdGVyKCk7IH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
dHJlYW0oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAgICAgLy8gU3RyZWFtIGhhcyBl
bmRlZCBmb3Igc29tZSBleHRlcm5hbCByZWFzb24uCisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1FbmRlZCgpID0gMDsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyKCkgeyB1bnJlZ2lzdGVyQ2xpZW50KHRoaXMpOyB9CisgICAgfTsKKwogICAgIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKik7CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIoKTsKIAogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigp
IGNvbnN0OwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKIAorICAgIGJvb2wgaXNDbGllbnRBdmFpbGFibGUoKSBjb25zdDsKICAgICB2
b2lkIGRpc2Nvbm5lY3RQYWdlKCk7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKICAgICB2
b2lkIHRyYW5zZmVyVG9OZXdQYWdlKFBhZ2UqKTsKIAorICAgIC8vIFBhcnNlIHRoZSBvcHRpb25z
IHN0cmluZyBwcm92aWRlZCB0byB0aGUgZ2VuZXJhdGVTdHJlYW0gbWV0aG9kLgorICAgIHN0YXRp
YyBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdzIHBhcnNlR2VuZXJhdGVTdHJlYW1PcHRpb25zKGNv
bnN0IFN0cmluZyYpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGdlbmVyYXRlZCBzdHJlYW0gYXN5
bmNocm9ub3VzbHkgd2l0aCB0aGUgcHJvdmlkZWQgb3B0aW9ucy4KKyAgICB2b2lkIGdlbmVyYXRl
U3RyZWFtKGNvbnN0IFN0cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVk
aWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2Fs
bGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAvLyAtLS0gQ2FsbHMgY29taW5nIGJhY2sg
ZnJvbSB0aGUgY29udHJvbGxlci4gLS0tIC8vCisKKyAgICAvLyBSZXBvcnQgdGhlIGdlbmVyYXRp
b24gb2YgYSBuZXcgbG9jYWwgc3RyZWFtLgorICAgIHZvaWQgc3RyZWFtR2VuZXJhdGVkKGludCBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOworCisgICAgLy8gUmVwb3J0IGEg
ZmFpbHVyZSBpbiB0aGUgZ2VuZXJhdGlvbiBvZiBhIG5ldyBzdHJlYW0uCisgICAgdm9pZCBzdHJl
YW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
OjpFcnJvckNvZGUpOworCiBwcml2YXRlOgogICAgIGNsYXNzIFJlcXVlc3Q7CisgICAgY2xhc3Mg
R2VuZXJhdGVTdHJlYW1SZXF1ZXN0OworCisgICAgY2xhc3MgSWRHZW5lcmF0b3IgeworICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJZEdlbmVyYXRvcik7CisgICAgcHVibGljOgorICAgICAg
ICBJZEdlbmVyYXRvcigpIDogbV9pZCgwKSB7IH0KKyAgICAgICAgaW50IGdldE5leHRJZCgpIHsg
cmV0dXJuICsrbV9pZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1faWQ7CisgICAg
fTsKIAotICAgIGNsYXNzIFJlcXVlc3RNYXAgOiBwdWJsaWMgSGFzaE1hcDxpbnQsIFJlZlB0cjxS
ZXF1ZXN0PiA+IHsKKyAgICBjbGFzcyBSZXF1ZXN0TWFwIDogcHVibGljIElkR2VuZXJhdG9yLCBw
dWJsaWMgSGFzaE1hcDxpbnQsIFJlZlB0cjxSZXF1ZXN0PiA+IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgYWJvcnQoaW50IHJlcXVlc3RJZCk7CiAgICAgICAgIHZvaWQgYWJvcnRBbGwoKTsK
ICAgICB9OwogCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElkVHlwZT4KKyAgICBjbGFzcyBDbGll
bnRNYXBCYXNlIDogcHVibGljIEhhc2hNYXA8SWRUeXBlLCBDbGllbnRCYXNlPElkVHlwZT4qID4g
eworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGllbnRNYXBCYXNlKTsKKyAgICBwdWJs
aWM6CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxJZFR5cGUsIENsaWVudEJhc2U8SWRUeXBlPiog
PiBNYXBUeXBlOworCisgICAgICAgIENsaWVudE1hcEJhc2UoKSB7IH0KKyAgICAgICAgdm9pZCB1
bnJlZ2lzdGVyQWxsKCk7CisgICAgICAgIHZvaWQgZGV0YWNoRW1iZWRkZXIoKTsKKyAgICB9Owor
CisgICAgLy8gU3RyZWFtcyBhcmUgYSBzcGVjaWFsIGNsYXNzIG9mIGNsaWVudHMgc2luY2UgdGhl
eSBhcmUgaWRlbnRpZmllZCBieSBhIGdsb2JhbCBsYWJlbCBzdHJpbmcgaW5zdGVhZCBvZiBhbiBp
ZC4KKyAgICB0eXBlZGVmIENsaWVudE1hcEJhc2U8U3RyaW5nPiBTdHJlYW1NYXA7CisKICAgICAv
LyBEZXRhY2hlZCBmcm9tIGEgcGFnZSwgYW5kIGhlbmNlIGZyb20gYSBlbWJlZGRlciBjbGllbnQu
CiAgICAgdm9pZCBlbnRlckRldGFjaGVkU3RhdGUoKTsKIAorICAgIHZvaWQgdW5yZWdpc3RlcihT
dHJlYW1DbGllbnQqKTsKICAgICBNZWRpYVN0cmVhbUNvbnRyb2xsZXIqIHBhZ2VDb250cm9sbGVy
KCkgY29uc3Q7CiAKICAgICBSZXF1ZXN0TWFwIG1fcmVxdWVzdHM7CisgICAgU3RyZWFtTWFwIG1f
c3RyZWFtczsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIGJvb2wgbV9pc0luRGV0YWNoZWRT
dGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCA2ZWEzNzdlYWIwNzUwNGJkY2I0
NGM3ZDFmM2IyMmFkMWNiODgzMGU2Li5hOTJiNzM5YTU2YjJiMzc0OTZkN2Q4MTBlZDBlNzUxNjdj
ZmIxZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTGFu
Z3VhZ2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJOYXZpZ2F0
b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yNDUs
OSArMjQ2LDEwIEBAIHZvaWQgTmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25z
dCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi12b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKGNvbnN0
IFN0cmluZyYsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwg
UGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29k
ZSYpCit2b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0cmluZyYgb3B0
aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IGEgY2FsbCB0byB0aGUgbWVkaWEgc3RyZWFtIGNvbnRleHQgd2hlbiBhdmFpbGFibGUuCisg
ICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkK
KyAgICAgICAgbV9mcmFtZS0+bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+Z2VuZXJhdGVT
dHJlYW0ob3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBlYyk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2suaAppbmRleCAxOWZiOWY2OTk0MjEzZWViNDlkMWY3Yjk1MzdjYjA5NzUx
OTczNDU1Li4xNTM5NzA5MTdhN2RiZmQ0NDAwMGRhNTY1NTA4MDA4NjEyOTEwYmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2suaApAQCAtMjcsMTMgKzI3LDE0IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisj
aW5jbHVkZSAiQ2FsbGJhY2tUYXNrLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOwotCi1jbGFzcyBOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjaz4geworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBDYWxsYmFja1Rhc2sx
PE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2ssIE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Pjo6U2NoZWR1bGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KE5hdmlnYXRv
clVzZXJNZWRpYUVycm9yKikgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93649</attachid>
            <date>2011-05-16 08:58:14 -0700</date>
            <delta_ts>2011-05-16 10:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60177-20110516165812.patch</filename>
            <type>text/plain</type>
            <size>37941</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY1NjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMmVjMDNkYmMzNTZjODYwYzQ5N2Mw
MWNmNDI0NTQ2ZDgyZjg3NDBmLi4xM2Y1N2M3NzYwNzhiMzQ0NDk5YzBmNGJiZWE2NGVhNDUwNjll
OWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDUtMTYgIExlYW5kcm8gR3JhY2lhIEdp
bCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhIFN0cmVhbSBBUEk6IGFkZCBsb2NhbCBzdHJl
YW0gcmVxdWVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MDE3NworCisgICAgICAgIFJlLWVuYWJsZSB0aGUgYXJndW1lbnQtdHlwZXMgdGVzdCBh
cyB0aGUgbmF2aWdhdG9yLmdldFVzZXJNZWRpYSBvcHRpb25zCisgICAgICAgIGFyZSBub3cgYmVp
bmcgcGFyc2VkIGFuZCByYWlzZSB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9ucy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMS0wNS0x
NiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgTm90IHJl
dmlld2VkOiBzaW1wbGlmeSBpbnNwZWN0b3IgZG9tIGFjdGlvbnMgdGVzdC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA3
ZDYwMTE3YTBmMjU1YzAyMjJlMDliOTgxMzg3NmU0NzlmZjEwNjEzLi5hMDVhYjFkYzMyNTQyNTc2
MzQ5MzRhZjY1NDlkYzUwZWRkMzkzMzI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00MDI1LDkgKzQwMjUsNiBAQCBC
VUdXSzU0MTgxIDogZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LWlmcmFtZS1tb3ZlLXRlc3Qu
aHRtbCA9IFRJTUVPVVQKIEJVR1dLNTQxODEgOiBmYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxpdHkt
aWZyYW1lLXByb3BhZ2F0aW9uLXRlc3QuaHRtbCA9IFRJTUVPVVQKIEJVR1dLNTQxODEgOiBmYXN0
L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0Lmh0bWwgPSBUSU1FT1VUCiAK
LS8vIFRvIGJlIHJlLWVuYWJsZWQgYWZ0ZXIgbGFuZGluZyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjAxNzcuCi1CVUdXSzYwMzg3IDogZmFzdC9kb20vTWVkaWFTdHJl
YW0vYXJndW1lbnQtdHlwZXMuaHRtbCA9IEZBSUwKLQogQlVHQ1I4MjI4MSA6IGZhc3QveHBhdGgv
eHBhdGgtaXRlcmF0b3ItcmVzdWx0LXNob3VsZC1tYXJrLWl0cy1ub2Rlc2V0Lmh0bWwgPSBURVhU
CiBCVUdDUjgyMjgxIDogZmFzdC94cGF0aC94cGF0aC1vdGhlci1ub2Rlc2V0LXJlc3VsdC1zaG91
bGQtbWFyay1pdHMtbm9kZXNldC5odG1sID0gVEVYVAogQlVHQ1I4MjI4MSA6IGZhc3QveHBhdGgv
eHBhdGgtc25hcHNob3QtcmVzdWx0LXNob3VsZC1tYXJrLWl0cy1ub2Rlc2V0Lmh0bWwgPSBURVhU
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZDA3OGI1OWQ2MGUyMzJmMmQ4YTQ4NGE4ZWY3MWU1MGFlNWZmZDUyYS4u
OWJiMjRkMjA1NmRhNWM1OTQ2NjQzNzQ1ZmE2MTM2NDdlOTJjMTA1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc3IEBACisyMDExLTA1LTE2ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3Jh
Y2lhQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNZWRpYSBTdHJlYW0gQVBJOiBhZGQgbG9jYWwgc3RyZWFtIHJlcXVlc3RzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAxNzcKKwor
ICAgICAgICBBZGQgdGhlIGNvZGUgYW5kIG1lc3NhZ2VzIGZvciByZXF1ZXN0aW5nIHRoZSBnZW5l
cmF0aW9uIG9mIGxvY2FsIHN0cmVhbXMgYW5kIGdldHRpbmcgdGhlIHJlcGx5IGJhY2suCisKKyAg
ICAgICAgVGVzdHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJIHdpbGwgYmUgcHJvdmlkZWQgYnkg
dGhlIGJ1ZyA1NjU4Ny4KKyAgICAgICAgT25lIHRlc3QgaXMgcmUtZW5hYmxlZCB3aXRoIHRoaXMg
cGF0Y2guCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJndW1lbnQtdHlw
ZXMuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2FsbGJhY2tUYXNrLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2FsbGJhY2tUYXNrMTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxi
YWNrVGFzazE6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrVGFzazE6
OlNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxsYmFj
a1Rhc2sxOjpDYWxsYmFja1Rhc2sxKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjppc0NsaWVudEF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdpc3Rl
clJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdp
c3RlclN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Omdl
bmVyYXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
c3RyZWFtR2VuZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6c3RyZWFtR2VuZXJhdGlvbkZhaWxlZCk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmF0
ZVN0cmVhbVJlcXVlc3Q6OkdlbmVyYXRlU3RyZWFtUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6R2VuZXJhdGVTdHJlYW1SZXF1ZXN0Ojp+R2Vu
ZXJhdGVTdHJlYW1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpHZW5lcmF0ZVN0cmVhbVJlcXVlc3Q6OmlzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmF0
ZVN0cmVhbVJlcXVlc3Q6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjpHZW5lcmF0ZVN0cmVhbVJlcXVlc3Q6OnN1Y2Nlc3NDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6R2VuZXJhdGVTdHJl
YW1SZXF1ZXN0OjplcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5yZWdpc3Rl
ckFsbCk6CisgICAgICAgIChXZWJDb3JlOjo6OmRldGFjaEVtYmVkZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFn
ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OnVucmVnaXN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OmVudGVyRGV0YWNoZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcjo6aXNDbGllbnRBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFyc2VHZW5lcmF0ZVN0cmVhbU9w
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Omdl
bmVyYXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpzdHJlYW1HZW5lcmF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6OnN0cmVhbUdlbmVyYXRpb25GYWlsZWQpOgorICAgICAgICAqIHBhZ2UvTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjpDbGllbnRCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjp+Q2xpZW50QmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50QmFz
ZTo6bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OkNsaWVudEJhc2U6OmNsaWVudElkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjppc1N0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50QmFz
ZTo6aXNHZW5lcmF0ZWRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6OkNsaWVudEJhc2U6OmRldGFjaEVtYmVkZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjphc3NvY2lhdGVGcmFt
ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OkNsaWVudEJhc2U6OnVucmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlN0cmVhbUNsaWVudDo6U3RyZWFtQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpTdHJlYW1DbGllbnQ6
On5TdHJlYW1DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OlN0cmVhbUNsaWVudDo6aXNTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OlN0cmVhbUNsaWVudDo6dW5yZWdpc3Rlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6SWRHZW5lcmF0b3I6OklkR2Vu
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpJ
ZEdlbmVyYXRvcjo6Z2V0TmV4dElkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjpDbGllbnRNYXBCYXNlOjpDbGllbnRNYXBCYXNlKToKKyAgICAgICAgKiBw
YWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OndlYmtpdEdl
dFVzZXJNZWRpYSk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrLmg6CisKIDIwMTEtMDUtMTYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gV2luZG93cyBidWlsZCBmaXguCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA3ZDcyZjE1NWU4ODIwZjI3ODM4MDFiMTA3YjZiNWMzN2Iz
NWMxYjRhLi42MjBkOWYyMmE2MTVjZjFmYjJhOWIyMTNlZTAxM2NiMWYxNzMzNzQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIxMzUsNiArMjEzNSw3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvQmFySW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
QmFySW5mby5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0NhbGxiYWNrVGFzay5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDNiMGJkMmUzNDQzNzU0ZjQxNDhkZTEwZjcyOGZmN2E0ZDlkYmUyMGEuLmY0M2JiMjU3
MWIyOGFiOGM5NzQ1YzE5Y2ZlNDY0YWEzNGRkYzc3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMz
OTEsNiArMzM5MSw3IEBACiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
b250ZW50cy5oJywKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uY3BwJywKICAgICAgICAgICAg
ICdwYWdlL0JhckluZm8uaCcsCisgICAgICAgICAgICAncGFnZS9DYWxsYmFja1Rhc2suaCcsCiAg
ICAgICAgICAgICAncGFnZS9DaHJvbWUuY3BwJywKICAgICAgICAgICAgICdwYWdlL0NvbnNvbGUu
Y3BwJywKICAgICAgICAgICAgICdwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCBhOTMzNjk2NjYyZTQ4NjEwNmNiZTJiZDYyY2IxZDllZDgyZTgzNWNmLi43
ZmVjMDkzYmEyZWQ1M2VlY2M4Y2Q2M2E4ODlhODRlNGE1NzdhYjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtMzEwMiw2ICszMTAyLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9O
PTEpIHsKIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAg
SEVBREVSUyArPSBcCisgICAgICAgIHBhZ2UvQ2FsbGJhY2tUYXNrLmggXAogICAgICAgICBwYWdl
L01lZGlhU3RyZWFtQ2xpZW50LmggXAogICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxl
ci5oIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMzBlNGM4MjJl
ODFlZTkyYmQzMzMyMmU2NzUyNTk5OTJjYTFkM2JjYi4uOTBmZDE3MTY0ODljYzY3MzkzZThkYzYy
NDAxZjU4ZGI1ODdhODJjMSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTI0NDA2LDYgKzI0NDA2LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQ2FsbGJhY2tUYXNrLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQ2hyb21l
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDRhYThlMzc1NjUwNDM4ODE3MDBhYTk1M2I4
YzMzMGI2NmNhOTMwNi4uYjQyM2RkNGMxYWU2ZjhiMzMzODFjOTcxYjRkY2VhYmE5YmUyNTk0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDA5MSw2ICs0MDkxLDcgQEAKIAkJQjFFNTQ1OTYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QTEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQjFFNTQ1OTcxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1l
ZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMUU1NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250
cm9sbGVyLmNwcCAqLzsgfTsKIAkJQjFFNTQ1OTgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3Ry
ZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjFFNTQ1OEMxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5o
ICovOyB9OworCQlCMUU1NDU5MzEzNDYyOUMxMDA5MkE1NDUgLyogQ2FsbGJhY2tUYXNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4NzEzNDYy
OUMxMDA5MkE1NDUgLyogQ2FsbGJhY2tUYXNrLmggKi87IH07CiAJCUIxRTU0NTk5MTM0NjI5QzEw
MDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5h
dmlnYXRvclVzZXJNZWRpYUVycm9yLmggKi87IH07CiAJCUIxRTU0NTlCMTM0NjI5QzEwMDkyQTU0
NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4RjEzNDYyOUMxMDA5MkE1NDUgLyog
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oICovOyB9OwogCQlCMUU1NDU5RDEzNDYy
OUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU5MTEzNDYyOUMx
MDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmggKi87IH07CkBA
IC0xMDM0OCw2ICsxMDM0OSw3IEBACiAJCUIxRTU0NThBMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMUU1NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThDMTM0NjI5QzEw
MDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIxRTU0NTg3MTM0NjI5QzEwMDkyQTU0NSAvKiBDYWxsYmFja1Rhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tUYXNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThEMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUU1NDU4
RTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQwOTYsNiArMTQwOTgsNyBAQAogCQkJCUJDMTI0RUU0MEMyNjQxQ0QwMDlFMjM0
OSAvKiBCYXJJbmZvLmNwcCAqLywKIAkJCQlCQzEyNEVFNTBDMjY0MUNEMDA5RTIzNDkgLyogQmFy
SW5mby5oICovLAogCQkJCUJDMTI0RUU2MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmlkbCAq
LywKKwkJCQlCMUU1NDU4NzEzNDYyOUMxMDA5MkE1NDUgLyogQ2FsbGJhY2tUYXNrLmggKi8sCiAJ
CQkJMTREODIzOEEwQUY5MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgKi8sCiAJCQkJMTREODIz
NTAwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oICovLAogCQkJCTE0RDgyNDA2MEFGOTNBRUIw
MDA0RjA1NyAvKiBDaHJvbWVDbGllbnQuaCAqLywKQEAgLTIyNzczLDYgKzIyNzc2LDcgQEAKIAkJ
CQlGRDE2NjBBNTEzNzg3QzZEMDAxRkZBN0IgLyogRGVub3JtYWxEaXNhYmxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFNTY0NEUxMzdBMzRENjAwN0QyOTM0IC8qIENvbnNvbGVUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNGN0U0OTExMzdDRDdDNzAwMUREQUU3IC8qIEFkanVzdFZpZXdT
aXplT3JOb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxRTU0NTkzMTM0NjI5QzEwMDkyQTU0NSAv
KiBDYWxsYmFja1Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DYWxsYmFja1Rhc2suaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FsbGJhY2tUYXNr
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzI2ZWIyNjk2MWJkNzFiMmUxNzVlODEwZDcyZDQyNzIwMjlmNGMzNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FsbGJhY2tUYXNrLmgKQEAg
LTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYWxsYmFja1Rhc2tfaAorI2Rl
ZmluZSBDYWxsYmFja1Rhc2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEhlbHBlciB0ZW1wbGF0ZSB0byBzY2hlZHVsZSBjYWxs
cyB0byBjYWxsYmFja3MgdXNpbmcgdGhlaXIgb3duIHNjcmlwdCBleGVjdXRpb24gY29udGV4dC4K
Ky8vIENhbGxiYWNrVHlwZSBpcyBhc3N1bWVkIHRvIGltcGxlbWVudCBTY2hlZHVsZXIgYW5kIHRv
IGJlIHJlZmVyZW5jZS1jb3VudGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZSwg
dHlwZW5hbWUgQXJndW1lbnRUeXBlPgorY2xhc3MgQ2FsbGJhY2tUYXNrMSA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxDYWxsYmFja1Rhc2sxPiBjcmVhdGUoUGFzc1JlZlB0cjxDYWxsYmFja1R5cGU+IGNhbGxiYWNr
LCBQYXNzUmVmUHRyPEFyZ3VtZW50VHlwZT4gZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ2FsbGJhY2tUYXNrMShjYWxsYmFjaywgZGF0YSkpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7
CisgICAgICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YS5nZXQoKSk7CisgICAgfQor
CisgICAgY2xhc3MgU2NoZWR1bGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGJvb2wgc2NoZWR1
bGVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPEFy
Z3VtZW50VHlwZT4gZGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNvbnRleHQpIHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhDYWxsYmFja1Rhc2sxPENhbGxiYWNr
VHlwZSwgQXJndW1lbnRUeXBlPjo6Y3JlYXRlKHN0YXRpY19jYXN0PENhbGxiYWNrVHlwZSo+KHRo
aXMpLCBkYXRhKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworCitwcml2YXRl
OgorICAgIENhbGxiYWNrVGFzazEoUGFzc1JlZlB0cjxDYWxsYmFja1R5cGU+IGNhbGxiYWNrLCBQ
YXNzUmVmUHRyPEFyZ3VtZW50VHlwZT4gZGF0YSkKKyAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxi
YWNrKQorICAgICAgICAsIG1fZGF0YShkYXRhKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8
Q2FsbGJhY2tUeXBlPiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxBcmd1bWVudFR5cGU+IG1fZGF0
YTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAv
LyBDYWxsYmFja1Rhc2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCmlu
ZGV4IDllOWZiZjVmMmZlM2ZiNGRkMjQyY2ExNWIxOGMxNjBiOGZkNTJjOWIuLmU3YjUxNGM3MzY5
ZjhiZmIwMzM4NDc5MGUyMTFlMWUzYWRmYzFkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
U3RyZWFtQ2xpZW50LmgKQEAgLTI3LDE0ICsyNywyNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK2VudW0gR2VuZXJhdGVTdHJlYW1PcHRpb25GbGFn
IHsKKyAgICBHZW5lcmF0ZVN0cmVhbVJlcXVlc3RBdWRpbyA9IDEsCisgICAgR2VuZXJhdGVTdHJl
YW1SZXF1ZXN0VmlkZW9GYWNpbmdVc2VyID0gMSA8PCAxLAorICAgIEdlbmVyYXRlU3RyZWFtUmVx
dWVzdFZpZGVvRmFjaW5nRW52aXJvbm1lbnQgPSAxIDw8IDIsCit9OworCit0eXBlZGVmIHVuc2ln
bmVkIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3M7CisKIGNsYXNzIE1lZGlhU3RyZWFtQ2xpZW50
IHsKIHB1YmxpYzoKICAgICAvLyBOb3RpZnkgdGhlIGVtYmVkZGVyIGNsaWVudCBhYm91dCB0aGUg
cGFnZSBjb250cm9sbGVyIGJlaW5nIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFT
dHJlYW1EZXN0cm95ZWQoKSA9IDA7CiAKLSAgICAvLyBGSVhNRTogYWRkIGhlcmUgdGhlIHJlcXVl
c3RzIHRvIHRoZSBlbWJlZGRlci4KKyAgICAvLyBHZW5lcmF0ZSBhIG5ldyBsb2NhbCBzdHJlYW0u
CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlU3RyZWFtKGludCByZXF1ZXN0SWQsIEdlbmVyYXRl
U3RyZWFtT3B0aW9uRmxhZ3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSA9IDA7CiAKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCmluZGV4IDUyMTYxYjBlZmNk
ODlkOGI4ZTcyMDM2NDNmODk0MTFhOTdkNDE0MTMuLmY5OTkzMjNmNWEzMmI1YTE1ZjdlMDkwMDA3
MDM4Y2NmNmUzNzc5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29u
dHJvbGxlci5jcHAKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUNsaWVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDYgKzYzLDExIEBA
IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6fk1lZGlhU3RyZWFtQ29udHJvbGxlcigpCiAgICAgICAg
IG1fY2xpZW50LT5tZWRpYVN0cmVhbURlc3Ryb3llZCgpOwogfQogCitib29sIE1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6aXNDbGllbnRBdmFpbGFibGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2Ns
aWVudDsKK30KKwogdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNv
bnRyb2xsZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlcikKIHsK
ICAgICBBU1NFUlQoZnJhbWVDb250cm9sbGVyKTsKQEAgLTc1LDE0ICs4MCw2MCBAQCB2b2lkIE1l
ZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcihNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcgogCiAgICAgZm9yIChWZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSBm
cmFtZVJlcXVlc3RzLmJlZ2luKCk7IGl0ICE9IGZyYW1lUmVxdWVzdHMuZW5kKCk7ICsraXQpCiAg
ICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKCppdCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBmcmFt
ZVN0cmVhbXM7CisgICAgZm9yIChTdHJlYW1NYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdHJlYW1zLmJl
Z2luKCk7IGl0ICE9IG1fc3RyZWFtcy5lbmQoKTsgKytpdCkKKyAgICAgICAgaWYgKGl0LT5zZWNv
bmQgPT0gZnJhbWVDb250cm9sbGVyKQorICAgICAgICAgICAgZnJhbWVTdHJlYW1zLmFwcGVuZChp
dC0+Zmlyc3QpOworCisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBmcmFt
ZVN0cmVhbXMuYmVnaW4oKTsgaXQgIT0gZnJhbWVTdHJlYW1zLmVuZCgpOyArK2l0KQorICAgICAg
ICBtX3N0cmVhbXMucmVtb3ZlKCppdCk7CiB9CiAKIGludCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OnJlZ2lzdGVyUmVxdWVzdChpbnQgbG9jYWxJZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIq
IGZyYW1lQ29udHJvbGxlcikKIHsKKyAgICBBU1NFUlQobG9jYWxJZCA+IDApOworICAgIEFTU0VS
VChmcmFtZUNvbnRyb2xsZXIpOwogICAgIG1fcmVxdWVzdHMuYWRkKG1fbmV4dEdsb2JhbFJlcXVl
c3RJZCwgUmVxdWVzdChsb2NhbElkLCBmcmFtZUNvbnRyb2xsZXIpKTsKICAgICByZXR1cm4gbV9u
ZXh0R2xvYmFsUmVxdWVzdElkKys7CiB9CiAKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpy
ZWdpc3RlclN0cmVhbShjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKQoreworICAgIEFTU0VSVChmcmFtZUNvbnRyb2xs
ZXIpOworICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVhbUxhYmVsKSk7CisgICAg
bV9zdHJlYW1zLmFkZChzdHJlYW1MYWJlbCwgZnJhbWVDb250cm9sbGVyKTsKK30KKwordm9pZCBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmdlbmVyYXRlU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBsb2NhbElkLCBHZW5lcmF0ZVN0cmVhbU9wdGlv
bkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikK
K3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIGludCBjb250cm9sbGVyUmVxdWVzdElkID0g
cmVnaXN0ZXJSZXF1ZXN0KGxvY2FsSWQsIGZyYW1lQ29udHJvbGxlcik7CisgICAgbV9jbGllbnQt
PmdlbmVyYXRlU3RyZWFtKGNvbnRyb2xsZXJSZXF1ZXN0SWQsIGZsYWdzLCBzZWN1cml0eU9yaWdp
bik7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQoaW50
IGNvbnRyb2xsZXJSZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAg
Ly8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4g
ZGVzdHJveWVkIHdoaWxlIHRoZSByZXF1ZXN0IHJlcGx5IHdhcyBjb21pbmcgYmFjay4KKyAgICBp
ZiAobV9yZXF1ZXN0cy5jb250YWlucyhjb250cm9sbGVyUmVxdWVzdElkKSkgeworICAgICAgICBj
b25zdCBSZXF1ZXN0JiByZXF1ZXN0ID0gbV9yZXF1ZXN0cy5nZXQoY29udHJvbGxlclJlcXVlc3RJ
ZCk7CisgICAgICAgIHJlZ2lzdGVyU3RyZWFtKHN0cmVhbUxhYmVsLCByZXF1ZXN0LmZyYW1lQ29u
dHJvbGxlcigpKTsKKyAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY29udHJvbGxlclJlcXVlc3RJ
ZCk7CisgICAgICAgIEFTU0VSVChyZXF1ZXN0LmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAg
cmVxdWVzdC5mcmFtZUNvbnRyb2xsZXIoKS0+c3RyZWFtR2VuZXJhdGVkKHJlcXVlc3QubG9jYWxJ
ZCgpLCBzdHJlYW1MYWJlbCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6c3RyZWFtR2VuZXJhdGlvbkZhaWxlZChpbnQgY29udHJvbGxlclJlcXVlc3RJZCwgTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3I6OkVycm9yQ29kZSBjb2RlKQoreworICAgIC8vIERvbid0IGFzc2Vy
dCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZCB3aGls
ZSB0aGUgcmVxdWVzdCByZXBseSB3YXMgY29taW5nIGJhY2suCisgICAgaWYgKG1fcmVxdWVzdHMu
Y29udGFpbnMoY29udHJvbGxlclJlcXVlc3RJZCkpIHsKKyAgICAgICAgY29uc3QgUmVxdWVzdCYg
cmVxdWVzdCA9IG1fcmVxdWVzdHMuZ2V0KGNvbnRyb2xsZXJSZXF1ZXN0SWQpOworICAgICAgICBt
X3JlcXVlc3RzLnJlbW92ZShjb250cm9sbGVyUmVxdWVzdElkKTsKKyAgICAgICAgcmVxdWVzdC5m
cmFtZUNvbnRyb2xsZXIoKS0+c3RyZWFtR2VuZXJhdGlvbkZhaWxlZChyZXF1ZXN0LmxvY2FsSWQo
KSwgY29kZSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1D
b250cm9sbGVyLmgKaW5kZXggZDc0OWE1ODZkZTE1MzAyNjMzYTBmNGIyMmQ3OGFlM2FiYzZiYzY0
Ny4uN2IyOTM4YTI5ZTYwMDE2MGJjZDVkMDk5NTBmNDlkZTEyMTc5YjdlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCkBAIC0yNywxNCArMjcsMTggQEAK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNsaWVu
dC5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbUNsaWVudDsKIGNsYXNzIE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1lZGlhU3Ry
ZWFtQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1Db250
cm9sbGVyKTsKQEAgLTQyLDE1ICs0NiwyNCBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1Db250
cm9sbGVyKE1lZGlhU3RyZWFtQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1Db250
cm9sbGVyKCk7CiAKKyAgICBib29sIGlzQ2xpZW50QXZhaWxhYmxlKCkgY29uc3Q7CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKik7
CiAKKyAgICB2b2lkIGdlbmVyYXRlU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwg
aW50IHJlcXVlc3RJZCwgR2VuZXJhdGVTdHJlYW1PcHRpb25GbGFncywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4pOworCisgICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBzdHJlYW1HZW5lcmF0aW9uRmFp
bGVkKGludCByZXF1ZXN0SWQsIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpFcnJvckNvZGUpOwor
CiBwcml2YXRlOgogICAgIGludCByZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsUmVxdWVzdElkLCBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciopOworICAgIHZvaWQgcmVnaXN0ZXJTdHJlYW0oY29u
c3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKIAog
ICAgIGNsYXNzIFJlcXVlc3Q7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVxdWVzdD4gUmVx
dWVzdE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcio+IFN0cmVhbU1hcDsKIAogICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0czsKKyAgICBT
dHJlYW1NYXAgbV9zdHJlYW1zOwogCiAgICAgTWVkaWFTdHJlYW1DbGllbnQqIG1fY2xpZW50Owog
ICAgIGludCBtX25leHRHbG9iYWxSZXF1ZXN0SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCmluZGV4IDA2MTc1NjE3ODc5NzkxNmM5
ZWRlMTlhMTUxZDI1YzY1NzMwN2I3NjEuLmJkYTI3YzAwZjUwMTQwN2RiNjgzODZlNjRmZTNmMjcz
ZDc0ZjExYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0IDogcHVibGljIFJlZkNv
dW50ZWQ8UmVxdWVzdD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlcXVlc3QpOwogcHVi
bGljOgogICAgIFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKICAgICAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkgeyB9CkBAIC01OCw2ICs1OSwzNyBAQCBwcml2YXRlOgogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIH07CiAKK2NsYXNzIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpHZW5lcmF0ZVN0cmVhbVJlcXVlc3QgOiBwdWJsaWMg
UmVxdWVzdCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2VuZXJhdGVTdHJlYW1SZXF1ZXN0
KTsKK3B1YmxpYzoKKyAgICBHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgICAgICA6IFJlcXVlc3Qoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNz
Q2FsbGJhY2spCisgICAgICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spIHsgfQor
CisgICAgdmlydHVhbCB+R2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkgeyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZXJyb3JDYWxs
YmFjaykgeworICAgICAgICAgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPiBlcnJv
ciA9IGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcihOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQpKTsKKyAgICAgICAgICAgIC8vIFRoZSBjYWxsYmFj
ayBpdHNlbGYgaXMgbWFkZSB3aXRoIHRoZSBKUyBjYWxsYmFjaydzIGNvbnRleHQsIG5vdCB3aXRo
IHRoZSBmcmFtZSdzIGNvbnRleHQuCisgICAgICAgICAgICBtX2Vycm9yQ2FsbGJhY2stPnNjaGVk
dWxlQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlcnJvcik7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzQ2FsbGJhY2s7IH0K
KyAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2soKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2s7IH0KKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxs
YmFjazsKKyAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gbV9lcnJv
ckNhbGxiYWNrOworfTsKKwogdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UmVxdWVz
dE1hcDo6YWJvcnQoaW50IHJlcXVlc3RJZCkKIHsKICAgICBnZXQocmVxdWVzdElkKS0+YWJvcnQo
KTsKQEAgLTcyLDEwICsxMDQsMzAgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdE1hcDo6YWJvcnRBbGwoKQogICAgIH0KIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRNYXBCYXNlPFQ+Ojp1bnJl
Z2lzdGVyQWxsKCkKK3sKKyAgICB3aGlsZSAoIXRoaXMtPmlzRW1wdHkoKSkgeworICAgICAgICBU
IGtleSA9IHRoaXMtPmJlZ2luKCktPmZpcnN0OworICAgICAgICAvLyB1bnJlZ2lzdGVyIHNob3Vs
ZCByZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSB0aGUgbWFwLgorICAgICAgICB0aGlzLT5iZWdpbigp
LT5zZWNvbmQtPnVucmVnaXN0ZXIoKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChrZXksICF0aGlz
LT5jb250YWlucyhrZXkpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50TWFwQmFzZTxUPjo6ZGV0YWNoRW1i
ZWRkZXIoKQoreworICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgaXQgPSB0aGlz
LT5iZWdpbigpOyBpdCAhPSB0aGlzLT5lbmQoKTsgKytpdCkKKyAgICAgICAgaXQtPnNlY29uZC0+
ZGV0YWNoRW1iZWRkZXIoKTsKK30KKwogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUp
CiAgICAgLCBtX2lzSW5EZXRhY2hlZFN0YXRlKGZhbHNlKQogeworICAgIGlmICghaXNDbGllbnRB
dmFpbGFibGUoKSkKKyAgICAgICAgZW50ZXJEZXRhY2hlZFN0YXRlKCk7CiB9CiAKIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjp+TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKQpAQCAtOTQs
NyArMTQ2LDEzIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uCiAKIE1lZGlhU3RyZWFtQ29udHJv
bGxlciogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnBhZ2VDb250cm9sbGVyKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gIW1faXNJbkRldGFjaGVkU3RhdGUgJiYgbV9mcmFtZSAmJiBtX2ZyYW1l
LT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPm1lZGlhU3RyZWFtQ29udHJvbGxlcigpIDogMDsK
KyAgICByZXR1cm4gbV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCkt
Pm1lZGlhU3RyZWFtQ29udHJvbGxlcigpIDogMDsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6dW5yZWdpc3RlcihTdHJlYW1DbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NF
UlQobV9zdHJlYW1zLmNvbnRhaW5zKGNsaWVudC0+Y2xpZW50SWQoKSkpOworICAgIG1fc3RyZWFt
cy5yZW1vdmUoY2xpZW50LT5jbGllbnRJZCgpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6ZW50ZXJEZXRhY2hlZFN0YXRlKCkKQEAgLTEwNSw5ICsxNjMsMTkgQEAgdm9p
ZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZW50ZXJEZXRhY2hlZFN0YXRlKCkKICAgICB9
CiAKICAgICBtX3JlcXVlc3RzLmFib3J0QWxsKCk7CisgICAgbV9zdHJlYW1zLmRldGFjaEVtYmVk
ZGVyKCk7CiAgICAgbV9pc0luRGV0YWNoZWRTdGF0ZSA9IHRydWU7CiB9CiAKK2Jvb2wgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OmlzQ2xpZW50QXZhaWxhYmxlKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9pc0luRGV0YWNoZWRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTWVk
aWFTdHJlYW1Db250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZUNvbnRyb2xsZXIoKTsKKyAgICBy
ZXR1cm4gY29udHJvbGxlciAmJiBjb250cm9sbGVyLT5pc0NsaWVudEF2YWlsYWJsZSgpOworfQor
CiAvLyBDYWxsZWQgYWxzbyB3aGVuIHRoZSBmcmFtZSBpcyBkZXRhY2hlZCBmcm9tIHRoZSBwYWdl
LCBpbiB3aGljaCBjYXNlIHRoZSBwYWdlIGNvbnRyb2xsZXIgd2lsbCByZW1haW4gYWxpdmUuCiB2
b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0UGFnZSgpCiB7CkBAIC0x
MjMsNiArMTkxLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzY29ubmVj
dEZyYW1lKCkKICAgICBkaXNjb25uZWN0UGFnZSgpOwogCiAgICAgQVNTRVJUKG1fcmVxdWVzdHMu
aXNFbXB0eSgpKTsKKyAgICBtX3N0cmVhbXMudW5yZWdpc3RlckFsbCgpOwogCiAgICAgbV9mcmFt
ZSA9IDA7CiB9CkBAIC0xMzQsNiArMjAzLDk1IEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OnRyYW5zZmVyVG9OZXdQYWdlKFBhZ2UqKQogICAgIGRpc2Nvbm5lY3RQYWdlKCk7CiB9
CiAKK0dlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OnBhcnNlR2VuZXJhdGVTdHJlYW1PcHRpb25zKGNvbnN0IFN0cmluZyYgb3B0aW9ucykKK3sKKyAg
ICBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdzIGZsYWdzID0gMDsKKyAgICBWZWN0b3I8U3RyaW5n
PiBvcHRpb25MaXN0OworICAgIG9wdGlvbnMuc3BsaXQoJywnLCBvcHRpb25MaXN0KTsKKworICAg
IGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIG9wdGlvbiA9IG9wdGlvbkxpc3Qu
YmVnaW4oKTsgb3B0aW9uICE9IG9wdGlvbkxpc3QuZW5kKCk7ICsrb3B0aW9uKSB7CisgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHN1Ym9wdGlvbkxpc3Q7CisgICAgICAgIG9wdGlvbi0+c3BsaXQoJyAn
LCBzdWJvcHRpb25MaXN0KTsKKworICAgICAgICBpZiAoc3Vib3B0aW9uTGlzdC5maXJzdCgpID09
ICJhdWRpbyIpCisgICAgICAgICAgICBmbGFncyB8PSBHZW5lcmF0ZVN0cmVhbVJlcXVlc3RBdWRp
bzsKKyAgICAgICAgZWxzZSBpZiAoc3Vib3B0aW9uTGlzdC5maXJzdCgpID09ICJ2aWRlbyIpIHsK
KyAgICAgICAgICAgIGJvb2wgdmlkZW9TdWJvcHRpb25zID0gZmFsc2U7CisgICAgICAgICAgICBW
ZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Igc3Vib3B0aW9uID0gc3Vib3B0aW9uTGlzdC5i
ZWdpbigpOworICAgICAgICAgICAgZm9yICgrK3N1Ym9wdGlvbjsgc3Vib3B0aW9uICE9IHN1Ym9w
dGlvbkxpc3QuZW5kKCk7ICsrc3Vib3B0aW9uKQorICAgICAgICAgICAgICAgIGlmICgqc3Vib3B0
aW9uID09ICJ1c2VyIikgeworICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBHZW5lcmF0ZVN0
cmVhbVJlcXVlc3RWaWRlb0ZhY2luZ1VzZXI7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvU3Vi
b3B0aW9ucyA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgqc3Vib3B0aW9uID09
ICJlbnZpcm9ubWVudCIpIHsKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gR2VuZXJhdGVT
dHJlYW1SZXF1ZXN0VmlkZW9GYWNpbmdFbnZpcm9ubWVudDsKKyAgICAgICAgICAgICAgICAgICAg
dmlkZW9TdWJvcHRpb25zID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIEFzayBmb3IgYWxsIGtpbmQgb2YgY2FtZXJhcyBpZiBubyBzdWJvcHRpb24gd2FzIHNwZWNp
ZmllZC4KKyAgICAgICAgICAgIGlmICghdmlkZW9TdWJvcHRpb25zKQorICAgICAgICAgICAgICAg
IGZsYWdzIHw9IEdlbmVyYXRlU3RyZWFtUmVxdWVzdFZpZGVvRmFjaW5nVXNlciB8IEdlbmVyYXRl
U3RyZWFtUmVxdWVzdFZpZGVvRmFjaW5nRW52aXJvbm1lbnQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gZmxhZ3M7Cit9CisKKy8vIEltcGxlbWVudHMgdGhlIGdldFVzZXJNZWRpYSBt
ZXRob2QgZnJvbSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrLyNkb20tbmF2aWdhdG9yLWdldHVzZXJtZWRpYS4KK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OmdlbmVyYXRlU3RyZWFtKGNvbnN0IFN0cmluZyYgb3B0aW9ucywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8TmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPE5hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBlYyA9IDA7CisgICAgaWYgKCFzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3MgZmxhZ3MgPSBwYXJzZUdlbmVyYXRlU3RyZWFt
T3B0aW9ucyhvcHRpb25zKTsKKyAgICBpZiAoIWZsYWdzKSB7CisgICAgICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgcmVxdWVzdElk
ID0gbV9yZXF1ZXN0cy5nZXROZXh0SWQoKTsKKyAgICBtX3JlcXVlc3RzLmFkZChyZXF1ZXN0SWQs
IGFkb3B0UmVmKG5ldyBHZW5lcmF0ZVN0cmVhbVJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKSk7CisKKyAgICBpZiAoIWlzQ2xp
ZW50QXZhaWxhYmxlKCkpIHsKKyAgICAgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRvIGNhbGwgdGhl
IGVycm9yIGNhbGxiYWNrIGlmIHByb3ZpZGVkLgorICAgICAgICBtX3JlcXVlc3RzLmFib3J0KHJl
cXVlc3RJZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwYWdlQ29udHJvbGxlcigp
LT5nZW5lcmF0ZVN0cmVhbSh0aGlzLCByZXF1ZXN0SWQsIGZsYWdzLCBzZWN1cml0eU9yaWdpbigp
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RyZWFtR2VuZXJhdGVk
KGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgLy8gRG9uJ3QgYXNz
ZXJ0IHNpbmNlIHRoZSByZXF1ZXN0IGNhbiBoYXZlIGJlZW4gYWJvcnRlZCBhcyBhIHJlc3VsdCBv
ZiBlbWJlZGRlciBkZXRhY2htZW50LgorICAgIGlmIChtX3JlcXVlc3RzLmNvbnRhaW5zKHJlcXVl
c3RJZCkpIHsKKyAgICAgICAgQVNTRVJUKG1fcmVxdWVzdHMuZ2V0KHJlcXVlc3RJZCktPmlzR2Vu
ZXJhdGVTdHJlYW1SZXF1ZXN0KCkpOworICAgICAgICBBU1NFUlQoIWxhYmVsLmlzTnVsbCgpKTsK
KworICAgICAgICAvLyBGSVhNRTogY3JlYXRlIGEgR2VuZXJhdGVkU3RyZWFtIG9iamVjdCBhbmQg
aW52b2tlIHRoZSBjYWxsYmFjayB3aGVuIHRoZSBjbGFzcyBpcyBhdmFpbGFibGUuCisgICAgICAg
IG1fcmVxdWVzdHMucmVtb3ZlKHJlcXVlc3RJZCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjpzdHJlYW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQs
IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpFcnJvckNvZGUgY29kZSkKK3sKKyAgICAvLyBEb24n
dCBhc3NlcnQgc2luY2UgdGhlIHJlcXVlc3QgY2FuIGhhdmUgYmVlbiBhYm9ydGVkIGFzIGEgcmVz
dWx0IG9mIGVtYmVkZGVyIGRldGFjaG1lbnQuCisgICAgaWYgKG1fcmVxdWVzdHMuY29udGFpbnMo
cmVxdWVzdElkKSkgeworICAgICAgICBBU1NFUlQobV9yZXF1ZXN0cy5nZXQocmVxdWVzdElkKS0+
aXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSk7CisKKyAgICAgICAgUmVmUHRyPEdlbmVyYXRlU3Ry
ZWFtUmVxdWVzdD4gc3RyZWFtUmVxdWVzdCA9IHN0YXRpY19jYXN0PEdlbmVyYXRlU3RyZWFtUmVx
dWVzdCo+KG1fcmVxdWVzdHMuZ2V0KHJlcXVlc3RJZCkuZ2V0KCkpOworICAgICAgICBtX3JlcXVl
c3RzLnJlbW92ZShyZXF1ZXN0SWQpOworCisgICAgICAgIGlmIChzdHJlYW1SZXF1ZXN0LT5lcnJv
ckNhbGxiYWNrKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
cj4gZXJyb3IgPSBhZG9wdFJlZihuZXcgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IoY29kZSkpOwor
ICAgICAgICAgICAgc3RyZWFtUmVxdWVzdC0+ZXJyb3JDYWxsYmFjaygpLT5oYW5kbGVFdmVudChl
cnJvci5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKaW5kZXggZTk1YTQ0YWE3ZjI4ZDcy
ZDFjMDk2Zjc2ZjdmYjNjZDQ2NzUwZjFkNy4uNDk0NjFhOTdjMzVlNjg3MTIzNmExYjY2ZmY3MmE2
YTJiNThkZTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuaApAQCAtMjcsMTQgKzI3LDIwIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
Q2xpZW50LmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgTWVkaWFTdHJlYW1Db250cm9s
bGVyOworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKK2NsYXNzIE5hdmln
YXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CkBAIC00MiwzMSArNDgsMTM4
IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KTsKIHB1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSWRUeXBlPgorICAgIGNsYXNzIENs
aWVudEJhc2UgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGllbnRCYXNlKTsKKyAg
ICBwdWJsaWM6CisgICAgICAgIENsaWVudEJhc2UoKSA6IG1fZnJhbWVDb250cm9sbGVyKDApLCBt
X2NsaWVudElkKDApIHsgfQorCisgICAgICAgIENsaWVudEJhc2UoTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgY29uc3QgSWRUeXBlJiBpZCkKKyAgICAgICAgICAg
IDogbV9mcmFtZUNvbnRyb2xsZXIoZnJhbWVDb250cm9sbGVyKQorICAgICAgICAgICAgLCBtX2Ns
aWVudElkKGlkKSB7IH0KKworICAgICAgICB2aXJ0dWFsIH5DbGllbnRCYXNlKCkgeyB9CisKKyAg
ICAgICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIG1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUNvbnRyb2xsZXI7IH0KKyAgICAgICAgY29uc3Qg
SWRUeXBlJiBjbGllbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWQ7IH0KKworICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmF0ZWRTdHJlYW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorCisgICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSBmcmFtZSBjb250cm9sbGVyIGlzIGJlaW5n
IGRpc2Nvbm5lY3RlZCB0byB0aGUgTWVkaWFTdHJlYW1DbGllbnQgZW1iZWRkZXIuCisgICAgICAg
IC8vIENsaWVudHMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgdG8gc2VuZCBhbnkgcmVxdWlyZWQgc2h1
dGRvd24gbWVzc2FnZXMuCisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hFbWJlZGRlcigpIHsg
fQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICAvLyBVc2VkIGZvciBvYmplY3RzIHRoYXQgYXJl
IG9wdGlvbmFsbHkgYXNzb2NpYXRlZCB0byB0aGUgZnJhbWUgY29udHJvbGxlciBhZnRlciBjb25z
dHJ1Y3Rpb24sIGxpa2UgdGhlIHRyYWNrIGxpc3RzLgorICAgICAgICB2b2lkIGFzc29jaWF0ZUZy
YW1lQ29udHJvbGxlcihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVy
LCBjb25zdCBJZFR5cGUmIGlkKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIW1fZnJh
bWVDb250cm9sbGVyICYmICFtX2NsaWVudElkKTsKKyAgICAgICAgICAgIG1fZnJhbWVDb250cm9s
bGVyID0gZnJhbWVDb250cm9sbGVyOworICAgICAgICAgICAgbV9jbGllbnRJZCA9IGlkOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQXZvaWRzIHJlcGVhdGluZyB0aGUgc2FtZSBjb2RlIGluIHRo
ZSB1bnJlZ2lzdGVyIG1ldGhvZCBvZiBlYWNoIGRlcml2ZWQgY2xhc3MuCisgICAgICAgIC8vIFRo
aXMgaXMgcmVxdWlyZWQgc2luY2UgdGhlIGNvbnRyb2xsZXIncyB1bnJlZ2lzdGVyIG1ldGhvZHMg
bWFrZSB1c2Ugb2YgdGhlIGlzT2JqZWN0IHZpcnR1YWxzLAorICAgICAgICAvLyBhbmQgdGhlIHVu
cmVnaXN0cmF0aW9uIGNhbiBiZSB0cmlnZ2VyZWQgZWl0aGVyIGJ5IHRoZSBkZXN0cnVjdG9yIG9m
IHRoZSBjbGllbnQgb3IgYnkgdGhlIGRpc2Nvbm5lY3Rpb24gb2YgdGhlIGZyYW1lLgorICAgICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xpZW50VHlwZT4KKyAgICAgICAgdm9pZCB1bnJlZ2lzdGVy
Q2xpZW50KENsaWVudFR5cGUqIGNsaWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFt
X2ZyYW1lQ29udHJvbGxlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IG1fZnJhbWVDb250cm9sbGVyLT51bnJlZ2lzdGVyKHN0YXRpY19jYXN0PENsaWVudFR5cGUqPihj
bGllbnQpKTsKKyAgICAgICAgICAgIG1fZnJhbWVDb250cm9sbGVyID0gMDsKKyAgICAgICAgfQor
CisgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyKCkgPSAwOworICAgICAgICBmcmllbmQg
Y2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI7CisKKyAgICAgICAgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqIG1fZnJhbWVDb250cm9sbGVyOworICAgICAgICBJZFR5cGUgbV9jbGll
bnRJZDsKKyAgICB9OworCisgICAgY2xhc3MgU3RyZWFtQ2xpZW50IDogcHVibGljIENsaWVudEJh
c2U8U3RyaW5nPiB7CisgICAgcHVibGljOgorICAgICAgICBTdHJlYW1DbGllbnQoTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCkg
OiBDbGllbnRCYXNlPFN0cmluZz4oZnJhbWVDb250cm9sbGVyLCBsYWJlbCkgeyB9CisgICAgICAg
IHZpcnR1YWwgflN0cmVhbUNsaWVudCgpIHsgdW5yZWdpc3RlcigpOyB9CisKKyAgICAgICAgdmly
dHVhbCBib29sIGlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIC8v
IFN0cmVhbSBoYXMgZW5kZWQgZm9yIHNvbWUgZXh0ZXJuYWwgcmVhc29uLgorICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtRW5kZWQoKSA9IDA7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0
dWFsIHZvaWQgdW5yZWdpc3RlcigpIHsgdW5yZWdpc3RlckNsaWVudCh0aGlzKTsgfQorICAgIH07
CisKICAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcihGcmFtZSopOwogICAgIHZpcnR1YWwg
fk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCk7CiAKICAgICBTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIGlzQ2xpZW50QXZhaWxhYmxlKCkg
Y29uc3Q7CiAgICAgdm9pZCBkaXNjb25uZWN0UGFnZSgpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
YW1lKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvTmV3UGFnZShQYWdlKik7CiAKKyAgICAvLyBQYXJz
ZSB0aGUgb3B0aW9ucyBzdHJpbmcgcHJvdmlkZWQgdG8gdGhlIGdlbmVyYXRlU3RyZWFtIG1ldGhv
ZC4KKyAgICBzdGF0aWMgR2VuZXJhdGVTdHJlYW1PcHRpb25GbGFncyBwYXJzZUdlbmVyYXRlU3Ry
ZWFtT3B0aW9ucyhjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBnZW5lcmF0
ZWQgc3RyZWFtIGFzeW5jaHJvbm91c2x5IHdpdGggdGhlIHByb3ZpZGVkIG9wdGlvbnMuCisgICAg
dm9pZCBnZW5lcmF0ZVN0cmVhbShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2
aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgLy8gLS0tIENhbGxz
IGNvbWluZyBiYWNrIGZyb20gdGhlIGNvbnRyb2xsZXIuIC0tLSAvLworCisgICAgLy8gUmVwb3J0
IHRoZSBnZW5lcmF0aW9uIG9mIGEgbmV3IGxvY2FsIHN0cmVhbS4KKyAgICB2b2lkIHN0cmVhbUdl
bmVyYXRlZChpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKworICAg
IC8vIFJlcG9ydCBhIGZhaWx1cmUgaW4gdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgc3RyZWFtLgor
ICAgIHZvaWQgc3RyZWFtR2VuZXJhdGlvbkZhaWxlZChpbnQgcmVxdWVzdElkLCBOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvcjo6RXJyb3JDb2RlKTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBSZXF1ZXN0
OworICAgIGNsYXNzIEdlbmVyYXRlU3RyZWFtUmVxdWVzdDsKKworICAgIGNsYXNzIElkR2VuZXJh
dG9yIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSWRHZW5lcmF0b3IpOworICAgIHB1
YmxpYzoKKyAgICAgICAgSWRHZW5lcmF0b3IoKSA6IG1faWQoMCkgeyB9CisgICAgICAgIGludCBn
ZXROZXh0SWQoKSB7IHJldHVybiArK21faWQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGlu
dCBtX2lkOworICAgIH07CiAKLSAgICBjbGFzcyBSZXF1ZXN0TWFwIDogcHVibGljIEhhc2hNYXA8
aW50LCBSZWZQdHI8UmVxdWVzdD4gPiB7CisgICAgY2xhc3MgUmVxdWVzdE1hcCA6IHB1YmxpYyBJ
ZEdlbmVyYXRvciwgcHVibGljIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVxdWVzdD4gPiB7CiAgICAg
cHVibGljOgogICAgICAgICB2b2lkIGFib3J0KGludCByZXF1ZXN0SWQpOwogICAgICAgICB2b2lk
IGFib3J0QWxsKCk7CiAgICAgfTsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJZFR5cGU+Cisg
ICAgY2xhc3MgQ2xpZW50TWFwQmFzZSA6IHB1YmxpYyBIYXNoTWFwPElkVHlwZSwgQ2xpZW50QmFz
ZTxJZFR5cGU+KiA+IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xpZW50TWFwQmFz
ZSk7CisgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8SWRUeXBlLCBDbGllbnRC
YXNlPElkVHlwZT4qID4gTWFwVHlwZTsKKworICAgICAgICBDbGllbnRNYXBCYXNlKCkgeyB9Cisg
ICAgICAgIHZvaWQgdW5yZWdpc3RlckFsbCgpOworICAgICAgICB2b2lkIGRldGFjaEVtYmVkZGVy
KCk7CisgICAgfTsKKworICAgIC8vIFN0cmVhbXMgYXJlIGEgc3BlY2lhbCBjbGFzcyBvZiBjbGll
bnRzIHNpbmNlIHRoZXkgYXJlIGlkZW50aWZpZWQgYnkgYSBnbG9iYWwgbGFiZWwgc3RyaW5nIGlu
c3RlYWQgb2YgYW4gaWQuCisgICAgdHlwZWRlZiBDbGllbnRNYXBCYXNlPFN0cmluZz4gU3RyZWFt
TWFwOworCiAgICAgLy8gRGV0YWNoZWQgZnJvbSBhIHBhZ2UsIGFuZCBoZW5jZSBmcm9tIGEgZW1i
ZWRkZXIgY2xpZW50LgogICAgIHZvaWQgZW50ZXJEZXRhY2hlZFN0YXRlKCk7CiAKKyAgICB2b2lk
IHVucmVnaXN0ZXIoU3RyZWFtQ2xpZW50Kik7CiAgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBw
YWdlQ29udHJvbGxlcigpIGNvbnN0OwogCiAgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworICAg
IFN0cmVhbU1hcCBtX3N0cmVhbXM7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBib29sIG1f
aXNJbkRldGFjaGVkU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggNmVhMzc3
ZWFiMDc1MDRiZGNiNDRjN2QxZjNiMjJhZDFjYjg4MzBlNi4uYTkyYjczOWE1NmIyYjM3NDk2ZDdk
ODEwZWQwZTc1MTY3Y2ZiMWYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgpAQCAtMjQ1LDkgKzI0NiwxMCBAQCB2b2lkIE5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotdm9pZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVz
ZXJNZWRpYShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nl
c3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4s
IEV4Y2VwdGlvbkNvZGUmKQordm9pZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShjb25z
dCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudCBhIGNhbGwgdG8gdGhlIG1lZGlhIHN0cmVhbSBjb250ZXh0IHdoZW4g
YXZhaWxhYmxlLgorICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPm1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKCkpCisgICAgICAgIG1fZnJhbWUtPm1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KCktPmdlbmVyYXRlU3RyZWFtKG9wdGlvbnMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgZWMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgKaW5kZXggMTlmYjlmNjk5NDIxM2VlYjQ5ZDFm
N2I5NTM3Y2IwOTc1MTk3MzQ1NS4uMTUzOTcwOTE3YTdkYmZkNDQwMDBkYTU2NTUwODAwODYxMjkx
MGJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmgKQEAgLTI3LDEzICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAorI2luY2x1ZGUgIkNhbGxiYWNrVGFzay5oIgorI2luY2x1ZGUgIk5hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjsKLQotY2xhc3Mg
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE5hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IHsKK2NsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
Q2FsbGJhY2tUYXNrMTxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLCBOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvcj46OlNjaGVkdWxlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TmF2aWdh
dG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaygpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVF
dmVudChOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvciopID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>