<?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>148527</bug_id>
          
          <creation_ts>2015-08-27 08:33:34 -0700</creation_ts>
          <short_desc>Media Session: MediaSession constructor &apos;kind&apos; argument optional</short_desc>
          <delta_ts>2017-06-19 09:03:37 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121304</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-27 08:33:34 -0700</bug_when>
    <thetext>The MediaSession constructor&apos;s &quot;kind&quot; argument is optional and had a default value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121305</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-27 08:34:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/22456091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121313</commentid>
    <comment_count>2</comment_count>
      <attachid>260058</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-27 09:03:43 -0700</bug_when>
    <thetext>Created attachment 260058
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121314</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 09:05:52 -0700</bug_when>
    <thetext>Attachment 260058 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSMediaSessionCustom.cpp:30:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121315</commentid>
    <comment_count>4</comment_count>
      <attachid>260058</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-08-27 09:17:49 -0700</bug_when>
    <thetext>Comment on attachment 260058
Proposed patch

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

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:49
&gt; +    // 2. Set media sessionâs current media session type to the corresponding media session type of media session category.

Unicode quotation mark? (By the way, this has to be the worst spec language since &quot;boxes in boxes&quot;.)

&gt; Source/WebCore/bindings/js/JSMediaSessionCustom.cpp:62
&gt; +    String kind;
&gt; +    if (exec-&gt;argumentCount() &gt; 0) {
&gt; +        JSString* kindString = exec-&gt;argument(0).toString(exec);
&gt; +        if (UNLIKELY(exec-&gt;hadException()))
&gt; +            return JSValue::encode(jsUndefined());
&gt; +        kind = kindString-&gt;value(exec);
&gt; +        if (kind != &quot;content&quot; &amp;&amp; kind != &quot;transient&quot; &amp;&amp; kind != &quot;transient-solo&quot; &amp;&amp; kind != &quot;ambient&quot;)
&gt; +            return throwArgumentMustBeEnumError(*exec, 0, &quot;kind&quot;, &quot;MediaSession&quot;, nullptr, &quot;\&quot;content\&quot;, \&quot;transient\&quot;, \&quot;transient-solo\&quot;, \&quot;ambient\&quot;&quot;);
&gt; +    } else
&gt; +        kind = &quot;content&quot;;
&gt; +
&gt; +    RefPtr&lt;MediaSession&gt; object = MediaSession::create(*context, kind);
&gt; +    return JSValue::encode(asObject(toJS(exec, castedThis-&gt;globalObject(), object.get())));

Ugh.  I guess there&apos;s no way to do this in bindings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121319</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-27 09:28:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 260058 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260058&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:49
&gt; &gt; +    // 2. Set media sessionâs current media session type to the corresponding media session type of media session category.
&gt; 
&gt; Unicode quotation mark? (By the way, this has to be the worst spec language
&gt; since &quot;boxes in boxes&quot;.)
&gt; 

Oops!

&gt; &gt; Source/WebCore/bindings/js/JSMediaSessionCustom.cpp:62
&gt; &gt; +    String kind;
&gt; &gt; +    if (exec-&gt;argumentCount() &gt; 0) {
&gt; &gt; +        JSString* kindString = exec-&gt;argument(0).toString(exec);
&gt; &gt; +        if (UNLIKELY(exec-&gt;hadException()))
&gt; &gt; +            return JSValue::encode(jsUndefined());
&gt; &gt; +        kind = kindString-&gt;value(exec);
&gt; &gt; +        if (kind != &quot;content&quot; &amp;&amp; kind != &quot;transient&quot; &amp;&amp; kind != &quot;transient-solo&quot; &amp;&amp; kind != &quot;ambient&quot;)
&gt; &gt; +            return throwArgumentMustBeEnumError(*exec, 0, &quot;kind&quot;, &quot;MediaSession&quot;, nullptr, &quot;\&quot;content\&quot;, \&quot;transient\&quot;, \&quot;transient-solo\&quot;, \&quot;ambient\&quot;&quot;);
&gt; &gt; +    } else
&gt; &gt; +        kind = &quot;content&quot;;
&gt; &gt; +
&gt; &gt; +    RefPtr&lt;MediaSession&gt; object = MediaSession::create(*context, kind);
&gt; &gt; +    return JSValue::encode(asObject(toJS(exec, castedThis-&gt;globalObject(), object.get())));
&gt; 
&gt; Ugh.  I guess there&apos;s no way to do this in bindings?

Not for enum arguments, only &quot;[Default=Undefined] optional&quot; or &quot;[Default=NullString] optional&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121321</commentid>
    <comment_count>6</comment_count>
      <attachid>260059</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-27 09:34:33 -0700</bug_when>
    <thetext>Created attachment 260059
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121325</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 09:51:26 -0700</bug_when>
    <thetext>Attachment 260059 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSMediaSessionCustom.cpp:30:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/js/JSMediaSessionCustom.cpp:30:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121332</commentid>
    <comment_count>8</comment_count>
      <attachid>260061</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-27 09:56:30 -0700</bug_when>
    <thetext>Created attachment 260061
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121335</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 10:01:16 -0700</bug_when>
    <thetext>Attachment 260061 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSMediaSessionCustom.cpp:30:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121336</commentid>
    <comment_count>10</comment_count>
      <attachid>260063</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-27 10:08:21 -0700</bug_when>
    <thetext>Created attachment 260063
YAPFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121347</commentid>
    <comment_count>11</comment_count>
      <attachid>260063</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 10:34:05 -0700</bug_when>
    <thetext>Comment on attachment 260063
YAPFL

Clearing flags on attachment: 260063

Committed r189031: &lt;http://trac.webkit.org/changeset/189031&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260058</attachid>
            <date>2015-08-27 09:03:43 -0700</date>
            <delta_ts>2017-06-19 09:03:37 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>constructor_patch_2.txt</filename>
            <type>text/plain</type>
            <size>19803</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4OTAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA4LTI3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIFNlc3Npb246
