<?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>122122</bug_id>
          
          <creation_ts>2013-09-30 13:35:18 -0700</creation_ts>
          <short_desc>[Mac] Add support for VideoTrack to MediaPlayerPrivateAVFObjC</short_desc>
          <delta_ts>2013-10-22 16:55:27 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>122171</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934798</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-30 13:35:18 -0700</bug_when>
    <thetext>[Mac] Add support for VideoTrack to MediaPlayerPrivateAVFObjC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934804</commentid>
    <comment_count>1</comment_count>
      <attachid>213033</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-30 13:56:49 -0700</bug_when>
    <thetext>Created attachment 213033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935010</commentid>
    <comment_count>2</comment_count>
      <attachid>213033</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-01 07:36:30 -0700</bug_when>
    <thetext>Comment on attachment 213033
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:83
&gt; +    else

Nit: the final &quot;else&quot; isn&apos;t needed.

&gt; Source/WebCore/platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:98
&gt; +    else

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:121
&gt; +    else

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/VideoTrackPrivateAVF.h:35
&gt; +class VideoTrackPrivateAVF : public VideoTrackPrivate {

FINAL

&gt; Source/WebCore/platform/graphics/avfoundation/VideoTrackPrivateAVF.h:42
&gt; +    virtual Kind kind() const { return m_kind; }
&gt; +    virtual AtomicString id() const { return m_id; }
&gt; +    virtual AtomicString label() const { return m_label; }
&gt; +    virtual AtomicString language() const { return m_language; }

OVERRIDE

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1134
&gt; +void MediaPlayerPrivateAVFoundationObjC::updateVideoTracks()

This looks *awfully* similar to updateAudioTracks. Is there any way to share code like MediaPlayerPrivateAVFoundation::processNewAndRemovedTextTracks does for processing in-band text tracks?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/VideoTrackPrivateAVFObjC.h:40
&gt; +class VideoTrackPrivateAVFObjC : public VideoTrackPrivateAVF {

FINAL

&gt; Source/WebCore/platform/graphics/avfoundation/objc/VideoTrackPrivateAVFObjC.h:48
&gt; +    virtual void setSelected(bool);

OVERRIDE

&gt; LayoutTests/media/track/video-track.html:37
&gt; +            function canplaythrough()
&gt; +            {
&gt; +                consoleWrite(&quot;&lt;br&gt;&lt;i&gt;** Check initial in-band track states&lt;&quot; + &quot;/i&gt;&quot;);
&gt; +                testExpected(&quot;video.videoTracks.length&quot;, 1);
&gt; +
&gt; +                consoleWrite(&quot;&lt;br&gt;&lt;i&gt;** Unload video file, check track count&lt;&quot; + &quot;/i&gt;&quot;);
&gt; +                run(&quot;video.src = &apos;&apos;&quot;);
&gt; +                testExpected(&quot;video.videoTracks.length&quot;, 0);
&gt; +
&gt; +                consoleWrite(&quot;&quot;);
&gt; +                endTest();
&gt; +            }

This should also test the &quot;only one video track enabled&quot; spec requirement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935103</commentid>
    <comment_count>3</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-01 11:22:57 -0700</bug_when>
    <thetext>Committed r156722: &lt;http://trac.webkit.org/changeset/156722&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935137</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-01 12:36:10 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 122171</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942487</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-22 16:55:27 -0700</bug_when>
    <thetext>In the end, the rollout was not necessary. Moving back to Resolved/Fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213033</attachid>
            <date>2013-09-30 13:56:49 -0700</date>
            <delta_ts>2013-10-01 07:36:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122122-20130930135648.patch</filename>
            <type>text/plain</type>
            <size>50737</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBkNWU2MGI1YTY4NjUx
ZTY3MGVkYmUxZGMzZjdhOWNmNDk1NzFiNS4uM2Y5Nzc5YmU3NWYzODY5ZGI2MDZhNjFmMGE4YzMw
NzhhMmIzYzkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcwIEBACiAyMDEzLTA5LTMwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtNYWNdIEFkZCBzdXBwb3J0
IGZvciBWaWRlb1RyYWNrIHRvIE1lZGlhUGxheWVyUHJpdmF0ZUFWRk9iakMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjEyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3Zp
ZGVvLXRyYWNrLmh0bWwKKworICAgICAgICBSZWZhY3RvciB0aGUgbWV0aG9kcyB3aGljaCBxdWVy
eSBBVkFzc2V0VHJhY2sgYW5kIEFWUGxheWVySXRlbVRyYWNrIGludG8gYW4gSW1wbCBjbGFzcywg
YW5kCisgICAgICAgIHVzZSB0aGF0IGNsYXNzIHRvIHJlc2V0IHRoZSBwcm9wZXJ0aWVzIG9mIGJv
dGggQXVkaW9UcmFja0FWRk9iakMgYW5kIHRoZSBuZXcgVmlkZW9UcmFja0FWRk9iakMuCisKKyAg
ICAgICAgQWRkIG5ldyBmaWxlcyB0byBwcm9qZWN0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBBZGQgdGhlIG5ldyBpbXBsZW1lbnRhdGlv
biBjbGFzcywgc2hhcmVkIGJ5IEF1ZGlvVHJhY2tBVkZPYmpDIGFuZCBWaWRlb1RyYWNrQVZGT2Jq
QzoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw6OmNyZWF0ZSk6IFNpbXBsZSBmYWN0b3J5LgorICAgICAgICAoV2ViQ29yZTo6
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6cGxheWVySXRlbVRyYWNrKTogU2ltcGxlIGdldHRl
ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsOjpBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKTogU2ltcGxlIGNvbnN0cnVj
dG9yLgorICAgICAgICAoV2ViQ29yZTo6QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6ZW5hYmxl
ZCk6IFBhc3MgdG8gQVZQbGF5ZXJJdGVtVHJhY2suCisgICAgICAgIChXZWJDb3JlOjpBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsOjpzZXRFbmFibGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjphdWRpb0tpbmQpOiBEaXN0aW5ndWlzaCBiZXR3
ZWVuIEFsdGVybmF0aXZlIGFuZCBNYWluIGNvbnRlbnQuCisgICAgICAgIChXZWJDb3JlOjpBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsOjp2aWRlb0tpbmQpOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIEFs
dGVybmF0aXZlLCBNYWluLCBDYXB0aW9uLAorICAgICAgICAgICAgYW5kIERlc2NyaXB0aW9uIGNv
bnRlbnQuCisgICAgICAgIChXZWJDb3JlOjpBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjppZCk6
IFBhc3MgdG8gQVZBc3NldFRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbDo6bGFiZWwpOiBSZXRyaWV2ZSB0aGUgVGl0bGUgbWV0YWRhdGEgaW4gdGhlIHVz
ZXIncyBwcmVmZXJyZWQKKyAgICAgICAgICAgIGxhbmd1YWdlLgorICAgICAgICAoV2ViQ29yZTo6
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6bGFuZ3VhZ2UpOiBQYXNzIHRvIGxhbmd1YWdlRm9y
QVZBc3NldFRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bDo6bGFuZ3VhZ2VGb3JBVkFzc2V0VHJhY2spOiBNb3ZlZCBmcm9tIEF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vVmlkZW9U
cmFja1ByaXZhdGVBVkYuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvVHJhY2tQcml2YXRlQVZGLmguCisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRjo6a2luZCk6IFNpbXBsZSBnZXR0ZXIuCisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRjo6aWQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGOjpsYWJlbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkY6Omxhbmd1YWdlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRjo6c2V0S2luZCk6IFNpbXBsZSBzZXR0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRjo6c2V0SWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGOjpzZXRMYWJlbCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkY6OnNldExhbmd1YWdlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRjo6VmlkZW9UcmFja1By
aXZhdGVBVkYpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMpOiBDcmVhdGUgYSBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFBy
b3BlcnRpZXNGcm9tVHJhY2spOiBSZXRyaWV2ZSBwcm9wZXJ0aWVzIGZyb20gbV9pbXBsLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJh
Y2spOiBDcmVhdGUgYSBuZXcgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNrKTogUGFzcyB0
byBtX2ltcGwuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNl
dEVuYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnRyYWNrc0NoYW5nZWQpOiBSZWZhY3RvciBpbXBsZW1lbnRhdGlvbiBp
bnRvIHVwZGF0ZUF1ZGlvVHJhY2tzCisgICAgICAgICAgICBhbmQgKG5ldykgdXBkYXRlVmlkZW9U
cmFja3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVBdWRpb1RyYWNrcyk6IFJlZmFjdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcyk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKTogQ2hhbmdlZCBjbGFzcyBob3N0aW5nCisg
ICAgICAgICAgICBsYW5ndWFnZUZvckFWQXNzZXRUcmFjay4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9U
cmFja1ByaXZhdGVBVkZPYmpDKTogQ3JlYXRlIGEgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC4K
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKTogUmV0cmlldmUgcHJvcGVydGllcyBmcm9tIG1faW1wbC4KKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKTog
Q3JlYXRlIGEgbmV3IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuCisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjayk6IFBhc3MgdG8gbV9p
bXBsLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRTZWxl
Y3RlZCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKTogU2ltcGxlIGZhY3RvcnkuCisKKzIw
MTMtMDktMzAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbCBiYWNrIGluIHIxNTY1NDYgd2l0aCByZWJhc2VsaW5lZCB0ZXN0cy4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjExMQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZjY0MTVjZTRhYWE1YzlhMmNhZWVmZGEyMGQ5NDVkZTQ1YjgzNGJmMS4uYTMxNWNmNDE0OWVl
NGZhMGQ0MDkyNGQ3YmFlMzQxNmZhNTFjOWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTMwNiw2ICs1MzA2LDExIEBACiAJ
CUNEMUU3MzQ3MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDFFNzM0NjE2
N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwICovOyB9OwogCQlD
RDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAw
NzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0QyN0Y2RTcxNDU3NzBE
MzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFD
b250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDMzNkY1RjE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5tbSAqLzsgfTsKKwkJQ0QzMzZGNjIxN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMzM2RjYwMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsLmggKi87IH07CisJCUNEMzM2RjY0MTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1Ry
YWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QzMzZGNjMxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmgg
Ki87IH07CisJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QzMzZGNjUxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAg
Ki87IH07CisJCUNEMzM2RjY4MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
MzM2RjY2MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLzsg
fTsKIAkJQ0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM3QjM3
NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCAqLzsgfTsKIAkJ
Q0QzQTQ5NTIxN0E5QzhDNjAwMjc0RTQyIC8qIE1lZGlhU291cmNlQmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTExN0E5QzhCNjAwMjc0
RTQyIC8qIE1lZGlhU291cmNlQmFzZS5oICovOyB9OwogCQlDRDNBNDk1NDE3QTlDQzkwMDAyNzRF
NDIgLyogTWVkaWFTb3VyY2VCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEM0E0OTUwMTdBOUM4QjYwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZUJh
c2UuY3BwICovOyB9OwpAQCAtMTIyMzYsNiArMTIyNDEsMTEgQEAKIAkJQ0QyN0Y2RTMxNDU3Njc1
ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTWVkaWFDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRy
b2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250
cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzMzZGNUYxN0Y5RjY0
NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDMzNkY2MDE3RjlGNjQ3MDBERERDRDAgLyog
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEMzM2RjYzMTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDMzNkY2NTE3RkEwQUM2MDBERERDRDAg
LyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA7IHBhdGggPSBvYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMzM2RjY2MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpD
Lmg7IHBhdGggPSBvYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpYWdu
b3N0aWNMb2dnaW5nS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzdC
Mzc1MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTUwMTdBOUM4QjYwMDI3NEU0MiAvKiBNZWRpYVNv
dXJjZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTb3VyY2VCYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDg4LDYgKzEzNDk4LDcgQEAKIAkJCQkwN0I0
NDJENTE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAog
CQkJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwICovLAogCQkJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uaCAqLywKKwkJCQlDRDMzNkY2MzE3RkEwQTREMDBERERDRDAg
LyogVmlkZW9UcmFja1ByaXZhdGVBVkYuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gYXZmb3VuZGF0
aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwMDgwLDYgKzIwMDkxLDggQEAK
IAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEMzM2RjVGMTdGOUY2NDcwMERERENEMCAvKiBB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tICovLAorCQkJCUNEMzM2RjYwMTdGOUY2NDcwMERE
RENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggKi8sCiAJCQkJQ0RFM0E4NTUxN0Y2
MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQlDREUz
QTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8sCiAJ
CQkJMDdBQTZCNjkxNjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZP
YmpDLmggKi8sCkBAIC0yMDA5MCw2ICsyMDEwMyw4IEBACiAJCQkJREY5QUZENzExM0ZDMzFEODAw
MTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gKi8sCiAJCQkJ
Q0Q3RTA1MjAxNjUxQTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICov
LAogCQkJCUNEN0UwNTIxMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0gKi8sCisJCQkJQ0QzMzZGNjUxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQy5jcHAgKi8sCisJCQkJQ0QzMzZGNjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBvYmpjOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMzY3LDYgKzIzMzgyLDcgQEAKIAkJCQk4NDg1MjI3
RTExOTAxNjJDMDA2RURDN0YgLyogSlNTVkdWS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OEUwOTIwMTdEMTREMUMwMDQyMEFBMSAvKiBSVENEVE1GU2VuZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MURDQjcwMjE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRDMzNkY2NDE3RkEwQTREMDBERERDRDAgLyogVmlkZW9UcmFj
a1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRTE5MEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR1pvb21FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDQwOUQxQ0M2
MDAwMEJFMzI1IC8qIEpTVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzQTE0QjkwQjdEMUQ1
MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNzI5LDYgKzIz
NzQ1LDcgQEAKIAkJCQk5NzQ2QUYyQzE0RjREREU2MDAzRTdBNzAgLyogUG9zaXRpb25DYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkUxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0
aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjMwMTRGNERERTYwMDNFN0E3MCAv
KiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMzM2RjY4MTdG
QTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzQ2QUYzMjE0RjREREU2MDAzRTdBNzAgLyogUG9zaXRpb25PcHRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJl
cHJvY2Vzc29yLnBtIGluIEhlYWRlcnMgKi8sCkBAIC0yNDcwMSw2ICsyNDcxOCw3IEBACiAJCQkJ
QTEzNkEwMEQxMTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRo
cm90dGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RGRDQ4RTBFMzA1MjkwMDA5RDEwQUQgLyog
WE1MSHR0cFJlcXVlc3RVcGxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MzNDODBEMEEyQ0Yy
NTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzMzZGNjIxN0Y5
RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxNUEzNkQ3MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUNFNTNFQjBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTkwNUFEQzAxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyOTAsNiArMjYzMDgsNyBAQAogCQkJCTFBNDk0QkZB
MEExMjJGNDQwMEZEQUZDMSAvKiBKU0hUTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3OTY5REIxMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1ODIzRjUwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVs
ZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QzMzZGNjcxN0ZBMEFDNjAwRERE
Q0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzhFNjVGNzA5RjA5ODVEMDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNkQ0NEVDMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxF
bWJlZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2RDQ0QkUwQzA3RUZCNjAwNzJE
MkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2
NzA2LDYgKzI2NzI1LDcgQEAKIAkJCQk1REE1RTBGQzEwMkI5NTM4MDAwODhDRjkgLyogSlNXZWJT
b2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMyMDUwOUQxQ0M2MDAwMEJFMzI1IC8q
IEpTV2hlZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUM4QkU1RDBFOEJEMTVBMDA2
NENCN0QgLyogSlNXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QzMzZGNjExN0Y5RjY0
NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLywK
IAkJCQlFMUNBNUNCQzBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTE4MjU2OEYwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyR2xvYmFs
U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDMzZEMzQwRUIwQTA5NDAwNzQxMEJDIC8q
IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUzYWEwNGIw
MmY0YjIxOTRhMmQyMDk4YzdkYjQyZGFjNzYwZDE1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbF9oCisjZGVmaW5lIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGxfaAor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZBc3NldFRyYWNr
OworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1UcmFjazsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
T3duUHRyPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+IGNyZWF0ZShBVlBsYXllckl0ZW1UcmFj
ayogdHJhY2spCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlT3duZWQ8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIH0KKyAgICBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsKEFWUGxheWVySXRlbVRyYWNrKik7CisKKyAgICBBVlBsYXllckl0ZW1UcmFjayogcGxheWVy
SXRlbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCk7IH0KKwor
ICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKKwor
ICAgIEF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kIGF1ZGlvS2luZCgpIGNvbnN0OworICAgIFZpZGVv
VHJhY2tQcml2YXRlOjpLaW5kIHZpZGVvS2luZCgpIGNvbnN0OworCisgICAgQXRvbWljU3RyaW5n
IGlkKCkgY29uc3Q7CisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgQXRvbWlj
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgU3RyaW5nIGxhbmd1YWdlRm9y
QVZBc3NldFRyYWNrKEFWQXNzZXRUcmFjayopOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxB
VlBsYXllckl0ZW1UcmFjaz4gbV9wbGF5ZXJJdGVtVHJhY2s7Cit9OworCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTRmNzI3ZmM1ZjU1MzNmY2Zj
YzAxZWI2YzA3MmY0Nzg3ZWY1M2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwu
bW0KQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+
CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3NldFRyYWNrLmg+CisjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZQbGF5ZXJJdGVtVHJhY2suaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk1ldGFk
YXRhSXRlbS5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikK
KworU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldFRyYWNrKQorU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtVHJhY2spCitTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhSXRlbSkKKworU09GVF9MSU5LX1BPSU5URVJfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVu
dCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwg
QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5LCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQsIE5TU3RyaW5nICopCitTT0ZUX0xJTktf
UE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5z
Y3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUNvbW1vbktleVRpdGxl
LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBB
Vk1ldGFkYXRhS2V5U3BhY2VDb21tb24sIE5TU3RyaW5nICopCisKKyNkZWZpbmUgQVZNZXRhZGF0
YUl0ZW0gZ2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpCisKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3Rl
cmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWlu
UHJvZ3JhbUNvbnRlbnQoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNW
aWRlb0ZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlk
ZW9Gb3JBY2Nlc3NpYmlsaXR5KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhp
bGlhcnlDb250ZW50IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCgp
CisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9y
QWNjZXNzaWJpbGl0eSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRp
YWxvZ0ZvckFjY2Vzc2liaWxpdHkoKQorI2RlZmluZSBBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUg
Z2V0QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNl
Q29tbW9uIGdldEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbigpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bChBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCisgICAgOiBtX3BsYXllckl0ZW1UcmFjayh0cmFj
aykKK3sKK30KKworYm9vbCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjplbmFibGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW21fcGxheWVySXRlbVRyYWNrLmdldCgpIGlzRW5hYmxlZF07Cit9
CisKK3ZvaWQgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6c2V0RW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgW21fcGxheWVySXRlbVRyYWNrLmdldCgpIHNldEVuYWJsZWQ6ZW5hYmxlZF07
Cit9CisKK0F1ZGlvVHJhY2tQcml2YXRlOjpLaW5kIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6
OmF1ZGlvS2luZCgpIGNvbnN0Cit7CisgICAgQVZBc3NldFRyYWNrKiBhc3NldFRyYWNrID0gW21f
cGxheWVySXRlbVRyYWNrLmdldCgpIGFzc2V0VHJhY2tdOworICAgIGlmIChbYXNzZXRUcmFjayBo
YXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29u
dGVudF0pCisgICAgICAgIHJldHVybiBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU7Cisg
ICAgZWxzZSBpZiAoW2Fzc2V0VHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudF0pCisgICAgICAgIHJldHVybiBBdWRpb1Ry
YWNrUHJpdmF0ZTo6TWFpbjsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBBdWRpb1RyYWNrUHJp
dmF0ZTo6Tm9uZTsKK30KKworVmlkZW9UcmFja1ByaXZhdGU6OktpbmQgQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbDo6dmlkZW9LaW5kKCkgY29uc3QKK3sKKyAgICBBVkFzc2V0VHJhY2sqIGFzc2V0
VHJhY2sgPSBbbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkgYXNzZXRUcmFja107CisgICAgaWYgKFth
c3NldFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVz
Y3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKKyAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQ
cml2YXRlOjpTaWduOworICAgIGVsc2UgaWYgKFthc3NldFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nl
c3NpYmlsaXR5XSkKKyAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczsK
KyAgICBlbHNlIGlmIChbYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudF0pCisgICAgICAgIHJldHVybiBWaWRlb1Ry
YWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU7CisgICAgZWxzZSBpZiAoW2Fzc2V0VHJhY2sgaGFzTWVk
aWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVu
dF0pCisgICAgICAgIHJldHVybiBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjsKKyAgICBlbHNlCisg
ICAgICAgIHJldHVybiBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZTsKK30KKworQXRvbWljU3RyaW5n
IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6OmlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIiVkIiwgW1ttX3BsYXllckl0ZW1UcmFjay5nZXQoKSBhc3NldFRyYWNrXSB0
cmFja0lEXSk7Cit9CisKK0F0b21pY1N0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjps
YWJlbCgpIGNvbnN0Cit7CisgICAgTlNBcnJheSAqdGl0bGVzID0gW0FWTWV0YWRhdGFJdGVtIG1l
dGFkYXRhSXRlbXNGcm9tQXJyYXk6W1ttX3BsYXllckl0ZW1UcmFjay5nZXQoKSBhc3NldFRyYWNr
XSBjb21tb25NZXRhZGF0YV0gd2l0aEtleTpBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUga2V5U3Bh
Y2U6QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uXTsKKyAgICBpZiAoIVt0aXRsZXMgY291bnRdKQor
ICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworCisgICAgLy8gSWYgcG9zc2libGUsIHJldHVybiBh
IHRpdGxlIGluIG9uZSBvZiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCisjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCisgICAgTlNBcnJheSAqdGl0bGVz
Rm9yUHJlZmVycmVkTGFuZ3VhZ2VzID0gW0FWTWV0YWRhdGFJdGVtIG1ldGFkYXRhSXRlbXNGcm9t
QXJyYXk6dGl0bGVzIGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFn
ZXM6W05TTG9jYWxlIHByZWZlcnJlZExhbmd1YWdlc11dOworI2Vsc2UKKyAgICBOU0FycmF5ICp0
aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMgPSBbQVZNZXRhZGF0YUl0ZW0gbWV0YWRhdGFJdGVt
c0Zyb21BcnJheTp0aXRsZXMgd2l0aExvY2FsZTpbTlNMb2NhbGUgY3VycmVudExvY2FsZV1dOwor
I2VuZGlmCisgICAgaWYgKFt0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMgY291bnRdKQorICAg
ICAgICByZXR1cm4gW1t0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMgb2JqZWN0QXRJbmRleDow
XSBzdHJpbmdWYWx1ZV07CisgICAgZWxzZQorICAgICAgICByZXR1cm4gW1t0aXRsZXMgb2JqZWN0
QXRJbmRleDowXSBzdHJpbmdWYWx1ZV07Cit9CisKK0F0b21pY1N0cmluZyBBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsOjpsYW5ndWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGxhbmd1YWdlRm9y
QVZBc3NldFRyYWNrKFttX3BsYXllckl0ZW1UcmFjay5nZXQoKSBhc3NldFRyYWNrXSk7Cit9CisK
K1N0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjpsYW5ndWFnZUZvckFWQXNzZXRUcmFj
ayhBVkFzc2V0VHJhY2sqIHRyYWNrKQoreworICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IFt0cmFj
ayBleHRlbmRlZExhbmd1YWdlVGFnXTsKKworICAgIC8vIElmIHRoZSBsYW5ndWFnZSBjb2RlIGlz
IHN0b3JlZCBhcyBhIFF1aWNrVGltZSA1LWJpdCBwYWNrZWQgY29kZSB0aGVyZSBhcmVuJ3QgZW5v
dWdoIGJpdHMgZm9yIGEgZnVsbAorICAgIC8vIFJGQyA0NjQ2IGxhbmd1YWdlIHRhZyBzbyBleHRl
bmRlZExhbmd1YWdlVGFnIHJldHVybnMgTlVMTC4gSW4gdGhpcyBjYXNlIGxhbmd1YWdlQ29kZSB3
aWxsIHJldHVybiB0aGUKKyAgICAvLyBJU08gNjM5LTIvVCBsYW5ndWFnZSBjb2RlIHNvIGNoZWNr
IGl0LgorICAgIGlmICghbGFuZ3VhZ2UpCisgICAgICAgIGxhbmd1YWdlID0gW3RyYWNrIGxhbmd1
YWdlQ29kZV07CisKKyAgICAvLyBTb21lIGxlZ2FjeSB0cmFja3MgaGF2ZSAidW5kIiBhcyBhIGxh
bmd1YWdlLCB0cmVhdCB0aGF0IHRoZSBzYW1lIGFzIG5vIGxhbmd1YWdlIGF0IGFsbC4KKyAgICBp
ZiAoIWxhbmd1YWdlIHx8IFtsYW5ndWFnZSBpc0VxdWFsVG9TdHJpbmc6QCJ1bmQiXSkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbGFuZ3VhZ2U7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9WaWRlb1RyYWNrUHJpdmF0ZUFWRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1ZpZGVvVHJh
Y2tQcml2YXRlQVZGLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMyOTM5MjUxNmQ4ZDFmMTFiMGQ1MGRlZGIyNWE3
YTE3YjdkMTNlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9WaWRlb1RyYWNrUHJpdmF0ZUFWRi5oCkBAIC0wLDAgKzEsNjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tQcml2YXRlQVZGX2gKKyNkZWZpbmUg
VmlkZW9UcmFja1ByaXZhdGVBVkZfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5j
bHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGVBVkYpCitwdWJsaWM6CisKKyAg
ICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIHZpcnR1
YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZpcnR1YWwg
QXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIHZpcnR1
YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQor
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBzZXRLaW5kKEtpbmQga2luZCkgeyBtX2tpbmQgPSBraW5k
OyB9CisgICAgdm9pZCBzZXRJZChBdG9taWNTdHJpbmcgbmV3SWQpIHsgbV9pZCA9IG5ld0lkOyB9
CisgICAgdm9pZCBzZXRMYWJlbChBdG9taWNTdHJpbmcgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVs
OyB9CisgICAgdm9pZCBzZXRMYW5ndWFnZShBdG9taWNTdHJpbmcgbGFuZ3VhZ2UpIHsgbV9sYW5n
dWFnZSA9IGxhbmd1YWdlOyB9CisKKyAgICBLaW5kIG1fa2luZDsKKyAgICBBdG9taWNTdHJpbmcg
bV9pZDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYW5n
dWFnZTsKKworICAgIFZpZGVvVHJhY2tQcml2YXRlQVZGKCkKKyAgICAgICAgOiBtX2tpbmQoTm9u
ZSkKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjZW5kaWYgLy8gVmlkZW9UcmFja1ByaXZhdGVBVkZfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCA0YzQxY2Q3MjQzMGNj
ZGFlM2ZhOTA0NTNkYmFlZGVlODk3YThkYmM4Li43ZWVhOGM1ZThhZWYyYmZlNjY3NjhjYmY4NGEx
OWVlOGYyNDk3ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMuaApAQCAtMjksMTMgKzI5LDE0IEBACiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVBVkYuaCIKLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi1PQkpDX0NMQVNTIEFWQXNz
ZXRUcmFjazsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVHJhY2s7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDsKKwogY2xhc3MgQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlQVZGIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMpCiBwdWJsaWM6CkBA
IC00NywxNiArNDgsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJv
b2wpOwogCiAgICAgdm9pZCBzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sqKTsK
LSAgICBBVlBsYXllckl0ZW1UcmFjayogcGxheWVySXRlbVRyYWNrKCkgeyByZXR1cm4gbV9wbGF5
ZXJJdGVtVHJhY2suZ2V0KCk7IH0KLQotICAgIHN0YXRpYyBTdHJpbmcgbGFuZ3VhZ2VGb3JBVkFz
c2V0VHJhY2soQVZBc3NldFRyYWNrKik7CisgICAgQVZQbGF5ZXJJdGVtVHJhY2sqIHBsYXllckl0
ZW1UcmFjaygpOwogCiBwcml2YXRlOgogICAgIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVlBs
YXllckl0ZW1UcmFjayopOwogCiAgICAgdm9pZCByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsK
LQotICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1UcmFjaz4gbV9wbGF5ZXJJdGVtVHJhY2s7Cisg
ICAgT3duUHRyPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+IG1faW1wbDsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQpp
bmRleCAwZWFhNjA0ZDI1OGMxMDZjMjM2N2QyMTI2NjVlOTJhYTQ5YjFkNjFkLi42YjQ3MTc1MWVi
NWIwMmUwNjc3ZTk1MjIwYmI0NzAzZGU0NzRiZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCkBAIC0yNSwxMTUgKzI1LDQyIEBA
CiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
LmgiCisjaW1wb3J0ICJBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgiCiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAKLSNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCi0jaW1wb3J0IDxvYmpjL3J1
bnRpbWUuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KLSNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1UcmFjay5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWTWV0YWRhdGFJdGVtLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3Vu
ZGF0aW9uKQotCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFzc2V0VHJhY2spCi1T
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1UcmFjaykKLVNPRlRfTElO
S19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFJdGVtKQotCi1TT0ZUX0xJTktfUE9JTlRF
UihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50
LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICopCi1T
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4
aWxpYXJ5Q29udGVudCwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlv
biwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3Np
YmlsaXR5LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1l
dGFkYXRhQ29tbW9uS2V5VGl0bGUsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgTlNTdHJpbmcgKikKLQotI2RlZmlu
ZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkKLQotI2RlZmluZSBBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCBnZXRBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCgpCi0jZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNE
ZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHkoKQotI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlh
cnlDb250ZW50KCkKLSNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9r
ZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3Jp
YmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgpCi0jZGVmaW5lIEFWTWV0YWRhdGFDb21t
b25LZXlUaXRsZSBnZXRBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUoKQotI2RlZmluZSBBVk1ldGFk
YXRhS2V5U3BhY2VDb21tb24gZ2V0QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKCkKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX3BsYXllckl0ZW1U
cmFjayh0cmFjaykKKyAgICA6IG1faW1wbChBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjpjcmVh
dGUodHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiB2b2lk
IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIHsK
LSAgICBBVkFzc2V0VHJhY2sqIGFzc2V0VHJhY2sgPSBbbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkg
YXNzZXRUcmFja107Ci0gICAgaWYgKCFhc3NldFRyYWNrKSB7Ci0gICAgICAgIHNldEVuYWJsZWQo
ZmFsc2UpOwotICAgICAgICBzZXRLaW5kKE5vbmUpOwotICAgICAgICBzZXRJZChlbXB0eUF0b20p
OwotICAgICAgICBzZXRMYWJlbChlbXB0eUF0b20pOwotICAgICAgICBzZXRMYW5ndWFnZShlbXB0
eUF0b20pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2V0RW5hYmxlZChbbV9wbGF5
ZXJJdGVtVHJhY2suZ2V0KCkgaXNFbmFibGVkXSk7Ci0gICAgc2V0SWQoU3RyaW5nOjpmb3JtYXQo
IiVkIiwgW2Fzc2V0VHJhY2sgdHJhY2tJRF0pKTsKLQotICAgIGlmIChbYXNzZXRUcmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9y
QWNjZXNzaWJpbGl0eV0pCi0gICAgICAgIHNldEtpbmQoRGVzY3JpcHRpb24pOwotICAgIGVsc2Ug
aWYgKFthc3NldFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5XSkKLSAgICAgICAgc2V0
S2luZChUcmFuc2xhdGlvbik7Ci0gICAgZWxzZSBpZiAoW2Fzc2V0VHJhY2sgaGFzTWVkaWFDaGFy
YWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnRdKQotICAg
ICAgICBzZXRLaW5kKEFsdGVybmF0aXZlKTsKLSAgICBlbHNlIGlmIChbYXNzZXRUcmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250
ZW50XSkKLSAgICAgICAgc2V0S2luZChNYWluKTsKLSAgICBlbHNlCi0gICAgICAgIHNldEtpbmQo
Tm9uZSk7Ci0KLSAgICBOU0FycmF5ICp0aXRsZXMgPSBbQVZNZXRhZGF0YUl0ZW0gbWV0YWRhdGFJ
dGVtc0Zyb21BcnJheTpbYXNzZXRUcmFjayBjb21tb25NZXRhZGF0YV0gd2l0aEtleTpBVk1ldGFk
YXRhQ29tbW9uS2V5VGl0bGUga2V5U3BhY2U6QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uXTsKLSAg
ICBpZiAoW3RpdGxlcyBjb3VudF0pIHsKLSAgICAgICAgLy8gSWYgcG9zc2libGUsIHJldHVybiBh
IHRpdGxlIGluIG9uZSBvZiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCi0gICAgICAgIE5TQXJyYXkgKnRp
dGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcyA9IFtBVk1ldGFkYXRhSXRlbSBtZXRhZGF0YUl0ZW1z
RnJvbUFycmF5OnRpdGxlcyBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFu
Z3VhZ2VzOltOU0xvY2FsZSBwcmVmZXJyZWRMYW5ndWFnZXNdXTsKLSNlbHNlCi0gICAgICAgIE5T
QXJyYXkgKnRpdGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcyA9IFtBVk1ldGFkYXRhSXRlbSBtZXRh
ZGF0YUl0ZW1zRnJvbUFycmF5OnRpdGxlcyB3aXRoTG9jYWxlOltOU0xvY2FsZSBjdXJyZW50TG9j
YWxlXV07Ci0jZW5kaWYKLSAgICAgICAgaWYgKFt0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMg
Y291bnRdKQotICAgICAgICAgICAgc2V0TGFiZWwoW1t0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFn
ZXMgb2JqZWN0QXRJbmRleDowXSBzdHJpbmdWYWx1ZV0pOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzZXRMYWJlbChbW3RpdGxlcyBvYmplY3RBdEluZGV4OjBdIHN0cmluZ1ZhbHVlXSk7Ci0g
ICAgfQotCi0gICAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2VGb3JBVkFzc2V0VHJhY2soYXNzZXRUcmFj
aykpOworICAgIHNldEVuYWJsZWQobV9pbXBsLT5lbmFibGVkKCkpOworICAgIHNldEtpbmQobV9p
bXBsLT5hdWRpb0tpbmQoKSk7CisgICAgc2V0SWQobV9pbXBsLT5pZCgpKTsKKyAgICBzZXRMYWJl
bChtX2ltcGwtPmxhYmVsKCkpOworICAgIHNldExhbmd1YWdlKG1faW1wbC0+bGFuZ3VhZ2UoKSk7
CiB9CiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2so
QVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1fcGxheWVySXRlbVRyYWNrID0gdHJh
Y2s7CisgICAgbV9pbXBsID0gQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6Y3JlYXRlKHRyYWNr
KTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAotdm9pZCBBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQorQVZQbGF5ZXJJdGVtVHJh
Y2sqIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNrKCkKIHsKLSAgICBB
dWRpb1RyYWNrUHJpdmF0ZUFWRjo6c2V0RW5hYmxlZChlbmFibGVkKTsKLSAgICBbbV9wbGF5ZXJJ
dGVtVHJhY2suZ2V0KCkgc2V0RW5hYmxlZDplbmFibGVkXTsKKyAgICByZXR1cm4gbV9pbXBsLT5w
bGF5ZXJJdGVtVHJhY2soKTsKIH0KIAotU3RyaW5nIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6
bGFuZ3VhZ2VGb3JBVkFzc2V0VHJhY2soQVZBc3NldFRyYWNrKiB0cmFjaykKK3ZvaWQgQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBOU1N0
cmluZyAqbGFuZ3VhZ2UgPSBbdHJhY2sgZXh0ZW5kZWRMYW5ndWFnZVRhZ107Ci0KLSAgICAvLyBJ
ZiB0aGUgbGFuZ3VhZ2UgY29kZSBpcyBzdG9yZWQgYXMgYSBRdWlja1RpbWUgNS1iaXQgcGFja2Vk
IGNvZGUgdGhlcmUgYXJlbid0IGVub3VnaCBiaXRzIGZvciBhIGZ1bGwKLSAgICAvLyBSRkMgNDY0
NiBsYW5ndWFnZSB0YWcgc28gZXh0ZW5kZWRMYW5ndWFnZVRhZyByZXR1cm5zIE5VTEwuIEluIHRo
aXMgY2FzZSBsYW5ndWFnZUNvZGUgd2lsbCByZXR1cm4gdGhlCi0gICAgLy8gSVNPIDYzOS0yL1Qg
bGFuZ3VhZ2UgY29kZSBzbyBjaGVjayBpdC4KLSAgICBpZiAoIWxhbmd1YWdlKQotICAgICAgICBs
YW5ndWFnZSA9IFt0cmFjayBsYW5ndWFnZUNvZGVdOwotCi0gICAgLy8gU29tZSBsZWdhY3kgdHJh
Y2tzIGhhdmUgInVuZCIgYXMgYSBsYW5ndWFnZSwgdHJlYXQgdGhhdCB0aGUgc2FtZSBhcyBubyBs
YW5ndWFnZSBhdCBhbGwuCi0gICAgaWYgKCFsYW5ndWFnZSB8fCBbbGFuZ3VhZ2UgaXNFcXVhbFRv
U3RyaW5nOkAidW5kIl0pCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgcmV0
dXJuIGxhbmd1YWdlOworICAgIEF1ZGlvVHJhY2tQcml2YXRlQVZGOjpzZXRFbmFibGVkKGVuYWJs
ZWQpOworICAgIG1faW1wbC0+c2V0RW5hYmxlZChlbmFibGVkKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCmluZGV4IGZiMGI0NGM1ZDUxMzRmZTQ4YWMwMDQ0MzVlZjA4MDBmM2UxMjM5NmIu
LjY2ZjNkMmMxODFhYTYzMmZjNjNkMDg1MTBiNmI5MWE4YjUzMTE0NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akM7CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM7CitjbGFzcyBWaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakM7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMg
OiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIHsKIHB1YmxpYzoKQEAgLTE4
NSw2ICsxODYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NMZWdhY3lDbG9zZWRDYXB0
aW9uc1RyYWNrcygpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdm9p
ZCB1cGRhdGVBdWRpb1RyYWNrcygpOworICAgIHZvaWQgdXBkYXRlVmlkZW9UcmFja3MoKTsKKyNl
bmRpZgorCiAgICAgUmV0YWluUHRyPEFWVVJMQXNzZXQ+IG1fYXZBc3NldDsKICAgICBSZXRhaW5Q
dHI8QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbT4gbV9h
dlBsYXllckl0ZW07CkBAIC0yMTgsNiArMjI0LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQz4+
IG1fYXVkaW9UcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM+PiBtX3ZpZGVvVHJhY2tzOwogI2VuZGlmCiAKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGKiBtX2N1cnJlbnRUcmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDc3NjJmMDdk
ZDQzMGY5NWEyZTMwMmFkN2Q1OGU1N2M2OTMxNDE4YzkuLjM5OTdhMjY3ZmY2OTQyNjU2MWE3MzBh
NzZiMzdlMTJhOTg4YmY1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzAsNiArMzAs
NyBAQAogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIgogCiAj
aW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCIKKyNpbXBvcnQgIkFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwuaCIKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAi
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIK
QEAgLTQ0LDYgKzQ1LDcgQEAKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJUaW1l
UmFuZ2VzLmgiCiAjaW1wb3J0ICJVVUlELmgiCisjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuaCIKICNpbXBvcnQgIldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CkBAIC0x
MDUyLDQzICsxMDU0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp0cmFja3NDaGFuZ2VkKCkKIAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICAgICBS
ZXRhaW5QdHI8TlNTZXQ+IGF1ZGlvVHJhY2tzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0
V2l0aEFycmF5Olt0cmFja3Mgb2JqZWN0c0F0SW5kZXhlczpbdHJhY2tzIGluZGV4ZXNPZk9iamVj
dHNQYXNzaW5nVGVzdDpeKGlkIHRyYWNrLCBOU1VJbnRlZ2VyLCBCT09MKil7Ci0gICAgICAgICAg
ICByZXR1cm4gW1tbdHJhY2sgYXNzZXRUcmFja10gbWVkaWFUeXBlXSBpc0VxdWFsVG9TdHJpbmc6
QVZNZWRpYVR5cGVBdWRpb107Ci0gICAgICAgIH1dXV0pOwotICAgICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlU2V0PiBvbGRBdWRpb1RyYWNrcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6bV9hdWRpb1RyYWNrcy5zaXplKCldKTsKLQotICAgICAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDPiA+IEF1ZGlvVHJhY2tW
ZWN0b3I7Ci0gICAgICAgIGZvciAoQXVkaW9UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaSA9IG1fYXVk
aW9UcmFja3MuYmVnaW4oKTsgaSAhPSBtX2F1ZGlvVHJhY2tzLmVuZCgpOyArK2kpCi0gICAgICAg
ICAgICBbb2xkQXVkaW9UcmFja3MuZ2V0KCkgYWRkT2JqZWN0OigqaSktPnBsYXllckl0ZW1UcmFj
aygpXTsKLQotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiByZW1vdmVkQVZBdWRpb1Ry
YWNrcyA9IGFkb3B0TlMoW29sZEF1ZGlvVHJhY2tzLmdldCgpIG11dGFibGVDb3B5XSk7Ci0gICAg
ICAgIFtyZW1vdmVkQVZBdWRpb1RyYWNrcy5nZXQoKSBtaW51c1NldDphdWRpb1RyYWNrcy5nZXQo
KV07Ci0KLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gYWRkZWRBVkF1ZGlvVHJhY2tz
ID0gYWRvcHROUyhbYXVkaW9UcmFja3MuZ2V0KCkgbXV0YWJsZUNvcHldKTsKLSAgICAgICAgW2Fk
ZGVkQVZBdWRpb1RyYWNrcy5nZXQoKSBtaW51c1NldDpvbGRBdWRpb1RyYWNrcy5nZXQoKV07Ci0K
LSAgICAgICAgQXVkaW9UcmFja1ZlY3RvciByZXBsYWNlbWVudEF1ZGlvVHJhY2tzOwotICAgICAg
ICBBdWRpb1RyYWNrVmVjdG9yIGFkZGVkQXVkaW9UcmFja3M7Ci0gICAgICAgIEF1ZGlvVHJhY2tW
ZWN0b3IgcmVtb3ZlZEF1ZGlvVHJhY2tzOwotICAgICAgICBmb3IgKEF1ZGlvVHJhY2tWZWN0b3I6
Oml0ZXJhdG9yIGkgPSBtX2F1ZGlvVHJhY2tzLmJlZ2luKCk7IGkgIT0gbV9hdWRpb1RyYWNrcy5l
bmQoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoW3JlbW92ZWRBVkF1ZGlvVHJhY2tzIGNvbnRh
aW5zT2JqZWN0OigqaSktPnBsYXllckl0ZW1UcmFjaygpXSkKLSAgICAgICAgICAgICAgICByZW1v
dmVkQXVkaW9UcmFja3MuYXBwZW5kKCppKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICByZXBsYWNlbWVudEF1ZGlvVHJhY2tzLmFwcGVuZCgqaSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmb3IgKEFWUGxheWVySXRlbVRyYWNrKiBwbGF5ZXJJdGVtVHJhY2sgaW4gYWRkZWRBVkF1
ZGlvVHJhY2tzLmdldCgpKQotICAgICAgICAgICAgYWRkZWRBdWRpb1RyYWNrcy5hcHBlbmQoQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUocGxheWVySXRlbVRyYWNrKSk7Ci0KLSAgICAg
ICAgcmVwbGFjZW1lbnRBdWRpb1RyYWNrcy5hcHBlbmRWZWN0b3IoYWRkZWRBdWRpb1RyYWNrcyk7
Ci0KLSAgICAgICAgbV9hdWRpb1RyYWNrcy5zd2FwKHJlcGxhY2VtZW50QXVkaW9UcmFja3MpOwot
Ci0gICAgICAgIGZvciAoQXVkaW9UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaSA9IHJlbW92ZWRBdWRp
b1RyYWNrcy5iZWdpbigpOyBpICE9IHJlbW92ZWRBdWRpb1RyYWNrcy5lbmQoKTsgKytpKQotICAg
ICAgICAgICAgcGxheWVyKCktPnJlbW92ZUF1ZGlvVHJhY2soKmkpOwotCi0gICAgICAgIGZvciAo
QXVkaW9UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaSA9IGFkZGVkQXVkaW9UcmFja3MuYmVnaW4oKTsg
aSAhPSBhZGRlZEF1ZGlvVHJhY2tzLmVuZCgpOyArK2kpCi0gICAgICAgICAgICBwbGF5ZXIoKS0+
YWRkQXVkaW9UcmFjaygqaSk7CisgICAgICAgIHVwZGF0ZUF1ZGlvVHJhY2tzKCk7CisgICAgICAg
IHVwZGF0ZVZpZGVvVHJhY2tzKCk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTExMjEsNiArMTA4OCw5
MiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRyYWNrc0NoYW5n
ZWQoKQogICAgIHNldERlbGF5Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZE5vdGlmaWNhdGlvbihmYWxz
ZSk7CiB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUF1ZGlvVHJhY2tzKCkKK3sKKyAgICBOU0FycmF5ICp0
cmFja3MgPSBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgdHJhY2tzXTsKKyAgICBSZXRhaW5QdHI8TlNT
ZXQ+IGF1ZGlvVHJhY2tzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5Olt0
cmFja3Mgb2JqZWN0c0F0SW5kZXhlczpbdHJhY2tzIGluZGV4ZXNPZk9iamVjdHNQYXNzaW5nVGVz
dDpeKGlkIHRyYWNrLCBOU1VJbnRlZ2VyLCBCT09MKil7CisgICAgICAgIHJldHVybiBbW1t0cmFj
ayBhc3NldFRyYWNrXSBtZWRpYVR5cGVdIGlzRXF1YWxUb1N0cmluZzpBVk1lZGlhVHlwZUF1ZGlv
XTsKKyAgICB9XV1dKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBvbGRBdWRpb1RyYWNr
cyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bV9hdWRp
b1RyYWNrcy5zaXplKCldKTsKKworICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakM+ID4gQXVkaW9UcmFja1ZlY3RvcjsKKyAgICBmb3IgKEF1ZGlvVHJhY2tW
ZWN0b3I6Oml0ZXJhdG9yIGkgPSBtX2F1ZGlvVHJhY2tzLmJlZ2luKCk7IGkgIT0gbV9hdWRpb1Ry
YWNrcy5lbmQoKTsgKytpKQorICAgICAgICBbb2xkQXVkaW9UcmFja3MuZ2V0KCkgYWRkT2JqZWN0
OigqaSktPnBsYXllckl0ZW1UcmFjaygpXTsKKworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+
IHJlbW92ZWRBVkF1ZGlvVHJhY2tzID0gYWRvcHROUyhbb2xkQXVkaW9UcmFja3MuZ2V0KCkgbXV0
YWJsZUNvcHldKTsKKyAgICBbcmVtb3ZlZEFWQXVkaW9UcmFja3MuZ2V0KCkgbWludXNTZXQ6YXVk
aW9UcmFja3MuZ2V0KCldOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gYWRkZWRBVkF1
ZGlvVHJhY2tzID0gYWRvcHROUyhbYXVkaW9UcmFja3MuZ2V0KCkgbXV0YWJsZUNvcHldKTsKKyAg
ICBbYWRkZWRBVkF1ZGlvVHJhY2tzLmdldCgpIG1pbnVzU2V0Om9sZEF1ZGlvVHJhY2tzLmdldCgp
XTsKKworICAgIEF1ZGlvVHJhY2tWZWN0b3IgcmVwbGFjZW1lbnRBdWRpb1RyYWNrczsKKyAgICBB
dWRpb1RyYWNrVmVjdG9yIGFkZGVkQXVkaW9UcmFja3M7CisgICAgQXVkaW9UcmFja1ZlY3RvciBy
ZW1vdmVkQXVkaW9UcmFja3M7CisgICAgZm9yIChBdWRpb1RyYWNrVmVjdG9yOjppdGVyYXRvciBp
ID0gbV9hdWRpb1RyYWNrcy5iZWdpbigpOyBpICE9IG1fYXVkaW9UcmFja3MuZW5kKCk7ICsraSkg
eworICAgICAgICBpZiAoW3JlbW92ZWRBVkF1ZGlvVHJhY2tzIGNvbnRhaW5zT2JqZWN0OigqaSkt
PnBsYXllckl0ZW1UcmFjaygpXSkKKyAgICAgICAgICAgIHJlbW92ZWRBdWRpb1RyYWNrcy5hcHBl
bmQoKmkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNlbWVudEF1ZGlvVHJhY2tz
LmFwcGVuZCgqaSk7CisgICAgfQorCisgICAgZm9yIChBVlBsYXllckl0ZW1UcmFjayogcGxheWVy
SXRlbVRyYWNrIGluIGFkZGVkQVZBdWRpb1RyYWNrcy5nZXQoKSkKKyAgICAgICAgYWRkZWRBdWRp
b1RyYWNrcy5hcHBlbmQoQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUocGxheWVySXRl
bVRyYWNrKSk7CisKKyAgICByZXBsYWNlbWVudEF1ZGlvVHJhY2tzLmFwcGVuZFZlY3RvcihhZGRl
ZEF1ZGlvVHJhY2tzKTsKKworICAgIG1fYXVkaW9UcmFja3Muc3dhcChyZXBsYWNlbWVudEF1ZGlv
VHJhY2tzKTsKKworICAgIGZvciAoQXVkaW9UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaSA9IHJlbW92
ZWRBdWRpb1RyYWNrcy5iZWdpbigpOyBpICE9IHJlbW92ZWRBdWRpb1RyYWNrcy5lbmQoKTsgKytp
KQorICAgICAgICBwbGF5ZXIoKS0+cmVtb3ZlQXVkaW9UcmFjaygqaSk7CisKKyAgICBmb3IgKEF1
ZGlvVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGkgPSBhZGRlZEF1ZGlvVHJhY2tzLmJlZ2luKCk7IGkg
IT0gYWRkZWRBdWRpb1RyYWNrcy5lbmQoKTsgKytpKQorICAgICAgICBwbGF5ZXIoKS0+YWRkQXVk
aW9UcmFjaygqaSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6dXBkYXRlVmlkZW9UcmFja3MoKQoreworICAgIE5TQXJyYXkgKnRyYWNrcyA9IFttX2F2UGxh
eWVySXRlbS5nZXQoKSB0cmFja3NdOworICAgIFJldGFpblB0cjxOU1NldD4gdmlkZW9UcmFja3Mg
PSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6W3RyYWNrcyBvYmplY3RzQXRJ
bmRleGVzOlt0cmFja3MgaW5kZXhlc09mT2JqZWN0c1Bhc3NpbmdUZXN0Ol4oaWQgdHJhY2ssIE5T
VUludGVnZXIsIEJPT0wqKXsKKyAgICAgICAgcmV0dXJuIFtbW3RyYWNrIGFzc2V0VHJhY2tdIG1l
ZGlhVHlwZV0gaXNFcXVhbFRvU3RyaW5nOkFWTWVkaWFUeXBlVmlkZW9dOworICAgIH1dXV0pOwor
ICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IG9sZFZpZGVvVHJhY2tzID0gYWRvcHROUyhbW05T
TXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTptX3ZpZGVvVHJhY2tzLnNpemUoKV0p
OworCisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQz4g
PiBWaWRlb1RyYWNrVmVjdG9yOworICAgIGZvciAoVmlkZW9UcmFja1ZlY3Rvcjo6aXRlcmF0b3Ig
aSA9IG1fdmlkZW9UcmFja3MuYmVnaW4oKTsgaSAhPSBtX3ZpZGVvVHJhY2tzLmVuZCgpOyArK2kp
CisgICAgICAgIFtvbGRWaWRlb1RyYWNrcy5nZXQoKSBhZGRPYmplY3Q6KCppKS0+cGxheWVySXRl
bVRyYWNrKCldOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gcmVtb3ZlZEFWVmlkZW9U
cmFja3MgPSBhZG9wdE5TKFtvbGRWaWRlb1RyYWNrcy5nZXQoKSBtdXRhYmxlQ29weV0pOworICAg
IFtyZW1vdmVkQVZWaWRlb1RyYWNrcy5nZXQoKSBtaW51c1NldDp2aWRlb1RyYWNrcy5nZXQoKV07
CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBhZGRlZEFWVmlkZW9UcmFja3MgPSBhZG9w
dE5TKFt2aWRlb1RyYWNrcy5nZXQoKSBtdXRhYmxlQ29weV0pOworICAgIFthZGRlZEFWVmlkZW9U
cmFja3MuZ2V0KCkgbWludXNTZXQ6b2xkVmlkZW9UcmFja3MuZ2V0KCldOworCisgICAgVmlkZW9U
cmFja1ZlY3RvciByZXBsYWNlbWVudFZpZGVvVHJhY2tzOworICAgIFZpZGVvVHJhY2tWZWN0b3Ig
YWRkZWRWaWRlb1RyYWNrczsKKyAgICBWaWRlb1RyYWNrVmVjdG9yIHJlbW92ZWRWaWRlb1RyYWNr
czsKKyAgICBmb3IgKFZpZGVvVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGkgPSBtX3ZpZGVvVHJhY2tz
LmJlZ2luKCk7IGkgIT0gbV92aWRlb1RyYWNrcy5lbmQoKTsgKytpKSB7CisgICAgICAgIGlmIChb
cmVtb3ZlZEFWVmlkZW9UcmFja3MgY29udGFpbnNPYmplY3Q6KCppKS0+cGxheWVySXRlbVRyYWNr
KCldKQorICAgICAgICAgICAgcmVtb3ZlZFZpZGVvVHJhY2tzLmFwcGVuZCgqaSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJlcGxhY2VtZW50VmlkZW9UcmFja3MuYXBwZW5kKCppKTsKKyAg
ICB9CisKKyAgICBmb3IgKEFWUGxheWVySXRlbVRyYWNrKiBwbGF5ZXJJdGVtVHJhY2sgaW4gYWRk
ZWRBVlZpZGVvVHJhY2tzLmdldCgpKQorICAgICAgICBhZGRlZFZpZGVvVHJhY2tzLmFwcGVuZChW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShwbGF5ZXJJdGVtVHJhY2spKTsKKworICAg
IHJlcGxhY2VtZW50VmlkZW9UcmFja3MuYXBwZW5kVmVjdG9yKGFkZGVkVmlkZW9UcmFja3MpOwor
CisgICAgbV92aWRlb1RyYWNrcy5zd2FwKHJlcGxhY2VtZW50VmlkZW9UcmFja3MpOworCisgICAg
Zm9yIChWaWRlb1RyYWNrVmVjdG9yOjppdGVyYXRvciBpID0gcmVtb3ZlZFZpZGVvVHJhY2tzLmJl
Z2luKCk7IGkgIT0gcmVtb3ZlZFZpZGVvVHJhY2tzLmVuZCgpOyArK2kpCisgICAgICAgIHBsYXll
cigpLT5yZW1vdmVWaWRlb1RyYWNrKCppKTsKKworICAgIGZvciAoVmlkZW9UcmFja1ZlY3Rvcjo6
aXRlcmF0b3IgaSA9IGFkZGVkVmlkZW9UcmFja3MuYmVnaW4oKTsgaSAhPSBhZGRlZFZpZGVvVHJh
Y2tzLmVuZCgpOyArK2kpCisgICAgICAgIHBsYXllcigpLT5hZGRWaWRlb1RyYWNrKCppKTsKK30K
KyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c2l6ZUNoYW5nZWQoKQogewogICAgIGlmICghbV9hdkFzc2V0KQpA
QCAtMTU2Nyw3ICsxNjIwLDcgQEAgU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0CiAgICAgfQogCiAgICAg
QVZBc3NldFRyYWNrICp0cmFjayA9IFt0cmFja3Mgb2JqZWN0QXRJbmRleDowXTsKLSAgICBtX2xh
bmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6bGFu
Z3VhZ2VGb3JBVkFzc2V0VHJhY2sodHJhY2spOworICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRp
b1RyYWNrID0gQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6bGFuZ3VhZ2VGb3JBVkFzc2V0VHJh
Y2sodHJhY2spOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2xhbmd1YWdlT2ZQcmlt
YXJ5QXVkaW9UcmFjayA9PSBlbXB0eVN0cmluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDEyMjA2Y2Zl
NTk3Yjk2NTI2ZmYwNjBjOWRkNGM0YzhhMjA0NWFkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQy5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmgiCisjaW1wb3J0
ICJBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQorOiBtX2ltcGwo
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6Y3JlYXRlKHRyYWNrKSkKK3sKKyAgICByZXNldFBy
b3BlcnRpZXNGcm9tVHJhY2soKTsKK30KKwordm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCit7CisgICAgc2V0U2VsZWN0ZWQobV9pbXBsLT5l
bmFibGVkKCkpOworICAgIHNldEtpbmQobV9pbXBsLT52aWRlb0tpbmQoKSk7CisgICAgc2V0SWQo
bV9pbXBsLT5pZCgpKTsKKyAgICBzZXRMYWJlbChtX2ltcGwtPmxhYmVsKCkpOworICAgIHNldExh
bmd1YWdlKG1faW1wbC0+bGFuZ3VhZ2UoKSk7Cit9CisKK3ZvaWQgVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQorewor
ICAgIG1faW1wbCA9IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6OmNyZWF0ZSh0cmFjayk7Cisg
ICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7Cit9CisKK0FWUGxheWVySXRlbVRyYWNrKiBW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCit7CisgICAgcmV0dXJu
IG1faW1wbC0+cGxheWVySXRlbVRyYWNrKCk7Cit9CisKK3ZvaWQgVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRTZWxlY3RlZChib29sIGVuYWJsZWQpCit7CisgICAgVmlkZW9UcmFja1ByaXZh
dGVBVkY6OnNldFNlbGVjdGVkKGVuYWJsZWQpOworICAgIG1faW1wbC0+c2V0RW5hYmxlZChlbmFi
bGVkKTsKK30KKyAgICAKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY3YTFjNGYwNTdkZWFj
MzI4NDRkNzY1N2JkZDg1ZTBiYmYyNzNkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQ19oCisjZGVmaW5lIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQ19oCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZUFW
Ri5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1U
cmFjazsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsOworCitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMgOiBwdWJsaWMgVmlkZW9U
cmFja1ByaXZhdGVBVkYgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQykKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQz4gY3JlYXRlKEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKHRyYWNrKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpOworCisgICAgdm9pZCBz
ZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sqKTsKKyAgICBBVlBsYXllckl0ZW1U
cmFjayogcGxheWVySXRlbVRyYWNrKCk7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNrKik7CisKKyAgICB2b2lkIHJlc2V0UHJvcGVydGll
c0Zyb21UcmFjaygpOworICAgIE93blB0cjxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPiBtX2lt
cGw7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQorCisjZW5k
aWYgLy8gVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMzQzNzRiMDE2NjY0MWFh
YTFkMjRlNmY0NDljMDNmNzE4YmM4YzgwLi45YjgzODE0YzU2MDVmN2ZkZDVhNmRmMTU2YzZlMGNl
MWIzODFhM2Y3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTMtMDktMzAgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKKyAgICAgICAgW01hY10gQWRkIHN1cHBvcnQgZm9yIFZp
ZGVvVHJhY2sgdG8gTWVkaWFQbGF5ZXJQcml2YXRlQVZGT2JqQworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTIyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay92aWRlby10cmFjay1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3ZpZGVvLXRyYWNrLmh0
bWw6IEFkZGVkLgorCisyMDEzLTA5LTMwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGwgYmFjayBpbiByMTU2NTQ2IHdpdGggcmViYXNl
bGluZWQgdGVzdHMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjIxMTEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdmlkZW8t
dHJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdmlkZW8tdHJhY2st
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MzJlZTAzY2NkOTNmMjdjMGFhMzhkNGRiYWY0MTk5
MmVmNmU4ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay92aWRl
by10cmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorSW4tYmFuZCB2aWRlbyB0cmFj
a3MuCisKK0VWRU5UKGFkZHRyYWNrKQorRVhQRUNURUQgKGV2ZW50LnRyYWNrID09ICd2aWRlby52
aWRlb1RyYWNrc1swXScpIE9LCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorCisqKiBDaGVjayBp
bml0aWFsIGluLWJhbmQgdHJhY2sgc3RhdGVzCitFWFBFQ1RFRCAodmlkZW8udmlkZW9UcmFja3Mu
bGVuZ3RoID09ICcxJykgT0sKKworKiogVW5sb2FkIHZpZGVvIGZpbGUsIGNoZWNrIHRyYWNrIGNv
dW50CitSVU4odmlkZW8uc3JjID0gJycpCitFWFBFQ1RFRCAodmlkZW8udmlkZW9UcmFja3MubGVu
Z3RoID09ICcwJykgT0sKKworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdmlkZW8tdHJhY2suaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Zp
ZGVvLXRyYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjljZDEzMDI1YjEzNzA0ZTljNzEyNTRiMzQ0NmI1
MjI1YWZhNzcxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Zp
ZGVvLXRyYWNrLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9
Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8t
dGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKworICAgICAgICAgICAgdmFyIGFk
ZHRyYWNrRXZlbnRDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRyYWNrQWRkZWQo
ZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVO
VCgiICsgZXZlbnQudHlwZSArICIpIik7CisgICAgICAgICAgICAgICAgY29tcGFyZVRyYWNrcygi
ZXZlbnQudHJhY2siLCAidmlkZW8udmlkZW9UcmFja3NbIiArIGFkZHRyYWNrRXZlbnRDb3VudCAr
ICJdIik7CisgICAgICAgICAgICAgICAgKythZGR0cmFja0V2ZW50Q291bnQ7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVu
Y3Rpb24gY29tcGFyZVRyYWNrcyh0cmFjazEsIHRyYWNrMikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgZXF1YWwgPSAoZXZhbCh0cmFjazEpID09IGV2YWwodHJhY2syKSk7Cisg
ICAgICAgICAgICAgICAgcmVwb3J0RXhwZWN0ZWQoZXF1YWwsIHRyYWNrMSwgIj09IiwgdHJhY2sy
LCB0cmFjazEpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjYW5wbGF5
dGhyb3VnaCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8
YnI+PGk+KiogQ2hlY2sgaW5pdGlhbCBpbi1iYW5kIHRyYWNrIHN0YXRlczwiICsgIi9pPiIpOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udmlkZW9UcmFja3MubGVuZ3RoIiwg
MSk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48aT4qKiBVbmxvYWQgdmlk
ZW8gZmlsZSwgY2hlY2sgdHJhY2sgY291bnQ8IiArICIvaT4iKTsKKyAgICAgICAgICAgICAgICBy
dW4oInZpZGVvLnNyYyA9ICcnIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by52aWRlb1RyYWNrcy5sZW5ndGgiLCAwKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiIik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmdW5jdGlvbiBzZXR1cCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAgIHZpZGVvLnZpZGVvVHJhY2tzLmFk
ZEV2ZW50TGlzdGVuZXIoImFkZHRyYWNrIiwgdHJhY2tBZGRlZCk7CisgICAgICAgICAgICAgICAg
dmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnLi4vY29udGVudC90ZXN0Jyk7Cisg
ICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJv
dWdoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJzZXR1cCgpIj4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlk
ZW8+CisgICAgICAgIDxwPkluLWJhbmQgdmlkZW8gdHJhY2tzLjwvcD4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>
<flag name="review"
          id="235326"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>