IE1lZGlhU2Vzc2lvbiBjb25zdHJ1Y3RvciAna2luZCcgYXJndW1lbnQgb3B0aW9uYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
dXBkYXRlZCBtZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24uaHRtbC4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb246OnBhcnNlS2luZCk6IFRyZWF0IG51bGwga2luZCAiY29udGVudCIuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6IERlbGV0ZSBEb2N1
bWVudCogdmVyc2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b24uaDogTWFrZSBjb25zdHJ1Y3RvciBwcml2YXRlLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGw6CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZCBKU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0SlNNZWRpYVNlc3Npb24pOgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZWZhdWx0TWVkaWFTZXNzaW9u
KTogQ2FsbCBNZWRpYVNlc3Npb246OmNyZWF0ZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXNzaW9u
KTogQ29tcGFyZSBzZXNzaW9uIHdpdGggZG9jdW1lbnQuZGVmYXVsdE1lZGlhU2Vzc2lvbiwgbm90
CisgICAgICAgICAgaXRzIGtpbmQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRTZXNzaW9uKTogVXBkYXRlIGNvbW1lbnRzLgorCiAyMDE1LTA4LTI3ICBFbnJpY2EgQ2Fz
dWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNvbWUgbmV3IGVtb2ppIHdp
dGggbW9kaWZpZXJzIGFuZCBuZXcgc2VxdWVuY2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE4
OTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDIxICs0NiwxOSBAQCBzdGF0aWMgY29uc3QgY2hh
ciogY29udGVudEtpbmQgPSAiY29udGVuCiBNZWRpYVNlc3Npb246OktpbmQgTWVkaWFTZXNzaW9u
OjpwYXJzZUtpbmQoY29uc3QgU3RyaW5nJiBraW5kKQogewogICAgIC8vIDQuIE1lZGlhIFNlc3Np
b24KLSAgICAvLyAyLiBJZiBubyBjb3JyZXNwb25kaW5nIG1lZGlhIHNlc3Npb24gdHlwZSBjYW4g
YmUgZm91bmQgZm9yIHRoZSBwcm92aWRlZCBtZWRpYSBzZXNzaW9uIGNhdGVnb3J5IG9yIG1lZGlh
IHNlc3Npb24KLSAgICAvLyAgICBjYXRlZ29yeSBpcyBlbXB0eSwgdGhlbiBzZXQgbWVkaWEgc2Vz
c2lvbidzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiB0eXBlIHRvICJjb250ZW50Ii4KKyAgICAvLyAy
LiBTZXQgbWVkaWEgc2Vzc2lvbuKAmXMgY3VycmVudCBtZWRpYSBzZXNzaW9uIHR5cGUgdG8gdGhl
IGNvcnJlc3BvbmRpbmcgbWVkaWEgc2Vzc2lvbiB0eXBlIG9mIG1lZGlhIHNlc3Npb24gY2F0ZWdv
cnkuCisKKyAgICBpZiAoa2luZC5pc051bGwoKSB8fCBraW5kID09IGNvbnRlbnRLaW5kKQorICAg
ICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpLaW5kOjpDb250ZW50OwogICAgIGlmIChraW5kID09
IGFtYmllbnRLaW5kKQogICAgICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpLaW5kOjpBbWJpZW50
OwogICAgIGlmIChraW5kID09IHRyYW5zaWVudEtpbmQpCiAgICAgICAgIHJldHVybiBNZWRpYVNl
c3Npb246OktpbmQ6OlRyYW5zaWVudDsKICAgICBpZiAoa2luZCA9PSB0cmFuc2llbnRTb2xvS2lu
ZCkKICAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6S2luZDo6VHJhbnNpZW50U29sbzsKLSAg
ICByZXR1cm4gTWVkaWFTZXNzaW9uOjpLaW5kOjpDb250ZW50OwotfQogCi1NZWRpYVNlc3Npb246
Ok1lZGlhU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBtX2RvY3VtZW50KGRvY3Vt
ZW50KQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmFkZE1lZGlhU2Vz
c2lvbigqdGhpcyk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1lZGlh
U2Vzc2lvbjo6S2luZDo6Q29udGVudDsKIH0KIAogTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmgJKHJldmlzaW9uIDE4OTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMyArNTMsMTEgQEAg
cHVibGljOgogICAgICAgICBBbWJpZW50CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8TWVkaWFT
ZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBraW5kKQorICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kID0gU3RyaW5nKCkpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24oY29udGV4dCwg
a2luZCkpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IE1lZGlhU2Vzc2lvbihEb2N1bWVudCYpOwot
ICAgIE1lZGlhU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7
CiAgICAgfk1lZGlhU2Vzc2lvbigpOwogCiAgICAgU3RyaW5nIGtpbmQoKSBjb25zdDsKQEAgLTkx
LDYgKzg5LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKIAorICAgIE1lZGlhU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgU3RyaW5nJik7CisKICAgICBzdGF0aWMgS2luZCBwYXJzZUtpbmQoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2b2lkIGFkZE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Jik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5pZGwJKHJldmlzaW9uIDE4OTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPU1FRElBX1NFU1NJT04sCi0gICAgQ29uc3RydWN0b3IoTWVk
aWFTZXNzaW9uS2luZCBraW5kKSwKKyAgICBDdXN0b21Db25zdHJ1Y3RvcihvcHRpb25hbCBNZWRp
YVNlc3Npb25LaW5kIGtpbmQpLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2Ug
TWVkaWFTZXNzaW9uIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4OTAyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjA0
LDYgKzIwNCw3IEBACiAJCTA3N0FGMTQwMThGNEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMuaCAqLzsgfTsKIAkJMDc3QUYxNDQxOEY0QjFCQjAwMDFFRDYxIC8q
IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYxNDIxOEY0QjFCQjAwMDFFRDYxIC8q
IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tICovOyB9OworCQkwNzdCNjQw
RjFCOEY1RDZCMDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QjY0MEUxQjhGNTM3NTAwM0U5
QUQ1IC8qIEpTTWVkaWFTZXNzaW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDc4MzIyODQxODAxM0VE
ODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODIxODAxM0VENzAwOTk5RTBDIC8q
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovOyB9OwogCQkwNzgzMjI4NTE4MDEzRUQ4MDA5
OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODMxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8q
IEpTVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLzsg
fTsKQEAgLTczODYsNiArNzM4Nyw3IEBACiAJCTA3N0FGMTNFMThGNEFFNDAwMDAxRUQ2MSAvKiBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QUYxNDIxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3N0I2NDBFMUI4RjUzNzUwMDNFOUFENSAvKiBKU01l
ZGlhU2Vzc2lvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3ODMyMjgyMTgwMTNFRDcwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzgzMjI4MzE4MDEzRUQ4MDA5
OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDg0LDYgKzIxNDg2LDcgQEAKIAkJQkM0RURF
RjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMDc3QjY0MEUxQjhGNTM3NTAwM0U5QUQ1IC8qIEpTTWVkaWFT
ZXNzaW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNB
dHRyQ3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFFRjEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRp
b0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUYwMTJCMDJFRTQwMERD
RjMzQiAvKiBKU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8sCkBAIC0yODIyNCw2ICsyODIyNyw3
IEBACiAJCQkJMTREQ0YzQjIxQjZCRTIwODAwNjJENEMyIC8qIEpTQ291bnRRdWV1aW5nU3RyYXRl
Z3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERp
YWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRUNBREZDNjE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMDc3QjY0MEYxQjhGNUQ2QjAwM0U5QUQ1IC8qIEpTTWVkaWFTZXNzaW9uQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNFQ0FERkM4MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25D
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwQkQ0RjVDMTQwODg1MEYwMDY4MzlCNiAv
KiBEaWN0YXRpb25Db21tYW5kSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMkQ2N0IxMTUz
NTY5MUYwMDU2M0QwRCAvKiBEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTZXNzaW9uQ3VzdG9tLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTZXNz
aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisKKyNpbmNsdWRlICJKU01lZGlhU2Vzc2lvbi5o
IgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNNZWRpYVNlc3Npb24oRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmpl
Y3QqPihleGVjLT5jYWxsZWUoKSk7CisgICAgYXV0byogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVy
biB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpleGVjLCAiTWVkaWFT
ZXNzaW9uIik7CisKKyAgICBTdHJpbmcga2luZDsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpID4gMCkgeworICAgICAgICBKU1N0cmluZyoga2luZFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAga2luZCA9IGtpbmRTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgICAgICBpZiAo
a2luZCAhPSAiY29udGVudCIgJiYga2luZCAhPSAidHJhbnNpZW50IiAmJiBraW5kICE9ICJ0cmFu
c2llbnQtc29sbyIgJiYga2luZCAhPSAiYW1iaWVudCIpCisgICAgICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqZXhlYywgMCwgImtpbmQiLCAiTWVkaWFTZXNzaW9u
IiwgbnVsbHB0ciwgIlwiY29udGVudFwiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaWVudC1zb2xv
XCIsIFwiYW1iaWVudFwiIik7CisgICAgfSBlbHNlCisgICAgICAgIGtpbmQgPSAiY29udGVudCI7
CisKKyAgICBSZWZQdHI8TWVkaWFTZXNzaW9uPiBvYmplY3QgPSBNZWRpYVNlc3Npb246OmNyZWF0
ZSgqY29udGV4dCwga2luZCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0
b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDE4OTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3MDEsNyArNjcwMSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGEKIE1lZGlhU2Vzc2lvbiYgRG9jdW1lbnQ6OmRlZmF1
bHRNZWRpYVNlc3Npb24oKQogewogICAgIGlmICghbV9kZWZhdWx0TWVkaWFTZXNzaW9uKQotICAg
ICAgICBtX2RlZmF1bHRNZWRpYVNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbigq
dGhpcykpOworICAgICAgICBtX2RlZmF1bHRNZWRpYVNlc3Npb24gPSBNZWRpYVNlc3Npb246OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHJldHVybiAqbV9kZWZhdWx0
TWVkaWFTZXNzaW9uOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxODkwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTA5LDM2ICs2NTA5LDMyIEBAIGRvdWJs
ZSBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZXJWb2x1bWUoKSAKIE1lZGlhU2Vzc2lvbiogSFRNTE1l
ZGlhRWxlbWVudDo6c2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgTWVkaWFTZXNzaW9uKiBzZXNzaW9u
ID0gbV9zZXNzaW9uLmdldCgpOwotICAgIGlmIChzZXNzaW9uICYmIHNlc3Npb24tPmtpbmRFbnVt
KCkgPT0gTWVkaWFTZXNzaW9uOjpLaW5kOjpEZWZhdWx0KQorICAgIGlmIChzZXNzaW9uICYmIHNl
c3Npb24gPT0gJmRvY3VtZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKwogICAgIHJldHVybiBzZXNzaW9uOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFNlc3Npb24oTWVkaWFTZXNzaW9uKiBzZXNzaW9uKQogewotICAgIC8vIDYuMQor
ICAgIC8vIDYuMS4gRXh0ZW5zaW9ucyB0byB0aGUgSFRNTE1lZGlhRWxlbWVudCBpbnRlcmZhY2UK
ICAgICAvLyAxLiBMZXQgbSBiZSB0aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVzdGlvbi4KLSAgICAv
LyAyLiBMZXQgb2xkIG1lZGlhIHNlc3Npb24gYmUgbSdzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiwg
aWYgaXQgaGFzIG9uZSwgYW5kIG51bGwgb3RoZXJ3aXNlLgotICAgIC8vIDMuIExldCBuZXcgbWVk
aWEgc2Vzc2lvbiBiZSBudWxsLgotICAgIC8vIDQuIFNldCBtJ3MgY3VycmVudCBtZWRpYSBzZXNz
aW9uIHRvIG51bGwsIGlmIGl0IGN1cnJlbnRseSBoYXMgb25lLgotICAgIC8vIDUuIExldCBtJ3Mg
Y3VycmVudCBtZWRpYSBzZXNzaW9uIGJlIHRoZSBuZXcgdmFsdWUgb3IgdGhlIHRvcC1sZXZlbCBi
cm93c2luZyBjb250ZXh0J3MgbWVkaWEgc2Vzc2lvbiBpZiB0aGUgbmV3Ci0gICAgLy8gICAgdmFs
dWUgaXMgbnVsbC4KLSAgICAvLyA2LiBJZiB0aGUgbmV3IHZhbHVlIGlzIG51bGwsIHRoZW4gc2V0
IHRoZSBtJ3Mga2luZCBJREwgYXR0cmlidXRlIHRvIHRoZSBlbXB0eSBzdHJpbmcuIE90aGVyd2lz
ZSwgc2V0IG0ncyBraW5kIElETAotICAgIC8vICAgIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUgb2Yg
Y3VycmVudCBtZWRpYSBzZXNzaW9uJ3Mga2luZCBhdHRyaWJ1dGUuCi0gICAgLy8gNy4gTGV0IG5l
dyBtZWRpYSBzZXNzaW9uIGJlIG0ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24uCi0gICAgLy8gOC4g
VXBkYXRlIG1lZGlhIHNlc3Npb25zOiBJZiBvbGQgbWVkaWEgc2Vzc2lvbiBhbmQgbmV3IG1lZGlh
IHNlc3Npb24gYXJlIHRoZSBzYW1lICh3aGV0aGVyIGJvdGggbnVsbCBvciBib3RoIHRoZQotICAg
IC8vICAgIHNhbWUgbWVkaWEgc2Vzc2lvbiksIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgot
ICAgIC8vIDkuIElmIG0gaXMgYW4gYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudCBv
ZiBvbGQgbWVkaWEgc2Vzc2lvbiwgdGhlbiBwYXVzZSBtIGFuZCByZW1vdmUgbSBmcm9tIG9sZCBt
ZWRpYQotICAgIC8vICAgIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lw
YW50cy4KLSAgICAvLyAxMC4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwgYW5kIG5v
IGxvbmdlciBoYXMgb25lIG9yIG1vcmUgYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFu
dHMsIHRoZW4gcnVuCi0gICAgLy8gICAgIHRoZSBtZWRpYSBzZXNzaW9uIHJlbGVhc2UgYWxnb3Jp
dGhtIGZvciBvbGQgbWVkaWEgc2Vzc2lvbi4KKyAgICAvLyAyLiBMZXQgb2xkIG1lZGlhIHNlc3Np
b24gYmUgbeKAmXMgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBpdCBoYXMgb25lLCBhbmQgbnVs
bCBvdGhlcndpc2UuCisgICAgLy8gMy4gTGV0IG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiBi
ZSB0aGUgbmV3IHZhbHVlIG9yIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dOKAmXMgbWVk
aWEgc2Vzc2lvbiBpZiB0aGUgbmV3IHZhbHVlIGlzIG51bGwuCisgICAgLy8gNC4gTGV0IG5ldyBt
ZWRpYSBzZXNzaW9uIGJlIG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbi4KKworICAgIC8vIDUu
IFVwZGF0ZSBtZWRpYSBzZXNzaW9uczogSWYgb2xkIG1lZGlhIHNlc3Npb24gYW5kIG5ldyBtZWRp
YSBzZXNzaW9uIGFyZSB0aGUgc2FtZSAod2hldGhlciBib3RoIG51bGwgb3IgYm90aCB0aGUgc2Ft
ZSBtZWRpYSBzZXNzaW9uKSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgaWYgKG1f
c2Vzc2lvbi5nZXQoKSA9PSBzZXNzaW9uKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9z
ZXNzaW9uKSB7CisgICAgICAgIC8vIDYuIElmIG0gaXMgYW4gYXVkaW8tcHJvZHVjaW5nIHBhcnRp
Y2lwYW50IG9mIG9sZCBtZWRpYSBzZXNzaW9uLCB0aGVuIHBhdXNlIG0gYW5kIHJlbW92ZSBtIGZy
b20gb2xkIG1lZGlhIHNlc3Npb27igJlzIGxpc3Qgb2YgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lw
YW50cy4KICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+aXNNZWRpYUVsZW1lbnRBY3RpdmUoKnRoaXMp
KQogICAgICAgICAgICAgcGF1c2UoKTsKIAogICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZU1lZGlh
RWxlbWVudCgqdGhpcyk7CiAKKyAgICAgICAgLy8gNy4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMg
bm90IG51bGwgYW5kIG5vIGxvbmdlciBoYXMgb25lIG9yIG1vcmUgYXVkaW8tcHJvZHVjaW5nIHBh
cnRpY2lwYW50cywgdGhlbiBydW4gdGhlIG1lZGlhIHNlc3Npb24gZGVhY3RpdmF0aW9uIGFsZ29y
aXRobSBmb3Igb2xkIG1lZGlhIHNlc3Npb24uCiAgICAgICAgIGlmICghbV9zZXNzaW9uLT5oYXNB
Y3RpdmVNZWRpYUVsZW1lbnRzKCkpCiAgICAgICAgICAgICBtX3Nlc3Npb24tPnJlbGVhc2VTZXNz
aW9uKCk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5MDI0KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDgtMjcgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgU2Vz
c2lvbjogTWVkaWFTZXNzaW9uIGNvbnN0cnVjdG9yICdraW5kJyBhcmd1bWVudCBvcHRpb25hbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9z
ZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy5odG1sOiBSZXN0cnVjdHVyZSB0byBtYWtlIGxl
c3MgdGltaW5nIGRlcGVuZGVudC4gTWlub3IgY2xlYW51cC4KKyAgICAgICAgKiBtZWRpYS9zZXNz
aW9uL3Nlc3Npb24tY3JlYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3Nlc3Np
b24vc2Vzc2lvbi1jcmVhdGlvbi5odG1sOiBUZXN0IGRlZmF1bHQgTWVkaWFTZXNzaW9uIGNvbnN0
cnVjdG9yIGFyZ3VtZW50LgorCiAyMDE1LTA4LTI3ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNvbWUgbmV3IGVtb2ppIHdpdGggbW9kaWZpZXJzIGFu
ZCBuZXcgc2VxdWVuY2UuCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQt
aW50ZXJydXB0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vY29udGVudC1pbnRlcnJ1cHRpb25zLmh0bWwJKHJldmlzaW9uIDE4OTAyMSkKKysrIExheW91
dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTgsMjcgKzgsMjUgQEAKICAgICAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IAogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotCisgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50
KCk7CiAgICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwog
CiAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIldhaXRpbmcgZm9yIENvbnRlbnQgbWVkaWEgdG8g
YmVnaW4gcGxheWluZy4iKQotICAgICAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZpZGVvIik7CiAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxl
KCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7CiAgICAgICAgICAgICB2aWRlby5zZXNz
aW9uID0gc2Vzc2lvbjsKICAgICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9IGJlZ2FuUGxheWlu
ZzsKKyAgICAgICAgICAgIHZpZGVvLm9uY2FucGxheXRocm91Z2ggPSBjYW5wbGF5dGhyb3VnaDsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkgCisgICAgICAg
IHsKICAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0
aW9uIGJlZ2FuUGxheWluZyhldmVudCkKICAgICAgICAgewogICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZpZGVvIikub25wYXVzZSA9IHBhdXNlZDsKKyAgICAgICAgICAgIHZpZGVvLm9u
cGF1c2UgPSBwYXVzZWQ7CiAKICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVu
dFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwpAQCAtNTEsNiArNDksNiBAQAogPC9oZWFkPgog
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogICAgIDxwPidDb250ZW50JyBzdGFydCBvZiBpbnRl
cnJ1cHRpb24gZXZlbnRzIHNob3VsZCBpbmRlZmluaXRlbHkgcGF1c2UgJ0NvbnRlbnQnIG1lZGlh
IHNlc3Npb25zLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgorICAgIDx2aWRlbyBpZD0i
dmlkZW8iIGNvbnRyb2xzPiA8L3ZpZGVvPgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxODkwMjEpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nl
c3Npb24tY3JlYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIwICsxLDMw
IEBACiBOZXcgbWVkaWEgc2Vzc2lvbnMgc2hvdWxkIGJlIGluIGFuIElkbGUgc3RhdGUgYWZ0ZXIg
Y3JlYXRpb24uCiAKKwogLS0tCi1UZXN0aW5nICdjb250ZW50JyBzZXNzaW9uCitUZXN0aW5nICJu
ZXcgTWVkaWFTZXNzaW9uKCdjb250ZW50JykiCitFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCiAtLS0KKworLS0tCitUZXN0
aW5nICJuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQnKSIKIEVYUEVDVEVEIChpbnRlcm5hbHMu
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKIC0tLQotVGVz
dGluZyAndHJhbnNpZW50JyBzZXNzaW9uCisKIC0tLQorVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lv
bigndHJhbnNpZW50LXNvbG8nKSIKIEVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3Vy
cmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKIC0tLQotVGVzdGluZyAndHJhbnNpZW50
LXNvbG8nIHNlc3Npb24KKwogLS0tCitUZXN0aW5nICJuZXcgTWVkaWFTZXNzaW9uKCdhbWJpZW50
JykiCiBFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9u
KSA9PSAnaWRsZScpIE9LCiAtLS0KLVRlc3RpbmcgJ2FtYmllbnQnIHNlc3Npb24KKwogLS0tCitU
ZXN0aW5nICJuZXcgTWVkaWFTZXNzaW9uKCkiCiBFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCistLS0KKwogRU5EIE9GIFRF
U1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0
aW9uLmh0bWwJKHJldmlzaW9uIDE4OTAyMSkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24v
c2Vzc2lvbi1jcmVhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDIwICs5LDI3IEBACiAg
ICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoInRyYW5zaWVudCIpOwogICAgICAgICAgICAgdGVz
dFNlc3Npb25LaW5kKCJ0cmFuc2llbnQtc29sbyIpOwogICAgICAgICAgICAgdGVzdFNlc3Npb25L
aW5kKCJhbWJpZW50Iik7CisgICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoKTsKIAorICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAg
fQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RTZXNzaW9uS2luZChzZXNzaW9uS2luZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCItLS0iKTsKLSAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiVGVzdGluZyAnIiArIHNlc3Npb25LaW5kICsgIicgc2Vzc2lvbiIpOwotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCItLS0iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJy
Pi0tLSIpOwogCi0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbihzZXNzaW9u
S2luZCk7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbktpbmQgIT0gdW5kZWZpbmVkKSB7CisgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0aW5nIFwibmV3IE1lZGlhU2Vzc2lvbignIiAr
IHNlc3Npb25LaW5kICsgIicpXCIiKTsKKyAgICAgICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1l
ZGlhU2Vzc2lvbihzZXNzaW9uS2luZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdGluZyBcIm5ldyBNZWRpYVNlc3Npb24oKVwiIik7Cisg
ICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oKTsKKyAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24p
JywgImlkbGUiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLS0tIik7CiAgICAgICAgIH0K
ICAgICA8L3NjcmlwdD4KIDwvaGVhZD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260059</attachid>
            <date>2015-08-27 09:34:33 -0700</date>
            <delta_ts>2015-08-27 09:58:07 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>constructor_patch_3.txt</filename>
            <type>text/plain</type>
            <size>19789</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4OTAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA4LTI3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIFNlc3Npb246
IE1lZGlhU2Vzc2lvbiBjb25zdHJ1Y3RvciAna2luZCcgYXJndW1lbnQgb3B0aW9uYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0
ZWQgbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTZXNzaW9uOjpwYXJzZUtpbmQpOiBUcmVhdCBudWxsIGtpbmQgImNvbnRlbnQiLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOiBEZWxldGUgRG9jdW1lbnQq
IHZlcnNpb24uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6
IE1ha2UgY29uc3RydWN0b3IgcHJpdmF0ZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uaWRsOgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN0cnVjdEpTTWVkaWFTZXNzaW9uKToKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVmYXVsdE1lZGlhU2Vzc2lvbik6IENh
bGwgTWVkaWFTZXNzaW9uOjpjcmVhdGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vzc2lvbik6IENv
bXBhcmUgc2Vzc2lvbiB3aXRoIGRvY3VtZW50LmRlZmF1bHRNZWRpYVNlc3Npb24sIG5vdAorICAg
ICAgICAgIGl0cyBraW5kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0
U2Vzc2lvbik6IFVwZGF0ZSBjb21tZW50cy4KKwogMjAxNS0wOC0yNyAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzb21lIG5ldyBlbW9qaSB3aXRoIG1v
ZGlmaWVycyBhbmQgbmV3IHNlcXVlbmNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAxODkwMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NiwyMSArNDYsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnRlbnRLaW5kID0gImNvbnRlbgogTWVkaWFTZXNzaW9uOjpLaW5kIE1lZGlhU2Vzc2lvbjo6cGFy
c2VLaW5kKGNvbnN0IFN0cmluZyYga2luZCkKIHsKICAgICAvLyA0LiBNZWRpYSBTZXNzaW9uCi0g
ICAgLy8gMi4gSWYgbm8gY29ycmVzcG9uZGluZyBtZWRpYSBzZXNzaW9uIHR5cGUgY2FuIGJlIGZv
dW5kIGZvciB0aGUgcHJvdmlkZWQgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBvciBtZWRpYSBzZXNz
aW9uCi0gICAgLy8gICAgY2F0ZWdvcnkgaXMgZW1wdHksIHRoZW4gc2V0IG1lZGlhIHNlc3Npb24n
cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSB0byAiY29udGVudCIuCisgICAgLy8gMi4gU2V0
IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSB0byB0aGUgY29ycmVz
cG9uZGluZyBtZWRpYSBzZXNzaW9uIHR5cGUgb2YgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeS4KKwor
ICAgIGlmIChraW5kLmlzTnVsbCgpIHx8IGtpbmQgPT0gY29udGVudEtpbmQpCisgICAgICAgIHJl
dHVybiBNZWRpYVNlc3Npb246OktpbmQ6OkNvbnRlbnQ7CiAgICAgaWYgKGtpbmQgPT0gYW1iaWVu
dEtpbmQpCiAgICAgICAgIHJldHVybiBNZWRpYVNlc3Npb246OktpbmQ6OkFtYmllbnQ7CiAgICAg
aWYgKGtpbmQgPT0gdHJhbnNpZW50S2luZCkKICAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6
S2luZDo6VHJhbnNpZW50OwogICAgIGlmIChraW5kID09IHRyYW5zaWVudFNvbG9LaW5kKQogICAg
ICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpLaW5kOjpUcmFuc2llbnRTb2xvOwotICAgIHJldHVy
biBNZWRpYVNlc3Npb246OktpbmQ6OkNvbnRlbnQ7Ci19CiAKLU1lZGlhU2Vzc2lvbjo6TWVkaWFT
ZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi17
Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuYWRkTWVkaWFTZXNzaW9uKCp0
aGlzKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTWVkaWFTZXNzaW9u
OjpLaW5kOjpDb250ZW50OwogfQogCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAko
cmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMSBAQCBwdWJsaWM6
CiAgICAgICAgIEFtYmllbnQKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxNZWRpYVNlc3Npb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtp
bmQpCisgICAgc3RhdGljIFJlZjxNZWRpYVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQgPSBTdHJpbmcoKSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbihjb250ZXh0LCBraW5kKSk7
CiAgICAgfQogCi0gICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uKERvY3VtZW50Jik7Ci0gICAgTWVk
aWFTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+
TWVkaWFTZXNzaW9uKCk7CiAKICAgICBTdHJpbmcga2luZCgpIGNvbnN0OwpAQCAtOTEsNiArODks
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OwogCisgICAgTWVkaWFTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJp
bmcmKTsKKwogICAgIHN0YXRpYyBLaW5kIHBhcnNlS2luZChjb25zdCBTdHJpbmcmKTsKIAogICAg
IHZvaWQgYWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAko
cmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTiwKLSAgICBDb25zdHJ1Y3RvcihNZWRpYVNlc3Np
b25LaW5kIGtpbmQpLAorICAgIEN1c3RvbUNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlhU2Vzc2lv
bktpbmQga2luZCksCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBNZWRpYVNl
c3Npb24gewpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0
LDcgQEAKIAkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzdBRjEzRTE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYy5oICovOyB9OwogCQkwNzdBRjE0NDE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gKi87IH07CisJCTA3N0I2NDBGMUI4RjVE
NkIwMDNFOUFENSAvKiBKU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQwRTFCOEY1Mzc1MDAzRTlBRDUgLyog
SlNNZWRpYVNlc3Npb25DdXN0b20uY3BwICovOyB9OwogCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlF
MEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MjE4MDEzRUQ3MDA5OTlFMEMgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5jcHAgKi87IH07CiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5oICovOyB9OwogCQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFj
a0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovOyB9OwpAQCAt
NzM4Niw2ICs3Mzg3LDcgQEAKIAkJMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc3QjY0MEUxQjhGNTM3NTAwM0U5QUQ1IC8qIEpTTWVkaWFTZXNz
aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVk
aWFTZXNzaW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4MzIy
ODIxODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE0ODQsNiArMjE0ODYsNyBAQAogCQlCQzRFREVGNzBDMDhG
NDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkwNzdCNjQwRTFCOEY1Mzc1MDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25D
dXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0
b20uY3BwICovLAogCQkJCUZERUFBQUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVy
U291cmNlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRjAxMkIwMkVFNDAwRENGMzNCIC8q
IEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKQEAgLTI4MjI0LDYgKzI4MjI3LDcgQEAKIAkJ
CQkxNERDRjNCMjFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDM3QjM5ODE1QzFCOTcxMDA2REM4OTggLyogRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0FERkM2MTUzNzc4RkYwMEUz
NzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzdC
NjQwRjFCOEY1RDZCMDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDBCRDRGNUMxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3Rh
dGlvbkNvbW1hbmRJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRDY3QjExNTM1NjkxRjAw
NTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKKworI2luY2x1ZGUgIkpTTWVkaWFTZXNzaW9uLmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNNZWRpYVNlc3Npb24oRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVj
LT5jYWxsZWUoKSk7CisgICAgYXV0byogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd0Nv
bnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpleGVjLCAiTWVkaWFTZXNzaW9uIik7
CisKKyAgICBTdHJpbmcga2luZDsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMCkg
eworICAgICAgICBKU1N0cmluZyoga2luZFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAga2luZCA9IGtpbmRTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgICAgICBpZiAoa2luZCAhPSAi
Y29udGVudCIgJiYga2luZCAhPSAidHJhbnNpZW50IiAmJiBraW5kICE9ICJ0cmFuc2llbnQtc29s
byIgJiYga2luZCAhPSAiYW1iaWVudCIpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUVudW1FcnJvcigqZXhlYywgMCwgImtpbmQiLCAiTWVkaWFTZXNzaW9uIiwgbnVsbHB0
ciwgIlwiY29udGVudFwiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaWVudC1zb2xvXCIsIFwiYW1i
aWVudFwiIik7CisgICAgfSBlbHNlCisgICAgICAgIGtpbmQgPSAiY29udGVudCI7CisKKyAgICBS
ZWZQdHI8TWVkaWFTZXNzaW9uPiBvYmplY3QgPSBNZWRpYVNlc3Npb246OmNyZWF0ZSgqY29udGV4
dCwga2luZCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDE4OTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY3MDEsNyArNjcwMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGEKIE1lZGlhU2Vzc2lvbiYgRG9jdW1lbnQ6OmRlZmF1bHRNZWRpYVNl
c3Npb24oKQogewogICAgIGlmICghbV9kZWZhdWx0TWVkaWFTZXNzaW9uKQotICAgICAgICBtX2Rl
ZmF1bHRNZWRpYVNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbigqdGhpcykpOwor
ICAgICAgICBtX2RlZmF1bHRNZWRpYVNlc3Npb24gPSBNZWRpYVNlc3Npb246OmNyZWF0ZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHJldHVybiAqbV9kZWZhdWx0TWVkaWFTZXNz
aW9uOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxODkwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTA5LDM2ICs2NTA5LDMyIEBAIGRvdWJsZSBIVE1MTWVk
aWFFbGVtZW50OjpwbGF5ZXJWb2x1bWUoKSAKIE1lZGlhU2Vzc2lvbiogSFRNTE1lZGlhRWxlbWVu
dDo6c2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgTWVkaWFTZXNzaW9uKiBzZXNzaW9uID0gbV9zZXNz
aW9uLmdldCgpOwotICAgIGlmIChzZXNzaW9uICYmIHNlc3Npb24tPmtpbmRFbnVtKCkgPT0gTWVk
aWFTZXNzaW9uOjpLaW5kOjpEZWZhdWx0KQorICAgIGlmIChzZXNzaW9uICYmIHNlc3Npb24gPT0g
JmRvY3VtZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKwogICAgIHJldHVybiBzZXNzaW9uOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFNlc3Npb24oTWVkaWFTZXNzaW9uKiBzZXNzaW9uKQogewotICAgIC8vIDYuMQorICAgIC8vIDYu
MS4gRXh0ZW5zaW9ucyB0byB0aGUgSFRNTE1lZGlhRWxlbWVudCBpbnRlcmZhY2UKICAgICAvLyAx
LiBMZXQgbSBiZSB0aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVzdGlvbi4KLSAgICAvLyAyLiBMZXQg
b2xkIG1lZGlhIHNlc3Npb24gYmUgbSdzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiwgaWYgaXQgaGFz
IG9uZSwgYW5kIG51bGwgb3RoZXJ3aXNlLgotICAgIC8vIDMuIExldCBuZXcgbWVkaWEgc2Vzc2lv
biBiZSBudWxsLgotICAgIC8vIDQuIFNldCBtJ3MgY3VycmVudCBtZWRpYSBzZXNzaW9uIHRvIG51
bGwsIGlmIGl0IGN1cnJlbnRseSBoYXMgb25lLgotICAgIC8vIDUuIExldCBtJ3MgY3VycmVudCBt
ZWRpYSBzZXNzaW9uIGJlIHRoZSBuZXcgdmFsdWUgb3IgdGhlIHRvcC1sZXZlbCBicm93c2luZyBj
b250ZXh0J3MgbWVkaWEgc2Vzc2lvbiBpZiB0aGUgbmV3Ci0gICAgLy8gICAgdmFsdWUgaXMgbnVs
bC4KLSAgICAvLyA2LiBJZiB0aGUgbmV3IHZhbHVlIGlzIG51bGwsIHRoZW4gc2V0IHRoZSBtJ3Mg
a2luZCBJREwgYXR0cmlidXRlIHRvIHRoZSBlbXB0eSBzdHJpbmcuIE90aGVyd2lzZSwgc2V0IG0n
cyBraW5kIElETAotICAgIC8vICAgIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUgb2YgY3VycmVudCBt
ZWRpYSBzZXNzaW9uJ3Mga2luZCBhdHRyaWJ1dGUuCi0gICAgLy8gNy4gTGV0IG5ldyBtZWRpYSBz
ZXNzaW9uIGJlIG0ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24uCi0gICAgLy8gOC4gVXBkYXRlIG1l
ZGlhIHNlc3Npb25zOiBJZiBvbGQgbWVkaWEgc2Vzc2lvbiBhbmQgbmV3IG1lZGlhIHNlc3Npb24g
YXJlIHRoZSBzYW1lICh3aGV0aGVyIGJvdGggbnVsbCBvciBib3RoIHRoZQotICAgIC8vICAgIHNh
bWUgbWVkaWEgc2Vzc2lvbiksIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgotICAgIC8vIDku
IElmIG0gaXMgYW4gYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudCBvZiBvbGQgbWVk
aWEgc2Vzc2lvbiwgdGhlbiBwYXVzZSBtIGFuZCByZW1vdmUgbSBmcm9tIG9sZCBtZWRpYQotICAg
IC8vICAgIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAg
ICAvLyAxMC4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwgYW5kIG5vIGxvbmdlciBo
YXMgb25lIG9yIG1vcmUgYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMsIHRoZW4g
cnVuCi0gICAgLy8gICAgIHRoZSBtZWRpYSBzZXNzaW9uIHJlbGVhc2UgYWxnb3JpdGhtIGZvciBv
bGQgbWVkaWEgc2Vzc2lvbi4KKyAgICAvLyAyLiBMZXQgb2xkIG1lZGlhIHNlc3Npb24gYmUgbeKA
mXMgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBpdCBoYXMgb25lLCBhbmQgbnVsbCBvdGhlcndp
c2UuCisgICAgLy8gMy4gTGV0IG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgbmV3
IHZhbHVlIG9yIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dOKAmXMgbWVkaWEgc2Vzc2lv
biBpZiB0aGUgbmV3IHZhbHVlIGlzIG51bGwuCisgICAgLy8gNC4gTGV0IG5ldyBtZWRpYSBzZXNz
aW9uIGJlIG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbi4KKworICAgIC8vIDUuIFVwZGF0ZSBt
ZWRpYSBzZXNzaW9uczogSWYgb2xkIG1lZGlhIHNlc3Npb24gYW5kIG5ldyBtZWRpYSBzZXNzaW9u
IGFyZSB0aGUgc2FtZSAod2hldGhlciBib3RoIG51bGwgb3IgYm90aCB0aGUgc2FtZSBtZWRpYSBz
ZXNzaW9uKSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgaWYgKG1fc2Vzc2lvbi5n
ZXQoKSA9PSBzZXNzaW9uKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zZXNzaW9uKSB7
CisgICAgICAgIC8vIDYuIElmIG0gaXMgYW4gYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50IG9m
IG9sZCBtZWRpYSBzZXNzaW9uLCB0aGVuIHBhdXNlIG0gYW5kIHJlbW92ZSBtIGZyb20gb2xkIG1l
ZGlhIHNlc3Npb27igJlzIGxpc3Qgb2YgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KICAg
ICAgICAgaWYgKG1fc2Vzc2lvbi0+aXNNZWRpYUVsZW1lbnRBY3RpdmUoKnRoaXMpKQogICAgICAg
ICAgICAgcGF1c2UoKTsKIAogICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZU1lZGlhRWxlbWVudCgq
dGhpcyk7CiAKKyAgICAgICAgLy8gNy4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwg
YW5kIG5vIGxvbmdlciBoYXMgb25lIG9yIG1vcmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50
cywgdGhlbiBydW4gdGhlIG1lZGlhIHNlc3Npb24gZGVhY3RpdmF0aW9uIGFsZ29yaXRobSBmb3Ig
b2xkIG1lZGlhIHNlc3Npb24uCiAgICAgICAgIGlmICghbV9zZXNzaW9uLT5oYXNBY3RpdmVNZWRp
YUVsZW1lbnRzKCkpCiAgICAgICAgICAgICBtX3Nlc3Npb24tPnJlbGVhc2VTZXNzaW9uKCk7CiAg
ICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5MDI0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDgtMjcgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgU2Vzc2lvbjogTWVk
aWFTZXNzaW9uIGNvbnN0cnVjdG9yICdraW5kJyBhcmd1bWVudCBvcHRpb25hbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgICogbWVkaWEvc2Vzc2lvbi9jb250ZW50
LWludGVycnVwdGlvbnMuaHRtbDogUmVzdHJ1Y3R1cmUgdG8gbWFrZSBsZXNzIHRpbWluZyBkZXBl
bmRlbnQuIE1pbm9yIGNsZWFudXAuCisgICAgICAgICogbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNy
ZWF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3Jl
YXRpb24uaHRtbDogVGVzdCBkZWZhdWx0IE1lZGlhU2Vzc2lvbiBjb25zdHJ1Y3RvciBhcmd1bWVu
dC4KKwogMjAxNS0wOC0yNyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzb21lIG5ldyBlbW9qaSB3aXRoIG1vZGlmaWVycyBhbmQgbmV3IHNlcXVlbmNl
LgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50
ZXJydXB0aW9ucy5odG1sCShyZXZpc2lvbiAxODkwMjEpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDI3
ICs4LDI1IEBACiAgICAgCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLQorICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwogICAgICAgICAg
ICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKIAogICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJXYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcu
IikKLSAgICAgICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRl
byIpOwogICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4v
Y29udGVudC9jb3VudGluZyIpOwogICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247
CiAgICAgICAgICAgICB2aWRlby5vbnBsYXlpbmcgPSBiZWdhblBsYXlpbmc7CisgICAgICAgICAg
ICB2aWRlby5vbmNhbnBsYXl0aHJvdWdoID0gY2FucGxheXRocm91Z2g7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgpIAorICAgICAgICB7CiAgICAgICAgICAg
ICB2aWRlby5wbGF5KCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlp
bmcoZXZlbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVn
YW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRl
byIpLm9ucGF1c2UgPSBwYXVzZWQ7CisgICAgICAgICAgICB2aWRlby5vbnBhdXNlID0gcGF1c2Vk
OwogCiAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewogICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9u
KScsICJhY3RpdmUiKTsKQEAgLTUxLDYgKzQ5LDYgQEAKIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KICAgICA8cD4nQ29udGVudCcgc3RhcnQgb2YgaW50ZXJydXB0aW9uIGV2ZW50
cyBzaG91bGQgaW5kZWZpbml0ZWx5IHBhdXNlICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy48L3A+
Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KKyAgICA8dmlkZW8gaWQ9InZpZGVvIiBjb250cm9s
cz4gPC92aWRlbz4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vc2Vzc2lvbi1jcmVhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTg5MDIxKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9u
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMCArMSwzMCBAQAogTmV3IG1lZGlh
IHNlc3Npb25zIHNob3VsZCBiZSBpbiBhbiBJZGxlIHN0YXRlIGFmdGVyIGNyZWF0aW9uLgogCisK
IC0tLQotVGVzdGluZyAnY29udGVudCcgc2Vzc2lvbgorVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lv
bignY29udGVudCcpIgorRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwogLS0tCisKKy0tLQorVGVzdGluZyAibmV3IE1lZGlh
U2Vzc2lvbigndHJhbnNpZW50JykiCiBFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1
cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCiAtLS0KLVRlc3RpbmcgJ3RyYW5zaWVu
dCcgc2Vzc2lvbgorCiAtLS0KK1Rlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudC1z
b2xvJykiCiBFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKSA9PSAnaWRsZScpIE9LCiAtLS0KLVRlc3RpbmcgJ3RyYW5zaWVudC1zb2xvJyBzZXNzaW9u
CisKIC0tLQorVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbignYW1iaWVudCcpIgogRVhQRUNURUQg
KGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBP
SwogLS0tCi1UZXN0aW5nICdhbWJpZW50JyBzZXNzaW9uCisKIC0tLQorVGVzdGluZyAibmV3IE1l
ZGlhU2Vzc2lvbigpIgogRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSworLS0tCisKIEVORCBPRiBURVNUCiAKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi5odG1sCShyZXZp
c2lvbiAxODkwMjEpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSwyMCArOSwyNyBAQAogICAgICAgICAgICAgdGVz
dFNlc3Npb25LaW5kKCJ0cmFuc2llbnQiKTsKICAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgi
dHJhbnNpZW50LXNvbG8iKTsKICAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgiYW1iaWVudCIp
OworICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCk7CiAKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBm
dW5jdGlvbiB0ZXN0U2Vzc2lvbktpbmQoc2Vzc2lvbktpbmQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiLS0tIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3Rp
bmcgJyIgKyBzZXNzaW9uS2luZCArICInIHNlc3Npb24iKTsKLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiLS0tIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4tLS0iKTsKIAotICAg
ICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oc2Vzc2lvbktpbmQpOworICAgICAg
ICAgICAgaWYgKHNlc3Npb25LaW5kICE9IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiVGVzdGluZyBcIm5ldyBNZWRpYVNlc3Npb24oJyIgKyBzZXNzaW9uS2luZCAr
ICInKVwiIik7CisgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oc2Vz
c2lvbktpbmQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRlc3RpbmcgXCJuZXcgTWVkaWFTZXNzaW9uKClcIiIpOworICAgICAgICAgICAgICAg
IHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
aW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpZGxlIik7Cisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIi0tLSIpOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+
CiA8L2hlYWQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260061</attachid>
            <date>2015-08-27 09:56:30 -0700</date>
            <delta_ts>2017-06-18 23:59:20 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>constructor_patch_4.txt</filename>
            <type>text/plain</type>
            <size>19791</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4OTAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA4LTI3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIFNlc3Npb246
IE1lZGlhU2Vzc2lvbiBjb25zdHJ1Y3RvciAna2luZCcgYXJndW1lbnQgb3B0aW9uYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0
ZWQgbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTZXNzaW9uOjpwYXJzZUtpbmQpOiBUcmVhdCBudWxsIGtpbmQgImNvbnRlbnQiLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOiBEZWxldGUgRG9jdW1lbnQq
IHZlcnNpb24uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6
IE1ha2UgY29uc3RydWN0b3IgcHJpdmF0ZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uaWRsOgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN0cnVjdEpTTWVkaWFTZXNzaW9uKToKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVmYXVsdE1lZGlhU2Vzc2lvbik6IENh
bGwgTWVkaWFTZXNzaW9uOjpjcmVhdGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vzc2lvbik6IENv
bXBhcmUgc2Vzc2lvbiB3aXRoIGRvY3VtZW50LmRlZmF1bHRNZWRpYVNlc3Npb24sIG5vdAorICAg
ICAgICAgIGl0cyBraW5kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0
U2Vzc2lvbik6IFVwZGF0ZSBjb21tZW50cy4KKwogMjAxNS0wOC0yNyAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzb21lIG5ldyBlbW9qaSB3aXRoIG1v
ZGlmaWVycyBhbmQgbmV3IHNlcXVlbmNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAxODkwMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NiwyMSArNDYsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnRlbnRLaW5kID0gImNvbnRlbgogTWVkaWFTZXNzaW9uOjpLaW5kIE1lZGlhU2Vzc2lvbjo6cGFy
c2VLaW5kKGNvbnN0IFN0cmluZyYga2luZCkKIHsKICAgICAvLyA0LiBNZWRpYSBTZXNzaW9uCi0g
ICAgLy8gMi4gSWYgbm8gY29ycmVzcG9uZGluZyBtZWRpYSBzZXNzaW9uIHR5cGUgY2FuIGJlIGZv
dW5kIGZvciB0aGUgcHJvdmlkZWQgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBvciBtZWRpYSBzZXNz
aW9uCi0gICAgLy8gICAgY2F0ZWdvcnkgaXMgZW1wdHksIHRoZW4gc2V0IG1lZGlhIHNlc3Npb24n
cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSB0byAiY29udGVudCIuCisgICAgLy8gMi4gU2V0
IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSB0byB0aGUgY29ycmVz
cG9uZGluZyBtZWRpYSBzZXNzaW9uIHR5cGUgb2YgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeS4KKwor
ICAgIGlmIChraW5kLmlzTnVsbCgpIHx8IGtpbmQgPT0gY29udGVudEtpbmQpCisgICAgICAgIHJl
dHVybiBNZWRpYVNlc3Npb246OktpbmQ6OkNvbnRlbnQ7CiAgICAgaWYgKGtpbmQgPT0gYW1iaWVu
dEtpbmQpCiAgICAgICAgIHJldHVybiBNZWRpYVNlc3Npb246OktpbmQ6OkFtYmllbnQ7CiAgICAg
aWYgKGtpbmQgPT0gdHJhbnNpZW50S2luZCkKICAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6
S2luZDo6VHJhbnNpZW50OwogICAgIGlmIChraW5kID09IHRyYW5zaWVudFNvbG9LaW5kKQogICAg
ICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpLaW5kOjpUcmFuc2llbnRTb2xvOwotICAgIHJldHVy
biBNZWRpYVNlc3Npb246OktpbmQ6OkNvbnRlbnQ7Ci19CiAKLU1lZGlhU2Vzc2lvbjo6TWVkaWFT
ZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi17
Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuYWRkTWVkaWFTZXNzaW9uKCp0
aGlzKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTWVkaWFTZXNzaW9u
OjpLaW5kOjpDb250ZW50OwogfQogCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAko
cmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMSBAQCBwdWJsaWM6
CiAgICAgICAgIEFtYmllbnQKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxNZWRpYVNlc3Npb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtp
bmQpCisgICAgc3RhdGljIFJlZjxNZWRpYVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQgPSBTdHJpbmcoKSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbihjb250ZXh0LCBraW5kKSk7
CiAgICAgfQogCi0gICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uKERvY3VtZW50Jik7Ci0gICAgTWVk
aWFTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+
TWVkaWFTZXNzaW9uKCk7CiAKICAgICBTdHJpbmcga2luZCgpIGNvbnN0OwpAQCAtOTEsNiArODks
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OwogCisgICAgTWVkaWFTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJp
bmcmKTsKKwogICAgIHN0YXRpYyBLaW5kIHBhcnNlS2luZChjb25zdCBTdHJpbmcmKTsKIAogICAg
IHZvaWQgYWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAko
cmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTiwKLSAgICBDb25zdHJ1Y3RvcihNZWRpYVNlc3Np
b25LaW5kIGtpbmQpLAorICAgIEN1c3RvbUNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlhU2Vzc2lv
bktpbmQga2luZCksCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBNZWRpYVNl
c3Npb24gewpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0
LDcgQEAKIAkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzdBRjEzRTE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYy5oICovOyB9OwogCQkwNzdBRjE0NDE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gKi87IH07CisJCTA3N0I2NDBGMUI4RjVE
NkIwMDNFOUFENSAvKiBKU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQwRTFCOEY1Mzc1MDAzRTlBRDUgLyog
SlNNZWRpYVNlc3Npb25DdXN0b20uY3BwICovOyB9OwogCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlF
MEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MjE4MDEzRUQ3MDA5OTlFMEMgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5jcHAgKi87IH07CiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5oICovOyB9OwogCQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFj
a0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovOyB9OwpAQCAt
NzM4Niw2ICs3Mzg3LDcgQEAKIAkJMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc3QjY0MEUxQjhGNTM3NTAwM0U5QUQ1IC8qIEpTTWVkaWFTZXNz
aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVk
aWFTZXNzaW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4MzIy
ODIxODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE0ODQsNiArMjE0ODYsNyBAQAogCQlCQzRFREVGNzBDMDhG
NDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkwNzdCNjQwRTFCOEY1Mzc1MDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25D
dXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0
b20uY3BwICovLAogCQkJCUZERUFBQUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVy
U291cmNlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRjAxMkIwMkVFNDAwRENGMzNCIC8q
IEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKQEAgLTI4MjI0LDYgKzI4MjI3LDcgQEAKIAkJ
CQkxNERDRjNCMjFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDM3QjM5ODE1QzFCOTcxMDA2REM4OTggLyogRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0FERkM2MTUzNzc4RkYwMEUz
NzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzdC
NjQwRjFCOEY1RDZCMDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDBCRDRGNUMxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3Rh
dGlvbkNvbW1hbmRJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRDY3QjExNTM1NjkxRjAw
NTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKKworI2luY2x1ZGUgIkpTTWVkaWFTZXNzaW9uLmgiCisKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5j
bHVkZSAiTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU01lZGlhU2Vzc2lvbihFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4
ZWMtPmNhbGxlZSgpKTsKKyAgICBhdXRvKiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93
Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoKmV4ZWMsICJNZWRpYVNlc3Npb24i
KTsKKworICAgIFN0cmluZyBraW5kOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAw
KSB7CisgICAgICAgIEpTU3RyaW5nKiBraW5kU3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyk7CisgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
ICAgICBraW5kID0ga2luZFN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChraW5kICE9
ICJjb250ZW50IiAmJiBraW5kICE9ICJ0cmFuc2llbnQiICYmIGtpbmQgIT0gInRyYW5zaWVudC1z
b2xvIiAmJiBraW5kICE9ICJhbWJpZW50IikKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRW51bUVycm9yKCpleGVjLCAwLCAia2luZCIsICJNZWRpYVNlc3Npb24iLCBudWxs
cHRyLCAiXCJjb250ZW50XCIsIFwidHJhbnNpZW50XCIsIFwidHJhbnNpZW50LXNvbG9cIiwgXCJh
bWJpZW50XCIiKTsKKyAgICB9IGVsc2UKKyAgICAgICAga2luZCA9ICJjb250ZW50IjsKKworICAg
IFJlZlB0cjxNZWRpYVNlc3Npb24+IG9iamVjdCA9IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCpjb250
ZXh0LCBraW5kKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkocmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjcwMSw3ICs2NzAxLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYQogTWVkaWFTZXNzaW9uJiBEb2N1bWVudDo6ZGVmYXVsdE1lZGlh
U2Vzc2lvbigpCiB7CiAgICAgaWYgKCFtX2RlZmF1bHRNZWRpYVNlc3Npb24pCi0gICAgICAgIG1f
ZGVmYXVsdE1lZGlhU2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgTWVkaWFTZXNzaW9uKCp0aGlzKSk7
CisgICAgICAgIG1fZGVmYXVsdE1lZGlhU2Vzc2lvbiA9IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgcmV0dXJuICptX2RlZmF1bHRNZWRpYVNl
c3Npb247CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE4OTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1MDksMzYgKzY1MDksMzIgQEAgZG91YmxlIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXllclZvbHVtZSgpIAogTWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVt
ZW50OjpzZXNzaW9uKCkgY29uc3QKIHsKICAgICBNZWRpYVNlc3Npb24qIHNlc3Npb24gPSBtX3Nl
c3Npb24uZ2V0KCk7Ci0gICAgaWYgKHNlc3Npb24gJiYgc2Vzc2lvbi0+a2luZEVudW0oKSA9PSBN
ZWRpYVNlc3Npb246OktpbmQ6OkRlZmF1bHQpCisgICAgaWYgKHNlc3Npb24gJiYgc2Vzc2lvbiA9
PSAmZG9jdW1lbnQoKS5kZWZhdWx0TWVkaWFTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOworCiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2V0U2Vzc2lvbihNZWRpYVNlc3Npb24qIHNlc3Npb24pCiB7Ci0gICAgLy8gNi4xCisgICAgLy8g
Ni4xLiBFeHRlbnNpb25zIHRvIHRoZSBIVE1MTWVkaWFFbGVtZW50IGludGVyZmFjZQogICAgIC8v
IDEuIExldCBtIGJlIHRoZSBtZWRpYSBlbGVtZW50IGluIHF1ZXN0aW9uLgotICAgIC8vIDIuIExl
dCBvbGQgbWVkaWEgc2Vzc2lvbiBiZSBtJ3MgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBpdCBo
YXMgb25lLCBhbmQgbnVsbCBvdGhlcndpc2UuCi0gICAgLy8gMy4gTGV0IG5ldyBtZWRpYSBzZXNz
aW9uIGJlIG51bGwuCi0gICAgLy8gNC4gU2V0IG0ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdG8g
bnVsbCwgaWYgaXQgY3VycmVudGx5IGhhcyBvbmUuCi0gICAgLy8gNS4gTGV0IG0ncyBjdXJyZW50
IG1lZGlhIHNlc3Npb24gYmUgdGhlIG5ldyB2YWx1ZSBvciB0aGUgdG9wLWxldmVsIGJyb3dzaW5n
IGNvbnRleHQncyBtZWRpYSBzZXNzaW9uIGlmIHRoZSBuZXcKLSAgICAvLyAgICB2YWx1ZSBpcyBu
dWxsLgotICAgIC8vIDYuIElmIHRoZSBuZXcgdmFsdWUgaXMgbnVsbCwgdGhlbiBzZXQgdGhlIG0n
cyBraW5kIElETCBhdHRyaWJ1dGUgdG8gdGhlIGVtcHR5IHN0cmluZy4gT3RoZXJ3aXNlLCBzZXQg
bSdzIGtpbmQgSURMCi0gICAgLy8gICAgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBvZiBjdXJyZW50
IG1lZGlhIHNlc3Npb24ncyBraW5kIGF0dHJpYnV0ZS4KLSAgICAvLyA3LiBMZXQgbmV3IG1lZGlh
IHNlc3Npb24gYmUgbSdzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbi4KLSAgICAvLyA4LiBVcGRhdGUg
bWVkaWEgc2Vzc2lvbnM6IElmIG9sZCBtZWRpYSBzZXNzaW9uIGFuZCBuZXcgbWVkaWEgc2Vzc2lv
biBhcmUgdGhlIHNhbWUgKHdoZXRoZXIgYm90aCBudWxsIG9yIGJvdGggdGhlCi0gICAgLy8gICAg
c2FtZSBtZWRpYSBzZXNzaW9uKSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgLy8g
OS4gSWYgbSBpcyBhbiBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50IG9mIG9sZCBt
ZWRpYSBzZXNzaW9uLCB0aGVuIHBhdXNlIG0gYW5kIHJlbW92ZSBtIGZyb20gb2xkIG1lZGlhCi0g
ICAgLy8gICAgc2Vzc2lvbidzIGFjdGl2ZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzLgot
ICAgIC8vIDEwLiBJZiBvbGQgbWVkaWEgc2Vzc2lvbiBpcyBub3QgbnVsbCBhbmQgbm8gbG9uZ2Vy
IGhhcyBvbmUgb3IgbW9yZSBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cywgdGhl
biBydW4KLSAgICAvLyAgICAgdGhlIG1lZGlhIHNlc3Npb24gcmVsZWFzZSBhbGdvcml0aG0gZm9y
IG9sZCBtZWRpYSBzZXNzaW9uLgorICAgIC8vIDIuIExldCBvbGQgbWVkaWEgc2Vzc2lvbiBiZSBt
4oCZcyBjdXJyZW50IG1lZGlhIHNlc3Npb24sIGlmIGl0IGhhcyBvbmUsIGFuZCBudWxsIG90aGVy
d2lzZS4KKyAgICAvLyAzLiBMZXQgbeKAmXMgY3VycmVudCBtZWRpYSBzZXNzaW9uIGJlIHRoZSBu
ZXcgdmFsdWUgb3IgdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh04oCZcyBtZWRpYSBzZXNz
aW9uIGlmIHRoZSBuZXcgdmFsdWUgaXMgbnVsbC4KKyAgICAvLyA0LiBMZXQgbmV3IG1lZGlhIHNl
c3Npb24gYmUgbeKAmXMgY3VycmVudCBtZWRpYSBzZXNzaW9uLgorCisgICAgLy8gNS4gVXBkYXRl
IG1lZGlhIHNlc3Npb25zOiBJZiBvbGQgbWVkaWEgc2Vzc2lvbiBhbmQgbmV3IG1lZGlhIHNlc3Np
b24gYXJlIHRoZSBzYW1lICh3aGV0aGVyIGJvdGggbnVsbCBvciBib3RoIHRoZSBzYW1lIG1lZGlh
IHNlc3Npb24pLCB0aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4KKyAgICBpZiAobV9zZXNzaW9u
LmdldCgpID09IHNlc3Npb24pCisgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Nlc3Npb24p
IHsKKyAgICAgICAgLy8gNi4gSWYgbSBpcyBhbiBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnQg
b2Ygb2xkIG1lZGlhIHNlc3Npb24sIHRoZW4gcGF1c2UgbSBhbmQgcmVtb3ZlIG0gZnJvbSBvbGQg
bWVkaWEgc2Vzc2lvbuKAmXMgbGlzdCBvZiBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzLgog
ICAgICAgICBpZiAobV9zZXNzaW9uLT5pc01lZGlhRWxlbWVudEFjdGl2ZSgqdGhpcykpCiAgICAg
ICAgICAgICBwYXVzZSgpOwogCiAgICAgICAgIG1fc2Vzc2lvbi0+cmVtb3ZlTWVkaWFFbGVtZW50
KCp0aGlzKTsKIAorICAgICAgICAvLyA3LiBJZiBvbGQgbWVkaWEgc2Vzc2lvbiBpcyBub3QgbnVs
bCBhbmQgbm8gbG9uZ2VyIGhhcyBvbmUgb3IgbW9yZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBh
bnRzLCB0aGVuIHJ1biB0aGUgbWVkaWEgc2Vzc2lvbiBkZWFjdGl2YXRpb24gYWxnb3JpdGhtIGZv
ciBvbGQgbWVkaWEgc2Vzc2lvbi4KICAgICAgICAgaWYgKCFtX3Nlc3Npb24tPmhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKSkKICAgICAgICAgICAgIG1fc2Vzc2lvbi0+cmVsZWFzZVNlc3Npb24oKTsK
ICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODkwMjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wOC0yNyAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYSBTZXNzaW9uOiBN
ZWRpYVNlc3Npb24gY29uc3RydWN0b3IgJ2tpbmQnIGFyZ3VtZW50IG9wdGlvbmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBtZWRpYS9zZXNzaW9uL2NvbnRl
bnQtaW50ZXJydXB0aW9ucy5odG1sOiBSZXN0cnVjdHVyZSB0byBtYWtlIGxlc3MgdGltaW5nIGRl
cGVuZGVudC4gTWlub3IgY2xlYW51cC4KKyAgICAgICAgKiBtZWRpYS9zZXNzaW9uL3Nlc3Npb24t
Y3JlYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3Nlc3Npb24vc2Vzc2lvbi1j
cmVhdGlvbi5odG1sOiBUZXN0IGRlZmF1bHQgTWVkaWFTZXNzaW9uIGNvbnN0cnVjdG9yIGFyZ3Vt
ZW50LgorCiAyMDE1LTA4LTI3ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHNvbWUgbmV3IGVtb2ppIHdpdGggbW9kaWZpZXJzIGFuZCBuZXcgc2VxdWVu
Y2UuCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9u
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1p
bnRlcnJ1cHRpb25zLmh0bWwJKHJldmlzaW9uIDE4OTAyMSkKKysrIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgs
MjcgKzgsMjUgQEAKICAgICAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotCisgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CiAgICAgICAg
ICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwogCiAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIldhaXRpbmcgZm9yIENvbnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWlu
Zy4iKQotICAgICAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZp
ZGVvIik7CiAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIu
Li9jb250ZW50L2NvdW50aW5nIik7CiAgICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lv
bjsKICAgICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9IGJlZ2FuUGxheWluZzsKKyAgICAgICAg
ICAgIHZpZGVvLm9uY2FucGxheXRocm91Z2ggPSBjYW5wbGF5dGhyb3VnaDsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkgCisgICAgICAgIHsKICAgICAgICAg
ICAgIHZpZGVvLnBsYXkoKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxh
eWluZyhldmVudCkKICAgICAgICAgewogICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBi
ZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZp
ZGVvIikub25wYXVzZSA9IHBhdXNlZDsKKyAgICAgICAgICAgIHZpZGVvLm9ucGF1c2UgPSBwYXVz
ZWQ7CiAKICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pJywgImFjdGl2ZSIpOwpAQCAtNTEsNiArNDksNiBAQAogPC9oZWFkPgogPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgogICAgIDxwPidDb250ZW50JyBzdGFydCBvZiBpbnRlcnJ1cHRpb24gZXZl
bnRzIHNob3VsZCBpbmRlZmluaXRlbHkgcGF1c2UgJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLjwv
cD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgorICAgIDx2aWRlbyBpZD0idmlkZW8iIGNvbnRy
b2xzPiA8L3ZpZGVvPgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEv
c2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxODkwMjEpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRp
b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIwICsxLDMwIEBACiBOZXcgbWVk
aWEgc2Vzc2lvbnMgc2hvdWxkIGJlIGluIGFuIElkbGUgc3RhdGUgYWZ0ZXIgY3JlYXRpb24uCiAK
KwogLS0tCi1UZXN0aW5nICdjb250ZW50JyBzZXNzaW9uCitUZXN0aW5nICJuZXcgTWVkaWFTZXNz
aW9uKCdjb250ZW50JykiCitFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCiAtLS0KKworLS0tCitUZXN0aW5nICJuZXcgTWVk
aWFTZXNzaW9uKCd0cmFuc2llbnQnKSIKIEVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9u
Q3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKIC0tLQotVGVzdGluZyAndHJhbnNp
ZW50JyBzZXNzaW9uCisKIC0tLQorVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbigndHJhbnNpZW50
LXNvbG8nKSIKIEVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNl
c3Npb24pID09ICdpZGxlJykgT0sKIC0tLQotVGVzdGluZyAndHJhbnNpZW50LXNvbG8nIHNlc3Np
b24KKwogLS0tCitUZXN0aW5nICJuZXcgTWVkaWFTZXNzaW9uKCdhbWJpZW50JykiCiBFWFBFQ1RF
RCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScp
IE9LCiAtLS0KLVRlc3RpbmcgJ2FtYmllbnQnIHNlc3Npb24KKwogLS0tCitUZXN0aW5nICJuZXcg
TWVkaWFTZXNzaW9uKCkiCiBFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCistLS0KKwogRU5EIE9GIFRFU1QKIApJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwJKHJl
dmlzaW9uIDE4OTAyMSkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVh
dGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDIwICs5LDI3IEBACiAgICAgICAgICAgICB0
ZXN0U2Vzc2lvbktpbmQoInRyYW5zaWVudCIpOwogICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5k
KCJ0cmFuc2llbnQtc29sbyIpOwogICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCJhbWJpZW50
Iik7CisgICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoKTsKIAorICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAgfQogCiAgICAgICAg
IGZ1bmN0aW9uIHRlc3RTZXNzaW9uS2luZChzZXNzaW9uS2luZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCItLS0iKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVz
dGluZyAnIiArIHNlc3Npb25LaW5kICsgIicgc2Vzc2lvbiIpOwotICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCItLS0iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPi0tLSIpOwogCi0g
ICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbihzZXNzaW9uS2luZCk7CisgICAg
ICAgICAgICBpZiAoc2Vzc2lvbktpbmQgIT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJUZXN0aW5nIFwibmV3IE1lZGlhU2Vzc2lvbignIiArIHNlc3Npb25LaW5k
ICsgIicpXCIiKTsKKyAgICAgICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbihz
ZXNzaW9uS2luZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiVGVzdGluZyBcIm5ldyBNZWRpYVNlc3Npb24oKVwiIik7CisgICAgICAgICAgICAg
ICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oKTsKKyAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImlkbGUiKTsK
KyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLS0tIik7CiAgICAgICAgIH0KICAgICA8L3Njcmlw
dD4KIDwvaGVhZD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260063</attachid>
            <date>2015-08-27 10:08:21 -0700</date>
            <delta_ts>2015-08-27 10:34:05 -0700</delta_ts>
            <desc>YAPFL</desc>
            <filename>constructor_patch_4.txt</filename>
            <type>text/plain</type>
            <size>19789</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4OTAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA4LTI3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIFNlc3Npb246
IE1lZGlhU2Vzc2lvbiBjb25zdHJ1Y3RvciAna2luZCcgYXJndW1lbnQgb3B0aW9uYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0
ZWQgbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTZXNzaW9uOjpwYXJzZUtpbmQpOiBUcmVhdCBudWxsIGtpbmQgImNvbnRlbnQiLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOiBEZWxldGUgRG9jdW1lbnQq
IHZlcnNpb24uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6
IE1ha2UgY29uc3RydWN0b3IgcHJpdmF0ZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uaWRsOgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN0cnVjdEpTTWVkaWFTZXNzaW9uKToKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVmYXVsdE1lZGlhU2Vzc2lvbik6IENh
bGwgTWVkaWFTZXNzaW9uOjpjcmVhdGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vzc2lvbik6IENv
bXBhcmUgc2Vzc2lvbiB3aXRoIGRvY3VtZW50LmRlZmF1bHRNZWRpYVNlc3Npb24sIG5vdAorICAg
ICAgICAgIGl0cyBraW5kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0
U2Vzc2lvbik6IFVwZGF0ZSBjb21tZW50cy4KKwogMjAxNS0wOC0yNyAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzb21lIG5ldyBlbW9qaSB3aXRoIG1v
ZGlmaWVycyBhbmQgbmV3IHNlcXVlbmNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAxODkwMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NiwyMSArNDYsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnRlbnRLaW5kID0gImNvbnRlbgogTWVkaWFTZXNzaW9uOjpLaW5kIE1lZGlhU2Vzc2lvbjo6cGFy
c2VLaW5kKGNvbnN0IFN0cmluZyYga2luZCkKIHsKICAgICAvLyA0LiBNZWRpYSBTZXNzaW9uCi0g
ICAgLy8gMi4gSWYgbm8gY29ycmVzcG9uZGluZyBtZWRpYSBzZXNzaW9uIHR5cGUgY2FuIGJlIGZv
dW5kIGZvciB0aGUgcHJvdmlkZWQgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBvciBtZWRpYSBzZXNz
aW9uCi0gICAgLy8gICAgY2F0ZWdvcnkgaXMgZW1wdHksIHRoZW4gc2V0IG1lZGlhIHNlc3Npb24n
cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSB0byAiY29udGVudCIuCisgICAgLy8gMi4gU2V0
IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSB0byB0aGUgY29ycmVz
cG9uZGluZyBtZWRpYSBzZXNzaW9uIHR5cGUgb2YgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeS4KKwor
ICAgIGlmIChraW5kLmlzTnVsbCgpIHx8IGtpbmQgPT0gY29udGVudEtpbmQpCisgICAgICAgIHJl
dHVybiBNZWRpYVNlc3Npb246OktpbmQ6OkNvbnRlbnQ7CiAgICAgaWYgKGtpbmQgPT0gYW1iaWVu
dEtpbmQpCiAgICAgICAgIHJldHVybiBNZWRpYVNlc3Npb246OktpbmQ6OkFtYmllbnQ7CiAgICAg
aWYgKGtpbmQgPT0gdHJhbnNpZW50S2luZCkKICAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6
S2luZDo6VHJhbnNpZW50OwogICAgIGlmIChraW5kID09IHRyYW5zaWVudFNvbG9LaW5kKQogICAg
ICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpLaW5kOjpUcmFuc2llbnRTb2xvOwotICAgIHJldHVy
biBNZWRpYVNlc3Npb246OktpbmQ6OkNvbnRlbnQ7Ci19CiAKLU1lZGlhU2Vzc2lvbjo6TWVkaWFT
ZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi17
Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuYWRkTWVkaWFTZXNzaW9uKCp0
aGlzKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTWVkaWFTZXNzaW9u
OjpLaW5kOjpDb250ZW50OwogfQogCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAko
cmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMSBAQCBwdWJsaWM6
CiAgICAgICAgIEFtYmllbnQKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxNZWRpYVNlc3Npb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtp
bmQpCisgICAgc3RhdGljIFJlZjxNZWRpYVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQgPSBTdHJpbmcoKSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbihjb250ZXh0LCBraW5kKSk7
CiAgICAgfQogCi0gICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uKERvY3VtZW50Jik7Ci0gICAgTWVk
aWFTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+
TWVkaWFTZXNzaW9uKCk7CiAKICAgICBTdHJpbmcga2luZCgpIGNvbnN0OwpAQCAtOTEsNiArODks
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OwogCisgICAgTWVkaWFTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJp
bmcmKTsKKwogICAgIHN0YXRpYyBLaW5kIHBhcnNlS2luZChjb25zdCBTdHJpbmcmKTsKIAogICAg
IHZvaWQgYWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAko
cmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTiwKLSAgICBDb25zdHJ1Y3RvcihNZWRpYVNlc3Np
b25LaW5kIGtpbmQpLAorICAgIEN1c3RvbUNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlhU2Vzc2lv
bktpbmQga2luZCksCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBNZWRpYVNl
c3Npb24gewpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg5MDIxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0
LDcgQEAKIAkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzdBRjEzRTE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYy5oICovOyB9OwogCQkwNzdBRjE0NDE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gKi87IH07CisJCTA3N0I2NDBGMUI4RjVE
NkIwMDNFOUFENSAvKiBKU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQwRTFCOEY1Mzc1MDAzRTlBRDUgLyog
SlNNZWRpYVNlc3Npb25DdXN0b20uY3BwICovOyB9OwogCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlF
MEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MjE4MDEzRUQ3MDA5OTlFMEMgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5jcHAgKi87IH07CiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5oICovOyB9OwogCQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFj
a0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovOyB9OwpAQCAt
NzM4Niw2ICs3Mzg3LDcgQEAKIAkJMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc3QjY0MEUxQjhGNTM3NTAwM0U5QUQ1IC8qIEpTTWVkaWFTZXNz
aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVk
aWFTZXNzaW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4MzIy
ODIxODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE0ODQsNiArMjE0ODYsNyBAQAogCQlCQzRFREVGNzBDMDhG
NDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkwNzdCNjQwRTFCOEY1Mzc1MDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25D
dXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0
b20uY3BwICovLAogCQkJCUZERUFBQUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVy
U291cmNlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRjAxMkIwMkVFNDAwRENGMzNCIC8q
IEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKQEAgLTI4MjI0LDYgKzI4MjI3LDcgQEAKIAkJ
CQkxNERDRjNCMjFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDM3QjM5ODE1QzFCOTcxMDA2REM4OTggLyogRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0FERkM2MTUzNzc4RkYwMEUz
NzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzdC
NjQwRjFCOEY1RDZCMDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDBCRDRGNUMxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3Rh
dGlvbkNvbW1hbmRJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRDY3QjExNTM1NjkxRjAw
NTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0b20uY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNlc3Npb25DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNNZWRpYVNlc3Npb24uaCIKKworI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQorCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNNZWRpYVNlc3Npb24oRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVj
LT5jYWxsZWUoKSk7CisgICAgYXV0byogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd0Nv
bnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpleGVjLCAiTWVkaWFTZXNzaW9uIik7
CisKKyAgICBTdHJpbmcga2luZDsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMCkg
eworICAgICAgICBKU1N0cmluZyoga2luZFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAga2luZCA9IGtpbmRTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgICAgICBpZiAoa2luZCAhPSAi
Y29udGVudCIgJiYga2luZCAhPSAidHJhbnNpZW50IiAmJiBraW5kICE9ICJ0cmFuc2llbnQtc29s
byIgJiYga2luZCAhPSAiYW1iaWVudCIpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUVudW1FcnJvcigqZXhlYywgMCwgImtpbmQiLCAiTWVkaWFTZXNzaW9uIiwgbnVsbHB0
ciwgIlwiY29udGVudFwiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaWVudC1zb2xvXCIsIFwiYW1i
aWVudFwiIik7CisgICAgfSBlbHNlCisgICAgICAgIGtpbmQgPSAiY29udGVudCI7CisKKyAgICBS
ZWZQdHI8TWVkaWFTZXNzaW9uPiBvYmplY3QgPSBNZWRpYVNlc3Npb246OmNyZWF0ZSgqY29udGV4
dCwga2luZCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDE4OTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY3MDEsNyArNjcwMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGEKIE1lZGlhU2Vzc2lvbiYgRG9jdW1lbnQ6OmRlZmF1bHRNZWRpYVNl
c3Npb24oKQogewogICAgIGlmICghbV9kZWZhdWx0TWVkaWFTZXNzaW9uKQotICAgICAgICBtX2Rl
ZmF1bHRNZWRpYVNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbigqdGhpcykpOwor
ICAgICAgICBtX2RlZmF1bHRNZWRpYVNlc3Npb24gPSBNZWRpYVNlc3Npb246OmNyZWF0ZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHJldHVybiAqbV9kZWZhdWx0TWVkaWFTZXNz
aW9uOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxODkwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTA5LDM2ICs2NTA5LDMyIEBAIGRvdWJsZSBIVE1MTWVk
aWFFbGVtZW50OjpwbGF5ZXJWb2x1bWUoKSAKIE1lZGlhU2Vzc2lvbiogSFRNTE1lZGlhRWxlbWVu
dDo6c2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgTWVkaWFTZXNzaW9uKiBzZXNzaW9uID0gbV9zZXNz
aW9uLmdldCgpOwotICAgIGlmIChzZXNzaW9uICYmIHNlc3Npb24tPmtpbmRFbnVtKCkgPT0gTWVk
aWFTZXNzaW9uOjpLaW5kOjpEZWZhdWx0KQorICAgIGlmIChzZXNzaW9uICYmIHNlc3Npb24gPT0g
JmRvY3VtZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKwogICAgIHJldHVybiBzZXNzaW9uOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFNlc3Npb24oTWVkaWFTZXNzaW9uKiBzZXNzaW9uKQogewotICAgIC8vIDYuMQorICAgIC8vIDYu
MS4gRXh0ZW5zaW9ucyB0byB0aGUgSFRNTE1lZGlhRWxlbWVudCBpbnRlcmZhY2UKICAgICAvLyAx
LiBMZXQgbSBiZSB0aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVzdGlvbi4KLSAgICAvLyAyLiBMZXQg
b2xkIG1lZGlhIHNlc3Npb24gYmUgbSdzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiwgaWYgaXQgaGFz
IG9uZSwgYW5kIG51bGwgb3RoZXJ3aXNlLgotICAgIC8vIDMuIExldCBuZXcgbWVkaWEgc2Vzc2lv
biBiZSBudWxsLgotICAgIC8vIDQuIFNldCBtJ3MgY3VycmVudCBtZWRpYSBzZXNzaW9uIHRvIG51
bGwsIGlmIGl0IGN1cnJlbnRseSBoYXMgb25lLgotICAgIC8vIDUuIExldCBtJ3MgY3VycmVudCBt
ZWRpYSBzZXNzaW9uIGJlIHRoZSBuZXcgdmFsdWUgb3IgdGhlIHRvcC1sZXZlbCBicm93c2luZyBj
b250ZXh0J3MgbWVkaWEgc2Vzc2lvbiBpZiB0aGUgbmV3Ci0gICAgLy8gICAgdmFsdWUgaXMgbnVs
bC4KLSAgICAvLyA2LiBJZiB0aGUgbmV3IHZhbHVlIGlzIG51bGwsIHRoZW4gc2V0IHRoZSBtJ3Mg
a2luZCBJREwgYXR0cmlidXRlIHRvIHRoZSBlbXB0eSBzdHJpbmcuIE90aGVyd2lzZSwgc2V0IG0n
cyBraW5kIElETAotICAgIC8vICAgIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUgb2YgY3VycmVudCBt
ZWRpYSBzZXNzaW9uJ3Mga2luZCBhdHRyaWJ1dGUuCi0gICAgLy8gNy4gTGV0IG5ldyBtZWRpYSBz
ZXNzaW9uIGJlIG0ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24uCi0gICAgLy8gOC4gVXBkYXRlIG1l
ZGlhIHNlc3Npb25zOiBJZiBvbGQgbWVkaWEgc2Vzc2lvbiBhbmQgbmV3IG1lZGlhIHNlc3Npb24g
YXJlIHRoZSBzYW1lICh3aGV0aGVyIGJvdGggbnVsbCBvciBib3RoIHRoZQotICAgIC8vICAgIHNh
bWUgbWVkaWEgc2Vzc2lvbiksIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgotICAgIC8vIDku
IElmIG0gaXMgYW4gYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudCBvZiBvbGQgbWVk
aWEgc2Vzc2lvbiwgdGhlbiBwYXVzZSBtIGFuZCByZW1vdmUgbSBmcm9tIG9sZCBtZWRpYQotICAg
IC8vICAgIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAg
ICAvLyAxMC4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwgYW5kIG5vIGxvbmdlciBo
YXMgb25lIG9yIG1vcmUgYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMsIHRoZW4g
cnVuCi0gICAgLy8gICAgIHRoZSBtZWRpYSBzZXNzaW9uIHJlbGVhc2UgYWxnb3JpdGhtIGZvciBv
bGQgbWVkaWEgc2Vzc2lvbi4KKyAgICAvLyAyLiBMZXQgb2xkIG1lZGlhIHNlc3Npb24gYmUgbeKA
mXMgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBpdCBoYXMgb25lLCBhbmQgbnVsbCBvdGhlcndp
c2UuCisgICAgLy8gMy4gTGV0IG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgbmV3
IHZhbHVlIG9yIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dOKAmXMgbWVkaWEgc2Vzc2lv
biBpZiB0aGUgbmV3IHZhbHVlIGlzIG51bGwuCisgICAgLy8gNC4gTGV0IG5ldyBtZWRpYSBzZXNz
aW9uIGJlIG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbi4KKworICAgIC8vIDUuIFVwZGF0ZSBt
ZWRpYSBzZXNzaW9uczogSWYgb2xkIG1lZGlhIHNlc3Npb24gYW5kIG5ldyBtZWRpYSBzZXNzaW9u
IGFyZSB0aGUgc2FtZSAod2hldGhlciBib3RoIG51bGwgb3IgYm90aCB0aGUgc2FtZSBtZWRpYSBz
ZXNzaW9uKSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgaWYgKG1fc2Vzc2lvbi5n
ZXQoKSA9PSBzZXNzaW9uKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zZXNzaW9uKSB7
CisgICAgICAgIC8vIDYuIElmIG0gaXMgYW4gYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50IG9m
IG9sZCBtZWRpYSBzZXNzaW9uLCB0aGVuIHBhdXNlIG0gYW5kIHJlbW92ZSBtIGZyb20gb2xkIG1l
ZGlhIHNlc3Npb27igJlzIGxpc3Qgb2YgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KICAg
ICAgICAgaWYgKG1fc2Vzc2lvbi0+aXNNZWRpYUVsZW1lbnRBY3RpdmUoKnRoaXMpKQogICAgICAg
ICAgICAgcGF1c2UoKTsKIAogICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZU1lZGlhRWxlbWVudCgq
dGhpcyk7CiAKKyAgICAgICAgLy8gNy4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwg
YW5kIG5vIGxvbmdlciBoYXMgb25lIG9yIG1vcmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50
cywgdGhlbiBydW4gdGhlIG1lZGlhIHNlc3Npb24gZGVhY3RpdmF0aW9uIGFsZ29yaXRobSBmb3Ig
b2xkIG1lZGlhIHNlc3Npb24uCiAgICAgICAgIGlmICghbV9zZXNzaW9uLT5oYXNBY3RpdmVNZWRp
YUVsZW1lbnRzKCkpCiAgICAgICAgICAgICBtX3Nlc3Npb24tPnJlbGVhc2VTZXNzaW9uKCk7CiAg
ICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5MDI0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDgtMjcgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgU2Vzc2lvbjogTWVk
aWFTZXNzaW9uIGNvbnN0cnVjdG9yICdraW5kJyBhcmd1bWVudCBvcHRpb25hbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgICogbWVkaWEvc2Vzc2lvbi9jb250ZW50
LWludGVycnVwdGlvbnMuaHRtbDogUmVzdHJ1Y3R1cmUgdG8gbWFrZSBsZXNzIHRpbWluZyBkZXBl
bmRlbnQuIE1pbm9yIGNsZWFudXAuCisgICAgICAgICogbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNy
ZWF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3Jl
YXRpb24uaHRtbDogVGVzdCBkZWZhdWx0IE1lZGlhU2Vzc2lvbiBjb25zdHJ1Y3RvciBhcmd1bWVu
dC4KKwogMjAxNS0wOC0yNyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzb21lIG5ldyBlbW9qaSB3aXRoIG1vZGlmaWVycyBhbmQgbmV3IHNlcXVlbmNl
LgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50
ZXJydXB0aW9ucy5odG1sCShyZXZpc2lvbiAxODkwMjEpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDI3
ICs4LDI1IEBACiAgICAgCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLQorICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwogICAgICAgICAg
ICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKIAogICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJXYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcu
IikKLSAgICAgICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRl
byIpOwogICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4v
Y29udGVudC9jb3VudGluZyIpOwogICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247
CiAgICAgICAgICAgICB2aWRlby5vbnBsYXlpbmcgPSBiZWdhblBsYXlpbmc7CisgICAgICAgICAg
ICB2aWRlby5vbmNhbnBsYXl0aHJvdWdoID0gY2FucGxheXRocm91Z2g7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgpIAorICAgICAgICB7CiAgICAgICAgICAg
ICB2aWRlby5wbGF5KCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlp
bmcoZXZlbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVn
YW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRl
byIpLm9ucGF1c2UgPSBwYXVzZWQ7CisgICAgICAgICAgICB2aWRlby5vbnBhdXNlID0gcGF1c2Vk
OwogCiAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewogICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9u
KScsICJhY3RpdmUiKTsKQEAgLTUxLDYgKzQ5LDYgQEAKIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KICAgICA8cD4nQ29udGVudCcgc3RhcnQgb2YgaW50ZXJydXB0aW9uIGV2ZW50
cyBzaG91bGQgaW5kZWZpbml0ZWx5IHBhdXNlICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy48L3A+
Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KKyAgICA8dmlkZW8gaWQ9InZpZGVvIiBjb250cm9s
cz4gPC92aWRlbz4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vc2Vzc2lvbi1jcmVhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTg5MDIxKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9u
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMCArMSwzMCBAQAogTmV3IG1lZGlh
IHNlc3Npb25zIHNob3VsZCBiZSBpbiBhbiBJZGxlIHN0YXRlIGFmdGVyIGNyZWF0aW9uLgogCisK
IC0tLQotVGVzdGluZyAnY29udGVudCcgc2Vzc2lvbgorVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lv
bignY29udGVudCcpIgorRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwogLS0tCisKKy0tLQorVGVzdGluZyAibmV3IE1lZGlh
U2Vzc2lvbigndHJhbnNpZW50JykiCiBFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1
cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCiAtLS0KLVRlc3RpbmcgJ3RyYW5zaWVu
dCcgc2Vzc2lvbgorCiAtLS0KK1Rlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudC1z
b2xvJykiCiBFWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKSA9PSAnaWRsZScpIE9LCiAtLS0KLVRlc3RpbmcgJ3RyYW5zaWVudC1zb2xvJyBzZXNzaW9u
CisKIC0tLQorVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbignYW1iaWVudCcpIgogRVhQRUNURUQg
KGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBP
SwogLS0tCi1UZXN0aW5nICdhbWJpZW50JyBzZXNzaW9uCisKIC0tLQorVGVzdGluZyAibmV3IE1l
ZGlhU2Vzc2lvbigpIgogRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSworLS0tCisKIEVORCBPRiBURVNUCiAKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi5odG1sCShyZXZp
c2lvbiAxODkwMjEpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSwyMCArOSwyNyBAQAogICAgICAgICAgICAgdGVz
dFNlc3Npb25LaW5kKCJ0cmFuc2llbnQiKTsKICAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgi
dHJhbnNpZW50LXNvbG8iKTsKICAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgiYW1iaWVudCIp
OworICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCk7CiAKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBm
dW5jdGlvbiB0ZXN0U2Vzc2lvbktpbmQoc2Vzc2lvbktpbmQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiLS0tIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3Rp
bmcgJyIgKyBzZXNzaW9uS2luZCArICInIHNlc3Npb24iKTsKLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiLS0tIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4tLS0iKTsKIAotICAg
ICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oc2Vzc2lvbktpbmQpOworICAgICAg
ICAgICAgaWYgKHNlc3Npb25LaW5kICE9IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiVGVzdGluZyBcIm5ldyBNZWRpYVNlc3Npb24oJyIgKyBzZXNzaW9uS2luZCAr
ICInKVwiIik7CisgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oc2Vz
c2lvbktpbmQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRlc3RpbmcgXCJuZXcgTWVkaWFTZXNzaW9uKClcIiIpOworICAgICAgICAgICAgICAg
IHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
aW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpZGxlIik7Cisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIi0tLSIpOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+
CiA8L2hlYWQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>