<?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>55119</bug_id>
          
          <creation_ts>2011-02-24 00:31:25 -0800</creation_ts>
          <short_desc>Implement SVGColor/SVGPaint API</short_desc>
          <delta_ts>2011-02-25 05:11:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>54800</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>kling</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>356727</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-24 00:31:25 -0800</bug_when>
    <thetext>The SVGColor/SVGPaint API is not implemented, fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357759</commentid>
    <comment_count>1</comment_count>
      <attachid>83782</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 00:45:35 -0800</bug_when>
    <thetext>Created attachment 83782
Patch

This patch completly implements the SVGPaint/SVGColor API, except that any mutation of this object, is not live, it doesn&apos;t take effect on screen, nor is it visible in the computed style.
CSSValue has no concept of being mutable, a follow-up patch will add CSSMutableValue, and fix the problem for real, though I&apos;m splitting up the patches, in order to keep them in moderate size.
(Note: this patch is large because of the new tests, mostly)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357761</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 00:49:16 -0800</bug_when>
    <thetext>*** Bug 48120 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357773</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-25 01:09:13 -0800</bug_when>
    <thetext>Can SVGPaint and SVGColor objects ever be shared between documents? Making CSS objects mutable often creates XSS security bugs.

I don&apos;t have a specific concern, but I vaguely remember relying on the fact that SVGPaint and SVGColor are immutable when looking over CSSOM objects in search for XSS and dangling parent pointer bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357776</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-25 01:22:15 -0800</bug_when>
    <thetext>Attachment 83782 did not build on win:
Build output: http://queues.webkit.org/results/8019140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357782</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 01:49:39 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Can SVGPaint and SVGColor objects ever be shared between documents? Making CSS objects mutable often creates XSS security bugs.
Yes you are right, that would be security sensitive. Short answer: they can&apos;t. See below, how you&apos;ll ever get a unique/mutable value, that&apos;s no longer shared or cached.

&gt; 
&gt; I don&apos;t have a specific concern, but I vaguely remember relying on the fact that SVGPaint and SVGColor are immutable when looking over CSSOM objects in search for XSS and dangling parent pointer bugs.
Hey Alexex, I wanted to CC you anyway, as I recall you worked on this before.
The problem is that rectElement.style.fill and getComputedStyle(rectElement) return exactly the same SVGPaint object, that&apos;s also living as RefPtr&lt;SVGPaint&gt; in our SVGRenderStyle, which is dangerous.
A follow-up patch (the old version is still on bug 54800, I&apos;ll upload a new patch, once this is in) will fix this. We will no longer store SVGPaint in SVGRenderStyle, but a fill/stroke paint type/uri/color and create a new SVGPaint object in computedStyle, that is immutable, and return en existing SVGPaint object in style.fill, that is mutable.

How does that work?
I added a CSSMutableValue class, which inherits from CSSValue and additionally stores a Node pointer, to whose Node this value is linked (rectElement.style.fill, its SVGPaint object is linked to rectElement). SVGPaint/SVGColor inherit from CSSMutableValue.

The problem is that CSSValues are shared between multiple inline style declarations.eg. &lt;rect fill=&quot;red&quot;/&gt; &lt;rect fill=&quot;red&quot;/&gt;. Because of the cache in StyledElement, both will share the same SVGPaint object.

If I want to script the first SVGPaint object, I&apos;ll retrieve it through getPropertyCSSValue. I modified getPropertyCSSValue to assure that the MappedAttribute for fill is no longer shared anymore. Then I link the CSSMutableValue to the Node whose CSSStyleDeclaration::getPropertyCSSValue call invoked function.

This way we can map between CSSMutableValues and their _single_ node they belong to. (It&apos;s a similar approach to how CSSMutableStyleDeclarations are handled). This has no impact on regular style sharing, only when scripting elements style through getPropertyCSSValue.

I&apos;ll have a patch up soon, so we have an even better place to discuss :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357784</commentid>
    <comment_count>6</comment_count>
      <attachid>83785</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 01:54:06 -0800</bug_when>
    <thetext>Created attachment 83785
Patch v2

Try to fix win build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357786</commentid>
    <comment_count>7</comment_count>
      <attachid>83785</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-25 02:02:31 -0800</bug_when>
    <thetext>Comment on attachment 83785
Patch v2

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

waiting for the bots before I review the patch. (If no one beats me).

&gt; Source/WebCore/svg/SVGPaint.cpp:188
&gt; +        break;
&gt; +    case SVG_PAINTTYPE_URI_NONE:
&gt; +    case SVG_PAINTTYPE_URI_CURRENTCOLOR:
&gt; +    case SVG_PAINTTYPE_URI_RGBCOLOR:
&gt; +    case SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR:
&gt; +    case SVG_PAINTTYPE_URI:
&gt; +        return referenceId == SVGURIReference::getTarget(m_uri);
&gt; +    }
&gt;  
&gt; -    return referenceId == SVGURIReference::getTarget(m_uri);
&gt; +    return false;

Hehe, here you did not take ASSERT_NOT_REACHED looks inconsistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357791</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 02:28:04 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 83785 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83785&amp;action=review
&gt; 
&gt; waiting for the bots before I review the patch. (If no one beats me).
&gt; 
&gt; &gt; Source/WebCore/svg/SVGPaint.cpp:188
&gt; &gt; +        break;
&gt; &gt; +    case SVG_PAINTTYPE_URI_NONE:
&gt; &gt; +    case SVG_PAINTTYPE_URI_CURRENTCOLOR:
&gt; &gt; +    case SVG_PAINTTYPE_URI_RGBCOLOR:
&gt; &gt; +    case SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR:
&gt; &gt; +    case SVG_PAINTTYPE_URI:
&gt; &gt; +        return referenceId == SVGURIReference::getTarget(m_uri);
&gt; &gt; +    }
&gt; &gt;  
&gt; &gt; -    return referenceId == SVGURIReference::getTarget(m_uri);
&gt; &gt; +    return false;
&gt; 
&gt; Hehe, here you did not take ASSERT_NOT_REACHED looks inconsistent.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357804</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-25 03:04:50 -0800</bug_when>
    <thetext>Attachment 83785 did not build on win:
Build output: http://queues.webkit.org/results/8044130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357813</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 03:21:25 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Attachment 83785 [details] did not build on win:
&gt; Build output: http://queues.webkit.org/results/8044130

Ok win doesn&apos;t like my
static inline void valueChanged() stub implementation in both SVGPaint/SVGColor. I&apos;ll just replaced all valueChanged() calls, which are no-ops w/o the follow-up patch to say, &quot;// FIXME: A follow-up patch will call valueChanged() here.&quot;

Shall I upload a new patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357814</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-25 03:26:57 -0800</bug_when>
    <thetext>Attachment 83785 did not build on win:
Build output: http://queues.webkit.org/results/8043158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357843</commentid>
    <comment_count>12</comment_count>
      <attachid>83785</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-25 04:57:09 -0800</bug_when>
    <thetext>Comment on attachment 83785
Patch v2

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

LGTM. r=me

&gt; Source/WebCore/ChangeLog:11
&gt; +        Rewrite SVGColor/SVGPaint to actually implement their desired setPaint/setColor/setURI APIS.

s/APIS/APIs/ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357850</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 05:11:14 -0800</bug_when>
    <thetext>APIs typo is fixed. Landed in r79675.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83782</attachid>
            <date>2011-02-25 00:45:35 -0800</date>
            <delta_ts>2011-02-25 01:54:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>FullNewPatch.diff</filename>
            <type>text/plain</type>
            <size>87339</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NjY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTEtMDItMjUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFNWR0NvbG9yL1NWR1BhaW50IEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTkK
KworICAgICAgICBSZXdyaXRlIFNWR0NvbG9yL1NWR1BhaW50IHRvIGFjdHVhbGx5IGltcGxlbWVu
dCB0aGVpciBkZXNpcmVkIHNldFBhaW50L3NldENvbG9yL3NldFVSSSBBUElTLgorICAgICAgICBT
VkdQYWludCBpcyBhIENTU1ZhbHVlLCBhbmQgaXRzIHNldFBhaW50KCkgZnVuY3Rpb24gYWxsb3dz
IHRvIHN3aXRjaCB0byBhbiBhcmJpdGFyeSBwYWludCB0eXBlLgorICAgICAgICBUaGF0IG1lYW5z
LCB1bmxpa2UgYWxsIG90aGVyIENTU1ZhbHVlcywgU1ZHQ29sb3IvU1ZHUGFpbnQgYXJlIG11dGFi
bGUuIFRoYXQgbWVhbnMgY2hhbmdlcyB0bworICAgICAgICB0aGVpciBDU1NWYWx1ZXMgc2hvdWxk
IGJlIHJlZmxlY3RlZCBpbiB0aGUgZWxlbWVudHMgc3R5bGUgYXMgd2VsbCBhcyBpbiB0aGUgY29t
cHV0ZWQgc3R5bGUuCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRo
YXQsIHRoZSBzdHViYmVkLW91dCBtZXRob2Qgc2V0TmVlZHNTdHlsZVJlY2FsYygpIGlzIHdoYXQK
KyAgICAgICAgbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQuIEZvciBub3cgeW91IGNhbiBncmFiIGEg
U1ZHQ29sb3IvU1ZHUGFpbnQgb2JqZWN0IHRocm91Z2ggZ2V0Q1NTUHJvcGVydHlWYWx1ZQorICAg
ICAgICBhbmQgbWFuaXB1bGF0ZSBpdCwgaW4gZXZlcnkgcG9zc2libGUgd2F5IChTVlBhaW50LnVy
aS9wYWludFR5cGUvY29sb3JUeXBlL2NvbG9yIGF0dHJpYnV0ZXMgYXJlIGFsbCBzeW5jJ2VkKS4K
KyAgICAgICAgU3dpdGNoIHRvIHN0cmljdCBKUyBiaW5kaW5ncyAoUmVxdWlyZXNBbGxBcmd1bWVu
dHM9UmFpc2UsIFN0cmljdFR5cGVDaGVja2luZykgZm9yIGJvdGggb2JqZWN0cy4KKworICAgICAg
ICBFbmFibGUgcHJvcGVyIHNlcmlhbGl6YXRpb24gb2YgY29sb3JzIHRocm91Z2ggQ29sb3I6OnNl
cmlhbGl6ZWQoKSwgYWZmZWN0cyBzb21lIHRlc3RjYXNlcyAoI0ZGLi4gLT4gI2ZmLi4pCisgICAg
ICAgIEFkZCBleHRlbnNpdmUgdGVzdHMgb2YgYWxsIFNWR0NvbG9yL1NWR1BhaW50IEFQSSwgY3Vy
cmVudGx5IHNob3dzIHNvbWUgRkFJTCBtZXNzYWdlcywgYXMgZWxlbWVudCBzdHlsZQorICAgICAg
ICA8LT4gY29tcHV0ZWQgc3R5bGUgaXMgbm90IGxpdmUsIGFmdGVyIG11dGF0aW5nIFNWR0NvbG9y
L1NWR1BhaW50LiBUaGF0IHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gYSBmb2xsb3ctdXAgcGF0Y2gu
CisKKyAgICAgICAgVGVzdHM6IHN2Zy9kb20vU1ZHQ29sb3IuaHRtbAorICAgICAgICAgICAgICAg
c3ZnL2RvbS9TVkdQYWludC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG06IFJlbW92ZSBvYnNvbGV0ZSBoYW5kbGluZyBvZiAiU1ZHUGFpbnRUeXBlIiwg
dGFrZSB1c2hvcnQgZm9yIHBhaW50VHlwZSwgYXMgc3BlY2lmaWVkIGluIHRoZSBTVkcgMS4xIElE
THMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IERpdHRv
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06IERpdHRv
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOiBEaXR0by4K
KyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2VyLmNwcDogQWRhcHQgdG8gU1ZHUGFpbnQvU1ZHQ29s
b3IgY3JlYXRlKCkgbmFtaW5nIGNvbnZlbnRpb24gY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlU1ZHUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR0Nv
bG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQ29sb3IuY3BwOiBSZXdyaXRlIHRvIGZ1bGx5IGltcGxl
bWVudCB0aGUgU1ZHQ29sb3IgQVBJLCBtZXJnZSBhbGwgY29uc3RydWN0b3JzIGludG8gb25lLCB1
c2UgbW9yZSBkZXNjcmlwdGFibGUgY3JlYXRlKCkgbmFtaW5nIGNvbnZlbnRpb24uCisgICAgICAg
IChXZWJDb3JlOjpzZXROZWVkc1N0eWxlUmVjYWxjKTogU3R1YiBpbXBsZW1lbnRhdGlvbiwgd2ls
bCBsYW5kIGluIGEgZm9sbG93LXVwIHBhdGNoLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6
OlNWR0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpzZXRSR0JDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OnNldFJHQkNvbG9ySUNDQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQ29sb3I6OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9y
Ojpjc3NUZXh0KToKKyAgICAgICAgKiBzdmcvU1ZHQ29sb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbG9yOjpjcmVhdGVGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9y
OjpjcmVhdGVGcm9tQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OmNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpjb2xvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29sb3I6On5TVkdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6c2V0
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OnNldENvbG9yVHlwZSk6CisgICAg
ICAgICogc3ZnL1NWR0NvbG9yLmlkbDogRW5hYmxlIHN0cmljdCB0eXBlIGNoZWNraW5nLgorICAg
ICAgICAqIHN2Zy9TVkdQYWludC5jcHA6IFJld3JpdGUgdG8gZnVsbHkgaW1wbGVtZW50IHRoZSBT
VkdQYWludCBBUEksIG1lcmdlIGFsbCBjb25zdHJ1Y3RvcnMgaW50byBvbmUsIHVzZSBtb3JlIGRl
c2NyaXB0YWJsZSBjcmVhdGUoKSBuYW1pbmcgY29udmVudGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OnNldE5lZWRzU3R5bGVSZWNhbGMpOiBTdHViIGltcGxlbWVudGF0aW9uLCB3aWxsIGxhbmQgaW4g
YSBmb2xsb3ctdXAgcGF0Y2guCisgICAgICAgIChXZWJDb3JlOjpjb2xvclR5cGVGb3JQYWludFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OlNWR1BhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhaW50OjpzZXRVcmkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmRl
ZmF1bHRGaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpkZWZhdWx0U3Ryb2tlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpzZXRQYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYWludDo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6bWF0Y2hl
c1RhcmdldFVSSSk6CisgICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYWludDo6Y3JlYXRlVW5rbm93bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6
Y3JlYXRlTm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6Y3JlYXRlQ3VycmVudENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGVDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYWludDo6Y3JlYXRlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
aW50OjpjcmVhdGVVUklBbmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6cGFp
bnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50Ojp1cmkpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGFpbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6aXNT
VkdQYWludCk6CisgICAgICAgICogc3ZnL1NWR1BhaW50LmlkbDogRW5hYmxlIHN0cmljdCB0eXBl
IGNoZWNraW5nLgorCisKIDIwMTEtMDItMjUgIFJlbmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lv
biA3OTM0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBteSAlcHJpbWl0aXZlVHlwZUhh
c2ggPSAoICJib29sZWFuIiA9PiAxCiAKIG15ICVzdHJpbmdUeXBlSGFzaCA9ICgiRE9NU3RyaW5n
IiA9PiAxLCAiQXRvbWljU3RyaW5nIiA9PiAxKTsKIAotbXkgJW5vblBvaW50ZXJUeXBlSGFzaCA9
ICgiRE9NVGltZVN0YW1wIiA9PiAxLCAiQ29tcGFyZUhvdyIgPT4gMSwgIlNWR1BhaW50VHlwZSIg
PT4gMSk7CitteSAlbm9uUG9pbnRlclR5cGVIYXNoID0gKCJET01UaW1lU3RhbXAiID0+IDEsICJD
b21wYXJlSG93IiA9PiAxKTsKIAogbXkgJXN2Z0FuaW1hdGVkVHlwZUhhc2ggPSAoIlNWR0FuaW1h
dGVkQW5nbGUiID0+IDEsICJTVkdBbmltYXRlZEJvb2xlYW4iID0+IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiIgPT4gMSwgIlNWR0FuaW1hdGVk
SW50ZWdlciIgPT4gMSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiA3OTM0NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzkyLDcgKzIzOTIsNiBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiTm9kZUZpbHRlciIg
PT4gIlJlZlB0cjxOb2RlRmlsdGVyPiIsCiAgICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4g
IlJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IiwKICAgICAiSURCS2V5IiA9PiAiUmVmUHRy
PElEQktleT4iLAotICAgICJTVkdQYWludFR5cGUiID0+ICJTVkdQYWludDo6U1ZHUGFpbnRUeXBl
IiwKICAgICAiYm9vbGVhbiIgPT4gImJvb2wiLAogICAgICJkb3VibGUiID0+ICJkb3VibGUiLAog
ICAgICJmbG9hdCIgPT4gImZsb2F0IiwKQEAgLTI0NzksNyArMjQ3OCw2IEBAIHN1YiBKU1ZhbHVl
VG9OYXRpdmUKIAogICAgIHJldHVybiAidmFsdWVUb0RhdGUoZXhlYywgJHZhbHVlKSIgaWYgJHR5
cGUgZXEgIkRhdGUiOwogICAgIHJldHVybiAic3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+
KCR2YWx1ZS50b0ludDMyKGV4ZWMpKSIgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ciOwotICAgIHJl
dHVybiAic3RhdGljX2Nhc3Q8U1ZHUGFpbnQ6OlNWR1BhaW50VHlwZT4oJHZhbHVlLnRvSW50MzIo
ZXhlYykpIiBpZiAkdHlwZSBlcSAiU1ZHUGFpbnRUeXBlIjsKIAogICAgIGlmICgkdHlwZSBlcSAi
RE9NU3RyaW5nIikgewogICAgICAgICByZXR1cm4gInZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNr
KGV4ZWMsICR2YWx1ZSkiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZyJ9IHx8ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJSZWZsZWN0In07CkBAIC0yNTM4LDcgKzI1MzYsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAg
ICAgICAgIHJldHVybiAianNOdW1iZXIoc3RkOjptYXgoMCwgIiAuICR2YWx1ZSAuICIpKSI7CiAg
ICAgfQogCi0gICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9y
ICR0eXBlIGVxICJTVkdQYWludFR5cGUiIG9yICR0eXBlIGVxICJET01UaW1lU3RhbXAiKSB7Cisg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVx
ICJET01UaW1lU3RhbXAiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0pTTnVt
YmVyQ2VsbC5oPiJ9ID0gMTsKICAgICAgICAgcmV0dXJuICJqc051bWJlcigkdmFsdWUpIjsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JP
YmpDLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDc5MzQ1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDc0
LDcgKzQ3NCw3IEBAIHN1YiBHZXRPYmpDVHlwZQogCiAgICAgcmV0dXJuICJpZCA8JG5hbWU+IiBp
ZiBJc1Byb3RvY29sVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICRuYW1lIGlmICRjb2RlR2VuZXJh
dG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVxICJET01UaW1lU3RhbXAiOwot
ICAgIHJldHVybiAidW5zaWduZWQgc2hvcnQiIGlmICR0eXBlIGVxICJDb21wYXJlSG93IiBvciAk
dHlwZSBlcSAiU1ZHUGFpbnRUeXBlIjsKKyAgICByZXR1cm4gInVuc2lnbmVkIHNob3J0IiBpZiAk
dHlwZSBlcSAiQ29tcGFyZUhvdyI7CiAgICAgcmV0dXJuICIkbmFtZSAqIjsKIH0KIApAQCAtNDky
LDcgKzQ5Miw3IEBAIHN1YiBHZXRQcm9wZXJ0eUF0dHJpYnV0ZXMKICAgICAgICAgcHVzaChAYXR0
cmlidXRlcywgImNvcHkiKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmlt
YXRlZFR5cGUoJHR5cGUpKSB7CiAgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICJyZXRhaW4iKTsK
LSAgICB9IGVsc2lmICghJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkgJiYgISRj
b2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpICYmICR0eXBlIG5lICJET01UaW1l
U3RhbXAiICYmICR0eXBlIG5lICJDb21wYXJlSG93IiAmJiAkdHlwZSBuZSAiU1ZHUGFpbnRUeXBl
IikgeworICAgIH0gZWxzaWYgKCEkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSAm
JiAhJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgkdHlwZSkgJiYgJHR5cGUgbmUgIkRP
TVRpbWVTdGFtcCIgJiYgJHR5cGUgbmUgIkNvbXBhcmVIb3ciKSB7CiAgICAgICAgIHB1c2goQGF0
dHJpYnV0ZXMsICJyZXRhaW4iKTsKICAgICB9CiAKQEAgLTUxNSw3ICs1MTUsNiBAQCBzdWIgR2V0
T2JqQ1R5cGVHZXR0ZXIKICAgICByZXR1cm4gJGFyZ05hbWUgaWYgJGNvZGVHZW5lcmF0b3ItPklz
UHJpbWl0aXZlVHlwZSgkdHlwZSkgb3IgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlw
ZSkgb3IgSXNOYXRpdmVPYmpDVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICRhcmdOYW1lIC4gIk5v
ZGUiIGlmICR0eXBlIGVxICJFdmVudFRhcmdldCI7CiAgICAgcmV0dXJuICJzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdz4oJGFyZ05hbWUpIiBpZiAkdHlwZSBlcSAiQ29tcGFy
ZUhvdyI7Ci0gICAgcmV0dXJuICJzdGF0aWNfY2FzdDxXZWJDb3JlOjpTVkdQYWludDo6U1ZHUGFp
bnRUeXBlPigkYXJnTmFtZSkiIGlmICR0eXBlIGVxICJTVkdQYWludFR5cGUiOwogICAgIHJldHVy
biAiV1RGOjpnZXRQdHIobmF0aXZlRXZlbnRMaXN0ZW5lcikiIGlmICR0eXBlIGVxICJFdmVudExp
c3RlbmVyIjsKICAgICByZXR1cm4gIldURjo6Z2V0UHRyKG5hdGl2ZU5vZGVGaWx0ZXIpIiBpZiAk
dHlwZSBlcSAiTm9kZUZpbHRlciI7CiAgICAgcmV0dXJuICJXVEY6OmdldFB0cihuYXRpdmVSZXNv
bHZlcikiIGlmICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9u
IDc5MzQ1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTI4MDQsNyArMjgwNCw2IEBAIHN1YiBHZXROYXRpdmVU
eXBlCiAgICAgcmV0dXJuICJib29sIiBpZiAkdHlwZSBlcSAiYm9vbGVhbiI7CiAgICAgcmV0dXJu
ICJTdHJpbmciIGlmICR0eXBlIGVxICJET01TdHJpbmciOwogICAgIHJldHVybiAiUmFuZ2U6OkNv
bXBhcmVIb3ciIGlmICR0eXBlIGVxICJDb21wYXJlSG93IjsKLSAgICByZXR1cm4gIlNWR1BhaW50
OjpTVkdQYWludFR5cGUiIGlmICR0eXBlIGVxICJTVkdQYWludFR5cGUiOwogICAgIHJldHVybiAi
RE9NVGltZVN0YW1wIiBpZiAkdHlwZSBlcSAiRE9NVGltZVN0YW1wIjsKICAgICByZXR1cm4gInVu
c2lnbmVkIiBpZiAkdHlwZSBlcSAidW5zaWduZWQgaW50IjsKICAgICByZXR1cm4gIk5vZGUqIiBp
ZiAkdHlwZSBlcSAiRXZlbnRUYXJnZXQiIGFuZCAkaXNQYXJhbWV0ZXI7CkBAIC0yODgxLDcgKzI4
ODAsNiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICJ0b1VJbnQzMigkdmFsdWUp
IiBpZiAkdHlwZSBlcSAidW5zaWduZWQgbG9uZyIgb3IgJHR5cGUgZXEgInVuc2lnbmVkIHNob3J0
IjsKICAgICByZXR1cm4gInRvSW50NjQoJHZhbHVlKSIgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxv
bmcgbG9uZyIgb3IgJHR5cGUgZXEgImxvbmcgbG9uZyI7CiAgICAgcmV0dXJuICJzdGF0aWNfY2Fz
dDxSYW5nZTo6Q29tcGFyZUhvdz4oJHZhbHVlLT5JbnQzMlZhbHVlKCkpIiBpZiAkdHlwZSBlcSAi
Q29tcGFyZUhvdyI7Ci0gICAgcmV0dXJuICJzdGF0aWNfY2FzdDxTVkdQYWludDo6U1ZHUGFpbnRU
eXBlPigkdmFsdWUtPlRvSW50MzIoKS0+SW50MzJWYWx1ZSgpKSIgaWYgJHR5cGUgZXEgIlNWR1Bh
aW50VHlwZSI7CiAgICAgcmV0dXJuICJ0b1dlYkNvcmVEYXRlKCR2YWx1ZSkiIGlmICR0eXBlIGVx
ICJEYXRlIjsKICAgICByZXR1cm4gInY4VmFsdWVUb1dlYkNvcmVET01TdHJpbmdMaXN0KCR2YWx1
ZSkiIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKIApAQCAtMzAzNSw3ICszMDMzLDYgQEAg
bXkgJW5vbl93cmFwcGVyX3R5cGVzID0gKAogICAgICdET01TdHJpbmcnID0+IDEsCiAgICAgJ0Nv
bXBhcmVIb3cnID0+IDEsCiAgICAgJ1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZScgPT4gMSwKLSAgICAn
U1ZHUGFpbnRUeXBlJyA9PiAxLAogICAgICdET01UaW1lU3RhbXAnID0+IDEsCiAgICAgJ0pTT2Jq
ZWN0JyA9PiAxLAogICAgICdET01PYmplY3QnID0+IDEsCkBAIC0zMTEyLDcgKzMxMDksNyBAQCBz
dWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgcmV0dXJuICJ2OERhdGVPck51bGwoJHZhbHVlKSIgaWYg
JHR5cGUgZXEgIkRhdGUiOwogICAgICMgbG9uZyBsb25nIGFuZCB1bnNpZ25lZCBsb25nIGxvbmcg
YXJlIG5vdCByZXByZXNlbnRhYmxlIGluIEVDTUFTY3JpcHQuCiAgICAgcmV0dXJuICJ2ODo6TnVt
YmVyOjpOZXcoc3RhdGljX2Nhc3Q8ZG91YmxlPigkdmFsdWUpKSIgaWYgJHR5cGUgZXEgImxvbmcg
bG9uZyIgb3IgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmcgbG9uZyIgb3IgJHR5cGUgZXEgIkRPTVRp
bWVTdGFtcCI7Ci0gICAgcmV0dXJuICJ2ODo6TnVtYmVyOjpOZXcoJHZhbHVlKSIgaWYgJGNvZGVH
ZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgkdHlwZSkgb3IgJHR5cGUgZXEgIlNWR1BhaW50VHlw
ZSI7CisgICAgcmV0dXJuICJ2ODo6TnVtYmVyOjpOZXcoJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0
b3ItPklzUHJpbWl0aXZlVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICIkdmFsdWUudjhWYWx1ZSgp
IiBpZiAkbmF0aXZlVHlwZSBlcSAiU2NyaXB0VmFsdWUiOwogCiAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcAkocmV2aXNpb24gNzkzNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDE3ICsxNzksMTcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlU1ZHVmFsdWUoaW50IHByb3BJZAogICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6
ICAgICAgICAgICAgICAgLy8gPHBhaW50PiB8IGluaGVyaXQKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9
IFNWR1BhaW50OjpjcmVhdGUoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfTk9ORSk7CisgICAgICAg
ICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlTm9uZSgpOwogICAgICAgICAg
ICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpCi0gICAgICAgICAgICAgICAg
cGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlKFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX0NV
UlJFTlRDT0xPUik7CisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3Jl
YXRlQ3VycmVudENvbG9yKCk7CiAgICAgICAgICAgICBlbHNlIGlmICgoaWQgPj0gQ1NTVmFsdWVB
Y3RpdmVib3JkZXIgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBDU1NWYWx1
ZU1lbnUpCi0gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlKFJl
bmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtQ29sb3IoaWQpKTsKKyAgICAgICAgICAg
ICAgICBwYXJzZWRWYWx1ZSA9IFNWR1BhaW50OjpjcmVhdGVDb2xvcihSZW5kZXJUaGVtZTo6ZGVm
YXVsdFRoZW1lKCktPnN5c3RlbUNvbG9yKGlkKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh2YWx1
ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAgICAgICAg
IFJHQkEzMiBjID0gQ29sb3I6OnRyYW5zcGFyZW50OwogICAgICAgICAgICAgICAgIGlmIChtX3Zh
bHVlTGlzdC0+bmV4dCgpICYmIHBhcnNlQ29sb3JGcm9tVmFsdWUobV92YWx1ZUxpc3QtPmN1cnJl
bnQoKSwgYykpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6
Y3JlYXRlKHZhbHVlLT5zdHJpbmcsIGMpOworICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1
ZSA9IFNWR1BhaW50OjpjcmVhdGVVUklBbmRDb2xvcih2YWx1ZS0+c3RyaW5nLCBjKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQ
YWludDo6Y3JlYXRlKFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1VSSSwgdmFsdWUtPnN0cmluZyk7
CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gU1ZHUGFpbnQ6OmNyZWF0ZVVSSSh2
YWx1ZS0+c3RyaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gcGFyc2VTVkdQYWludCgpOwogCkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlU1ZHVmFsdWUoaW50IHByb3BJZAogICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xv
cjogICAgICAgICAgICAgICAgLy8gPGNvbG9yPiB8IGluaGVyaXQKICAgICAgICAgaWYgKChpZCA+
PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fAogICAgICAgICAg
ICAoaWQgPj0gQ1NTVmFsdWVBbGljZWJsdWUgJiYgaWQgPD0gQ1NTVmFsdWVZZWxsb3dncmVlbikp
Ci0gICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IFNWR0NvbG9yOjpjcmVhdGUodmFsdWUtPnN0cmlu
Zyk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IFNWR0NvbG9yOjpjcmVhdGVGcm9tU3RyaW5n
KHZhbHVlLT5zdHJpbmcpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9
IHBhcnNlU1ZHQ29sb3IoKTsKIApAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVNWR1ZhbHVlKGludCBwcm9wSWQKICAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRpbmdDb2xv
cjoKICAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5k
b3d0ZXh0KSB8fAogICAgICAgICAgICAoaWQgPj0gQ1NTVmFsdWVBbGljZWJsdWUgJiYgaWQgPD0g
Q1NTVmFsdWVZZWxsb3dncmVlbikpCi0gICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IFNWR0NvbG9y
OjpjcmVhdGUodmFsdWUtPnN0cmluZyk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IFNWR0Nv
bG9yOjpjcmVhdGVGcm9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpOwogICAgICAgICBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gU1ZH
Q29sb3I6OmNyZWF0ZUN1cnJlbnRDb2xvcigpOwogICAgICAgICBlbHNlIC8vIFRPRE8gOiBzdmdj
b2xvciAoaWNjQ29sb3IpCkBAIC0zMzksOCArMzM5LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZVNWRwogewogICAgIFJHQkEzMiBjID0gQ29sb3I6OnRyYW5zcGFyZW50
OwogICAgIGlmICghcGFyc2VDb2xvckZyb21WYWx1ZShtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLCBj
KSkKLSAgICAgICAgcmV0dXJuIFNWR1BhaW50OjpjcmVhdGUoKTsKLSAgICByZXR1cm4gU1ZHUGFp
bnQ6OmNyZWF0ZShDb2xvcihjKSk7CisgICAgICAgIHJldHVybiBTVkdQYWludDo6Y3JlYXRlVW5r
bm93bigpOworICAgIHJldHVybiBTVkdQYWludDo6Y3JlYXRlQ29sb3IoQ29sb3IoYykpOwogfQog
CiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU1ZHQ29sb3IoKQpAQCAtMzQ4
LDExICszNDgsOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU1ZHCiAg
ICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgaWYgKCFwYXJzZUNvbG9yRnJv
bVZhbHVlKG1fdmFsdWVMaXN0LT5jdXJyZW50KCksIGMpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gU1ZHQ29sb3I6OmNyZWF0ZShDb2xvcihjKSk7CisgICAgcmV0dXJuIFNWR0NvbG9y
OjpjcmVhdGVGcm9tQ29sb3IoQ29sb3IoYykpOwogfQogCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29s
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAJKHJl
dmlzaW9uIDc5MzQ1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksNiArMjAsNyBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKKwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIK
IApAQCAtMjgsMjggKzMwLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHQ29sb3I6
OlNWR0NvbG9yKCkKLSAgICA6IG1fY29sb3JUeXBlKFNWR19DT0xPUlRZUEVfVU5LTk9XTikKLXsK
LX0KLQotU1ZHQ29sb3I6OlNWR0NvbG9yKGNvbnN0IFN0cmluZyYgcmdiQ29sb3IpCi0gICAgOiBt
X2NvbG9yVHlwZShTVkdfQ09MT1JUWVBFX1JHQkNPTE9SKQorc3RhdGljIGlubGluZSB2b2lkIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKQogewotICAgIHNldFJHQkNvbG9yKHJnYkNvbG9yKTsKKyAgICAv
LyBGSVhNRTogQSBmb2xsb3cgdXAgcGF0Y2ggd2lsbCBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbmFs
aXR5LgogfQogCi1TVkdDb2xvcjo6U1ZHQ29sb3IoU1ZHQ29sb3JUeXBlIGNvbG9yVHlwZSkKK1NW
R0NvbG9yOjpTVkdDb2xvcihjb25zdCBTVkdDb2xvclR5cGUmIGNvbG9yVHlwZSkKICAgICA6IG1f
Y29sb3JUeXBlKGNvbG9yVHlwZSkKIHsKIH0KIAotU1ZHQ29sb3I6OlNWR0NvbG9yKGNvbnN0IENv
bG9yJiBjKQotICAgIDogbV9jb2xvcihjKQotICAgICwgbV9jb2xvclR5cGUoU1ZHX0NPTE9SVFlQ
RV9SR0JDT0xPUikKLXsKLX0KLQogUGFzc1JlZlB0cjxSR0JDb2xvcj4gU1ZHQ29sb3I6OnJnYkNv
bG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gUkdCQ29sb3I6OmNyZWF0ZShtX2NvbG9yLnJnYigp
KTsKQEAgLTU4LDQ1ICs0OCwxMTEgQEAgUGFzc1JlZlB0cjxSR0JDb2xvcj4gU1ZHQ29sb3I6OnJn
YkNvbG9yKAogdm9pZCBTVkdDb2xvcjo6c2V0UkdCQ29sb3IoY29uc3QgU3RyaW5nJiByZ2JDb2xv
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQ29sb3IgY29sb3IgPSBTVkdDb2xvcjo6Y29s
b3JGcm9tUkdCQ29sb3JTdHJpbmcocmdiQ29sb3IpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkp
Ci0gICAgICAgIG1fY29sb3IgPSBjb2xvcjsKLSAgICBlbHNlCisgICAgaWYgKCFjb2xvci5pc1Zh
bGlkKCkpIHsKICAgICAgICAgZWMgPSBTVkdFeGNlcHRpb246OlNWR19JTlZBTElEX1ZBTFVFX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29sb3IgPSBjb2xvcjsKKyAgICBt
X2NvbG9yVHlwZSA9IFNWR19DT0xPUlRZUEVfUkdCQ09MT1I7CisgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogfQogCiBDb2xvciBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoY29u
c3QgU3RyaW5nJiBjb2xvclN0cmluZykKIHsKLSAgICBTdHJpbmcgcyA9IGNvbG9yU3RyaW5nLnN0
cmlwV2hpdGVTcGFjZSgpOwotICAgIC8vIEZJWE1FOiByZXdvcmsgY3NzIHBhcnNlciBzbyBpdCBp
cyBtb3JlIHN2ZyBhd2FyZQorICAgIC8vIEZJWE1FOiBSZXdvcmsgY3NzIHBhcnNlciBzbyBpdCBp
cyBtb3JlIFNWRyBhd2FyZS4KICAgICBSR0JBMzIgY29sb3I7Ci0gICAgaWYgKENTU1BhcnNlcjo6
cGFyc2VDb2xvcihjb2xvciwgcykpCisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xv
ciwgY29sb3JTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkpKQogICAgICAgICByZXR1cm4gY29sb3I7
CiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQgU1ZHQ29sb3I6OnNldFJHQkNvbG9ySUND
Q29sb3IoY29uc3QgU3RyaW5nJiAvKiByZ2JDb2xvciAqLywgY29uc3QgU3RyaW5nJiAvKiBpY2ND
b2xvciAqLywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFNWR0NvbG9yOjpzZXRSR0JDb2xvcklDQ0Nv
bG9yKGNvbnN0IFN0cmluZyYgcmdiQ29sb3IsIGNvbnN0IFN0cmluZyYgaWNjQ29sb3IsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIC8vIFRPRE86IGltcGxlbWVudCBtZSEKKyAgICBpZiAocmdi
Q29sb3IuaXNFbXB0eSgpIHx8IGljY0NvbG9yLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IFNW
R0V4Y2VwdGlvbjo6U1ZHX0lOVkFMSURfVkFMVUVfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gRklYTUU6IE5vIHN1cHBvcnQgZm9yIElDQyBjb2xvcnMuIFdlJ3JlIGp1c3Qg
aWdub3JpbmcgaXQuCisgICAgc2V0UkdCQ29sb3IocmdiQ29sb3IsIGVjKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fY29sb3JUeXBlID0gU1ZHX0NPTE9SVFlQRV9SR0JD
T0xPUl9JQ0NDT0xPUjsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgU1ZH
Q29sb3I6OnNldENvbG9yKHVuc2lnbmVkIHNob3J0IGNvbG9yVHlwZSwgY29uc3QgU3RyaW5nJiAv
KiByZ2JDb2xvciAqLyAsIGNvbnN0IFN0cmluZyYgLyogaWNjQ29sb3IgKi8sIEV4Y2VwdGlvbkNv
ZGUmKQordm9pZCBTVkdDb2xvcjo6c2V0Q29sb3IodW5zaWduZWQgc2hvcnQgY29sb3JUeXBlLCBj
b25zdCBTdHJpbmcmIHJnYkNvbG9yLCBjb25zdCBTdHJpbmcmIGljY0NvbG9yLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICAvLyBUT0RPOiBpbXBsZW1lbnQgbWUhCi0gICAgbV9jb2xvclR5cGUg
PSBjb2xvclR5cGU7CisgICAgaWYgKGNvbG9yVHlwZSA+IFNWR19DT0xPUlRZUEVfQ1VSUkVOVENP
TE9SKSB7CisgICAgICAgIGVjID0gU1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHJlcXVpcmVzUkdCQ29sb3IgPSBmYWxz
ZTsKKyAgICBib29sIHJlcXVpcmVzSUNDQ29sb3IgPSBmYWxzZTsKKworICAgIFNWR0NvbG9yVHlw
ZSB0eXBlID0gc3RhdGljX2Nhc3Q8U1ZHQ29sb3JUeXBlPihjb2xvclR5cGUpOworICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgU1ZHX0NPTE9SVFlQRV9VTktOT1dOOgorICAgICAgICAvLyBT
cGVjOiBJdCBpcyBpbnZhbGlkIHRvIGF0dGVtcHQgdG8gZGVmaW5lIGEgbmV3IHZhbHVlIG9mIHRo
aXMgdHlwZSBvciB0byBhdHRlbXB0IHRvIHN3aXRjaCBhbiBleGlzdGluZyB2YWx1ZSB0byB0aGlz
IHR5cGUuCisgICAgICAgIGVjID0gU1ZHRXhjZXB0aW9uOjpTVkdfSU5WQUxJRF9WQUxVRV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNWR19DT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09M
T1I6CisgICAgICAgIHJlcXVpcmVzSUNDQ29sb3IgPSB0cnVlOworICAgIGNhc2UgU1ZHX0NPTE9S
VFlQRV9SR0JDT0xPUjoKKyAgICAgICAgcmVxdWlyZXNSR0JDb2xvciA9IHRydWU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1I6CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIC8vIFNwZWM6IElmIGNvbG9yVHlwZSByZXF1aXJlcyBhbiBSR0JD
b2xvciwgdGhlbiByZ2JDb2xvciBtdXN0IGJlIGEgc3RyaW5nIHRoYXQgbWF0Y2hlcyA8Y29sb3I+
OyBvdGhlcndpc2UsIHJnYkNvbG9yIG11c3QgYmUgbnVsbC4KKyAgICBpZiAocmVxdWlyZXNSR0JD
b2xvciAmJiByZ2JDb2xvci5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTVkdFeGNlcHRpb246
OlNWR19JTlZBTElEX1ZBTFVFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IFNwZWM6IElmIGNvbG9yVHlwZSByZXF1aXJlcyBhbiBTVkdJQ0NDb2xvciwgdGhlbiBpY2NDb2xv
ciBtdXN0IGJlIGEgc3RyaW5nIHRoYXQgbWF0Y2hlcyA8aWNjY29sb3I+OyBvdGhlcndpc2UsIGlj
Y0NvbG9yIG11c3QgYmUgbnVsbC4KKyAgICBpZiAocmVxdWlyZXNJQ0NDb2xvciAmJiBpY2NDb2xv
ci5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTVkdFeGNlcHRpb246OlNWR19JTlZBTElEX1ZB
TFVFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKKyAgICBtX2NvbG9yVHlwZSA9IHR5cGU7CisgICAgaWYgKCFyZXF1aXJlc1JHQkNvbG9y
KSB7CisgICAgICAgIEFTU0VSVCghcmVxdWlyZXNJQ0NDb2xvcik7CisgICAgICAgIG1fY29sb3Ig
PSBDb2xvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlcXVpcmVzSUND
Q29sb3IpCisgICAgICAgIHNldFJHQkNvbG9ySUNDQ29sb3IocmdiQ29sb3IsIGljY0NvbG9yLCBl
Yyk7CisgICAgZWxzZQorICAgICAgICBzZXRSR0JDb2xvcihyZ2JDb2xvciwgZWMpOwogfQogCiBT
dHJpbmcgU1ZHQ29sb3I6OmNzc1RleHQoKSBjb25zdAogewotICAgIGlmIChtX2NvbG9yVHlwZSA9
PSBTVkdfQ09MT1JUWVBFX1JHQkNPTE9SKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgQ29sb3I6
OnNlcmlhbGl6ZWQoKSBpbnN0ZWFkLgotICAgICAgICByZXR1cm4gbV9jb2xvci5uYW1lRm9yUmVu
ZGVyVHJlZUFzVGV4dCgpOworICAgIHN3aXRjaCAobV9jb2xvclR5cGUpIHsKKyAgICBjYXNlIFNW
R19DT0xPUlRZUEVfVU5LTk9XTjoKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGNhc2Ug
U1ZHX0NPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUjoKKyAgICBjYXNlIFNWR19DT0xPUlRZUEVf
UkdCQ09MT1I6CisgICAgICAgIC8vIEZJWE1FOiBObyBJQ0MgY29sb3Igc3VwcG9ydC4KKyAgICAg
ICAgcmV0dXJuIG1fY29sb3Iuc2VyaWFsaXplZCgpOworICAgIGNhc2UgU1ZHX0NPTE9SVFlQRV9D
VVJSRU5UQ09MT1I6CisgICAgICAgIGlmIChtX2NvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBtX2NvbG9yLnNlcmlhbGl6ZWQoKTsKKyAgICAgICAgcmV0dXJuICJjdXJyZW50Q29s
b3IiOwogICAgIH0KIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
LQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgJKHJldmlzaW9uIDc5MzQ1KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTIwLDggKzIxLDggQEAKIAogI2lmbmRlZiBTVkdDb2xvcl9oCiAjZGVmaW5lIFNWR0NvbG9yX2gK
LSNpZiBFTkFCTEUoU1ZHKQogCisjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJDU1NWYWx1ZS5o
IgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTMy
LDYxICszMyw2MCBAQCBjbGFzcyBSR0JDb2xvcjsKIAogY2xhc3MgU1ZHQ29sb3IgOiBwdWJsaWMg
Q1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0NvbG9yPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBjb2xvcikKKyAgICBlbnVtIFNWR0NvbG9yVHlwZSB7CisgICAgICAg
IFNWR19DT0xPUlRZUEVfVU5LTk9XTiA9IDAsCisgICAgICAgIFNWR19DT0xPUlRZUEVfUkdCQ09M
T1IgPSAxLAorICAgICAgICBTVkdfQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMiwKKyAg
ICAgICAgU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IgPSAzCisgICAgfTsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNWR0NvbG9yPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgcmdi
Q29sb3IpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0NvbG9yKGNvbG9y
KSk7CisgICAgICAgIFJlZlB0cjxTVkdDb2xvcj4gY29sb3IgPSBhZG9wdFJlZihuZXcgU1ZHQ29s
b3IoU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUikpOworICAgICAgICBjb2xvci0+c2V0Q29sb3IoY29s
b3JGcm9tUkdCQ29sb3JTdHJpbmcocmdiQ29sb3IpKTsKKyAgICAgICAgcmV0dXJuIGNvbG9yLnJl
bGVhc2UoKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNyZWF0ZShj
b25zdCBDb2xvciYgY29sb3IpCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdDb2xvcj4gY3Jl
YXRlRnJvbUNvbG9yKGNvbnN0IENvbG9yJiByZ2JDb2xvcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU1ZHQ29sb3IoY29sb3IpKTsKKyAgICAgICAgUmVmUHRyPFNWR0NvbG9y
PiBjb2xvciA9IGFkb3B0UmVmKG5ldyBTVkdDb2xvcihTVkdfQ09MT1JUWVBFX1JHQkNPTE9SKSk7
CisgICAgICAgIGNvbG9yLT5zZXRDb2xvcihyZ2JDb2xvcik7CisgICAgICAgIHJldHVybiBjb2xv
ci5yZWxlYXNlKCk7CiAgICAgfQorCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNy
ZWF0ZUN1cnJlbnRDb2xvcigpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R0NvbG9yKFNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SKSk7CiAgICAgfQogCi0gICAgZW51bSBT
VkdDb2xvclR5cGUgewotICAgICAgICBTVkdfQ09MT1JUWVBFX1VOS05PV04gPSAwLAotICAgICAg
ICBTVkdfQ09MT1JUWVBFX1JHQkNPTE9SID0gMSwKLSAgICAgICAgU1ZHX0NPTE9SVFlQRV9SR0JD
T0xPUl9JQ0NDT0xPUiA9IDIsCi0gICAgICAgIFNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SID0g
MwotICAgIH07Ci0KLSAgICAvLyAnU1ZHQ29sb3InIGZ1bmN0aW9ucwotICAgIHVuc2lnbmVkIHNo
b3J0IGNvbG9yVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JUeXBlOyB9Ci0KKyAgICBjb25z
dCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisgICAgY29uc3QgU1ZH
Q29sb3JUeXBlJiBjb2xvclR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yVHlwZTsgfQogICAg
IFBhc3NSZWZQdHI8UkdCQ29sb3I+IHJnYkNvbG9yKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgQ29s
b3IgY29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIHNl
dFJHQkNvbG9yKGNvbnN0IFN0cmluZyYgcmdiQ29sb3IpIHsgRXhjZXB0aW9uQ29kZSBpZ25vcmVk
ID0gMDsgc2V0UkdCQ29sb3IocmdiQ29sb3IsIGlnbm9yZWQpOyB9CiAgICAgdm9pZCBzZXRSR0JD
b2xvcihjb25zdCBTdHJpbmcmIHJnYkNvbG9yLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBz
ZXRSR0JDb2xvcklDQ0NvbG9yKGNvbnN0IFN0cmluZyYgcmdiQ29sb3IsIGNvbnN0IFN0cmluZyYg
aWNjQ29sb3IsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldENvbG9yKHVuc2lnbmVkIHNo
b3J0IGNvbG9yVHlwZSwgY29uc3QgU3RyaW5nJiByZ2JDb2xvciwgY29uc3QgU3RyaW5nJiBpY2ND
b2xvciwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2xvcjsgfQotCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHQ29sb3IoKTsKLSAgICBT
VkdDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKTsKLSAgICBTVkdDb2xvcihjb25zdCBDb2xvciYp
OworICAgIGZyaWVuZCBjbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb247CiAKKyAgICBT
VkdDb2xvcihjb25zdCBTVkdDb2xvclR5cGUmKTsKKyAgICB2aXJ0dWFsIH5TVkdDb2xvcigpIHsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAotcHJpdmF0ZToKLSAgICBT
VkdDb2xvcihTVkdDb2xvclR5cGUpOwotCi0gICAgc3RhdGljIHZvaWQgY3JlYXRlKGludCk7IC8v
IGNvbXBpbGUtdGltZSBndWFyZCAKKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikgeyBtX2NvbG9yID0gY29sb3I7IH0KKyAgICB2b2lkIHNldENvbG9yVHlwZShjb25zdCBTVkdD
b2xvclR5cGUmIHR5cGUpIHsgbV9jb2xvclR5cGUgPSB0eXBlOyB9CiAKK3ByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzU1ZHQ29sb3IoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBD
b2xvciBtX2NvbG9yOwotICAgIHVuc2lnbmVkIHNob3J0IG1fY29sb3JUeXBlOworICAgIFNWR0Nv
bG9yVHlwZSBtX2NvbG9yVHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHQ29sb3JfaAotCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5pZGwJKHJldmlzaW9uIDc5MzQ1KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsMjUgKzIy
LDIzIEBACiBtb2R1bGUgc3ZnIHsKIAogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHXSBT
VkdDb2xvciA6IENTU1ZhbHVlIHsKLSAgICAgICAgLy8gQ29sb3IgVHlwZXMKLSAgICAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NPTE9SVFlQRV9VTktOT1dOICAgICAgICAgICA9IDA7Ci0g
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DT0xPUlRZUEVfUkdCQ09MT1IgICAgICAg
ICAgPSAxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ09MT1JUWVBFX1VOS05P
V04gPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ09MT1JUWVBFX1JHQkNP
TE9SID0gMTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NPTE9SVFlQRV9SR0JD
T0xPUl9JQ0NDT0xPUiA9IDI7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DT0xP
UlRZUEVfQ1VSUkVOVENPTE9SICAgICAgPSAzOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBTVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiA9IDM7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IGNvbG9yVHlwZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFJHQkNvbG9yICByZ2JDb2xvcjsKLSAgICAgICAgLypyZWFkb25seSBhdHRyaWJ1dGUgU1ZH
SUNDQ29sb3IgICAgaWNjQ29sb3I7Ki8KKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJHQkNv
bG9yIHJnYkNvbG9yOworICAgICAgICAvLyBGSVhNRTogcmVhZG9ubHkgYXR0cmlidXRlIFNWR0lD
Q0NvbG9yIGljY0NvbG9yOwogCi0gICAgICAgIHZvaWQgc2V0UkdCQ29sb3IoaW4gRE9NU3RyaW5n
IHJnYkNvbG9yKQotICAgICAgICAgICAgcmFpc2VzKFNWR0V4Y2VwdGlvbik7Ci0gICAgICAgIHZv
aWQgc2V0UkdCQ29sb3JJQ0NDb2xvcihpbiBET01TdHJpbmcgcmdiQ29sb3IsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGljY0NvbG9yKQotICAgICAgICAg
ICAgcmFpc2VzKFNWR0V4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgc2V0Q29sb3IoaW4gdW5zaWdu
ZWQgc2hvcnQgY29sb3JUeXBlLAotICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBy
Z2JDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgaWNjQ29sb3IpCi0g
ICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVj
a2luZywgUmVxdWlyZXNBbGxBcmd1bWVudHM9UmFpc2VdIHZvaWQgc2V0UkdCQ29sb3IoaW4gRE9N
U3RyaW5nIHJnYkNvbG9yKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbiwgU1ZHRXhj
ZXB0aW9uKTsKKworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSZXF1aXJlc0FsbEFyZ3Vt
ZW50cz1SYWlzZV0gdm9pZCBzZXRSR0JDb2xvcklDQ0NvbG9yKGluIERPTVN0cmluZyByZ2JDb2xv
ciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
biwgU1ZHRXhjZXB0aW9uKTsKKworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSZXF1aXJl
c0FsbEFyZ3VtZW50cz1SYWlzZV0gdm9pZCBzZXRDb2xvcihpbiB1bnNpZ25lZCBzaG9ydCBjb2xv
clR5cGUsIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKQorICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbiwgU1ZHRXhjZXB0aW9uKTsKICAgICB9OwogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAJKHJldmlzaW9uIDc5MzQ1KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC0yMDExLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCw5NiArMjQsMTY4IEBACiAjaWYgRU5BQkxFKFNW
RykKICNpbmNsdWRlICJTVkdQYWludC5oIgogCisjaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQYWludDo6U1ZHUGFpbnQo
KQotICAgIDogbV9wYWludFR5cGUoU1ZHX1BBSU5UVFlQRV9VTktOT1dOKQorc3RhdGljIGlubGlu
ZSB2b2lkIHNldE5lZWRzU3R5bGVSZWNhbGMoKQogeworICAgIC8vIEZJWE1FOiBBIGZvbGxvdyB1
cCBwYXRjaCB3aWxsIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHkuCiB9CiAKLVNWR1BhaW50
OjpTVkdQYWludChjb25zdCBTdHJpbmcmIHVyaSkKLSAgICA6IG1fcGFpbnRUeXBlKFNWR19QQUlO
VFRZUEVfVVJJX1JHQkNPTE9SKQorc3RhdGljIGlubGluZSBTVkdDb2xvcjo6U1ZHQ29sb3JUeXBl
IGNvbG9yVHlwZUZvclBhaW50VHlwZShjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiBwYWlu
dFR5cGUpCiB7Ci0gICAgc2V0VXJpKHVyaSk7Ci19CisgICAgc3dpdGNoIChwYWludFR5cGUpIHsK
KyAgICBjYXNlIFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX05PTkU6CisgICAgY2FzZSBTVkdQYWlu
dDo6U1ZHX1BBSU5UVFlQRV9VTktOT1dOOgorICAgIGNhc2UgU1ZHUGFpbnQ6OlNWR19QQUlOVFRZ
UEVfVVJJOgorICAgIGNhc2UgU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfVVJJX05PTkU6CisgICAg
ICAgIHJldHVybiBTVkdDb2xvcjo6U1ZHX0NPTE9SVFlQRV9VTktOT1dOOworICAgIGNhc2UgU1ZH
UGFpbnQ6OlNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SOgorICAgIGNhc2UgU1ZHUGFpbnQ6OlNW
R19QQUlOVFRZUEVfUkdCQ09MT1I6CisgICAgICAgIHJldHVybiBTVkdDb2xvcjo6U1ZHX0NPTE9S
VFlQRV9SR0JDT0xPUjsKKyAgICBjYXNlIFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1VSSV9SR0JD
T0xPUl9JQ0NDT0xPUjoKKyAgICBjYXNlIFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9S
X0lDQ0NPTE9SOgorICAgICAgICByZXR1cm4gU1ZHQ29sb3I6OlNWR19DT0xPUlRZUEVfUkdCQ09M
T1JfSUNDQ09MT1I7CisgICAgY2FzZSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVO
VENPTE9SOgorICAgIGNhc2UgU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SOgor
ICAgICAgICByZXR1cm4gU1ZHQ29sb3I6OlNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SOworICAg
IH0KIAotU1ZHUGFpbnQ6OlNWR1BhaW50KFNWR1BhaW50VHlwZSBwYWludFR5cGUpCi0gICAgOiBt
X3BhaW50VHlwZShwYWludFR5cGUpCi17CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIFNWR0NvbG9yOjpTVkdfQ09MT1JUWVBFX1VOS05PV047CiB9CiAKLVNWR1BhaW50OjpT
VkdQYWludChTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVyaSwgY29uc3Qg
U3RyaW5nJiByZ2JQYWludCwgY29uc3QgU3RyaW5nJikKLSAgICA6IFNWR0NvbG9yKHJnYlBhaW50
KQorU1ZHUGFpbnQ6OlNWR1BhaW50KGNvbnN0IFNWR1BhaW50VHlwZSYgcGFpbnRUeXBlLCBTdHJp
bmcgdXJpKQorICAgIDogU1ZHQ29sb3IoY29sb3JUeXBlRm9yUGFpbnRUeXBlKHBhaW50VHlwZSkp
CiAgICAgLCBtX3BhaW50VHlwZShwYWludFR5cGUpCi17Ci0gICAgc2V0VXJpKHVyaSk7Ci19Ci0K
LVNWR1BhaW50OjpTVkdQYWludChjb25zdCBDb2xvciYgYykKLSAgICA6IFNWR0NvbG9yKGMpCi0g
ICAgLCBtX3BhaW50VHlwZShTVkdfUEFJTlRUWVBFX1JHQkNPTE9SKQorICAgICwgbV91cmkodXJp
KQogewogfQogCi1TVkdQYWludDo6U1ZHUGFpbnQoY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENv
bG9yJiBjKQotICAgIDogU1ZHQ29sb3IoYykKLSAgICAsIG1fcGFpbnRUeXBlKFNWR19QQUlOVFRZ
UEVfVVJJX1JHQkNPTE9SKQordm9pZCBTVkdQYWludDo6c2V0VXJpKGNvbnN0IFN0cmluZyYgdXJp
KQogewotICAgIHNldFVyaSh1cmkpOworICAgIC8vIFNwZWM6IFNldHMgdGhlIHBhaW50VHlwZSB0
byBTVkdfUEFJTlRUWVBFX1VSSV9OT05FIGFuZCBzZXRzIHVyaSB0byB0aGUgc3BlY2lmaWVkIHZh
bHVlLgorICAgIG1fdXJpID0gdXJpOworICAgIG1fcGFpbnRUeXBlID0gU1ZHX1BBSU5UVFlQRV9V
UklfTk9ORTsKKyAgICBzZXRDb2xvcihDb2xvcigpKTsKKyAgICBzZXRDb2xvclR5cGUoY29sb3JU
eXBlRm9yUGFpbnRUeXBlKG1fcGFpbnRUeXBlKSk7CisgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygp
OwogfQogCiBTVkdQYWludCogU1ZHUGFpbnQ6OmRlZmF1bHRGaWxsKCkKIHsKLSAgICBzdGF0aWMg
U1ZHUGFpbnQqIHN0YXRpY0RlZmF1bHRGaWxsID0gY3JlYXRlKENvbG9yOjpibGFjaykucmVsZWFz
ZVJlZigpOworICAgIHN0YXRpYyBTVkdQYWludCogc3RhdGljRGVmYXVsdEZpbGwgPSBjcmVhdGVD
b2xvcihDb2xvcjo6YmxhY2spLnJlbGVhc2VSZWYoKTsKICAgICByZXR1cm4gc3RhdGljRGVmYXVs
dEZpbGw7CiB9CiAKIFNWR1BhaW50KiBTVkdQYWludDo6ZGVmYXVsdFN0cm9rZSgpCiB7Ci0gICAg
c3RhdGljIFNWR1BhaW50KiBzdGF0aWNEZWZhdWx0U3Ryb2tlID0gY3JlYXRlKFNWR19QQUlOVFRZ
UEVfTk9ORSkucmVsZWFzZVJlZigpOworICAgIHN0YXRpYyBTVkdQYWludCogc3RhdGljRGVmYXVs
dFN0cm9rZSA9IGNyZWF0ZU5vbmUoKS5yZWxlYXNlUmVmKCk7CiAgICAgcmV0dXJuIHN0YXRpY0Rl
ZmF1bHRTdHJva2U7CiB9CiAKLVN0cmluZyBTVkdQYWludDo6dXJpKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV91cmk7Ci19Ci0KLXZvaWQgU1ZHUGFpbnQ6OnNldFVyaShjb25zdCBTdHJpbmcmIHVy
aSkKLXsKLSAgICBtX3VyaSA9IHVyaTsKLX0KLQotdm9pZCBTVkdQYWludDo6c2V0UGFpbnQoU1ZH
UGFpbnRUeXBlIHBhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IFN0cmluZyYgcmdi
UGFpbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBTVkdQYWludDo6c2V0
UGFpbnQodW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVyaSwgY29uc3Qg
U3RyaW5nJiByZ2JDb2xvciwgY29uc3QgU3RyaW5nJiBpY2NDb2xvciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgbV9wYWludFR5cGUgPSBwYWludFR5cGU7Ci0KLSAgICBpZiAobV9wYWludFR5
cGUgPT0gU1ZHX1BBSU5UVFlQRV9VUkkpCi0gICAgICAgIHNldFVyaSh1cmkpOwotICAgIGVsc2Ug
aWYgKG1fcGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IpCi0gICAgICAgIHNldFJH
QkNvbG9yKHJnYlBhaW50KTsKKyAgICBpZiAoKHBhaW50VHlwZSA+IFNWR19QQUlOVFRZUEVfUkdC
Q09MT1JfSUNDQ09MT1IgJiYgcGFpbnRUeXBlIDwgU1ZHX1BBSU5UVFlQRV9OT05FKSB8fCBwYWlu
dFR5cGUgPiBTVkdfUEFJTlRUWVBFX1VSSSkgeworICAgICAgICBlYyA9IFNWR0V4Y2VwdGlvbjo6
U1ZHX1dST05HX1RZUEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBy
ZXF1aXJlc1VSSSA9IGZhbHNlOworCisgICAgU1ZHUGFpbnRUeXBlIHR5cGUgPSBzdGF0aWNfY2Fz
dDxTVkdQYWludFR5cGU+KHBhaW50VHlwZSk7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2Fz
ZSBTVkdfUEFJTlRUWVBFX1VOS05PV046CisgICAgICAgIC8vIFNwZWM6IEl0IGlzIGludmFsaWQg
dG8gYXR0ZW1wdCB0byBkZWZpbmUgYSBuZXcgdmFsdWUgb2YgdGhpcyB0eXBlIG9yIHRvIGF0dGVt
cHQgdG8gc3dpdGNoIGFuIGV4aXN0aW5nIHZhbHVlIHRvIHRoaXMgdHlwZS4KKyAgICAgICAgZWMg
PSBTVkdFeGNlcHRpb246OlNWR19JTlZBTElEX1ZBTFVFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjoKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVf
UkdCQ09MT1JfSUNDQ09MT1I6CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX05PTkU6CisgICAgY2Fz
ZSBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUjoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
VkdfUEFJTlRUWVBFX1VSSV9OT05FOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVO
VENPTE9SOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1I6CisgICAgY2FzZSBT
VkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUjoKKyAgICBjYXNlIFNWR19QQUlOVFRZ
UEVfVVJJOgorICAgICAgICByZXF1aXJlc1VSSSA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAg
IH07CisKKyAgICAvLyBTcGVjOiBJZiBwYWludFR5cGUgcmVxdWlyZXMgYSBVUkksIHRoZW4gdXJp
IG11c3QgYmUgbm9uLW51bGw7IG90aGVyd2lzZSwgdXJpIG11c3QgYmUgbnVsbC4KKyAgICBpZiAo
cmVxdWlyZXNVUkkgJiYgdXJpLmlzRW1wdHkoKSkgeyAKKyAgICAgICAgZWMgPSBTVkdFeGNlcHRp
b246OlNWR19JTlZBTElEX1ZBTFVFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFNWR0NvbG9yOjpTVkdDb2xvclR5cGUgY29sb3JUeXBlID0gY29sb3JUeXBlRm9yUGFpbnRUeXBl
KHR5cGUpOworICAgIGlmIChjb2xvclR5cGUgPT0gU1ZHQ29sb3I6OlNWR19DT0xPUlRZUEVfVU5L
Tk9XTikgeworICAgICAgICAvLyBUaGUgc3RhbmRhcmQgc2V0Q29sb3IoKSBjb2RlIHBhdGggdXNl
ZCBpbiB0aGUgZWxzZSBicmFuY2gKKyAgICAgICAgLy8gcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVu
IGF0dGVtcHRpbmcgdG8gc3dpdGNoIHRvIGFuIHVua25vd24gY29sb3IgdHlwZS4KKyAgICAgICAg
Ly8gSGVyZSB3ZSBleHBsaWNpdGVseSB3YW50IHRvIHJlc2V0IHRvIENvbG9yKCkgYW5kIGFuIHVu
a25vd24gdHlwZSwgc28gZm9yY2UgaXQuCisgICAgICAgIHNldENvbG9yVHlwZShjb2xvclR5cGUp
OworICAgICAgICBzZXRDb2xvcihDb2xvcigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZXRD
b2xvcihjb2xvclR5cGUsIHJnYkNvbG9yLCBpY2NDb2xvciwgZWMpOworICAgICAgICBpZiAoZWMp
CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wYWludFR5cGUgPSB0eXBlOwor
ICAgIG1fdXJpID0gcmVxdWlyZXNVUkkgPyB1cmkgOiBTdHJpbmcoKTsKKyAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiB9CiAKIFN0cmluZyBTVkdQYWludDo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fcGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVfTk9ORSkKKyAgICBzd2l0Y2ggKG1f
cGFpbnRUeXBlKSB7CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX1VOS05PV046CisgICAgY2FzZSBT
VkdfUEFJTlRUWVBFX1JHQkNPTE9SOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9J
Q0NDT0xPUjoKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SOgorICAgICAgICBy
ZXR1cm4gU1ZHQ29sb3I6OmNzc1RleHQoKTsKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVfTk9ORToK
ICAgICAgICAgcmV0dXJuICJub25lIjsKLSAgICBpZiAobV9wYWludFR5cGUgPT0gU1ZHX1BBSU5U
VFlQRV9DVVJSRU5UQ09MT1IpCi0gICAgICAgIHJldHVybiAiY3VycmVudENvbG9yIjsKLSAgICBp
ZiAobV9wYWludFR5cGUgPT0gU1ZHX1BBSU5UVFlQRV9VUkkpCi0gICAgICAgIHJldHVybiAidXJs
KCIgKyBtX3VyaSArICIpIjsKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVfVVJJX05PTkU6CisgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKG1fdXJpLCAiIG5vbmUiKTsKKyAgICBjYXNlIFNWR19QQUlO
VFRZUEVfVVJJX0NVUlJFTlRDT0xPUjoKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVfVVJJX1JHQkNP
TE9SOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1I6IHsKKyAg
ICAgICAgU3RyaW5nIGNvbG9yID0gU1ZHQ29sb3I6OmNzc1RleHQoKTsKKyAgICAgICAgaWYgKGNv
bG9yLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3VyaTsKKyAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcobV91cmksICcgJywgY29sb3IpOworICAgIH0KKyAgICBjYXNlIFNWR19QQUlO
VFRZUEVfVVJJOgorICAgICAgICByZXR1cm4gbV91cmk7CisgICAgfTsKIAotICAgIHJldHVybiBT
VkdDb2xvcjo6Y3NzVGV4dCgpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAogYm9vbCBTVkdQYWludDo6bWF0Y2hlc1RhcmdldFVSSShjb25zdCBT
dHJpbmcmIHJlZmVyZW5jZUlkKQogewotICAgIGlmIChtX3BhaW50VHlwZSAhPSBTVkdfUEFJTlRU
WVBFX1VSSSAmJiBtX3BhaW50VHlwZSAhPSBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHN3aXRjaCAobV9wYWludFR5cGUpIHsKKyAgICBjYXNl
IFNWR19QQUlOVFRZUEVfVU5LTk9XTjoKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVfUkdCQ09MT1I6
CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SOgorICAgIGNhc2UgU1ZH
X1BBSU5UVFlQRV9DVVJSRU5UQ09MT1I6CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX05PTkU6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORToKKyAgICBjYXNl
IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUjoKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVf
VVJJX1JHQkNPTE9SOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09M
T1I6CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX1VSSToKKyAgICAgICAgcmV0dXJuIHJlZmVyZW5j
ZUlkID09IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KG1fdXJpKTsKKyAgICB9CiAKLSAgICBy
ZXR1cm4gcmVmZXJlbmNlSWQgPT0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQobV91cmkpOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
aW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgJKHJldmlz
aW9uIDc5MzQ1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtaWFsLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsOSArMjIsMTAgQEAKIAogI2lmbmRlZiBTVkdQYWlu
dF9oCiAjZGVmaW5lIFNWR1BhaW50X2gKKwogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTVkdDb2xvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDQ5ICs0NCw2NiBA
QCBwdWJsaWM6CiAgICAgICAgIFNWR19QQUlOVFRZUEVfVVJJID0gMTA3CiAgICAgfTsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhaW50PiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR1BhaW50PiBjcmVhdGVVbmtub3duKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHUGFpbnQpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhaW50
KFNWR19QQUlOVFRZUEVfVU5LTk9XTikpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
VkdQYWludD4gY3JlYXRlKFNWR1BhaW50VHlwZSB0eXBlKQorCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHUGFpbnQ+IGNyZWF0ZU5vbmUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTVkdQYWludCh0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGFp
bnQoU1ZHX1BBSU5UVFlQRV9OT05FKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R1BhaW50PiBjcmVhdGUoY29uc3QgQ29sb3ImIGNvbG9yKQorCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHUGFpbnQ+IGNyZWF0ZUN1cnJlbnRDb2xvcigpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR1BhaW50KGNvbG9yKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpKTsKICAgICB9Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGNyZWF0ZShTVkdQYWludFR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiB1cmkpCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYWludD4gY3JlYXRlQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdQYWludCh0eXBlLCB1cmksIFN0cmluZygpLCBTdHJpbmcoKSkpOworICAgICAgICBSZWZQ
dHI8U1ZHUGFpbnQ+IHBhaW50ID0gYWRvcHRSZWYobmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVf
UkdCQ09MT1IpKTsKKyAgICAgICAgcGFpbnQtPnNldENvbG9yKGNvbG9yKTsKKyAgICAgICAgcmV0
dXJuIHBhaW50LnJlbGVhc2UoKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGFp
bnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVyaSwgY29uc3QgQ29sb3ImIGNvbG9yKQorCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGNyZWF0ZVVSSShjb25zdCBTdHJpbmcmIHVyaSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGFpbnQodXJpLCBjb2xvcikp
OworICAgICAgICBSZWZQdHI8U1ZHUGFpbnQ+IHBhaW50ID0gYWRvcHRSZWYobmV3IFNWR1BhaW50
KFNWR19QQUlOVFRZUEVfVVJJLCB1cmkpKTsKKyAgICAgICAgcmV0dXJuIHBhaW50LnJlbGVhc2Uo
KTsKICAgICB9CiAKLSAgICAvLyAnU1ZHUGFpbnQnIGZ1bmN0aW9ucwotICAgIFNWR1BhaW50VHlw
ZSBwYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3BhaW50VHlwZTsgfQotICAgIFN0cmluZyB1
cmkoKSBjb25zdDsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYWludD4gY3JlYXRlVVJJQW5k
Q29sb3IoY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICB7CisgICAg
ICAgIFJlZlB0cjxTVkdQYWludD4gcGFpbnQgPSBhZG9wdFJlZihuZXcgU1ZHUGFpbnQoU1ZHX1BB
SU5UVFlQRV9VUklfUkdCQ09MT1IsIHVyaSkpOworICAgICAgICBwYWludC0+c2V0Q29sb3IoY29s
b3IpOworICAgICAgICByZXR1cm4gcGFpbnQucmVsZWFzZSgpOworICAgIH0KKworICAgIGNvbnN0
IFNWR1BhaW50VHlwZSYgcGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wYWludFR5cGU7IH0K
KyAgICBTdHJpbmcgdXJpKCkgY29uc3QgeyByZXR1cm4gbV91cmk7IH0KIAogICAgIHZvaWQgc2V0
VXJpKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0UGFpbnQoU1ZHUGFpbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHVyaSwgY29uc3QgU3RyaW5nJiByZ2JQYWludCwgY29uc3QgU3RyaW5nJiBpY2NQ
YWludCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIAorICAgIHZvaWQgc2V0UGFpbnQodW5zaWduZWQg
c2hvcnQgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVyaSwgY29uc3QgU3RyaW5nJiByZ2JDb2xv
ciwgY29uc3QgU3RyaW5nJiBpY2NDb2xvciwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgYm9vbCBt
YXRjaGVzVGFyZ2V0VVJJKGNvbnN0IFN0cmluZyYgcmVmZXJlbmNlSWQpOworCiAgICAgc3RhdGlj
IFNWR1BhaW50KiBkZWZhdWx0RmlsbCgpOwogICAgIHN0YXRpYyBTVkdQYWludCogZGVmYXVsdFN0
cm9rZSgpOwogCi0gICAgYm9vbCBtYXRjaGVzVGFyZ2V0VVJJKGNvbnN0IFN0cmluZyYgcmVmZXJl
bmNlSWQpOworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGNyZWF0ZShjb25zdCBT
VkdQYWludFR5cGUmIHR5cGUsIGNvbnN0IFN0cmluZyYgdXJpLCBjb25zdCBDb2xvciYgY29sb3Ip
CisgICAgeworICAgICAgICBSZWZQdHI8U1ZHUGFpbnQ+IHBhaW50ID0gYWRvcHRSZWYobmV3IFNW
R1BhaW50KHR5cGUsIHVyaSkpOworICAgICAgICBwYWludC0+c2V0Q29sb3IoY29sb3IpOworICAg
ICAgICByZXR1cm4gcGFpbnQucmVsZWFzZSgpOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdQ
YWludCgpOwotICAgIFNWR1BhaW50KGNvbnN0IFN0cmluZyYgdXJpKTsKLSAgICBTVkdQYWludChT
VkdQYWludFR5cGUpOwotICAgIFNWR1BhaW50KFNWR1BhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1
cmksIGNvbnN0IFN0cmluZyYgcmdiUGFpbnQsIGNvbnN0IFN0cmluZyYgaWNjUGFpbnQpOwotICAg
IFNWR1BhaW50KGNvbnN0IENvbG9yJiBjKTsKLSAgICBTVkdQYWludChjb25zdCBTdHJpbmcmIHVy
aSwgY29uc3QgQ29sb3ImIGMpOworICAgIFNWR1BhaW50KGNvbnN0IFNWR1BhaW50VHlwZSYsIFN0
cmluZyB1cmkgPSBTdHJpbmcoKSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdQYWludCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25z
dDsKIAogICAgIFNWR1BhaW50VHlwZSBtX3BhaW50VHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYWludC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
aW50LmlkbAkocmV2aXNpb24gNzkzNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyNyArMjYsMjMgQEAKIG1vZHVsZSBzdmcgewogCiAg
ICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkddIFNWR1BhaW50IDogU1ZHQ29sb3IgewotICAg
ICAgICAvLyBTVkdQYWludFR5cGUKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BB
SU5UVFlQRV9VTktOT1dOICAgICAgICAgICAgICAgPSAwOwotICAgICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SICAgICAgICAgICAgICA9IDE7Ci0gICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgICAg
ID0gMjsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FICAg
ICAgICAgICAgICAgICAgPSAxMDE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19Q
QUlOVFRZUEVfQ1VSUkVOVENPTE9SICAgICAgICAgID0gMTAyOwotICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FICAgICAgICAgICAgICA9IDEwMzsKLSAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9S
ICAgICAgPSAxMDQ7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVf
VVJJX1JHQkNPTE9SICAgICAgICAgID0gMTA1OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7CisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEw
NDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09M
T1IgPSAxMDU7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJ
X1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBT
VkdfUEFJTlRUWVBFX1VSSSAgICAgICAgICAgICAgICAgICA9IDEwNzsKKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDc7CiAKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFNWR1BhaW50VHlwZSBwYWludFR5cGU7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgdXJpOwogCi0gICAgICAgIHZvaWQgc2V0VXJpKGluIERPTVN0cmluZyB1
cmkpOwotICAgICAgICB2b2lkIHNldFBhaW50KGluIFNWR1BhaW50VHlwZSBwYWludFR5cGUsIAot
ICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyB1cmksIAotICAgICAgICAgICAgICAg
ICAgICAgIGluIERPTVN0cmluZyByZ2JDb2xvciwgCi0gICAgICAgICAgICAgICAgICAgICAgaW4g
RE9NU3RyaW5nIGljY0NvbG9yKQotICAgICAgICAgICAgcmFpc2VzKFNWR0V4Y2VwdGlvbik7Cisg
ICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJlcXVpcmVzQWxsQXJndW1lbnRzPVJhaXNlXSB2
b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2lu
ZywgUmVxdWlyZXNBbGxBcmd1bWVudHM9UmFpc2VdIHZvaWQgc2V0UGFpbnQoaW4gdW5zaWduZWQg
c2hvcnQgcGFpbnRUeXBlLCBpbiBET01TdHJpbmcgdXJpLCBpbiBET01TdHJpbmcgcmdiQ29sb3Is
IGluIERPTVN0cmluZyBpY2NDb2xvcikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24s
IFNWR0V4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzk2NjQpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAor
MjAxMS0wMi0yNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
U1ZHQ29sb3IvU1ZHUGFpbnQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NTExOQorCisgICAgICAgIEFkZCB0d28gbmV3IHRlc3RzIGNvdmVyaW5n
IHRoZSBTVkdDb2xvci9TVkdQYWludCBBUElzLgorICAgICAgICBBZGFwdCB0byBTVkdDb2xvcjo6
Y3NzVGV4dCgpIGNoYW5nZXMsIGNvbG9yIGlzIHByb3Blcmx5IHNlcmlhbGl6ZWQgbm93LgorCisg
ICAgICAgICogc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1jb2xvci10cmFuc3BhcmVudC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1jdXJyZW50Q29sb3ItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2FuaW1hdGUtZHluYW1pYy11cGRh
dGUtYXR0cmlidXRlTmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMv
YW5pbWF0ZS1pbmhlcml0LWNzcy1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Zn
L2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtY29sb3ItdHJhbnNwYXJlbnQuanM6Cisg
ICAgICAgIChleHBlY3RUcmFuc3BhcmVudCk6CisgICAgICAgIChleHBlY3RPdGhlckNvbG9yKToK
KyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1jdXJyZW50Q29s
b3IuanM6CisgICAgICAgIChzYW1wbGUxKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zY3Jp
cHQtdGVzdHMvYW5pbWF0ZS1pbmhlcml0LWNzcy1wcm9wZXJ0eS5qczoKKyAgICAgICAgKHNhbXBs
ZTEpOgorICAgICAgICAqIHN2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3ZnL2N1c3RvbS9nZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUtbW9kaWZ5
LnN2ZzoKKyAgICAgICAgKiBzdmcvY3VzdG9tL3JnYmNvbG9yLXN5bnRheC5zdmc6CisgICAgICAg
ICogc3ZnL2RvbS9TVkdDb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9k
b20vU1ZHQ29sb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdQYWludC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHUGFpbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogc3ZnL2RvbS9zY3JpcHQtdGVzdHMvU1ZHQ29sb3IuanM6IEFkZGVkLgorICAg
ICAgICAoY2hlY2tTdG9wQ29sb3IpOgorICAgICAgICAqIHN2Zy9kb20vc2NyaXB0LXRlc3RzL1NW
R1BhaW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHJlc2V0U3R5bGUpOgorICAgICAgICAoY2hlY2tG
aWxsQ29sb3IpOgorCiAyMDExLTAyLTI0ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gZXhwZWN0YXRpb25zIHVwZGF0
ZS4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtY29sb3ItdHJhbnNw
YXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL2FuaW1hdGUtY29sb3ItdHJhbnNwYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3OTM0
NSkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtY29sb3ItdHJhbnNwYXJl
bnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQCBUZXN0cyB0aGF0
ICd0cmFuc3BhcmVudCcgaXMgdHJlYXRlZCBhcyBhCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAotUEFTUyByZWN0LnN0eWxlLmZpbGwgaXMgJyMwMEZGMDAnCi1QQVNTIHJlY3Quc3R5bGUu
ZmlsbCBpcyAnIzdGMDAwMCcKK1BBU1MgcmVjdC5zdHlsZS5maWxsIGlzICcjMDBmZjAwJworUEFT
UyByZWN0LnN0eWxlLmZpbGwgaXMgJyM3ZjAwMDAnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25z
L2FuaW1hdGUtY3VycmVudENvbG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLWN1cnJlbnRDb2xvci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDc5MzQ1KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1jdXJy
ZW50Q29sb3ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBUZXN0
cyBhbmltYXRpb24gb24gJ2N1cnJlbnRDb2xvcicuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAotUEFTUyByZWN0LnN0eWxlLmZpbGwgaXMgJyNGRjAwMDAnCitQQVNTIHJlY3Quc3R5bGUu
ZmlsbCBpcyAnI2ZmMDAwMCcKIFBBU1MgcmVjdC5zdHlsZS5maWxsIGlzICcjODA0MDAwJwogUEFT
UyByZWN0LnN0eWxlLmZpbGwgaXMgJyMwMDgwMDAnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLWR5bmFtaWMt
dXBkYXRlLWF0dHJpYnV0ZU5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtZHluYW1pYy11cGRhdGUtYXR0cmlidXRlTmFtZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDc5MzQ1KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvYW5pbWF0ZS1keW5hbWljLXVwZGF0ZS1hdHRyaWJ1dGVOYW1lLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQQogCiAKIFBBU1MgcmVjdC5zdHlsZS5jb2xvciBpcyAncmdiKDAsIDEyOCwgMCkn
Ci1GQUlMIHJlY3Quc3R5bGUuZmlsbCBzaG91bGQgYmUgIzAwODAwMC4gV2FzICNGRjAwMDAuCitG
QUlMIHJlY3Quc3R5bGUuZmlsbCBzaG91bGQgYmUgIzAwODAwMC4gV2FzICNmZjAwMDAuCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtaW5oZXJpdC1jc3MtcHJvcGVydHktZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUt
aW5oZXJpdC1jc3MtcHJvcGVydHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3OTM0NSkKKysrIExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtaW5oZXJpdC1jc3MtcHJvcGVydHktZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBUZXN0cyBhbmltYXRpb24g
d2l0aCAnaW5oZXJpdCcuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyByZWN0
LnN0eWxlLmZpbGwgaXMgJyNGRjAwMDAnCitQQVNTIHJlY3Quc3R5bGUuZmlsbCBpcyAnI2ZmMDAw
MCcKIFBBU1MgcmVjdC5zdHlsZS5maWxsIGlzICcjODA0MDAwJwogUEFTUyByZWN0LnN0eWxlLmZp
bGwgaXMgJyMwMDgwMDAnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1jb2xvci10cmFu
c3BhcmVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3Jp
cHQtdGVzdHMvYW5pbWF0ZS1jb2xvci10cmFuc3BhcmVudC5qcwkocmV2aXNpb24gNzkzNDUpCisr
KyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1jb2xvci10
cmFuc3BhcmVudC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjEsMTIgKzIxLDEyIEBAIHJvb3RTVkdF
bGVtZW50LmFwcGVuZENoaWxkKHJlY3QpOwogLy8gU2V0dXAgYW5pbWF0aW9uIHRlc3QKIGZ1bmN0
aW9uIGV4cGVjdFRyYW5zcGFyZW50KCkgewogICAgIC8vIENoZWNrIGluaXRpYWwvZW5kIGNvbmRp
dGlvbnMKLSAgICBzaG91bGRCZSgicmVjdC5zdHlsZS5maWxsIiwgIicjMDBGRjAwJyIpOworICAg
IHNob3VsZEJlKCJyZWN0LnN0eWxlLmZpbGwiLCAiJyMwMGZmMDAnIik7CiB9CiAKIGZ1bmN0aW9u
IGV4cGVjdE90aGVyQ29sb3IoKSB7CiAgICAgLy8gQ2hlY2sgaGFsZi10aW1lIGNvbmRpdGlvbnMK
LSAgICBzaG91bGRCZSgicmVjdC5zdHlsZS5maWxsIiwgIicjN0YwMDAwJyIpOworICAgIHNob3Vs
ZEJlKCJyZWN0LnN0eWxlLmZpbGwiLCAiJyM3ZjAwMDAnIik7CiB9CiAKIGZ1bmN0aW9uIGV4ZWN1
dGVUZXN0KCkgewpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3Rz
L2FuaW1hdGUtY3VycmVudENvbG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlLWN1cnJlbnRDb2xvci5qcwkocmV2aXNpb24g
NzkzNDUpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0
ZS1jdXJyZW50Q29sb3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAgcm9vdFNW
R0VsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdCk7CiAvLyBTZXR1cCBhbmltYXRpb24gdGVzdAogZnVu
Y3Rpb24gc2FtcGxlMSgpIHsKICAgICAvLyBDaGVjayBpbml0aWFsL2VuZCBjb25kaXRpb25zCi0g
ICAgc2hvdWxkQmUoInJlY3Quc3R5bGUuZmlsbCIsICInI0ZGMDAwMCciKTsKKyAgICBzaG91bGRC
ZSgicmVjdC5zdHlsZS5maWxsIiwgIicjZmYwMDAwJyIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUy
KCkgewpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1h
dGUtaW5oZXJpdC1jc3MtcHJvcGVydHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtaW5oZXJpdC1jc3MtcHJvcGVydHkuanMJ
KHJldmlzaW9uIDc5MzQ1KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRl
c3RzL2FuaW1hdGUtaW5oZXJpdC1jc3MtcHJvcGVydHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAgcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQoZyk7CiAvLyBTZXR1cCBhbmlt
YXRpb24gdGVzdAogZnVuY3Rpb24gc2FtcGxlMSgpIHsKICAgICAvLyBDaGVjayBpbml0aWFsL2Vu
ZCBjb25kaXRpb25zCi0gICAgc2hvdWxkQmUoInJlY3Quc3R5bGUuZmlsbCIsICInI0ZGMDAwMCci
KTsKKyAgICBzaG91bGRCZSgicmVjdC5zdHlsZS5maWxsIiwgIicjZmYwMDAwJyIpOwogfQogCiBm
dW5jdGlvbiBzYW1wbGUyKCkgewpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRl
ZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
Y3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3OTM0NSkK
KysrIExheW91dFRlc3RzL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw3ICszNzIsNyBAQCByZWN0OiBzdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKGNvbG9yLWludGVyCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGNv
bG9yLWludGVycG9sYXRpb24tZmlsdGVycykgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQog
cmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShjb2xvci1yZW5kZXJpbmcpIDogYXV0bwogcmVj
dDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShjb2xvci1yZW5kZXJpbmcpIDogW29iamVjdCBD
U1NQcmltaXRpdmVWYWx1ZV0KLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoZmlsbCkgOiAj
MDAwMEZGCityZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGZpbGwpIDogIzAwMDBmZgogcmVj
dDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShmaWxsKSA6IFtvYmplY3QgU1ZHUGFpbnRdCiBy
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGZpbGwtb3BhY2l0eSkgOiAxCiByZWN0OiBzdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGZpbGwtb3BhY2l0eSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2
ZVZhbHVlXQpAQCAtMzg4LDcgKzM4OCw3IEBAIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
bWFya2VyLXN0YXIKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUobWFya2VyLXN0YXJ0
KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKHNoYXBlLXJlbmRlcmluZykgOiBhdXRvCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKHNoYXBlLXJlbmRlcmluZykgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQotcmVjdDog
c3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShzdHJva2UpIDogI0ZGQTUwMAorcmVjdDogc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZShzdHJva2UpIDogI2ZmYTUwMAogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZShzdHJva2UpIDogW29iamVjdCBTVkdQYWludF0KIHJlY3Q6IHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoc3Ryb2tlLWRhc2hhcnJheSkgOiBub25lCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKHN0cm9rZS1kYXNoYXJyYXkpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0K
QEAgLTgxNCw3ICs4MTQsNyBAQCBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG1hcmtlci1zdGFy
dCkgCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1hcmtlci1zdGFydCkgOiBbb2JqZWN0
IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShzaGFwZS1yZW5k
ZXJpbmcpIDogYXV0bwogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShzaGFwZS1yZW5kZXJp
bmcpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KLWc6IHN0eWxlLmdldFByb3BlcnR5VmFs
dWUoc3Ryb2tlKSA6ICNGRkE1MDAKK2c6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoc3Ryb2tlKSA6
ICNmZmE1MDAKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoc3Ryb2tlKSA6IFtvYmplY3Qg
U1ZHUGFpbnRdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHN0cm9rZS1kYXNoYXJyYXkpIDog
bm9uZQogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShzdHJva2UtZGFzaGFycmF5KSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dl
dFByZXNlbnRhdGlvbkF0dHJpYnV0ZS1tb2RpZnkuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9jdXN0b20vZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlLW1vZGlmeS5zdmcJKHJldmlz
aW9uIDc5MzQ1KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRQcmVzZW50YXRpb25BdHRy
aWJ1dGUtbW9kaWZ5LnN2Zwkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogICAgICAg
ICBmaWxsLnNldFJHQkNvbG9yKCJncmVlbiIpOwogICAgICAgICByZWN0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImZpcnN0cmVjdCIpOwogICAgICAgICBmaWxsID0gcmVjdC5nZXRQcmVzZW50
YXRpb25BdHRyaWJ1dGUoImZpbGwiKTsKLSAgICAgICAgaWYgKGZpbGwuY3NzVGV4dCAhPSAnI0ZG
MDAwMCcpIHsKKyAgICAgICAgaWYgKGZpbGwuY3NzVGV4dCAhPSAnI2ZmMDAwMCcpIHsKICAgICAg
ICAgICAgIGxvZygiQ2hhbmdpbmcgZmlsbCBQQSBzaG91bGQgbm90IGNoYW5nZSBmaXJzdHJlY3Qg
ZmlsbCBQQSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3JnYmNvbG9yLXN5bnRheC5zdmcKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS9yZ2Jjb2xvci1zeW50YXguc3ZnCShyZXZpc2lvbiA3OTM0NSkKKysr
IExheW91dFRlc3RzL3N2Zy9jdXN0b20vcmdiY29sb3Itc3ludGF4LnN2Zwkod29ya2luZyBjb3B5
KQpAQCAtNDUsOSArNDUsOSBAQAogICAgICAgICBpZiAoIWV4cGVjdHNFeGNlcHRpb24oY29sLCAi
I2ZmZmZmIikpIHJldHVybjsKICAgICAgICAgaWYgKCFleHBlY3RzRXhjZXB0aW9uKGNvbCwgIiNm
ZmZmZmZmIikpIHJldHVybjsKICAgICAgICAgaWYgKCFleHBlY3RzRXhjZXB0aW9uKGNvbCwgImdy
ZWVuLCIpKSByZXR1cm47Ci0gICAgICAgIGlmICghZXhwZWN0c1ZhbGlkKGNvbCwgInJnYigwLCAx
MCwgMjApIiwgIiMwMDBBMTQiKSkgcmV0dXJuOwotICAgICAgICBpZiAoIWV4cGVjdHNWYWxpZChj
b2wsICIjRkZGIiwgIiNGRkZGRkYiKSkgcmV0dXJuOwotICAgICAgICBpZiAoIWV4cGVjdHNWYWxp
ZChjb2wsICIjRkZGRkZGIiwgIiNGRkZGRkYiKSkgcmV0dXJuOworICAgICAgICBpZiAoIWV4cGVj
dHNWYWxpZChjb2wsICJyZ2IoMCwgMTAsIDIwKSIsICIjMDAwYTE0IikpIHJldHVybjsKKyAgICAg
ICAgaWYgKCFleHBlY3RzVmFsaWQoY29sLCAiI0ZGRiIsICIjZmZmZmZmIikpIHJldHVybjsKKyAg
ICAgICAgaWYgKCFleHBlY3RzVmFsaWQoY29sLCAiI0ZGRkZGRiIsICIjZmZmZmZmIikpIHJldHVy
bjsKICAgICAgICAgaWYgKCFleHBlY3RzVmFsaWQoY29sLCAiIGdyZWVuIiwgIiMwMDgwMDAiKSkg
cmV0dXJuOwogICAgICAgICBpZiAoIWV4cGVjdHNWYWxpZChjb2wsICJncmVlbiAiLCAiIzAwODAw
MCIpKSByZXR1cm47CiAgICAgICAgIGlmICghZXhwZWN0c1ZhbGlkKGNvbCwgImdyZWVuIiwgIiMw
MDgwMDAiKSkgcmV0dXJuOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdDb2xvci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdDb2xvci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0NvbG9yLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorVGhpcyB0ZXN0IGNoZWNr
cyB0aGUgU1ZHQ29sb3IgQVBJCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK0No
ZWNrIGluaXRpYWwgY29sb3IgdmFsdWVzCitQQVNTIChzdG9wQ29sb3IgPSBzdG9wRWxlbWVudC5z
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdzdG9wLWNvbG9yJykpLnRvU3RyaW5nKCkgaXMgIltv
YmplY3QgU1ZHQ29sb3JdIgorUEFTUyBzdG9wQ29sb3IuY29sb3JUeXBlIGlzIFNWR0NvbG9yLlNW
R19DT0xPUlRZUEVfUkdCQ09MT1IKK1BBU1MgKHJnYkNvbG9yID0gc3RvcENvbG9yLnJnYkNvbG9y
KS50b1N0cmluZygpIGlzICJbb2JqZWN0IFJHQkNvbG9yXSIKK1BBU1MgcmdiQ29sb3IucmVkLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMjU1CitQQVNTIHJn
YkNvbG9yLmdyZWVuLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikg
aXMgMAorUEFTUyByZ2JDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUu
Q1NTX05VTUJFUikgaXMgMAorUEFTUyBzdG9wRWxlbWVudC5zdHlsZS5zdG9wQ29sb3IgaXMgIiNm
ZjAwMDAiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc3RvcEVs
ZW1lbnQpLnN0b3BDb2xvciBpcyAicmdiKDI1NSwgMCwgMCkiCisKK1RyeSBpbnZhbGlkIGFyZ3Vt
ZW50cyBmb3Igc2V0Q29sb3IoKQorUEFTUyBzdG9wQ29sb3Iuc2V0Q29sb3IobnVsbCwgbnVsbCwg
bnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBT
VkcgRXhjZXB0aW9uIDEuCitQQVNTIHN0b3BDb2xvci5zZXRDb2xvcihTVkdDb2xvci5TVkdfQ09M
T1JUWVBFX1JHQkNPTE9SLCBzdmdFbGVtZW50LCAnJyk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgorUEFTUyBzdG9wQ29s
b3Iuc2V0Q29sb3IoU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiwgJycsICcnKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRp
b24gMS4KK1BBU1Mgc3RvcENvbG9yLnNldENvbG9yKFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfQ1VS
UkVOVENPTE9SICsgMSwgJycsICcnKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfV1JPTkdf
VFlQRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDAuCitQQVNTIHN0b3BDb2xvci5zZXRDb2xvcigp
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNT
IHN0b3BDb2xvci5zZXRDb2xvcihzdG9wQ29sb3IpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMuCisKK1RyeSBhc3NpZ25pbmcgdG8gdGhlIHJlYWRvbmx5
IGNvbG9yVHlwZSBwcm9wZXJ0eSwgd2hpY2ggc2lsZW50bHkgZmFpbHMKK1BBU1Mgc3RvcENvbG9y
LmNvbG9yVHlwZSA9IFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfVU5LS05PV047IGlzIHVuZGVmaW5l
ZC4KK1BBU1Mgc3RvcENvbG9yLmNvbG9yVHlwZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JH
QkNPTE9SCitQQVNTIHN0b3BFbGVtZW50LnN0eWxlLnN0b3BDb2xvciBpcyAiI2ZmMDAwMCIKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzdG9wRWxlbWVudCkuc3Rv
cENvbG9yIGlzICJyZ2IoMjU1LCAwLCAwKSIKKworVGVzdCB1c2luZyBzZXRDb2xvcigpIGFuZCBT
VkdfQ09MT1JUWVBFX1VOS05PV04KK1BBU1Mgc3RvcENvbG9yLnNldENvbG9yKFNWR0NvbG9yLlNW
R19DT0xPUlRZUEVfVU5LS05PV04sICcnLCAnJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdf
SU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDEuCitQQVNTIHN0b3BDb2xvci5z
ZXRDb2xvcihTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1VOS0tOT1dOLCAncmdiKDAsMTI4LDEyOCkn
LCAnJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBT
VkcgRXhjZXB0aW9uIDEuCitQQVNTIHN0b3BDb2xvci5zZXRDb2xvcihTVkdDb2xvci5TVkdfQ09M
T1JUWVBFX1VOS0tOT1dOLCAnJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24g
MS4KK1BBU1Mgc3RvcENvbG9yLnNldENvbG9yKFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfVU5LS05P
V04sICdyZ2IoMCwwLDApJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMS4K
KworVGVzdCB1c2luZyBzZXRDb2xvcigpIGFuZCBTVkdfQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NP
TE9SCitQQVNTIHN0b3BDb2xvci5zZXRDb2xvcihTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNP
TE9SX0lDQ0NPTE9SLCAncmdiKDc3LDAsNzcpJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMikn
KSBpcyB1bmRlZmluZWQuCitQQVNTIHN0b3BDb2xvci5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZH
X0NPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUgorUEFTUyBzdG9wQ29sb3IuY29sb3JUeXBlIGlz
IFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1IKK1BBU1MgKHJnYkNvbG9y
ID0gc3RvcENvbG9yLnJnYkNvbG9yKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFJHQkNvbG9yXSIK
K1BBU1MgcmdiQ29sb3IucmVkLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUikgaXMgNzcKK1BBU1MgcmdiQ29sb3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIHJnYkNvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyA3NworUEFTUyBzdG9wRWxlbWVudC5z
dHlsZS5zdG9wQ29sb3IgaXMgIiM0ZDAwNGQiCitGQUlMIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoc3RvcEVsZW1lbnQpLnN0b3BDb2xvciBzaG91bGQgYmUgcmdiKDc3LCAw
LCA3NykuIFdhcyByZ2IoMjU1LCAwLCAwKS4KKworVGVzdCB1c2luZyBzZXRDb2xvcigpIGFuZCBT
VkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUgorUEFTUyBzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZHQ29s
b3IuU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IsICdyZ2IoNzcsMCw3NyknLCAnaWNjLWNvbG9y
KG15UkdCLCAwLCAxLCAyKScpIGlzIHVuZGVmaW5lZC4KK1BBU1Mgc3RvcENvbG9yLmNvbG9yVHlw
ZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUgorUEFTUyBzdG9wQ29sb3Iu
Y29sb3JUeXBlIGlzIFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SCitQQVNTIChy
Z2JDb2xvciA9IHN0b3BDb2xvci5yZ2JDb2xvcikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBSR0JD
b2xvcl0iCitQQVNTIHJnYkNvbG9yLnJlZC5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
LkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgcmdiQ29sb3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQ
cmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIHJnYkNvbG9yLmJsdWUuZ2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIHN0b3BFbGVt
ZW50LnN0eWxlLnN0b3BDb2xvciBpcyAiY3VycmVudENvbG9yIgorRkFJTCBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHN0b3BFbGVtZW50KS5zdG9wQ29sb3Igc2hvdWxkIGJl
IHJnYigwLCAxMjgsIDApLiBXYXMgcmdiKDI1NSwgMCwgMCkuCisKK1Rlc3QgdXNpbmcgc2V0Q29s
b3IoKSBhbmQgU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUgorUEFTUyBzdG9wQ29sb3Iuc2V0Q29sb3Io
U1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiwgJ3JnYigwLDc3LDApJywgJ2ljYy1jb2xv
cihteVJHQiwgMCwgMSwgMiknKSBpcyB1bmRlZmluZWQuCitQQVNTIHN0b3BDb2xvci5jb2xvclR5
cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUgorUEFTUyBzdG9wQ29sb3IuY29s
b3JUeXBlIGlzIFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdCQ09MT1IKK1BBU1MgKHJnYkNvbG9y
ID0gc3RvcENvbG9yLnJnYkNvbG9yKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFJHQkNvbG9yXSIK
K1BBU1MgcmdiQ29sb3IucmVkLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUikgaXMgMAorUEFTUyByZ2JDb2xvci5ncmVlbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDc3CitQQVNTIHJnYkNvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitGQUlMIGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc3RvcEVsZW1lbnQpLnN0b3BDb2xvciBzaG91bGQgYmUg
cmdiKDAsIDc3LCAwKS4gV2FzIHJnYigyNTUsIDAsIDApLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20v
U1ZHQ29sb3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0NvbG9y
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0NvbG9yLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL1NWR0NvbG9yLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdQYWludC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdQYWludC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dmcvZG9tL1NWR1BhaW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNDQg
QEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIFNWR1BhaW50IEFQSQorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworCitDaGVjayBpbml0aWFsIHBhaW50IHZhbHVlcworUEFTUyAoZmlsbFBh
aW50ID0gcmVjdEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZmlsbCcpKS50b1N0
cmluZygpIGlzICJbb2JqZWN0IFNWR1BhaW50XSIKK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBp
cyBTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SCitQQVNTIGZpbGxQYWludC51cmkgaXMg
IiIKK1BBU1MgZmlsbFBhaW50LmNvbG9yVHlwZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JH
QkNPTE9SCitQQVNTIChmaWxsQ29sb3IgPSBmaWxsUGFpbnQucmdiQ29sb3IpLnRvU3RyaW5nKCkg
aXMgIltvYmplY3QgUkdCQ29sb3JdIgorUEFTUyBmaWxsQ29sb3IucmVkLmdldEZsb2F0VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBmaWxsQ29sb3IuZ3JlZW4u
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAxMjgKK1BBU1Mg
ZmlsbENvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVS
KSBpcyAwCitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgIiMwMDgwMDAiCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwgaXMg
IiMwMDgwMDAiCisKK1RyeSBpbnZhbGlkIGFyZ3VtZW50cyBmb3Igc2V0UGFpbnQoKQorUEFTUyBm
aWxsUGFpbnQuc2V0UGFpbnQobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDEuCitQQVNT
IGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCBzdmdF
bGVtZW50LCAnJywgJycpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVF
X0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMS4KK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1Bh
aW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IsICcnLCAnJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNW
R1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgKyAxLCAnJywgJycsICcnKTsg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfV1JPTkdfVFlQRV9FUlI6IERPTSBTVkcgRXhjZXB0
aW9uIDAuCitQQVNTIGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX05P
TkUgLSAxLCAnJywgJycsICcnKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfV1JPTkdfVFlQ
RV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDAuCitQQVNTIGZpbGxQYWludC5zZXRQYWludChTVkdQ
YWludC5TVkdfUEFJTlRUWVBFX1VSSSArIDEsICcnLCAnJywgJycpOyB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19XUk9OR19UWVBFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMC4KK1BBU1MgZmls
bFBhaW50LnNldFBhaW50KCkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KGZpbGxQYWludCkgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KKworVHJ5IGludmFsaWQg
YXJndW1lbnRzIGZvciBzZXRVcmkoKQorUEFTUyBmaWxsUGFpbnQuc2V0VXJpKCkgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KKworVHJ5IGFzc2lnbmlu
ZyB0byB0aGUgcmVhZG9ubHkgcGFpbnRUeXBlIHByb3BlcnR5LCB3aGljaCBzaWxlbnRseSBmYWls
cworUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlID0gU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VTktL
Tk9XTjsgaXMgdW5kZWZpbmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50
LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAi
IzAwODAwMCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0
RWxlbWVudCkuZmlsbCBpcyAiIzAwODAwMCIKKworVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBT
VkdfUEFJTlRUWVBFX1VOS05PV04KK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNW
R19QQUlOVFRZUEVfVU5LS05PV04sICcnLCAnJywgJycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgorUEFTUyBmaWxsUGFp
bnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VTktLTk9XTiwgJ3VybCgjZm9vKScs
ICcnLCAnJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERP
TSBTVkcgRXhjZXB0aW9uIDEuCitQQVNTIGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdf
UEFJTlRUWVBFX1VOS0tOT1dOLCAnJywgJ3JnYigwLDEyOCwxMjgpJywgJycpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgor
UEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VTktLTk9XTiwg
JycsICcnLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgorUEFTUyBmaWxs
UGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VTktLTk9XTiwgJ3VybCgjZm9v
KScsICdyZ2IoMCwwLDApJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMS4K
KworVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX05PTkUgLSBhCitQQVNT
IGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUsICcnLCAnJywg
JycpIGlzIHVuZGVmaW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWludC5T
VkdfUEFJTlRUWVBFX05PTkUKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAibm9uZSIK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCku
ZmlsbCBpcyAibm9uZSIKKworUmVzZXQgc3R5bGUgdG8gaW5pdGlhbCB2YWx1ZQorUEFTUyAoZmls
bFBhaW50ID0gcmVjdEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZmlsbCcpKS50
b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR1BhaW50XSIKK1BBU1MgZmlsbFBhaW50LnBhaW50VHlw
ZSBpcyBTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SCitQQVNTIHJlY3RFbGVtZW50LnN0
eWxlLmZpbGwgaXMgIiMwMDgwMDAiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwgaXMgIiMwMDgwMDAiCisKK1Rlc3QgdXNpbmcgc2V0
UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9OT05FIC0gYgorUEFTUyBmaWxsUGFpbnQuc2V0UGFp
bnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05FLCAndXJsKCNmb28pJywgJycsICcnKSBpcyB1
bmRlZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQuU1ZHX1BBSU5U
VFlQRV9OT05FCitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgIm5vbmUiCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwgaXMg
Im5vbmUiCisKK1Jlc2V0IHN0eWxlIHRvIGluaXRpYWwgdmFsdWUKK1BBU1MgKGZpbGxQYWludCA9
IHJlY3RFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2ZpbGwnKSkudG9TdHJpbmco
KSBpcyAiW29iamVjdCBTVkdQYWludF0iCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZH
UGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUgorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxs
IGlzICIjMDA4MDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KHJlY3RFbGVtZW50KS5maWxsIGlzICIjMDA4MDAwIgorCitUZXN0IHVzaW5nIHNldFBhaW50KCkg
YW5kIFNWR19QQUlOVFRZUEVfTk9ORSAtIGMKK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1Bh
aW50LlNWR19QQUlOVFRZUEVfTk9ORSwgJycsICdyZ2IoMCwxMjgsMTI4KScsICcnKSBpcyB1bmRl
ZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQ
RV9OT05FCitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgIm5vbmUiCitQQVNTIGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwgaXMgIm5v
bmUiCisKK1Jlc2V0IHN0eWxlIHRvIGluaXRpYWwgdmFsdWUKK1BBU1MgKGZpbGxQYWludCA9IHJl
Y3RFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2ZpbGwnKSkudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBTVkdQYWludF0iCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFp
bnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUgorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlz
ICIjMDA4MDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJl
Y3RFbGVtZW50KS5maWxsIGlzICIjMDA4MDAwIgorCitUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5k
IFNWR19QQUlOVFRZUEVfTk9ORSAtIGQKK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50
LlNWR19QQUlOVFRZUEVfTk9ORSwgJycsICcnLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScp
IGlzIHVuZGVmaW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWludC5TVkdf
UEFJTlRUWVBFX05PTkUKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAibm9uZSIKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmls
bCBpcyAibm9uZSIKKworUmVzZXQgc3R5bGUgdG8gaW5pdGlhbCB2YWx1ZQorUEFTUyAoZmlsbFBh
aW50ID0gcmVjdEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZmlsbCcpKS50b1N0
cmluZygpIGlzICJbb2JqZWN0IFNWR1BhaW50XSIKK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBp
cyBTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SCitQQVNTIHJlY3RFbGVtZW50LnN0eWxl
LmZpbGwgaXMgIiMwMDgwMDAiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUocmVjdEVsZW1lbnQpLmZpbGwgaXMgIiMwMDgwMDAiCisKK1Rlc3QgdXNpbmcgc2V0UGFp
bnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9OT05FIC0gZQorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQo
U1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05FLCAndXJsKCNmb28pJywgJ3JnYigwLDAsMCknLCAn
aWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIGlzIHVuZGVmaW5lZC4KK1BBU1MgcmVjdEVsZW1l
bnQuc3R5bGUuZmlsbCBpcyAibm9uZSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAibm9uZSIKKworVGVzdCB1c2luZyBzZXRQ
YWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VSSSAtIGEKK1BBU1MgZmlsbFBhaW50LnNldFBhaW50
KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJLCAnJywgJycsICcnKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMS4KK1BBU1Mg
ZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUKK1BBU1Mg
cmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAibm9uZSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAibm9uZSIKKworVGVzdCB1
c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VSSSAtIGIKK1BBU1MgZmlsbFBhaW50
LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJLCAnJywgJ3JnYigwLDEyOCwxMjgp
JywgJycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00g
U1ZHIEV4Y2VwdGlvbiAxLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNW
R19QQUlOVFRZUEVfTk9ORQorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJub25lIgor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5m
aWxsIGlzICJub25lIgorCitUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVf
VVJJIC0gYworUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9V
UkksICcnLCAnJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMS4KK1BBU1Mg
ZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUKK1BBU1Mg
cmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAibm9uZSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAibm9uZSIKKworVGVzdCB1
c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VSSSAtIGQKK1BBU1MgZmlsbFBhaW50
LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJLCAndXJsKCN0ZXN0KScsICcnLCAn
JykgaXMgdW5kZWZpbmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNW
R19QQUlOVFRZUEVfVVJJCitQQVNTIGZpbGxQYWludC51cmkgaXMgInVybCgjdGVzdCkiCitQQVNT
IGZpbGxQYWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9VTktOT1dOCitQ
QVNTIChmaWxsQ29sb3IgPSBmaWxsUGFpbnQucmdiQ29sb3IpLnRvU3RyaW5nKCkgaXMgIltvYmpl
Y3QgUkdCQ29sb3JdIgorUEFTUyBmaWxsQ29sb3IucmVkLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBmaWxsQ29sb3IuZ3JlZW4uZ2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGZpbGxDb2xvci5i
bHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFT
UyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJ1cmwoI3Rlc3QpIgorUEFTUyBkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIGlzICJ1cmwoI3Rl
c3QpIgorCitSZXNldCBzdHlsZSB0byBpbml0aWFsIHZhbHVlCitQQVNTIChmaWxsUGFpbnQgPSBy
ZWN0RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdmaWxsJykpLnRvU3RyaW5nKCkg
aXMgIltvYmplY3QgU1ZHUGFpbnRdIgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1Bh
aW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBp
cyAiIzAwODAwMCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShy
ZWN0RWxlbWVudCkuZmlsbCBpcyAiIzAwODAwMCIKKworVGVzdCB1c2luZyBzZXRQYWludCgpIGFu
ZCBTVkdfUEFJTlRUWVBFX1VSSSAtIGUKK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50
LlNWR19QQUlOVFRZUEVfVVJJLCAndXJsKCNmb28pJywgJ3JnYigwLDAsMCknLCAnaWNjLWNvbG9y
KG15UkdCLCAwLCAxLCAyKScpIGlzIHVuZGVmaW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50VHlw
ZSBpcyBTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSQorUEFTUyBmaWxsUGFpbnQudXJpIGlzICJ1
cmwoI2ZvbykiCitQQVNTIGZpbGxQYWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9S
VFlQRV9VTktOT1dOCitQQVNTIChmaWxsQ29sb3IgPSBmaWxsUGFpbnQucmdiQ29sb3IpLnRvU3Ry
aW5nKCkgaXMgIltvYmplY3QgUkdCQ29sb3JdIgorUEFTUyBmaWxsQ29sb3IucmVkLmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBmaWxsQ29sb3Iu
Z3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQ
QVNTIGZpbGxDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUikgaXMgMAorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJ1cmwoI2ZvbykiCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZp
bGwgaXMgInVybCgjZm9vKSIKKworVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRU
WVBFX1VSSV9OT05FCitQQVNTIGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRU
WVBFX1VSSV9OT05FLCAndXJsKCN0ZXN0KScsICdyZ2IoMCwwLDApJywgJ2ljYy1jb2xvcihteVJH
QiwgMCwgMSwgMiknKSBpcyB1bmRlZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMg
U1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUklfTk9ORQorUEFTUyBmaWxsUGFpbnQudXJpIGlzICJ1
cmwoI3Rlc3QpIgorUEFTUyBmaWxsUGFpbnQuY29sb3JUeXBlIGlzIFNWR0NvbG9yLlNWR19DT0xP
UlRZUEVfVU5LTk9XTgorUEFTUyAoZmlsbENvbG9yID0gZmlsbFBhaW50LnJnYkNvbG9yKS50b1N0
cmluZygpIGlzICJbb2JqZWN0IFJHQkNvbG9yXSIKK1BBU1MgZmlsbENvbG9yLnJlZC5nZXRGbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgZmlsbENvbG9y
LmdyZWVuLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAor
UEFTUyBmaWxsQ29sb3IuYmx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19O
VU1CRVIpIGlzIDAKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAidXJsKCN0ZXN0KSBu
b25lIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVt
ZW50KS5maWxsIGlzICJ1cmwoI3Rlc3QpIG5vbmUiCisKK1Rlc3QgdXNpbmcgc2V0UGFpbnQoKSBh
bmQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SCitQQVNTIGZpbGxQYWludC5zZXRQYWlu
dChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IsICd1cmwoI2ZvbyknLCAn
cmdiKDAsMCwwKScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykgaXMgdW5kZWZpbmVkLgor
UEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJX0NV
UlJFTlRDT0xPUgorUEFTUyBmaWxsUGFpbnQudXJpIGlzICJ1cmwoI2ZvbykiCitQQVNTIGZpbGxQ
YWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IKK1BB
U1MgKGZpbGxDb2xvciA9IGZpbGxQYWludC5yZ2JDb2xvcikudG9TdHJpbmcoKSBpcyAiW29iamVj
dCBSR0JDb2xvcl0iCitQQVNTIGZpbGxDb2xvci5yZWQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGZpbGxDb2xvci5ncmVlbi5nZXRGbG9hdFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgZmlsbENvbG9yLmJs
dWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNT
IHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgInVybCgjZm9vKSBjdXJyZW50Q29sb3IiCitGQUlM
IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwg
c2hvdWxkIGJlIHVybCgjZm9vKSAjMDBmZjAwLiBXYXMgdXJsKCNmb28pIGN1cnJlbnRDb2xvci4K
KworVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUgor
UEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09M
T1IsICd1cmwoI3Rlc3QpJywgJ3JnYig3NywwLDc3KScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEs
IDIpJykgaXMgdW5kZWZpbmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50
LlNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SCitQQVNTIGZpbGxQYWludC51cmkgaXMgInVybCgj
dGVzdCkiCitQQVNTIGZpbGxQYWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQ
RV9SR0JDT0xPUgorUEFTUyAoZmlsbENvbG9yID0gZmlsbFBhaW50LnJnYkNvbG9yKS50b1N0cmlu
ZygpIGlzICJbb2JqZWN0IFJHQkNvbG9yXSIKK1BBU1MgZmlsbENvbG9yLnJlZC5nZXRGbG9hdFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDc3CitQQVNTIGZpbGxDb2xvci5n
cmVlbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BB
U1MgZmlsbENvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVN
QkVSKSBpcyA3NworUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJ1cmwoI3Rlc3QpICM0
ZDAwNGQiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVs
ZW1lbnQpLmZpbGwgaXMgInVybCgjdGVzdCkgIzRkMDA0ZCIKKworVGVzdCB1c2luZyBzZXRQYWlu
dCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUgorUEFTUyBmaWxsUGFp
bnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1Is
ICd1cmwoI2ZvbyknLCAncmdiKDc3LDAsNzcpJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMikn
KSBpcyB1bmRlZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQuU1ZH
X1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1IKK1BBU1MgZmlsbFBhaW50LnVyaSBpcyAi
dXJsKCNmb28pIgorUEFTUyBmaWxsUGFpbnQuY29sb3JUeXBlIGlzIFNWR0NvbG9yLlNWR19DT0xP
UlRZUEVfUkdCQ09MT1JfSUNDQ09MT1IKK1BBU1MgKGZpbGxDb2xvciA9IGZpbGxQYWludC5yZ2JD
b2xvcikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBSR0JDb2xvcl0iCitQQVNTIGZpbGxDb2xvci5y
ZWQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyA3NworUEFT
UyBmaWxsQ29sb3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVN
QkVSKSBpcyAwCitQQVNTIGZpbGxDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWUuQ1NTX05VTUJFUikgaXMgNzcKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAi
dXJsKCNmb28pICM0ZDAwNGQiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUocmVjdEVsZW1lbnQpLmZpbGwgaXMgInVybCgjZm9vKSAjNGQwMDRkIgorCitUZXN0IHVz
aW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IKK1BBU1Mg
ZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09M
T1IsICd1cmwoI3Rlc3QpJywgJ3JnYig3NywwLDc3KScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEs
IDIpJykgaXMgdW5kZWZpbmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50
LlNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IKK1BBU1MgZmlsbFBhaW50LnVyaSBpcyAi
IgorUEFTUyBmaWxsUGFpbnQuY29sb3JUeXBlIGlzIFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdC
Q09MT1JfSUNDQ09MT1IKK1BBU1MgKGZpbGxDb2xvciA9IGZpbGxQYWludC5yZ2JDb2xvcikudG9T
dHJpbmcoKSBpcyAiW29iamVjdCBSR0JDb2xvcl0iCitQQVNTIGZpbGxDb2xvci5yZWQuZ2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyA3NworUEFTUyBmaWxsQ29s
b3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAw
CitQQVNTIGZpbGxDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NT
X05VTUJFUikgaXMgNzcKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAiIzRkMDA0ZCIK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCku
ZmlsbCBpcyAiIzRkMDA0ZCIKKworVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRU
WVBFX0NVUlJFTlRDT0xPUgorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BB
SU5UVFlQRV9DVVJSRU5UQ09MT1IsICd1cmwoI2ZvbyknLCAncmdiKDc3LDAsNzcpJywgJ2ljYy1j
b2xvcihteVJHQiwgMCwgMSwgMiknKSBpcyB1bmRlZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWlu
dFR5cGUgaXMgU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IKK1BBU1MgZmlsbFBh
aW50LnVyaSBpcyAiIgorUEFTUyBmaWxsUGFpbnQuY29sb3JUeXBlIGlzIFNWR0NvbG9yLlNWR19D
T0xPUlRZUEVfQ1VSUkVOVENPTE9SCitQQVNTIChmaWxsQ29sb3IgPSBmaWxsUGFpbnQucmdiQ29s
b3IpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgUkdCQ29sb3JdIgorUEFTUyBmaWxsQ29sb3IucmVk
LmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBm
aWxsQ29sb3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVS
KSBpcyAwCitQQVNTIGZpbGxDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJjdXJy
ZW50Q29sb3IiCitGQUlMIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVj
dEVsZW1lbnQpLmZpbGwgc2hvdWxkIGJlICMwMGZmMDAuIFdhcyBjdXJyZW50Q29sb3IuCisKK1Rl
c3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUgorUEFTUyBmaWxs
UGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgJ3VybCgjdGVz
dCknLCAncmdiKDAsNzcsMCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIGlzIHVuZGVm
aW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWludC5TVkdfUEFJTlRUWVBF
X1JHQkNPTE9SCitQQVNTIGZpbGxQYWludC51cmkgaXMgIiIKK1BBU1MgZmlsbFBhaW50LmNvbG9y
VHlwZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SCitQQVNTIChmaWxsQ29sb3Ig
PSBmaWxsUGFpbnQucmdiQ29sb3IpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgUkdCQ29sb3JdIgor
UEFTUyBmaWxsQ29sb3IucmVkLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUikgaXMgMAorUEFTUyBmaWxsQ29sb3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyA3NworUEFTUyBmaWxsQ29sb3IuYmx1ZS5nZXRGbG9hdFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgcmVjdEVsZW1lbnQu
c3R5bGUuZmlsbCBpcyAiIzAwNGQwMCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAiIzAwNGQwMCIKKworVGVzdCB1c2luZyBz
ZXRVcmkoKQorUEFTUyBmaWxsUGFpbnQuc2V0VXJpKCd1cmwoI2Zvb2JhciknKTsgaXMgdW5kZWZp
bmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNWR19QQUlOVFRZUEVf
VVJJX05PTkUKK1BBU1MgZmlsbFBhaW50LnVyaSBpcyAidXJsKCNmb29iYXIpIgorUEFTUyBmaWxs
UGFpbnQuY29sb3JUeXBlIGlzIFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfVU5LTk9XTgorUEFTUyAo
ZmlsbENvbG9yID0gZmlsbFBhaW50LnJnYkNvbG9yKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFJH
QkNvbG9yXSIKK1BBU1MgZmlsbENvbG9yLnJlZC5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgZmlsbENvbG9yLmdyZWVuLmdldEZsb2F0VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBmaWxsQ29sb3IuYmx1ZS5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgcmVj
dEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAidXJsKCNmb29iYXIpIG5vbmUiCitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwgaXMgInVybCgj
Zm9vYmFyKSBub25lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHUGFpbnQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1BhaW50Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1BhaW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL1NWR1BhaW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtdGVzdHMvU1ZH
Q29sb3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtdGVzdHMv
U1ZHQ29sb3IuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10
ZXN0cy9TVkdDb2xvci5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIFNWR0NvbG9yIEFQSSIpOworCisvLyBTZXR1cCBhIHJl
YWwgU1ZHIGRvY3VtZW50LCBhcyB3ZSB3YW50IHRvIGFjY2VzcyBDU1Mgc3R5bGUgaW5mb3JtYXRp
b24uCit2YXIgc3ZnRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAic3ZnIik7CitzdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgid2lk
dGgiLCAiMTUwIik7CitzdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjUwIik7CisK
K3ZhciBzdG9wRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAic3RvcCIpOworc3RvcEVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdHls
ZSIsICJzdG9wLWNvbG9yOiByZWQ7IGNvbG9yOiBncmVlbiIpOworc3ZnRWxlbWVudC5hcHBlbmRD
aGlsZChzdG9wRWxlbWVudCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24i
KS5hcHBlbmRDaGlsZChzdmdFbGVtZW50KTsKKworZnVuY3Rpb24gY2hlY2tTdG9wQ29sb3IodHlw
ZSwgcmVkLCBncmVlbiwgYmx1ZSkgeworICAgIHNob3VsZEJlKCJzdG9wQ29sb3IuY29sb3JUeXBl
IiwgdHlwZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCIocmdiQ29sb3IgPSBzdG9wQ29s
b3IucmdiQ29sb3IpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBSR0JDb2xvcl0iKTsKKyAgICBzaG91
bGRCZSgicmdiQ29sb3IucmVkLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUikiLCAiIiArIHJlZCk7CisgICAgc2hvdWxkQmUoInJnYkNvbG9yLmdyZWVuLmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikiLCAiIiArIGdyZWVuKTsKKyAgICBz
aG91bGRCZSgicmdiQ29sb3IuYmx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNT
U19OVU1CRVIpIiwgIiIgKyBibHVlKTsKK30KKworZGVidWcoIiIpOworZGVidWcoIkNoZWNrIGlu
aXRpYWwgY29sb3IgdmFsdWVzIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIihzdG9wQ29sb3Ig
PSBzdG9wRWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdzdG9wLWNvbG9yJykpLnRv
U3RyaW5nKCkiLCAiW29iamVjdCBTVkdDb2xvcl0iKTsKK2NoZWNrU3RvcENvbG9yKCJTVkdDb2xv
ci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SIiwgMjU1LCAwLCAwKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygic3RvcEVsZW1lbnQuc3R5bGUuc3RvcENvbG9yIiwgIiNmZjAwMDAiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzdG9w
RWxlbWVudCkuc3RvcENvbG9yIiwgInJnYigyNTUsIDAsIDApIik7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJUcnkgaW52YWxpZCBhcmd1bWVudHMgZm9yIHNldENvbG9yKCkiKTsKK3Nob3VsZFRocm93
KCJzdG9wQ29sb3Iuc2V0Q29sb3IobnVsbCwgbnVsbCwgbnVsbCkiKTsKK3Nob3VsZFRocm93KCJz
dG9wQ29sb3Iuc2V0Q29sb3IoU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiwgc3ZnRWxl
bWVudCwgJycpOyIpOworc2hvdWxkVGhyb3coInN0b3BDb2xvci5zZXRDb2xvcihTVkdDb2xvci5T
VkdfQ09MT1JUWVBFX1JHQkNPTE9SLCAnJywgJycpIik7CitzaG91bGRUaHJvdygic3RvcENvbG9y
LnNldENvbG9yKFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SICsgMSwgJycsICcn
KTsiKTsKK3Nob3VsZFRocm93KCJzdG9wQ29sb3Iuc2V0Q29sb3IoKSIpOworc2hvdWxkVGhyb3co
InN0b3BDb2xvci5zZXRDb2xvcihzdG9wQ29sb3IpIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJU
cnkgYXNzaWduaW5nIHRvIHRoZSByZWFkb25seSBjb2xvclR5cGUgcHJvcGVydHksIHdoaWNoIHNp
bGVudGx5IGZhaWxzIik7CitzaG91bGRCZVVuZGVmaW5lZCgic3RvcENvbG9yLmNvbG9yVHlwZSA9
IFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfVU5LS05PV047Iik7CitzaG91bGRCZSgic3RvcENvbG9y
LmNvbG9yVHlwZSIsICJTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInN0b3BFbGVtZW50LnN0eWxlLnN0b3BDb2xvciIsICIjZmYwMDAwIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoc3RvcEVsZW1lbnQpLnN0b3BDb2xvciIsICJyZ2IoMjU1LCAwLCAwKSIpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRDb2xvcigpIGFuZCBTVkdfQ09MT1JUWVBFX1VO
S05PV04iKTsKK3Nob3VsZFRocm93KCJzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZHQ29sb3IuU1ZHX0NP
TE9SVFlQRV9VTktLTk9XTiwgJycsICcnKSIpOworc2hvdWxkVGhyb3coInN0b3BDb2xvci5zZXRD
b2xvcihTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1VOS0tOT1dOLCAncmdiKDAsMTI4LDEyOCknLCAn
JykiKTsKK3Nob3VsZFRocm93KCJzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZHQ29sb3IuU1ZHX0NPTE9S
VFlQRV9VTktLTk9XTiwgJycsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykiKTsKK3Nob3Vs
ZFRocm93KCJzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9VTktLTk9X
TiwgJ3JnYigwLDAsMCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIik7CisKK2RlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldENvbG9yKCkgYW5kIFNWR19DT0xPUlRZUEVfUkdC
Q09MT1JfSUNDQ09MT1IiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJzdG9wQ29sb3Iuc2V0Q29sb3Io
U1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiwgJ3JnYig3NywwLDc3KScs
ICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykiKTsKK3Nob3VsZEJlKCJzdG9wQ29sb3IuY29s
b3JUeXBlIiwgIlNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1IiKTsKKy8v
IEZJWE1FOiBObyBzdXBwb3J0IGZvciBJQ0MgY29sb3JzLgorY2hlY2tTdG9wQ29sb3IoIlNWR0Nv
bG9yLlNWR19DT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1IiLCA3NywgMCwgNzcpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJzdG9wRWxlbWVudC5zdHlsZS5zdG9wQ29sb3IiLCAiIzRkMDA0ZCIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKHN0b3BFbGVtZW50KS5zdG9wQ29sb3IiLCAicmdiKDc3LCAwLCA3NykiKTsKKworZGVi
dWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0Q29sb3IoKSBhbmQgU1ZHX0NPTE9SVFlQRV9D
VVJSRU5UQ09MT1IiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZH
Q29sb3IuU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IsICdyZ2IoNzcsMCw3NyknLCAnaWNjLWNv
bG9yKG15UkdCLCAwLCAxLCAyKScpIik7CitzaG91bGRCZSgic3RvcENvbG9yLmNvbG9yVHlwZSIs
ICJTVkdDb2xvci5TVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiIpOworY2hlY2tTdG9wQ29sb3Io
IlNWR0NvbG9yLlNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SIiwgMCwgMCwgMCk7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInN0b3BFbGVtZW50LnN0eWxlLnN0b3BDb2xvciIsICJjdXJyZW50Q29s
b3IiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShzdG9wRWxlbWVudCkuc3RvcENvbG9yIiwgInJnYigwLCAxMjgsIDApIik7CisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldENvbG9yKCkgYW5kIFNWR19DT0xPUlRZ
UEVfUkdCQ09MT1IiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZH
Q29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiwgJ3JnYigwLDc3LDApJywgJ2ljYy1jb2xvciht
eVJHQiwgMCwgMSwgMiknKSIpOworc2hvdWxkQmUoInN0b3BDb2xvci5jb2xvclR5cGUiLCAiU1ZH
Q29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiIpOworY2hlY2tTdG9wQ29sb3IoIlNWR0NvbG9y
LlNWR19DT0xPUlRZUEVfUkdCQ09MT1IiLCAwLCA3NywgMCk7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc3RvcEVsZW1lbnQpLnN0
b3BDb2xvciIsICJyZ2IoMCwgNzcsIDApIik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9TVkdQYWludC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9TVkdQYWludC5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LXRlc3RzL1NWR1BhaW50
LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyOSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBjaGVja3MgdGhlIFNWR1BhaW50IEFQSSIpOworCisvLyBTZXR1cCBhIHJlYWwgU1ZHIGRvY3Vt
ZW50LCBhcyB3ZSB3YW50IHRvIGFjY2VzcyBDU1Mgc3R5bGUgaW5mb3JtYXRpb24uCit2YXIgc3Zn
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAic3ZnIik7CitzdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMTUwIik7
CitzdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjUwIik7CisKK3ZhciByZWN0RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAicmVjdCIpOworcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdHlsZSIsICJjb2xvcjog
bGltZTsgZmlsbDogZ3JlZW4iKTsKK3JlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAi
MTUwIik7CityZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICI1MCIpOworc3ZnRWxl
bWVudC5hcHBlbmRDaGlsZChyZWN0RWxlbWVudCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGVzY3JpcHRpb24iKS5hcHBlbmRDaGlsZChzdmdFbGVtZW50KTsKKworLy8gRklYTUU6IE1vc3Qg
dGVzdHMgdGhhdCBleGFtaW5lIHRoZSBjb21wdXRlZCBzdHlsZSBhZnRlciBtb2RpZnlpbmcgdGhl
IFNWR1BhaW50IG9iamVjdCBmYWlsLCBhcyB3ZSBkb24ndCBzdXBwb3J0CisvLyBpbnZhbGlkYXRp
b24gb2YgdGhlIHN0eWxlLCBpZiBhIENTU1ZhbHVlIGNoYW5nZXMsIGl0J3MgYWxzbyBkYW5nZXJv
dXMsIGFzIHRoZSBDU1NWYWx1ZXMgYXJlIHBvc3NpYmx5IHNoYXJlZC4KKy8vIFdlIHdvdWxkIG5l
ZWQgY29weS1vbi13cml0ZSBzdXBwb3J0IGZvciBDU1NWYWx1ZSBmaXJzdCwgdG8gbWFrZSB0aGlz
IHdvcmsuIEl0J3MgbG93IHByaW9yaXR5IHRob3VnaC4KKy8vIE5vLW9uZSBzdXBwb3J0cyBtb2Rp
ZnlpbmcgdGhlIFNWR1BhaW50IG9iamVjdC4KKworZnVuY3Rpb24gcmVzZXRTdHlsZSgpIHsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlJlc2V0IHN0eWxlIHRvIGluaXRpYWwgdmFsdWUiKTsK
KyAgICByZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImNvbG9yOiBsaW1lOyBmaWxs
OiBncmVlbiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiKGZpbGxQYWludCA9IHJlY3RF
bGVtZW50LnN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2ZpbGwnKSkudG9TdHJpbmcoKSIsICJb
b2JqZWN0IFNWR1BhaW50XSIpOworICAgIHNob3VsZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBlIiwg
IlNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAiIzAwODAwMCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0
RWxlbWVudCkuZmlsbCIsICIjMDA4MDAwIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRmlsbENvbG9y
KHR5cGUsIHJlZCwgZ3JlZW4sIGJsdWUpIHsKKyAgICBzaG91bGRCZSgiZmlsbFBhaW50LmNvbG9y
VHlwZSIsIHR5cGUpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiKGZpbGxDb2xvciA9IGZp
bGxQYWludC5yZ2JDb2xvcikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFJHQkNvbG9yXSIpOworICAg
IHNob3VsZEJlKCJmaWxsQ29sb3IucmVkLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUu
Q1NTX05VTUJFUikiLCAiIiArIHJlZCk7CisgICAgc2hvdWxkQmUoImZpbGxDb2xvci5ncmVlbi5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIiwgIiIgKyBncmVlbik7
CisgICAgc2hvdWxkQmUoImZpbGxDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWUuQ1NTX05VTUJFUikiLCAiIiArIGJsdWUpOworfQorCitkZWJ1ZygiIik7CitkZWJ1Zygi
Q2hlY2sgaW5pdGlhbCBwYWludCB2YWx1ZXMiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiKGZp
bGxQYWludCA9IHJlY3RFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2ZpbGwnKSku
dG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR1BhaW50XSIpOworc2hvdWxkQmUoImZpbGxQYWludC5w
YWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJmaWxsUGFpbnQudXJpIiwgIiIpOworY2hlY2tGaWxsQ29sb3IoIlNWR0Nv
bG9yLlNWR19DT0xPUlRZUEVfUkdCQ09MT1IiLCAwLCAxMjgsIDApOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgIiMwMDgwMDAiKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxl
bWVudCkuZmlsbCIsICIjMDA4MDAwIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUcnkgaW52YWxp
ZCBhcmd1bWVudHMgZm9yIHNldFBhaW50KCkiKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQuc2V0
UGFpbnQobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCkiKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQu
c2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgc3ZnRWxlbWVudCwgJycs
ICcnKTsiKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BB
SU5UVFlQRV9SR0JDT0xPUiwgJycsICcnKSIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQ
YWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SICsgMSwgJycsICcn
LCAnJyk7Iik7CitzaG91bGRUaHJvdygiZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19Q
QUlOVFRZUEVfTk9ORSAtIDEsICcnLCAnJywgJycpOyIpOworc2hvdWxkVGhyb3coImZpbGxQYWlu
dC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSSArIDEsICcnLCAnJywgJycpOyIp
Oworc2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQYWludCgpIik7CitzaG91bGRUaHJvdygiZmls
bFBhaW50LnNldFBhaW50KGZpbGxQYWludCkiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRyeSBp
bnZhbGlkIGFyZ3VtZW50cyBmb3Igc2V0VXJpKCkiKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQu
c2V0VXJpKCkiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRyeSBhc3NpZ25pbmcgdG8gdGhlIHJl
YWRvbmx5IHBhaW50VHlwZSBwcm9wZXJ0eSwgd2hpY2ggc2lsZW50bHkgZmFpbHMiKTsKK3Nob3Vs
ZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQucGFpbnRUeXBlID0gU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQ
RV9VTktLTk9XTjsiKTsKK3Nob3VsZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBlIiwgIlNWR1BhaW50
LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygicmVjdEVs
ZW1lbnQuc3R5bGUuZmlsbCIsICIjMDA4MDAwIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwiLCAi
IzAwODAwMCIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRQYWludCgpIGFu
ZCBTVkdfUEFJTlRUWVBFX1VOS05PV04iKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQuc2V0UGFp
bnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VTktLTk9XTiwgJycsICcnLCAnJykiKTsKK3Nob3Vs
ZFRocm93KCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VTktLTk9X
TiwgJ3VybCgjZm9vKScsICcnLCAnJykiKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQuc2V0UGFp
bnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VTktLTk9XTiwgJycsICdyZ2IoMCwxMjgsMTI4KScs
ICcnKSIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJ
TlRUWVBFX1VOS0tOT1dOLCAnJywgJycsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykiKTsK
K3Nob3VsZFRocm93KCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9V
TktLTk9XTiwgJ3VybCgjZm9vKScsICdyZ2IoMCwwLDApJywgJ2ljYy1jb2xvcihteVJHQiwgMCwg
MSwgMiknKSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRQYWludCgpIGFu
ZCBTVkdfUEFJTlRUWVBFX05PTkUgLSBhIik7CitzaG91bGRCZVVuZGVmaW5lZCgiZmlsbFBhaW50
LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfTk9ORSwgJycsICcnLCAnJykiKTsKK3No
b3VsZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBlIiwgIlNWR1BhaW50LlNWR19QQUlOVFRZUEVfTk9O
RSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgIm5v
bmUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCIsICJub25lIik7CityZXNldFN0eWxlKCk7CisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZ
UEVfTk9ORSAtIGIiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZH
UGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05FLCAndXJsKCNmb28pJywgJycsICcnKSIpOworc2hvdWxk
QmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05FIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAibm9uZSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgIm5vbmUiKTsKK3Jlc2V0U3R5bGUoKTsKKworZGVi
dWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9O
T05FIC0gYyIpOworc2hvdWxkQmVVbmRlZmluZWQoImZpbGxQYWludC5zZXRQYWludChTVkdQYWlu
dC5TVkdfUEFJTlRUWVBFX05PTkUsICcnLCAncmdiKDAsMTI4LDEyOCknLCAnJykiKTsKK3Nob3Vs
ZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBlIiwgIlNWR1BhaW50LlNWR19QQUlOVFRZUEVfTk9ORSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgIm5vbmUi
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCIsICJub25lIik7CityZXNldFN0eWxlKCk7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVf
Tk9ORSAtIGQiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFp
bnQuU1ZHX1BBSU5UVFlQRV9OT05FLCAnJywgJycsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIp
JykiKTsKK3Nob3VsZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBlIiwgIlNWR1BhaW50LlNWR19QQUlO
VFRZUEVfTk9ORSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5m
aWxsIiwgIm5vbmUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCIsICJub25lIik7CityZXNldFN0
eWxlKCk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNW
R19QQUlOVFRZUEVfTk9ORSAtIGUiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQuc2V0
UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05FLCAndXJsKCNmb28pJywgJ3JnYigwLDAs
MCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAibm9uZSIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5m
aWxsIiwgIm5vbmUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQo
KSBhbmQgU1ZHX1BBSU5UVFlQRV9VUkkgLSBhIik7CitzaG91bGRUaHJvdygiZmlsbFBhaW50LnNl
dFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJLCAnJywgJycsICcnKSIpOworc2hvdWxk
QmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05FIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAibm9uZSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgIm5vbmUiKTsKKworZGVidWcoIiIpOworZGVidWco
IlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9VUkkgLSBiIik7CitzaG91
bGRUaHJvdygiZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJLCAn
JywgJ3JnYigwLDEyOCwxMjgpJywgJycpIik7CitzaG91bGRCZSgiZmlsbFBhaW50LnBhaW50VHlw
ZSIsICJTVkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygicmVjdEVsZW1lbnQuc3R5bGUuZmlsbCIsICJub25lIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZp
bGwiLCAibm9uZSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRQYWludCgp
IGFuZCBTVkdfUEFJTlRUWVBFX1VSSSAtIGMiKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQuc2V0
UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkksICcnLCAnJywgJ2ljYy1jb2xvcihteVJH
QiwgMCwgMSwgMiknKSIpOworc2hvdWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFp
bnQuU1ZHX1BBSU5UVFlQRV9OT05FIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY3RFbGVt
ZW50LnN0eWxlLmZpbGwiLCAibm9uZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgIm5vbmUi
KTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BB
SU5UVFlQRV9VUkkgLSBkIik7CitzaG91bGRCZVVuZGVmaW5lZCgiZmlsbFBhaW50LnNldFBhaW50
KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJLCAndXJsKCN0ZXN0KScsICcnLCAnJykiKTsKK3No
b3VsZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBlIiwgIlNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJ
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxQYWludC51cmkiLCAidXJsKCN0ZXN0KSIp
OworY2hlY2tGaWxsQ29sb3IoIlNWR0NvbG9yLlNWR19DT0xPUlRZUEVfVU5LTk9XTiIsIDAsIDAs
IDApOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgInVy
bCgjdGVzdCkiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCIsICJ1cmwoI3Rlc3QpIik7CityZXNl
dFN0eWxlKCk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5k
IFNWR19QQUlOVFRZUEVfVVJJIC0gZSIpOworc2hvdWxkQmVVbmRlZmluZWQoImZpbGxQYWludC5z
ZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSSwgJ3VybCgjZm9vKScsICdyZ2IoMCww
LDApJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSIpOworc2hvdWxkQmUoImZpbGxQYWlu
dC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkkiKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZmlsbFBhaW50LnVyaSIsICJ1cmwoI2ZvbykiKTsKK2NoZWNrRmlsbENvbG9y
KCJTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1VOS05PV04iLCAwLCAwLCAwKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygicmVjdEVsZW1lbnQuc3R5bGUuZmlsbCIsICJ1cmwoI2ZvbykiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShy
ZWN0RWxlbWVudCkuZmlsbCIsICJ1cmwoI2ZvbykiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRl
c3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSIpOworc2hvdWxk
QmVVbmRlZmluZWQoImZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VS
SV9OT05FLCAndXJsKCN0ZXN0KScsICdyZ2IoMCwwLDApJywgJ2ljYy1jb2xvcihteVJHQiwgMCwg
MSwgMiknKSIpOworc2hvdWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZH
X1BBSU5UVFlQRV9VUklfTk9ORSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxsUGFpbnQu
dXJpIiwgInVybCgjdGVzdCkiKTsKK2NoZWNrRmlsbENvbG9yKCJTVkdDb2xvci5TVkdfQ09MT1JU
WVBFX1VOS05PV04iLCAwLCAwLCAwKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygicmVjdEVsZW1l
bnQuc3R5bGUuZmlsbCIsICJ1cmwoI3Rlc3QpIG5vbmUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmls
bCIsICJ1cmwoI3Rlc3QpIG5vbmUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcg
c2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SIik7CitzaG91bGRC
ZVVuZGVmaW5lZCgiZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJ
X0NVUlJFTlRDT0xPUiwgJ3VybCgjZm9vKScsICdyZ2IoMCwwLDApJywgJ2ljYy1jb2xvcihteVJH
QiwgMCwgMSwgMiknKSIpOworc2hvdWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFp
bnQuU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImZpbGxQYWludC51cmkiLCAidXJsKCNmb28pIik7CitjaGVja0ZpbGxDb2xvcigiU1ZHQ29s
b3IuU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IiLCAwLCAwLCAwKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygicmVjdEVsZW1lbnQuc3R5bGUuZmlsbCIsICJ1cmwoI2ZvbykgY3VycmVudENvbG9y
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwiLCAidXJsKCNmb28pICMwMGZmMDAiKTsKKworZGVi
dWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9V
UklfUkdCQ09MT1IiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZH
UGFpbnQuU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IsICd1cmwoI3Rlc3QpJywgJ3JnYig3Nyww
LDc3KScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykiKTsKK3Nob3VsZEJlKCJmaWxsUGFp
bnQucGFpbnRUeXBlIiwgIlNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxQYWludC51cmkiLCAidXJsKCN0ZXN0KSIpOworY2hl
Y2tGaWxsQ29sb3IoIlNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdCQ09MT1IiLCA3NywgMCwgNzcp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgInVybCgj
dGVzdCkgIzRkMDA0ZCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgInVybCgjdGVzdCkgIzRk
MDA0ZCIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBT
VkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiIpOworc2hvdWxkQmVVbmRlZmluZWQo
ImZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9J
Q0NDT0xPUiwgJ3VybCgjZm9vKScsICdyZ2IoNzcsMCw3NyknLCAnaWNjLWNvbG9yKG15UkdCLCAw
LCAxLCAyKScpIik7CitzaG91bGRCZSgiZmlsbFBhaW50LnBhaW50VHlwZSIsICJTVkdQYWludC5T
VkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJmaWxsUGFpbnQudXJpIiwgInVybCgjZm9vKSIpOworLy8gRklYTUU6IE5vIHN1cHBvcnQg
Zm9yIElDQyBjb2xvcnMuCitjaGVja0ZpbGxDb2xvcigiU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9S
R0JDT0xPUl9JQ0NDT0xPUiIsIDc3LCAwLCA3Nyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJl
Y3RFbGVtZW50LnN0eWxlLmZpbGwiLCAidXJsKCNmb28pICM0ZDAwNGQiKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxl
bWVudCkuZmlsbCIsICJ1cmwoI2ZvbykgIzRkMDA0ZCIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
VGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9S
Iik7CitzaG91bGRCZVVuZGVmaW5lZCgiZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19Q
QUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IsICd1cmwoI3Rlc3QpJywgJ3JnYig3NywwLDc3KScs
ICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykiKTsKK3Nob3VsZEJlKCJmaWxsUGFpbnQucGFp
bnRUeXBlIiwgIlNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFBhaW50LnVyaSIsICIiKTsKKy8vIEZJWE1FOiBObyBz
dXBwb3J0IGZvciBJQ0MgY29sb3JzLgorY2hlY2tGaWxsQ29sb3IoIlNWR0NvbG9yLlNWR19DT0xP
UlRZUEVfUkdCQ09MT1JfSUNDQ09MT1IiLCA3NywgMCwgNzcpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgIiM0ZDAwNGQiKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVu
dCkuZmlsbCIsICIjNGQwMDRkIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNl
dFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SIik7CitzaG91bGRCZVVuZGVm
aW5lZCgiZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfQ1VSUkVOVENP
TE9SLCAndXJsKCNmb28pJywgJ3JnYig3NywwLDc3KScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEs
IDIpJykiKTsKK3Nob3VsZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBlIiwgIlNWR1BhaW50LlNWR19Q
QUlOVFRZUEVfQ1VSUkVOVENPTE9SIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxQYWlu
dC51cmkiLCAiIik7CitjaGVja0ZpbGxDb2xvcigiU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9DVVJS
RU5UQ09MT1IiLCAwLCAwLCAwKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygicmVjdEVsZW1lbnQu
c3R5bGUuZmlsbCIsICJjdXJyZW50Q29sb3IiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCIsICIj
MDBmZjAwIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5k
IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQu
c2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgJ3VybCgjdGVzdCknLCAn
cmdiKDAsNzcsMCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIik7CitzaG91bGRCZSgi
ZmlsbFBhaW50LnBhaW50VHlwZSIsICJTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxQYWludC51cmkiLCAiIik7CitjaGVja0ZpbGxD
b2xvcigiU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiIsIDAsIDc3LCAwKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygicmVjdEVsZW1lbnQuc3R5bGUuZmlsbCIsICIjMDA0ZDAwIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUocmVjdEVsZW1lbnQpLmZpbGwiLCAiIzAwNGQwMCIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
VGVzdCB1c2luZyBzZXRVcmkoKSIpOworc2hvdWxkQmVVbmRlZmluZWQoImZpbGxQYWludC5zZXRV
cmkoJ3VybCgjZm9vYmFyKScpOyIpOworc2hvdWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAi
U1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJmaWxsUGFpbnQudXJpIiwgInVybCgjZm9vYmFyKSIpOworY2hlY2tGaWxsQ29sb3IoIlNWR0Nv
bG9yLlNWR19DT0xPUlRZUEVfVU5LTk9XTiIsIDAsIDAsIDApOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgInVybCgjZm9vYmFyKSBub25lIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
cmVjdEVsZW1lbnQpLmZpbGwiLCAidXJsKCNmb29iYXIpIG5vbmUiKTsKKworc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83785</attachid>
            <date>2011-02-25 01:54:06 -0800</date>
            <delta_ts>2011-02-25 04:57:09 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>FullNewPatch.diff</filename>
            <type>text/plain</type>
            <size>87509</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NjY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzggQEAKKzIwMTEtMDItMjUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFNWR0NvbG9yL1NWR1BhaW50IEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTkK
KworICAgICAgICBTVkdDb2xvcjo6Y3NzVGV4dCgpIHNob3VsZG4ndCByZXR1cm4gI1JSR0dCQkFB
IGNvbG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDgxMjAKKworICAgICAgICBSZXdyaXRlIFNWR0NvbG9yL1NWR1BhaW50IHRvIGFjdHVhbGx5IGlt
cGxlbWVudCB0aGVpciBkZXNpcmVkIHNldFBhaW50L3NldENvbG9yL3NldFVSSSBBUElTLgorICAg
ICAgICBTVkdQYWludCBpcyBhIENTU1ZhbHVlLCBhbmQgaXRzIHNldFBhaW50KCkgZnVuY3Rpb24g
YWxsb3dzIHRvIHN3aXRjaCB0byBhbiBhcmJpdGFyeSBwYWludCB0eXBlLgorICAgICAgICBUaGF0
IG1lYW5zLCB1bmxpa2UgYWxsIG90aGVyIENTU1ZhbHVlcywgU1ZHQ29sb3IvU1ZHUGFpbnQgYXJl
IG11dGFibGUuIFRoYXQgbWVhbnMgY2hhbmdlcyB0bworICAgICAgICB0aGVpciBDU1NWYWx1ZXMg
c2hvdWxkIGJlIHJlZmxlY3RlZCBpbiB0aGUgZWxlbWVudHMgc3R5bGUgYXMgd2VsbCBhcyBpbiB0
aGUgY29tcHV0ZWQgc3R5bGUuCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lc24ndCB5ZXQgaW1wbGVt
ZW50IHRoYXQsIHRoZSBzdHViYmVkLW91dCBtZXRob2QgdmFsdWVDaGFuZ2VkKCkgaXMgd2hhdAor
ICAgICAgICBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZC4gRm9yIG5vdyB5b3UgY2FuIGdyYWIgYSBT
VkdDb2xvci9TVkdQYWludCBvYmplY3QgdGhyb3VnaCBnZXRDU1NQcm9wZXJ0eVZhbHVlCisgICAg
ICAgIGFuZCBtYW5pcHVsYXRlIGl0LCBpbiBldmVyeSBwb3NzaWJsZSB3YXkgKFNWUGFpbnQudXJp
L3BhaW50VHlwZS9jb2xvclR5cGUvY29sb3IgYXR0cmlidXRlcyBhcmUgYWxsIHN5bmMnZWQpLgor
ICAgICAgICBTd2l0Y2ggdG8gc3RyaWN0IEpTIGJpbmRpbmdzIChSZXF1aXJlc0FsbEFyZ3VtZW50
cz1SYWlzZSwgU3RyaWN0VHlwZUNoZWNraW5nKSBmb3IgYm90aCBvYmplY3RzLgorCisgICAgICAg
IEVuYWJsZSBwcm9wZXIgc2VyaWFsaXphdGlvbiBvZiBjb2xvcnMgdGhyb3VnaCBDb2xvcjo6c2Vy
aWFsaXplZCgpLCBhZmZlY3RzIHNvbWUgdGVzdGNhc2VzICgjRkYuLiAtPiAjZmYuLikKKyAgICAg
ICAgQWRkIGV4dGVuc2l2ZSB0ZXN0cyBvZiBhbGwgU1ZHQ29sb3IvU1ZHUGFpbnQgQVBJLCBjdXJy
ZW50bHkgc2hvd3Mgc29tZSBGQUlMIG1lc3NhZ2VzLCBhcyBlbGVtZW50IHN0eWxlCisgICAgICAg
IDwtPiBjb21wdXRlZCBzdHlsZSBpcyBub3QgbGl2ZSwgYWZ0ZXIgbXV0YXRpbmcgU1ZHQ29sb3Iv
U1ZHUGFpbnQuIFRoYXQgd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBhIGZvbGxvdy11cCBwYXRjaC4K
KworICAgICAgICBUZXN0czogc3ZnL2RvbS9TVkdDb2xvci5odG1sCisgICAgICAgICAgICAgICBz
dmcvZG9tL1NWR1BhaW50Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbTogUmVtb3ZlIG9ic29sZXRlIGhhbmRsaW5nIG9mICJTVkdQYWludFR5cGUiLCB0
YWtlIHVzaG9ydCBmb3IgcGFpbnRUeXBlLCBhcyBzcGVjaWZpZWQgaW4gdGhlIFNWRyAxLjEgSURM
cy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTogRGl0dG8u
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbTogRGl0dG8u
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06IERpdHRvLgor
ICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOiBBZGFwdCB0byBTVkdQYWludC9TVkdDb2xv
ciBjcmVhdGUoKSBuYW1pbmcgY29udmVudGlvbiBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VTVkdQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU1ZHQ29s
b3IpOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5jcHA6IFJld3JpdGUgdG8gZnVsbHkgaW1wbGVt
ZW50IHRoZSBTVkdDb2xvciBBUEksIG1lcmdlIGFsbCBjb25zdHJ1Y3RvcnMgaW50byBvbmUsIHVz
ZSBtb3JlIGRlc2NyaXB0YWJsZSBjcmVhdGUoKSBuYW1pbmcgY29udmVudGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlQ2hhbmdlZCk6IFN0dWIgaW1wbGVtZW50YXRpb24sIHdpbGwgbGFuZCBp
biBhIGZvbGxvdy11cCBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpTVkdDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6c2V0UkdCQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0NvbG9yOjpzZXRSR0JDb2xvcklDQ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbG9yOjpzZXRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6Y3NzVGV4
dCk6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xv
cjo6Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6Y3JlYXRl
RnJvbUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpjb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdDb2xvcjo6Y29sb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Nv
bG9yOjp+U1ZHQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OnNldENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpzZXRDb2xvclR5cGUpOgorICAgICAgICAqIHN2
Zy9TVkdDb2xvci5pZGw6IEVuYWJsZSBzdHJpY3QgdHlwZSBjaGVja2luZy4KKyAgICAgICAgKiBz
dmcvU1ZHUGFpbnQuY3BwOiBSZXdyaXRlIHRvIGZ1bGx5IGltcGxlbWVudCB0aGUgU1ZHUGFpbnQg
QVBJLCBtZXJnZSBhbGwgY29uc3RydWN0b3JzIGludG8gb25lLCB1c2UgbW9yZSBkZXNjcmlwdGFi
bGUgY3JlYXRlKCkgbmFtaW5nIGNvbnZlbnRpb24uCisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUNo
YW5nZWQpOiBTdHViIGltcGxlbWVudGF0aW9uLCB3aWxsIGxhbmQgaW4gYSBmb2xsb3ctdXAgcGF0
Y2guCisgICAgICAgIChXZWJDb3JlOjpjb2xvclR5cGVGb3JQYWludFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGFpbnQ6OlNWR1BhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50
OjpzZXRVcmkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmRlZmF1bHRGaWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpkZWZhdWx0U3Ryb2tlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhaW50OjpzZXRQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6Y3Nz
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6bWF0Y2hlc1RhcmdldFVSSSk6Cisg
ICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6Y3Jl
YXRlVW5rbm93bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6Y3JlYXRlTm9uZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6Y3JlYXRlQ3VycmVudENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGVDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YWludDo6Y3JlYXRlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGVVUklB
bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6cGFpbnRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhaW50Ojp1cmkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6aXNTVkdQYWludCk6CisgICAg
ICAgICogc3ZnL1NWR1BhaW50LmlkbDogRW5hYmxlIHN0cmljdCB0eXBlIGNoZWNraW5nLgorCisK
IDIwMTEtMDItMjUgIFJlbmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lvbiA3OTM0NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsNyBAQCBteSAlcHJpbWl0aXZlVHlwZUhhc2ggPSAoICJib29sZWFu
IiA9PiAxCiAKIG15ICVzdHJpbmdUeXBlSGFzaCA9ICgiRE9NU3RyaW5nIiA9PiAxLCAiQXRvbWlj
U3RyaW5nIiA9PiAxKTsKIAotbXkgJW5vblBvaW50ZXJUeXBlSGFzaCA9ICgiRE9NVGltZVN0YW1w
IiA9PiAxLCAiQ29tcGFyZUhvdyIgPT4gMSwgIlNWR1BhaW50VHlwZSIgPT4gMSk7CitteSAlbm9u
UG9pbnRlclR5cGVIYXNoID0gKCJET01UaW1lU3RhbXAiID0+IDEsICJDb21wYXJlSG93IiA9PiAx
KTsKIAogbXkgJXN2Z0FuaW1hdGVkVHlwZUhhc2ggPSAoIlNWR0FuaW1hdGVkQW5nbGUiID0+IDEs
ICJTVkdBbmltYXRlZEJvb2xlYW4iID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiIgPT4gMSwgIlNWR0FuaW1hdGVkSW50ZWdlciIgPT4gMSwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCShyZXZpc2lvbiA3OTM0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzkyLDcgKzIzOTIs
NiBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiTm9kZUZpbHRlciIgPT4gIlJlZlB0cjxOb2Rl
RmlsdGVyPiIsCiAgICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIlJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IiwKICAgICAiSURCS2V5IiA9PiAiUmVmUHRyPElEQktleT4iLAotICAg
ICJTVkdQYWludFR5cGUiID0+ICJTVkdQYWludDo6U1ZHUGFpbnRUeXBlIiwKICAgICAiYm9vbGVh
biIgPT4gImJvb2wiLAogICAgICJkb3VibGUiID0+ICJkb3VibGUiLAogICAgICJmbG9hdCIgPT4g
ImZsb2F0IiwKQEAgLTI0NzksNyArMjQ3OCw2IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKIAogICAg
IHJldHVybiAidmFsdWVUb0RhdGUoZXhlYywgJHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRhdGUiOwog
ICAgIHJldHVybiAic3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KCR2YWx1ZS50b0ludDMy
KGV4ZWMpKSIgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ciOwotICAgIHJldHVybiAic3RhdGljX2Nh
c3Q8U1ZHUGFpbnQ6OlNWR1BhaW50VHlwZT4oJHZhbHVlLnRvSW50MzIoZXhlYykpIiBpZiAkdHlw
ZSBlcSAiU1ZHUGFpbnRUeXBlIjsKIAogICAgIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nIikgewog
ICAgICAgICByZXR1cm4gInZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsICR2YWx1ZSki
IGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZyJ9IHx8ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CkBA
IC0yNTM4LDcgKzI1MzYsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAi
anNOdW1iZXIoc3RkOjptYXgoMCwgIiAuICR2YWx1ZSAuICIpKSI7CiAgICAgfQogCi0gICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVxICJTVkdQ
YWludFR5cGUiIG9yICR0eXBlIGVxICJET01UaW1lU3RhbXAiKSB7CisgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVxICJET01UaW1lU3RhbXAi
KSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0pTTnVtYmVyQ2VsbC5oPiJ9ID0g
MTsKICAgICAgICAgcmV0dXJuICJqc051bWJlcigkdmFsdWUpIjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMu
cG0JKHJldmlzaW9uIDc5MzQ1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDc0LDcgKzQ3NCw3IEBAIHN1
YiBHZXRPYmpDVHlwZQogCiAgICAgcmV0dXJuICJpZCA8JG5hbWU+IiBpZiBJc1Byb3RvY29sVHlw
ZSgkdHlwZSk7CiAgICAgcmV0dXJuICRuYW1lIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2
ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVxICJET01UaW1lU3RhbXAiOwotICAgIHJldHVybiAidW5z
aWduZWQgc2hvcnQiIGlmICR0eXBlIGVxICJDb21wYXJlSG93IiBvciAkdHlwZSBlcSAiU1ZHUGFp
bnRUeXBlIjsKKyAgICByZXR1cm4gInVuc2lnbmVkIHNob3J0IiBpZiAkdHlwZSBlcSAiQ29tcGFy
ZUhvdyI7CiAgICAgcmV0dXJuICIkbmFtZSAqIjsKIH0KIApAQCAtNDkyLDcgKzQ5Miw3IEBAIHN1
YiBHZXRQcm9wZXJ0eUF0dHJpYnV0ZXMKICAgICAgICAgcHVzaChAYXR0cmlidXRlcywgImNvcHki
KTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJHR5cGUp
KSB7CiAgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICJyZXRhaW4iKTsKLSAgICB9IGVsc2lmICgh
JGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkgJiYgISRjb2RlR2VuZXJhdG9yLT5J
c1ByaW1pdGl2ZVR5cGUoJHR5cGUpICYmICR0eXBlIG5lICJET01UaW1lU3RhbXAiICYmICR0eXBl
IG5lICJDb21wYXJlSG93IiAmJiAkdHlwZSBuZSAiU1ZHUGFpbnRUeXBlIikgeworICAgIH0gZWxz
aWYgKCEkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSAmJiAhJGNvZGVHZW5lcmF0
b3ItPklzUHJpbWl0aXZlVHlwZSgkdHlwZSkgJiYgJHR5cGUgbmUgIkRPTVRpbWVTdGFtcCIgJiYg
JHR5cGUgbmUgIkNvbXBhcmVIb3ciKSB7CiAgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICJyZXRh
aW4iKTsKICAgICB9CiAKQEAgLTUxNSw3ICs1MTUsNiBAQCBzdWIgR2V0T2JqQ1R5cGVHZXR0ZXIK
ICAgICByZXR1cm4gJGFyZ05hbWUgaWYgJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgk
dHlwZSkgb3IgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkgb3IgSXNOYXRpdmVP
YmpDVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICRhcmdOYW1lIC4gIk5vZGUiIGlmICR0eXBlIGVx
ICJFdmVudFRhcmdldCI7CiAgICAgcmV0dXJuICJzdGF0aWNfY2FzdDxXZWJDb3JlOjpSYW5nZTo6
Q29tcGFyZUhvdz4oJGFyZ05hbWUpIiBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7Ci0gICAgcmV0
dXJuICJzdGF0aWNfY2FzdDxXZWJDb3JlOjpTVkdQYWludDo6U1ZHUGFpbnRUeXBlPigkYXJnTmFt
ZSkiIGlmICR0eXBlIGVxICJTVkdQYWludFR5cGUiOwogICAgIHJldHVybiAiV1RGOjpnZXRQdHIo
bmF0aXZlRXZlbnRMaXN0ZW5lcikiIGlmICR0eXBlIGVxICJFdmVudExpc3RlbmVyIjsKICAgICBy
ZXR1cm4gIldURjo6Z2V0UHRyKG5hdGl2ZU5vZGVGaWx0ZXIpIiBpZiAkdHlwZSBlcSAiTm9kZUZp
bHRlciI7CiAgICAgcmV0dXJuICJXVEY6OmdldFB0cihuYXRpdmVSZXNvbHZlcikiIGlmICR0eXBl
IGVxICJYUGF0aE5TUmVzb2x2ZXIiOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDc5MzQ1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTI4MDQsNyArMjgwNCw2IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgcmV0dXJu
ICJib29sIiBpZiAkdHlwZSBlcSAiYm9vbGVhbiI7CiAgICAgcmV0dXJuICJTdHJpbmciIGlmICR0
eXBlIGVxICJET01TdHJpbmciOwogICAgIHJldHVybiAiUmFuZ2U6OkNvbXBhcmVIb3ciIGlmICR0
eXBlIGVxICJDb21wYXJlSG93IjsKLSAgICByZXR1cm4gIlNWR1BhaW50OjpTVkdQYWludFR5cGUi
IGlmICR0eXBlIGVxICJTVkdQYWludFR5cGUiOwogICAgIHJldHVybiAiRE9NVGltZVN0YW1wIiBp
ZiAkdHlwZSBlcSAiRE9NVGltZVN0YW1wIjsKICAgICByZXR1cm4gInVuc2lnbmVkIiBpZiAkdHlw
ZSBlcSAidW5zaWduZWQgaW50IjsKICAgICByZXR1cm4gIk5vZGUqIiBpZiAkdHlwZSBlcSAiRXZl
bnRUYXJnZXQiIGFuZCAkaXNQYXJhbWV0ZXI7CkBAIC0yODgxLDcgKzI4ODAsNiBAQCBzdWIgSlNW
YWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICJ0b1VJbnQzMigkdmFsdWUpIiBpZiAkdHlwZSBlcSAi
dW5zaWduZWQgbG9uZyIgb3IgJHR5cGUgZXEgInVuc2lnbmVkIHNob3J0IjsKICAgICByZXR1cm4g
InRvSW50NjQoJHZhbHVlKSIgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmcgbG9uZyIgb3IgJHR5
cGUgZXEgImxvbmcgbG9uZyI7CiAgICAgcmV0dXJuICJzdGF0aWNfY2FzdDxSYW5nZTo6Q29tcGFy
ZUhvdz4oJHZhbHVlLT5JbnQzMlZhbHVlKCkpIiBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7Ci0g
ICAgcmV0dXJuICJzdGF0aWNfY2FzdDxTVkdQYWludDo6U1ZHUGFpbnRUeXBlPigkdmFsdWUtPlRv
SW50MzIoKS0+SW50MzJWYWx1ZSgpKSIgaWYgJHR5cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAgICAg
cmV0dXJuICJ0b1dlYkNvcmVEYXRlKCR2YWx1ZSkiIGlmICR0eXBlIGVxICJEYXRlIjsKICAgICBy
ZXR1cm4gInY4VmFsdWVUb1dlYkNvcmVET01TdHJpbmdMaXN0KCR2YWx1ZSkiIGlmICR0eXBlIGVx
ICJET01TdHJpbmdMaXN0IjsKIApAQCAtMzAzNSw3ICszMDMzLDYgQEAgbXkgJW5vbl93cmFwcGVy
X3R5cGVzID0gKAogICAgICdET01TdHJpbmcnID0+IDEsCiAgICAgJ0NvbXBhcmVIb3cnID0+IDEs
CiAgICAgJ1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZScgPT4gMSwKLSAgICAnU1ZHUGFpbnRUeXBlJyA9
PiAxLAogICAgICdET01UaW1lU3RhbXAnID0+IDEsCiAgICAgJ0pTT2JqZWN0JyA9PiAxLAogICAg
ICdET01PYmplY3QnID0+IDEsCkBAIC0zMTEyLDcgKzMxMDksNyBAQCBzdWIgTmF0aXZlVG9KU1Zh
bHVlCiAgICAgcmV0dXJuICJ2OERhdGVPck51bGwoJHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRhdGUi
OwogICAgICMgbG9uZyBsb25nIGFuZCB1bnNpZ25lZCBsb25nIGxvbmcgYXJlIG5vdCByZXByZXNl
bnRhYmxlIGluIEVDTUFTY3JpcHQuCiAgICAgcmV0dXJuICJ2ODo6TnVtYmVyOjpOZXcoc3RhdGlj
X2Nhc3Q8ZG91YmxlPigkdmFsdWUpKSIgaWYgJHR5cGUgZXEgImxvbmcgbG9uZyIgb3IgJHR5cGUg
ZXEgInVuc2lnbmVkIGxvbmcgbG9uZyIgb3IgJHR5cGUgZXEgIkRPTVRpbWVTdGFtcCI7Ci0gICAg
cmV0dXJuICJ2ODo6TnVtYmVyOjpOZXcoJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzUHJp
bWl0aXZlVHlwZSgkdHlwZSkgb3IgJHR5cGUgZXEgIlNWR1BhaW50VHlwZSI7CisgICAgcmV0dXJu
ICJ2ODo6TnVtYmVyOjpOZXcoJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZl
VHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICIkdmFsdWUudjhWYWx1ZSgpIiBpZiAkbmF0aXZlVHlw
ZSBlcSAiU2NyaXB0VmFsdWUiOwogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5
cGUoJHR5cGUpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAkocmV2aXNp
b24gNzkzNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc5LDE3ICsxNzksMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFs
dWUoaW50IHByb3BJZAogICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6ICAgICAgICAgICAgICAg
Ly8gPHBhaW50PiB8IGluaGVyaXQKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9uZSkKLSAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IFNWR1BhaW50OjpjcmVh
dGUoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfTk9ORSk7CisgICAgICAgICAgICAgICAgcGFyc2Vk
VmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlTm9uZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaWQg
PT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpCi0gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBT
VkdQYWludDo6Y3JlYXRlKFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUik7Cisg
ICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlQ3VycmVudENvbG9y
KCk7CiAgICAgICAgICAgICBlbHNlIGlmICgoaWQgPj0gQ1NTVmFsdWVBY3RpdmVib3JkZXIgJiYg
aWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUpCi0gICAgICAg
ICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlKFJlbmRlclRoZW1lOjpkZWZh
dWx0VGhlbWUoKS0+c3lzdGVtQ29sb3IoaWQpKTsKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1
ZSA9IFNWR1BhaW50OjpjcmVhdGVDb2xvcihSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5
c3RlbUNvbG9yKGlkKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAgICAgICAgIFJHQkEzMiBjID0gQ29s
b3I6OnRyYW5zcGFyZW50OwogICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlTGlzdC0+bmV4dCgp
ICYmIHBhcnNlQ29sb3JGcm9tVmFsdWUobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSwgYykpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlKHZhbHVlLT5z
dHJpbmcsIGMpOworICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IFNWR1BhaW50Ojpj
cmVhdGVVUklBbmRDb2xvcih2YWx1ZS0+c3RyaW5nLCBjKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlKFNW
R1BhaW50OjpTVkdfUEFJTlRUWVBFX1VSSSwgdmFsdWUtPnN0cmluZyk7CisgICAgICAgICAgICAg
ICAgICAgIHBhcnNlZFZhbHVlID0gU1ZHUGFpbnQ6OmNyZWF0ZVVSSSh2YWx1ZS0+c3RyaW5nKTsK
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VT
VkdQYWludCgpOwogCkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZH
VmFsdWUoaW50IHByb3BJZAogICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjogICAgICAgICAgICAg
ICAgLy8gPGNvbG9yPiB8IGluaGVyaXQKICAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUFxdWEg
JiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fAogICAgICAgICAgICAoaWQgPj0gQ1NTVmFs
dWVBbGljZWJsdWUgJiYgaWQgPD0gQ1NTVmFsdWVZZWxsb3dncmVlbikpCi0gICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IFNWR0NvbG9yOjpjcmVhdGUodmFsdWUtPnN0cmluZyk7CisgICAgICAgICAg
ICBwYXJzZWRWYWx1ZSA9IFNWR0NvbG9yOjpjcmVhdGVGcm9tU3RyaW5nKHZhbHVlLT5zdHJpbmcp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlU1ZHQ29sb3Io
KTsKIApAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKGlu
dCBwcm9wSWQKICAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcjoKICAgICAgICAgaWYg
KChpZCA+PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fAogICAg
ICAgICAgICAoaWQgPj0gQ1NTVmFsdWVBbGljZWJsdWUgJiYgaWQgPD0gQ1NTVmFsdWVZZWxsb3dn
cmVlbikpCi0gICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IFNWR0NvbG9yOjpjcmVhdGUodmFsdWUt
PnN0cmluZyk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IFNWR0NvbG9yOjpjcmVhdGVGcm9t
U3RyaW5nKHZhbHVlLT5zdHJpbmcpOwogICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUN1
cnJlbnRjb2xvcikKICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gU1ZHQ29sb3I6OmNyZWF0ZUN1
cnJlbnRDb2xvcigpOwogICAgICAgICBlbHNlIC8vIFRPRE8gOiBzdmdjb2xvciAoaWNjQ29sb3Ip
CkBAIC0zMzksOCArMzM5LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVNWRwogewogICAgIFJHQkEzMiBjID0gQ29sb3I6OnRyYW5zcGFyZW50OwogICAgIGlmICghcGFy
c2VDb2xvckZyb21WYWx1ZShtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLCBjKSkKLSAgICAgICAgcmV0
dXJuIFNWR1BhaW50OjpjcmVhdGUoKTsKLSAgICByZXR1cm4gU1ZHUGFpbnQ6OmNyZWF0ZShDb2xv
cihjKSk7CisgICAgICAgIHJldHVybiBTVkdQYWludDo6Y3JlYXRlVW5rbm93bigpOworICAgIHJl
dHVybiBTVkdQYWludDo6Y3JlYXRlQ29sb3IoQ29sb3IoYykpOwogfQogCiBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU1ZHQ29sb3IoKQpAQCAtMzQ4LDExICszNDgsOSBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU1ZHCiAgICAgUkdCQTMyIGMgPSBD
b2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgaWYgKCFwYXJzZUNvbG9yRnJvbVZhbHVlKG1fdmFsdWVM
aXN0LT5jdXJyZW50KCksIGMpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gU1ZHQ29s
b3I6OmNyZWF0ZShDb2xvcihjKSk7CisgICAgcmV0dXJuIFNWR0NvbG9yOjpjcmVhdGVGcm9tQ29s
b3IoQ29sb3IoYykpOwogfQogCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06
dHM9NDpub2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAJKHJldmlzaW9uIDc5MzQ1KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMTksNiArMjAsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKIApAQCAtMjgsMjggKzMw
LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHQ29sb3I6OlNWR0NvbG9yKCkKLSAg
ICA6IG1fY29sb3JUeXBlKFNWR19DT0xPUlRZUEVfVU5LTk9XTikKLXsKLX0KLQotU1ZHQ29sb3I6
OlNWR0NvbG9yKGNvbnN0IFN0cmluZyYgcmdiQ29sb3IpCi0gICAgOiBtX2NvbG9yVHlwZShTVkdf
Q09MT1JUWVBFX1JHQkNPTE9SKQorc3RhdGljIGlubGluZSB2b2lkIHZhbHVlQ2hhbmdlZCgpCiB7
Ci0gICAgc2V0UkdCQ29sb3IocmdiQ29sb3IpOworICAgIC8vIEZJWE1FOiBBIGZvbGxvdyB1cCBw
YXRjaCB3aWxsIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHkuCiB9CiAKLVNWR0NvbG9yOjpT
VkdDb2xvcihTVkdDb2xvclR5cGUgY29sb3JUeXBlKQorU1ZHQ29sb3I6OlNWR0NvbG9yKGNvbnN0
IFNWR0NvbG9yVHlwZSYgY29sb3JUeXBlKQogICAgIDogbV9jb2xvclR5cGUoY29sb3JUeXBlKQog
ewogfQogCi1TVkdDb2xvcjo6U1ZHQ29sb3IoY29uc3QgQ29sb3ImIGMpCi0gICAgOiBtX2NvbG9y
KGMpCi0gICAgLCBtX2NvbG9yVHlwZShTVkdfQ09MT1JUWVBFX1JHQkNPTE9SKQotewotfQotCiBQ
YXNzUmVmUHRyPFJHQkNvbG9yPiBTVkdDb2xvcjo6cmdiQ29sb3IoKSBjb25zdAogewogICAgIHJl
dHVybiBSR0JDb2xvcjo6Y3JlYXRlKG1fY29sb3IucmdiKCkpOwpAQCAtNTgsNDUgKzQ4LDExMSBA
QCBQYXNzUmVmUHRyPFJHQkNvbG9yPiBTVkdDb2xvcjo6cmdiQ29sb3IoCiB2b2lkIFNWR0NvbG9y
OjpzZXRSR0JDb2xvcihjb25zdCBTdHJpbmcmIHJnYkNvbG9yLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBDb2xvciBjb2xvciA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhy
Z2JDb2xvcik7Ci0gICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9jb2xvciA9IGNv
bG9yOwotICAgIGVsc2UKKyAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9
IFNWR0V4Y2VwdGlvbjo6U1ZHX0lOVkFMSURfVkFMVUVfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9jb2xvciA9IGNvbG9yOworICAgIG1fY29sb3JUeXBlID0gU1ZHX0NPTE9S
VFlQRV9SR0JDT0xPUjsKKyAgICB2YWx1ZUNoYW5nZWQoKTsKIH0KIAogQ29sb3IgU1ZHQ29sb3I6
OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCiB7Ci0g
ICAgU3RyaW5nIHMgPSBjb2xvclN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAvLyBGSVhN
RTogcmV3b3JrIGNzcyBwYXJzZXIgc28gaXQgaXMgbW9yZSBzdmcgYXdhcmUKKyAgICAvLyBGSVhN
RTogUmV3b3JrIGNzcyBwYXJzZXIgc28gaXQgaXMgbW9yZSBTVkcgYXdhcmUuCiAgICAgUkdCQTMy
IGNvbG9yOwotICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29sb3IsIHMpKQorICAgIGlm
IChDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29sb3IsIGNvbG9yU3RyaW5nLnN0cmlwV2hpdGVTcGFj
ZSgpKSkKICAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgIHJldHVybiBDb2xvcigpOwogfQogCi12
b2lkIFNWR0NvbG9yOjpzZXRSR0JDb2xvcklDQ0NvbG9yKGNvbnN0IFN0cmluZyYgLyogcmdiQ29s
b3IgKi8sIGNvbnN0IFN0cmluZyYgLyogaWNjQ29sb3IgKi8sIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBTVkdDb2xvcjo6c2V0UkdCQ29sb3JJQ0NDb2xvcihjb25zdCBTdHJpbmcmIHJnYkNvbG9yLCBj
b25zdCBTdHJpbmcmIGljY0NvbG9yLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBUT0RP
OiBpbXBsZW1lbnQgbWUhCisgICAgaWYgKHJnYkNvbG9yLmlzRW1wdHkoKSB8fCBpY2NDb2xvci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTVkdFeGNlcHRpb246OlNWR19JTlZBTElEX1ZBTFVF
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBzdXBwb3J0
IGZvciBJQ0MgY29sb3JzLiBXZSdyZSBqdXN0IGlnbm9yaW5nIGl0LgorICAgIHNldFJHQkNvbG9y
KHJnYkNvbG9yLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nv
bG9yVHlwZSA9IFNWR19DT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1I7CisgICAgdmFsdWVDaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgU1ZHQ29sb3I6OnNldENvbG9yKHVuc2lnbmVkIHNob3J0IGNvbG9y
VHlwZSwgY29uc3QgU3RyaW5nJiAvKiByZ2JDb2xvciAqLyAsIGNvbnN0IFN0cmluZyYgLyogaWNj
Q29sb3IgKi8sIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBTVkdDb2xvcjo6c2V0Q29sb3IodW5zaWdu
ZWQgc2hvcnQgY29sb3JUeXBlLCBjb25zdCBTdHJpbmcmIHJnYkNvbG9yLCBjb25zdCBTdHJpbmcm
IGljY0NvbG9yLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBUT0RPOiBpbXBsZW1lbnQg
bWUhCi0gICAgbV9jb2xvclR5cGUgPSBjb2xvclR5cGU7CisgICAgaWYgKGNvbG9yVHlwZSA+IFNW
R19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SKSB7CisgICAgICAgIGVjID0gU1ZHRXhjZXB0aW9uOjpT
VkdfV1JPTkdfVFlQRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHJl
cXVpcmVzUkdCQ29sb3IgPSBmYWxzZTsKKyAgICBib29sIHJlcXVpcmVzSUNDQ29sb3IgPSBmYWxz
ZTsKKworICAgIFNWR0NvbG9yVHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8U1ZHQ29sb3JUeXBlPihj
b2xvclR5cGUpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU1ZHX0NPTE9SVFlQRV9V
TktOT1dOOgorICAgICAgICAvLyBTcGVjOiBJdCBpcyBpbnZhbGlkIHRvIGF0dGVtcHQgdG8gZGVm
aW5lIGEgbmV3IHZhbHVlIG9mIHRoaXMgdHlwZSBvciB0byBhdHRlbXB0IHRvIHN3aXRjaCBhbiBl
eGlzdGluZyB2YWx1ZSB0byB0aGlzIHR5cGUuCisgICAgICAgIGVjID0gU1ZHRXhjZXB0aW9uOjpT
VkdfSU5WQUxJRF9WQUxVRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNWR19DT0xP
UlRZUEVfUkdCQ09MT1JfSUNDQ09MT1I6CisgICAgICAgIHJlcXVpcmVzSUNDQ29sb3IgPSB0cnVl
OworICAgIGNhc2UgU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUjoKKyAgICAgICAgcmVxdWlyZXNSR0JD
b2xvciA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1ZHX0NPTE9SVFlQRV9DVVJS
RU5UQ09MT1I6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIFNwZWM6IElmIGNvbG9y
VHlwZSByZXF1aXJlcyBhbiBSR0JDb2xvciwgdGhlbiByZ2JDb2xvciBtdXN0IGJlIGEgc3RyaW5n
IHRoYXQgbWF0Y2hlcyA8Y29sb3I+OyBvdGhlcndpc2UsIHJnYkNvbG9yIG11c3QgYmUgbnVsbC4K
KyAgICBpZiAocmVxdWlyZXNSR0JDb2xvciAmJiByZ2JDb2xvci5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZWMgPSBTVkdFeGNlcHRpb246OlNWR19JTlZBTElEX1ZBTFVFX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFNwZWM6IElmIGNvbG9yVHlwZSByZXF1aXJlcyBhbiBTVkdJ
Q0NDb2xvciwgdGhlbiBpY2NDb2xvciBtdXN0IGJlIGEgc3RyaW5nIHRoYXQgbWF0Y2hlcyA8aWNj
Y29sb3I+OyBvdGhlcndpc2UsIGljY0NvbG9yIG11c3QgYmUgbnVsbC4KKyAgICBpZiAocmVxdWly
ZXNJQ0NDb2xvciAmJiBpY2NDb2xvci5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTVkdFeGNl
cHRpb246OlNWR19JTlZBTElEX1ZBTFVFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHZhbHVlQ2hhbmdlZCgpOworICAgIG1fY29sb3JUeXBlID0gdHlwZTsKKyAgICBpZiAoIXJl
cXVpcmVzUkdCQ29sb3IpIHsKKyAgICAgICAgQVNTRVJUKCFyZXF1aXJlc0lDQ0NvbG9yKTsKKyAg
ICAgICAgbV9jb2xvciA9IENvbG9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAocmVxdWlyZXNJQ0NDb2xvcikKKyAgICAgICAgc2V0UkdCQ29sb3JJQ0NDb2xvcihyZ2JDb2xv
ciwgaWNjQ29sb3IsIGVjKTsKKyAgICBlbHNlCisgICAgICAgIHNldFJHQkNvbG9yKHJnYkNvbG9y
LCBlYyk7CiB9CiAKIFN0cmluZyBTVkdDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgaWYg
KG1fY29sb3JUeXBlID09IFNWR19DT0xPUlRZUEVfUkdCQ09MT1IpIHsKLSAgICAgICAgLy8gRklY
TUU6IFVzZSBDb2xvcjo6c2VyaWFsaXplZCgpIGluc3RlYWQuCi0gICAgICAgIHJldHVybiBtX2Nv
bG9yLm5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCk7CisgICAgc3dpdGNoIChtX2NvbG9yVHlwZSkg
eworICAgIGNhc2UgU1ZHX0NPTE9SVFlQRV9VTktOT1dOOgorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgY2FzZSBTVkdfQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SOgorICAgIGNhc2Ug
U1ZHX0NPTE9SVFlQRV9SR0JDT0xPUjoKKyAgICAgICAgLy8gRklYTUU6IE5vIElDQyBjb2xvciBz
dXBwb3J0LgorICAgICAgICByZXR1cm4gbV9jb2xvci5zZXJpYWxpemVkKCk7CisgICAgY2FzZSBT
VkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUjoKKyAgICAgICAgaWYgKG1fY29sb3IuaXNWYWxpZCgp
KQorICAgICAgICAgICAgcmV0dXJuIG1fY29sb3Iuc2VyaWFsaXplZCgpOworICAgICAgICByZXR1
cm4gImN1cnJlbnRDb2xvciI7CiAgICAgfQogCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAkocmV2aXNpb24gNzkzNDUp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjAsOCArMjEsOCBAQAogCiAjaWZuZGVmIFNWR0NvbG9yX2gKICNkZWZp
bmUgU1ZHQ29sb3JfaAotI2lmIEVOQUJMRShTVkcpCiAKKyNpZiBFTkFCTEUoU1ZHKQogI2luY2x1
ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgpAQCAtMzIsNjEgKzMzLDYwIEBAIGNsYXNzIFJHQkNvbG9yOwogCiBjbGFzcyBTVkdD
b2xvciA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHQ29sb3I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKQorICAgIGVudW0gU1ZHQ29sb3JU
eXBlIHsKKyAgICAgICAgU1ZHX0NPTE9SVFlQRV9VTktOT1dOID0gMCwKKyAgICAgICAgU1ZHX0NP
TE9SVFlQRV9SR0JDT0xPUiA9IDEsCisgICAgICAgIFNWR19DT0xPUlRZUEVfUkdCQ09MT1JfSUND
Q09MT1IgPSAyLAorICAgICAgICBTVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiA9IDMKKyAgICB9
OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNyZWF0ZUZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiByZ2JDb2xvcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U1ZHQ29sb3IoY29sb3IpKTsKKyAgICAgICAgUmVmUHRyPFNWR0NvbG9yPiBjb2xvciA9IGFkb3B0
UmVmKG5ldyBTVkdDb2xvcihTVkdfQ09MT1JUWVBFX1JHQkNPTE9SKSk7CisgICAgICAgIGNvbG9y
LT5zZXRDb2xvcihjb2xvckZyb21SR0JDb2xvclN0cmluZyhyZ2JDb2xvcikpOworICAgICAgICBy
ZXR1cm4gY29sb3IucmVsZWFzZSgpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdD
b2xvcj4gY3JlYXRlKGNvbnN0IENvbG9yJiBjb2xvcikKKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0NvbG9yPiBjcmVhdGVGcm9tQ29sb3IoY29uc3QgQ29sb3ImIHJnYkNvbG9yKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdDb2xvcihjb2xvcikpOworICAgICAgICBS
ZWZQdHI8U1ZHQ29sb3I+IGNvbG9yID0gYWRvcHRSZWYobmV3IFNWR0NvbG9yKFNWR19DT0xPUlRZ
UEVfUkdCQ09MT1IpKTsKKyAgICAgICAgY29sb3ItPnNldENvbG9yKHJnYkNvbG9yKTsKKyAgICAg
ICAgcmV0dXJuIGNvbG9yLnJlbGVhc2UoKTsKICAgICB9CisKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTVkdDb2xvcj4gY3JlYXRlQ3VycmVudENvbG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHQ29sb3IoU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IpKTsKICAgICB9
CiAKLSAgICBlbnVtIFNWR0NvbG9yVHlwZSB7Ci0gICAgICAgIFNWR19DT0xPUlRZUEVfVU5LTk9X
TiA9IDAsCi0gICAgICAgIFNWR19DT0xPUlRZUEVfUkdCQ09MT1IgPSAxLAotICAgICAgICBTVkdf
Q09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMiwKLSAgICAgICAgU1ZHX0NPTE9SVFlQRV9D
VVJSRU5UQ09MT1IgPSAzCi0gICAgfTsKLQotICAgIC8vICdTVkdDb2xvcicgZnVuY3Rpb25zCi0g
ICAgdW5zaWduZWQgc2hvcnQgY29sb3JUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclR5cGU7
IH0KLQorICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0K
KyAgICBjb25zdCBTVkdDb2xvclR5cGUmIGNvbG9yVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3JUeXBlOyB9CiAgICAgUGFzc1JlZlB0cjxSR0JDb2xvcj4gcmdiQ29sb3IoKSBjb25zdDsKIAog
ICAgIHN0YXRpYyBDb2xvciBjb2xvckZyb21SR0JDb2xvclN0cmluZyhjb25zdCBTdHJpbmcmKTsK
IAotICAgIHZvaWQgc2V0UkdCQ29sb3IoY29uc3QgU3RyaW5nJiByZ2JDb2xvcikgeyBFeGNlcHRp
b25Db2RlIGlnbm9yZWQgPSAwOyBzZXRSR0JDb2xvcihyZ2JDb2xvciwgaWdub3JlZCk7IH0KICAg
ICB2b2lkIHNldFJHQkNvbG9yKGNvbnN0IFN0cmluZyYgcmdiQ29sb3IsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIHNldFJHQkNvbG9ySUNDQ29sb3IoY29uc3QgU3RyaW5nJiByZ2JDb2xvciwg
Y29uc3QgU3RyaW5nJiBpY2NDb2xvciwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0Q29s
b3IodW5zaWduZWQgc2hvcnQgY29sb3JUeXBlLCBjb25zdCBTdHJpbmcmIHJnYkNvbG9yLCBjb25z
dCBTdHJpbmcmIGljY0NvbG9yLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBjb25zdCBDb2xvciYg
Y29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9Ci0KIHByb3RlY3RlZDoKLSAgICBTVkdD
b2xvcigpOwotICAgIFNWR0NvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpOwotICAgIFNWR0NvbG9y
KGNvbnN0IENvbG9yJik7CisgICAgZnJpZW5kIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjsKIAorICAgIFNWR0NvbG9yKGNvbnN0IFNWR0NvbG9yVHlwZSYpOworICAgIHZpcnR1YWwg
flNWR0NvbG9yKCkgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCi1w
cml2YXRlOgotICAgIFNWR0NvbG9yKFNWR0NvbG9yVHlwZSk7Ci0KLSAgICBzdGF0aWMgdm9pZCBj
cmVhdGUoaW50KTsgLy8gY29tcGlsZS10aW1lIGd1YXJkIAorICAgIHZvaWQgc2V0Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKSB7IG1fY29sb3IgPSBjb2xvcjsgfQorICAgIHZvaWQgc2V0Q29sb3JU
eXBlKGNvbnN0IFNWR0NvbG9yVHlwZSYgdHlwZSkgeyBtX2NvbG9yVHlwZSA9IHR5cGU7IH0KIAor
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIENvbG9yIG1fY29sb3I7Ci0gICAgdW5zaWduZWQgc2hvcnQgbV9jb2xvclR5
cGU7CisgICAgU1ZHQ29sb3JUeXBlIG1fY29sb3JUeXBlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdDb2xvcl9oCi0K
LS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmlkbAkocmV2aXNpb24g
NzkzNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiwyNSArMjIsMjMgQEAKIG1vZHVsZSBzdmcgewogCiAgICAgaW50ZXJmYWNlIFtDb25k
aXRpb25hbD1TVkddIFNWR0NvbG9yIDogQ1NTVmFsdWUgewotICAgICAgICAvLyBDb2xvciBUeXBl
cwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ09MT1JUWVBFX1VOS05PV04gICAg
ICAgICAgID0gMDsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NPTE9SVFlQRV9S
R0JDT0xPUiAgICAgICAgICA9IDE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19D
T0xPUlRZUEVfVU5LTk9XTiA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19D
T0xPUlRZUEVfUkdCQ09MT1IgPSAxOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdf
Q09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsKLSAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IgICAgICA9IDM7CisgICAgICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IFNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SID0gMzsKIAogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY29sb3JUeXBlOwotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgUkdCQ29sb3IgIHJnYkNvbG9yOwotICAgICAgICAvKnJlYWRvbmx5
IGF0dHJpYnV0ZSBTVkdJQ0NDb2xvciAgICBpY2NDb2xvcjsqLworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgUkdCQ29sb3IgcmdiQ29sb3I7CisgICAgICAgIC8vIEZJWE1FOiByZWFkb25seSBh
dHRyaWJ1dGUgU1ZHSUNDQ29sb3IgaWNjQ29sb3I7CiAKLSAgICAgICAgdm9pZCBzZXRSR0JDb2xv
cihpbiBET01TdHJpbmcgcmdiQ29sb3IpCi0gICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9u
KTsKLSAgICAgICAgdm9pZCBzZXRSR0JDb2xvcklDQ0NvbG9yKGluIERPTVN0cmluZyByZ2JDb2xv
ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgaWNjQ29s
b3IpCi0gICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBzZXRD
b2xvcihpbiB1bnNpZ25lZCBzaG9ydCBjb2xvclR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
aW4gRE9NU3RyaW5nIHJnYkNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmlu
ZyBpY2NDb2xvcikKLSAgICAgICAgICAgIHJhaXNlcyhTVkdFeGNlcHRpb24pOworICAgICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nLCBSZXF1aXJlc0FsbEFyZ3VtZW50cz1SYWlzZV0gdm9pZCBzZXRS
R0JDb2xvcihpbiBET01TdHJpbmcgcmdiQ29sb3IpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uLCBTVkdFeGNlcHRpb24pOworCisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJl
cXVpcmVzQWxsQXJndW1lbnRzPVJhaXNlXSB2b2lkIHNldFJHQkNvbG9ySUNDQ29sb3IoaW4gRE9N
U3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcgaWNjQ29sb3IpCisgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uLCBTVkdFeGNlcHRpb24pOworCisgICAgICAgIFtTdHJpY3RUeXBlQ2hl
Y2tpbmcsIFJlcXVpcmVzQWxsQXJndW1lbnRzPVJhaXNlXSB2b2lkIHNldENvbG9yKGluIHVuc2ln
bmVkIHNob3J0IGNvbG9yVHlwZSwgaW4gRE9NU3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcg
aWNjQ29sb3IpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uLCBTVkdFeGNlcHRpb24p
OwogICAgIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAkocmV2aXNpb24gNzkz
NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLTIwMTEuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDk2ICsyNCwxNjggQEAK
ICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1BhaW50LmgiCiAKKyNpbmNsdWRlICJTVkdF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1Bh
aW50OjpTVkdQYWludCgpCi0gICAgOiBtX3BhaW50VHlwZShTVkdfUEFJTlRUWVBFX1VOS05PV04p
CitzdGF0aWMgaW5saW5lIHZvaWQgdmFsdWVDaGFuZ2VkKCkKIHsKKyAgICAvLyBGSVhNRTogQSBm
b2xsb3cgdXAgcGF0Y2ggd2lsbCBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbmFsaXR5LgogfQogCi1T
VkdQYWludDo6U1ZHUGFpbnQoY29uc3QgU3RyaW5nJiB1cmkpCi0gICAgOiBtX3BhaW50VHlwZShT
VkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUikKK3N0YXRpYyBpbmxpbmUgU1ZHQ29sb3I6OlNWR0Nv
bG9yVHlwZSBjb2xvclR5cGVGb3JQYWludFR5cGUoY29uc3QgU1ZHUGFpbnQ6OlNWR1BhaW50VHlw
ZSYgcGFpbnRUeXBlKQogewotICAgIHNldFVyaSh1cmkpOwotfQorICAgIHN3aXRjaCAocGFpbnRU
eXBlKSB7CisgICAgY2FzZSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9OT05FOgorICAgIGNhc2Ug
U1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfVU5LTk9XTjoKKyAgICBjYXNlIFNWR1BhaW50OjpTVkdf
UEFJTlRUWVBFX1VSSToKKyAgICBjYXNlIFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1VSSV9OT05F
OgorICAgICAgICByZXR1cm4gU1ZHQ29sb3I6OlNWR19DT0xPUlRZUEVfVU5LTk9XTjsKKyAgICBj
YXNlIFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUjoKKyAgICBjYXNlIFNWR1Bh
aW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOgorICAgICAgICByZXR1cm4gU1ZHQ29sb3I6OlNW
R19DT0xPUlRZUEVfUkdCQ09MT1I7CisgICAgY2FzZSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9V
UklfUkdCQ09MT1JfSUNDQ09MT1I6CisgICAgY2FzZSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9S
R0JDT0xPUl9JQ0NDT0xPUjoKKyAgICAgICAgcmV0dXJuIFNWR0NvbG9yOjpTVkdfQ09MT1JUWVBF
X1JHQkNPTE9SX0lDQ0NPTE9SOworICAgIGNhc2UgU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfVVJJ
X0NVUlJFTlRDT0xPUjoKKyAgICBjYXNlIFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX0NVUlJFTlRD
T0xPUjoKKyAgICAgICAgcmV0dXJuIFNWR0NvbG9yOjpTVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xP
UjsKKyAgICB9CiAKLVNWR1BhaW50OjpTVkdQYWludChTVkdQYWludFR5cGUgcGFpbnRUeXBlKQot
ICAgIDogbV9wYWludFR5cGUocGFpbnRUeXBlKQoteworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBTVkdDb2xvcjo6U1ZHX0NPTE9SVFlQRV9VTktOT1dOOwogfQogCi1TVkdQ
YWludDo6U1ZHUGFpbnQoU1ZHUGFpbnRUeXBlIHBhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmks
IGNvbnN0IFN0cmluZyYgcmdiUGFpbnQsIGNvbnN0IFN0cmluZyYpCi0gICAgOiBTVkdDb2xvcihy
Z2JQYWludCkKK1NWR1BhaW50OjpTVkdQYWludChjb25zdCBTVkdQYWludFR5cGUmIHBhaW50VHlw
ZSwgU3RyaW5nIHVyaSkKKyAgICA6IFNWR0NvbG9yKGNvbG9yVHlwZUZvclBhaW50VHlwZShwYWlu
dFR5cGUpKQogICAgICwgbV9wYWludFR5cGUocGFpbnRUeXBlKQotewotICAgIHNldFVyaSh1cmkp
OwotfQotCi1TVkdQYWludDo6U1ZHUGFpbnQoY29uc3QgQ29sb3ImIGMpCi0gICAgOiBTVkdDb2xv
cihjKQotICAgICwgbV9wYWludFR5cGUoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUikKKyAgICAsIG1f
dXJpKHVyaSkKIHsKIH0KIAotU1ZHUGFpbnQ6OlNWR1BhaW50KGNvbnN0IFN0cmluZyYgdXJpLCBj
b25zdCBDb2xvciYgYykKLSAgICA6IFNWR0NvbG9yKGMpCi0gICAgLCBtX3BhaW50VHlwZShTVkdf
UEFJTlRUWVBFX1VSSV9SR0JDT0xPUikKK3ZvaWQgU1ZHUGFpbnQ6OnNldFVyaShjb25zdCBTdHJp
bmcmIHVyaSkKIHsKLSAgICBzZXRVcmkodXJpKTsKKyAgICAvLyBTcGVjOiBTZXRzIHRoZSBwYWlu
dFR5cGUgdG8gU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSBhbmQgc2V0cyB1cmkgdG8gdGhlIHNwZWNp
ZmllZCB2YWx1ZS4KKyAgICBtX3VyaSA9IHVyaTsKKyAgICBtX3BhaW50VHlwZSA9IFNWR19QQUlO
VFRZUEVfVVJJX05PTkU7CisgICAgc2V0Q29sb3IoQ29sb3IoKSk7CisgICAgc2V0Q29sb3JUeXBl
KGNvbG9yVHlwZUZvclBhaW50VHlwZShtX3BhaW50VHlwZSkpOworICAgIHZhbHVlQ2hhbmdlZCgp
OwogfQogCiBTVkdQYWludCogU1ZHUGFpbnQ6OmRlZmF1bHRGaWxsKCkKIHsKLSAgICBzdGF0aWMg
U1ZHUGFpbnQqIHN0YXRpY0RlZmF1bHRGaWxsID0gY3JlYXRlKENvbG9yOjpibGFjaykucmVsZWFz
ZVJlZigpOworICAgIHN0YXRpYyBTVkdQYWludCogc3RhdGljRGVmYXVsdEZpbGwgPSBjcmVhdGVD
b2xvcihDb2xvcjo6YmxhY2spLnJlbGVhc2VSZWYoKTsKICAgICByZXR1cm4gc3RhdGljRGVmYXVs
dEZpbGw7CiB9CiAKIFNWR1BhaW50KiBTVkdQYWludDo6ZGVmYXVsdFN0cm9rZSgpCiB7Ci0gICAg
c3RhdGljIFNWR1BhaW50KiBzdGF0aWNEZWZhdWx0U3Ryb2tlID0gY3JlYXRlKFNWR19QQUlOVFRZ
UEVfTk9ORSkucmVsZWFzZVJlZigpOworICAgIHN0YXRpYyBTVkdQYWludCogc3RhdGljRGVmYXVs
dFN0cm9rZSA9IGNyZWF0ZU5vbmUoKS5yZWxlYXNlUmVmKCk7CiAgICAgcmV0dXJuIHN0YXRpY0Rl
ZmF1bHRTdHJva2U7CiB9CiAKLVN0cmluZyBTVkdQYWludDo6dXJpKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV91cmk7Ci19Ci0KLXZvaWQgU1ZHUGFpbnQ6OnNldFVyaShjb25zdCBTdHJpbmcmIHVy
aSkKLXsKLSAgICBtX3VyaSA9IHVyaTsKLX0KLQotdm9pZCBTVkdQYWludDo6c2V0UGFpbnQoU1ZH
UGFpbnRUeXBlIHBhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IFN0cmluZyYgcmdi
UGFpbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBTVkdQYWludDo6c2V0
UGFpbnQodW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVyaSwgY29uc3Qg
U3RyaW5nJiByZ2JDb2xvciwgY29uc3QgU3RyaW5nJiBpY2NDb2xvciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgbV9wYWludFR5cGUgPSBwYWludFR5cGU7Ci0KLSAgICBpZiAobV9wYWludFR5
cGUgPT0gU1ZHX1BBSU5UVFlQRV9VUkkpCi0gICAgICAgIHNldFVyaSh1cmkpOwotICAgIGVsc2Ug
aWYgKG1fcGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IpCi0gICAgICAgIHNldFJH
QkNvbG9yKHJnYlBhaW50KTsKKyAgICBpZiAoKHBhaW50VHlwZSA+IFNWR19QQUlOVFRZUEVfUkdC
Q09MT1JfSUNDQ09MT1IgJiYgcGFpbnRUeXBlIDwgU1ZHX1BBSU5UVFlQRV9OT05FKSB8fCBwYWlu
dFR5cGUgPiBTVkdfUEFJTlRUWVBFX1VSSSkgeworICAgICAgICBlYyA9IFNWR0V4Y2VwdGlvbjo6
U1ZHX1dST05HX1RZUEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBy
ZXF1aXJlc1VSSSA9IGZhbHNlOworCisgICAgU1ZHUGFpbnRUeXBlIHR5cGUgPSBzdGF0aWNfY2Fz
dDxTVkdQYWludFR5cGU+KHBhaW50VHlwZSk7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2Fz
ZSBTVkdfUEFJTlRUWVBFX1VOS05PV046CisgICAgICAgIC8vIFNwZWM6IEl0IGlzIGludmFsaWQg
dG8gYXR0ZW1wdCB0byBkZWZpbmUgYSBuZXcgdmFsdWUgb2YgdGhpcyB0eXBlIG9yIHRvIGF0dGVt
cHQgdG8gc3dpdGNoIGFuIGV4aXN0aW5nIHZhbHVlIHRvIHRoaXMgdHlwZS4KKyAgICAgICAgZWMg
PSBTVkdFeGNlcHRpb246OlNWR19JTlZBTElEX1ZBTFVFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjoKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVf
UkdCQ09MT1JfSUNDQ09MT1I6CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX05PTkU6CisgICAgY2Fz
ZSBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUjoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
VkdfUEFJTlRUWVBFX1VSSV9OT05FOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVO
VENPTE9SOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1I6CisgICAgY2FzZSBT
VkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUjoKKyAgICBjYXNlIFNWR19QQUlOVFRZ
UEVfVVJJOgorICAgICAgICByZXF1aXJlc1VSSSA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAg
IH07CisKKyAgICAvLyBTcGVjOiBJZiBwYWludFR5cGUgcmVxdWlyZXMgYSBVUkksIHRoZW4gdXJp
IG11c3QgYmUgbm9uLW51bGw7IG90aGVyd2lzZSwgdXJpIG11c3QgYmUgbnVsbC4KKyAgICBpZiAo
cmVxdWlyZXNVUkkgJiYgdXJpLmlzRW1wdHkoKSkgeyAKKyAgICAgICAgZWMgPSBTVkdFeGNlcHRp
b246OlNWR19JTlZBTElEX1ZBTFVFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFNWR0NvbG9yOjpTVkdDb2xvclR5cGUgY29sb3JUeXBlID0gY29sb3JUeXBlRm9yUGFpbnRUeXBl
KHR5cGUpOworICAgIGlmIChjb2xvclR5cGUgPT0gU1ZHQ29sb3I6OlNWR19DT0xPUlRZUEVfVU5L
Tk9XTikgeworICAgICAgICAvLyBUaGUgc3RhbmRhcmQgc2V0Q29sb3IoKSBjb2RlIHBhdGggdXNl
ZCBpbiB0aGUgZWxzZSBicmFuY2gKKyAgICAgICAgLy8gcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVu
IGF0dGVtcHRpbmcgdG8gc3dpdGNoIHRvIGFuIHVua25vd24gY29sb3IgdHlwZS4KKyAgICAgICAg
Ly8gSGVyZSB3ZSBleHBsaWNpdGVseSB3YW50IHRvIHJlc2V0IHRvIENvbG9yKCkgYW5kIGFuIHVu
a25vd24gdHlwZSwgc28gZm9yY2UgaXQuCisgICAgICAgIHNldENvbG9yVHlwZShjb2xvclR5cGUp
OworICAgICAgICBzZXRDb2xvcihDb2xvcigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZXRD
b2xvcihjb2xvclR5cGUsIHJnYkNvbG9yLCBpY2NDb2xvciwgZWMpOworICAgICAgICBpZiAoZWMp
CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wYWludFR5cGUgPSB0eXBlOwor
ICAgIG1fdXJpID0gcmVxdWlyZXNVUkkgPyB1cmkgOiBTdHJpbmcoKTsKKyAgICB2YWx1ZUNoYW5n
ZWQoKTsKIH0KIAogU3RyaW5nIFNWR1BhaW50Ojpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICBpZiAo
bV9wYWludFR5cGUgPT0gU1ZHX1BBSU5UVFlQRV9OT05FKQorICAgIHN3aXRjaCAobV9wYWludFR5
cGUpIHsKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVfVU5LTk9XTjoKKyAgICBjYXNlIFNWR19QQUlO
VFRZUEVfUkdCQ09MT1I6CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9S
OgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1I6CisgICAgICAgIHJldHVybiBT
VkdDb2xvcjo6Y3NzVGV4dCgpOworICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9OT05FOgogICAgICAg
ICByZXR1cm4gIm5vbmUiOwotICAgIGlmIChtX3BhaW50VHlwZSA9PSBTVkdfUEFJTlRUWVBFX0NV
UlJFTlRDT0xPUikKLSAgICAgICAgcmV0dXJuICJjdXJyZW50Q29sb3IiOwotICAgIGlmIChtX3Bh
aW50VHlwZSA9PSBTVkdfUEFJTlRUWVBFX1VSSSkKLSAgICAgICAgcmV0dXJuICJ1cmwoIiArIG1f
dXJpICsgIikiOworICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORToKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcobV91cmksICIgbm9uZSIpOworICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9V
UklfQ1VSUkVOVENPTE9SOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1I6Cisg
ICAgY2FzZSBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUjogeworICAgICAgICBT
dHJpbmcgY29sb3IgPSBTVkdDb2xvcjo6Y3NzVGV4dCgpOworICAgICAgICBpZiAoY29sb3IuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG1fdXJpOworICAgICAgICByZXR1cm4gbWFrZVN0
cmluZyhtX3VyaSwgJyAnLCBjb2xvcik7CisgICAgfQorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9V
Ukk6CisgICAgICAgIHJldHVybiBtX3VyaTsKKyAgICB9OwogCi0gICAgcmV0dXJuIFNWR0NvbG9y
Ojpjc3NUZXh0KCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCiBib29sIFNWR1BhaW50OjptYXRjaGVzVGFyZ2V0VVJJKGNvbnN0IFN0cmluZyYg
cmVmZXJlbmNlSWQpCiB7Ci0gICAgaWYgKG1fcGFpbnRUeXBlICE9IFNWR19QQUlOVFRZUEVfVVJJ
ICYmIG1fcGFpbnRUeXBlICE9IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgc3dpdGNoIChtX3BhaW50VHlwZSkgeworICAgIGNhc2UgU1ZHX1BB
SU5UVFlQRV9VTktOT1dOOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjoKKyAgICBj
YXNlIFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1I6CisgICAgY2FzZSBTVkdfUEFJTlRU
WVBFX0NVUlJFTlRDT0xPUjoKKyAgICBjYXNlIFNWR19QQUlOVFRZUEVfTk9ORToKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX1VSSV9OT05FOgorICAgIGNhc2UgU1ZHX1BB
SU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SOgorICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfUkdC
Q09MT1I6CisgICAgY2FzZSBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUjoKKyAg
ICBjYXNlIFNWR19QQUlOVFRZUEVfVVJJOgorICAgICAgICByZXR1cm4gcmVmZXJlbmNlSWQgPT0g
U1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQobV91cmkpOworICAgIH0KIAotICAgIHJldHVybiBy
ZWZlcmVuY2VJZCA9PSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChtX3VyaSk7CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAkocmV2aXNpb24gNzkz
NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
Miw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21pYWwuY29tPgorICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yMSw5ICsyMiwxMCBAQAogCiAjaWZuZGVmIFNWR1BhaW50X2gKICNk
ZWZpbmUgU1ZHUGFpbnRfaAorCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNDkgKzQ0LDY2IEBAIHB1Ymxp
YzoKICAgICAgICAgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDcKICAgICB9OwogCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
UGFpbnQ+IGNyZWF0ZVVua25vd24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdQYWludCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGFpbnQoU1ZHX1BB
SU5UVFlQRV9VTktOT1dOKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhaW50
PiBjcmVhdGUoU1ZHUGFpbnRUeXBlIHR5cGUpCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQ
YWludD4gY3JlYXRlTm9uZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R1BhaW50KHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYWludChTVkdf
UEFJTlRUWVBFX05PTkUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+
IGNyZWF0ZShjb25zdCBDb2xvciYgY29sb3IpCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQ
YWludD4gY3JlYXRlQ3VycmVudENvbG9yKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU1ZHUGFpbnQoY29sb3IpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQ
YWludChTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUikpOwogICAgIH0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdQYWludD4gY3JlYXRlKFNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IHVyaSkKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhaW50PiBjcmVhdGVDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1Bh
aW50KHR5cGUsIHVyaSwgU3RyaW5nKCksIFN0cmluZygpKSk7CisgICAgICAgIFJlZlB0cjxTVkdQ
YWludD4gcGFpbnQgPSBhZG9wdFJlZihuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xP
UikpOworICAgICAgICBwYWludC0+c2V0Q29sb3IoY29sb3IpOworICAgICAgICByZXR1cm4gcGFp
bnQucmVsZWFzZSgpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYWludD4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdXJpLCBjb25zdCBDb2xvciYgY29sb3IpCisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTVkdQYWludD4gY3JlYXRlVVJJKGNvbnN0IFN0cmluZyYgdXJpKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYWludCh1cmksIGNvbG9yKSk7CisgICAg
ICAgIFJlZlB0cjxTVkdQYWludD4gcGFpbnQgPSBhZG9wdFJlZihuZXcgU1ZHUGFpbnQoU1ZHX1BB
SU5UVFlQRV9VUkksIHVyaSkpOworICAgICAgICByZXR1cm4gcGFpbnQucmVsZWFzZSgpOwogICAg
IH0KIAotICAgIC8vICdTVkdQYWludCcgZnVuY3Rpb25zCi0gICAgU1ZHUGFpbnRUeXBlIHBhaW50
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnRUeXBlOyB9Ci0gICAgU3RyaW5nIHVyaSgpIGNv
bnN0OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhaW50PiBjcmVhdGVVUklBbmRDb2xvcihj
b25zdCBTdHJpbmcmIHVyaSwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHsKKyAgICAgICAgUmVm
UHRyPFNWR1BhaW50PiBwYWludCA9IGFkb3B0UmVmKG5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBF
X1VSSV9SR0JDT0xPUiwgdXJpKSk7CisgICAgICAgIHBhaW50LT5zZXRDb2xvcihjb2xvcik7Cisg
ICAgICAgIHJldHVybiBwYWludC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgY29uc3QgU1ZHUGFp
bnRUeXBlJiBwYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3BhaW50VHlwZTsgfQorICAgIFN0
cmluZyB1cmkoKSBjb25zdCB7IHJldHVybiBtX3VyaTsgfQogCiAgICAgdm9pZCBzZXRVcmkoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYWludChTVkdQYWludFR5cGUsIGNvbnN0IFN0cmlu
ZyYgdXJpLCBjb25zdCBTdHJpbmcmIHJnYlBhaW50LCBjb25zdCBTdHJpbmcmIGljY1BhaW50LCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgCisgICAgdm9pZCBzZXRQYWludCh1bnNpZ25lZCBzaG9ydCBw
YWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJpLCBjb25zdCBTdHJpbmcmIHJnYkNvbG9yLCBjb25z
dCBTdHJpbmcmIGljY0NvbG9yLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBib29sIG1hdGNoZXNU
YXJnZXRVUkkoY29uc3QgU3RyaW5nJiByZWZlcmVuY2VJZCk7CisKICAgICBzdGF0aWMgU1ZHUGFp
bnQqIGRlZmF1bHRGaWxsKCk7CiAgICAgc3RhdGljIFNWR1BhaW50KiBkZWZhdWx0U3Ryb2tlKCk7
CiAKLSAgICBib29sIG1hdGNoZXNUYXJnZXRVUkkoY29uc3QgU3RyaW5nJiByZWZlcmVuY2VJZCk7
Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb247
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYWludD4gY3JlYXRlKGNvbnN0IFNWR1BhaW50
VHlwZSYgdHlwZSwgY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICB7
CisgICAgICAgIFJlZlB0cjxTVkdQYWludD4gcGFpbnQgPSBhZG9wdFJlZihuZXcgU1ZHUGFpbnQo
dHlwZSwgdXJpKSk7CisgICAgICAgIHBhaW50LT5zZXRDb2xvcihjb2xvcik7CisgICAgICAgIHJl
dHVybiBwYWludC5yZWxlYXNlKCk7CisgICAgfQogCiBwcml2YXRlOgotICAgIFNWR1BhaW50KCk7
Ci0gICAgU1ZHUGFpbnQoY29uc3QgU3RyaW5nJiB1cmkpOwotICAgIFNWR1BhaW50KFNWR1BhaW50
VHlwZSk7Ci0gICAgU1ZHUGFpbnQoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVyaSwgY29u
c3QgU3RyaW5nJiByZ2JQYWludCwgY29uc3QgU3RyaW5nJiBpY2NQYWludCk7Ci0gICAgU1ZHUGFp
bnQoY29uc3QgQ29sb3ImIGMpOwotICAgIFNWR1BhaW50KGNvbnN0IFN0cmluZyYgdXJpLCBjb25z
dCBDb2xvciYgYyk7CisgICAgU1ZHUGFpbnQoY29uc3QgU1ZHUGFpbnRUeXBlJiwgU3RyaW5nIHVy
aSA9IFN0cmluZygpKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1BhaW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotCiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCiAg
ICAgU1ZHUGFpbnRUeXBlIG1fcGFpbnRUeXBlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhaW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaWRs
CShyZXZpc2lvbiA3OTM0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDI3ICsyNiwyMyBAQAogbW9kdWxlIHN2ZyB7CiAKICAgICBpbnRl
cmZhY2UgW0NvbmRpdGlvbmFsPVNWR10gU1ZHUGFpbnQgOiBTVkdDb2xvciB7Ci0gICAgICAgIC8v
IFNWR1BhaW50VHlwZQotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBF
X1VOS05PV04gICAgICAgICAgICAgICA9IDA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgICAgICAgICAgICAgID0gMTsKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiAgICAgPSAyOwot
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX05PTkUgICAgICAgICAg
ICAgICAgICA9IDEwMTsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQ
RV9DVVJSRU5UQ09MT1IgICAgICAgICAgPSAxMDI7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgICAgICAgICAgICAgID0gMTAzOwotICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IgICAgICA9
IDEwNDsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdC
Q09MT1IgICAgICAgICAgPSAxMDU7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19Q
QUlOVFRZUEVfVU5LTk9XTiA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19Q
QUlOVFRZUEVfUkdCQ09MT1IgPSAxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdf
UEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FID0gMTAxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiA9IDEwMjsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSA9IDEwMzsKKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SID0gMTA0OworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiA9IDEw
NTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09M
T1JfSUNDQ09MT1IgPSAxMDY7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlO
VFRZUEVfVVJJICAgICAgICAgICAgICAgICAgID0gMTA3OworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsKIAotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyB1cmk7CiAKLSAgICAgICAgdm9pZCBzZXRVcmkoaW4gRE9NU3RyaW5nIHVyaSk7Ci0g
ICAgICAgIHZvaWQgc2V0UGFpbnQoaW4gU1ZHUGFpbnRUeXBlIHBhaW50VHlwZSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHVyaSwgCi0gICAgICAgICAgICAgICAgICAgICAg
aW4gRE9NU3RyaW5nIHJnYkNvbG9yLCAKLSAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJp
bmcgaWNjQ29sb3IpCi0gICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKKyAgICAgICAg
W1N0cmljdFR5cGVDaGVja2luZywgUmVxdWlyZXNBbGxBcmd1bWVudHM9UmFpc2VdIHZvaWQgc2V0
VXJpKGluIERPTVN0cmluZyB1cmkpOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSZXF1
aXJlc0FsbEFyZ3VtZW50cz1SYWlzZV0gdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBw
YWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9N
U3RyaW5nIGljY0NvbG9yKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbiwgU1ZHRXhj
ZXB0aW9uKTsKICAgICB9OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTY2NCkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDExLTAy
LTI1ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBTVkdDb2xv
ci9TVkdQYWludCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU1MTE5CisKKyAgICAgICAgU1ZHQ29sb3I6OmNzc1RleHQoKSBzaG91bGRuJ3QgcmV0
dXJuICNSUkdHQkJBQSBjb2xvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ4MTIwCisKKyAgICAgICAgQWRkIHR3byBuZXcgdGVzdHMgY292ZXJpbmcg
dGhlIFNWR0NvbG9yL1NWR1BhaW50IEFQSXMuCisgICAgICAgIEFkYXB0IHRvIFNWR0NvbG9yOjpj
c3NUZXh0KCkgY2hhbmdlcywgY29sb3IgaXMgcHJvcGVybHkgc2VyaWFsaXplZCBub3cuCisKKyAg
ICAgICAgKiBzdmcvYW5pbWF0aW9ucy9hbmltYXRlLWNvbG9yLXRyYW5zcGFyZW50LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9hbmltYXRlLWN1cnJlbnRDb2xvci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1keW5hbWljLXVwZGF0
ZS1hdHRyaWJ1dGVOYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9h
bmltYXRlLWluaGVyaXQtY3NzLXByb3BlcnR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcv
YW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1jb2xvci10cmFuc3BhcmVudC5qczoKKyAg
ICAgICAgKGV4cGVjdFRyYW5zcGFyZW50KToKKyAgICAgICAgKGV4cGVjdE90aGVyQ29sb3IpOgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlLWN1cnJlbnRDb2xv
ci5qczoKKyAgICAgICAgKHNhbXBsZTEpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3Njcmlw
dC10ZXN0cy9hbmltYXRlLWluaGVyaXQtY3NzLXByb3BlcnR5LmpzOgorICAgICAgICAoc2FtcGxl
MSk6CisgICAgICAgICogc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBzdmcvY3VzdG9tL2dldFByZXNlbnRhdGlvbkF0dHJpYnV0ZS1tb2RpZnku
c3ZnOgorICAgICAgICAqIHN2Zy9jdXN0b20vcmdiY29sb3Itc3ludGF4LnN2ZzoKKyAgICAgICAg
KiBzdmcvZG9tL1NWR0NvbG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2Rv
bS9TVkdDb2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1BhaW50LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdQYWludC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvZG9tL3NjcmlwdC10ZXN0cy9TVkdDb2xvci5qczogQWRkZWQuCisgICAg
ICAgIChjaGVja1N0b3BDb2xvcik6CisgICAgICAgICogc3ZnL2RvbS9zY3JpcHQtdGVzdHMvU1ZH
UGFpbnQuanM6IEFkZGVkLgorICAgICAgICAocmVzZXRTdHlsZSk6CisgICAgICAgIChjaGVja0Zp
bGxDb2xvcik6CisKIDIwMTEtMDItMjQgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSBleHBlY3RhdGlvbnMgdXBkYXRl
LgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1jb2xvci10cmFuc3Bh
cmVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvYW5pbWF0ZS1jb2xvci10cmFuc3BhcmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDc5MzQ1
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1jb2xvci10cmFuc3BhcmVu
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBAIFRlc3RzIHRoYXQg
J3RyYW5zcGFyZW50JyBpcyB0cmVhdGVkIGFzIGEKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAogCi1QQVNTIHJlY3Quc3R5bGUuZmlsbCBpcyAnIzAwRkYwMCcKLVBBU1MgcmVjdC5zdHlsZS5m
aWxsIGlzICcjN0YwMDAwJworUEFTUyByZWN0LnN0eWxlLmZpbGwgaXMgJyMwMGZmMDAnCitQQVNT
IHJlY3Quc3R5bGUuZmlsbCBpcyAnIzdmMDAwMCcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
YW5pbWF0ZS1jdXJyZW50Q29sb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtY3VycmVudENvbG9yLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNzkzNDUpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLWN1cnJl
bnRDb2xvci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIFRlc3Rz
IGFuaW1hdGlvbiBvbiAnY3VycmVudENvbG9yJy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAogCi1QQVNTIHJlY3Quc3R5bGUuZmlsbCBpcyAnI0ZGMDAwMCcKK1BBU1MgcmVjdC5zdHlsZS5m
aWxsIGlzICcjZmYwMDAwJwogUEFTUyByZWN0LnN0eWxlLmZpbGwgaXMgJyM4MDQwMDAnCiBQQVNT
IHJlY3Quc3R5bGUuZmlsbCBpcyAnIzAwODAwMCcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtZHluYW1pYy11
cGRhdGUtYXR0cmlidXRlTmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1keW5hbWljLXVwZGF0ZS1hdHRyaWJ1dGVOYW1lLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNzkzNDUpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9hbmltYXRlLWR5bmFtaWMtdXBkYXRlLWF0dHJpYnV0ZU5hbWUtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBCiAKIAogUEFTUyByZWN0LnN0eWxlLmNvbG9yIGlzICdyZ2IoMCwgMTI4LCAwKScK
LUZBSUwgcmVjdC5zdHlsZS5maWxsIHNob3VsZCBiZSAjMDA4MDAwLiBXYXMgI0ZGMDAwMC4KK0ZB
SUwgcmVjdC5zdHlsZS5maWxsIHNob3VsZCBiZSAjMDA4MDAwLiBXYXMgI2ZmMDAwMC4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0
VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1pbmhlcml0LWNzcy1wcm9wZXJ0eS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1p
bmhlcml0LWNzcy1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDc5MzQ1KQorKysgTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1pbmhlcml0LWNzcy1wcm9wZXJ0eS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIFRlc3RzIGFuaW1hdGlvbiB3
aXRoICdpbmhlcml0Jy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHJlY3Qu
c3R5bGUuZmlsbCBpcyAnI0ZGMDAwMCcKK1BBU1MgcmVjdC5zdHlsZS5maWxsIGlzICcjZmYwMDAw
JwogUEFTUyByZWN0LnN0eWxlLmZpbGwgaXMgJyM4MDQwMDAnCiBQQVNTIHJlY3Quc3R5bGUuZmls
bCBpcyAnIzAwODAwMCcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlLWNvbG9yLXRyYW5z
cGFyZW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3Njcmlw
dC10ZXN0cy9hbmltYXRlLWNvbG9yLXRyYW5zcGFyZW50LmpzCShyZXZpc2lvbiA3OTM0NSkKKysr
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlLWNvbG9yLXRy
YW5zcGFyZW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMiArMjEsMTIgQEAgcm9vdFNWR0Vs
ZW1lbnQuYXBwZW5kQ2hpbGQocmVjdCk7CiAvLyBTZXR1cCBhbmltYXRpb24gdGVzdAogZnVuY3Rp
b24gZXhwZWN0VHJhbnNwYXJlbnQoKSB7CiAgICAgLy8gQ2hlY2sgaW5pdGlhbC9lbmQgY29uZGl0
aW9ucwotICAgIHNob3VsZEJlKCJyZWN0LnN0eWxlLmZpbGwiLCAiJyMwMEZGMDAnIik7CisgICAg
c2hvdWxkQmUoInJlY3Quc3R5bGUuZmlsbCIsICInIzAwZmYwMCciKTsKIH0KIAogZnVuY3Rpb24g
ZXhwZWN0T3RoZXJDb2xvcigpIHsKICAgICAvLyBDaGVjayBoYWxmLXRpbWUgY29uZGl0aW9ucwot
ICAgIHNob3VsZEJlKCJyZWN0LnN0eWxlLmZpbGwiLCAiJyM3RjAwMDAnIik7CisgICAgc2hvdWxk
QmUoInJlY3Quc3R5bGUuZmlsbCIsICInIzdmMDAwMCciKTsKIH0KIAogZnVuY3Rpb24gZXhlY3V0
ZVRlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMv
YW5pbWF0ZS1jdXJyZW50Q29sb3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtY3VycmVudENvbG9yLmpzCShyZXZpc2lvbiA3
OTM0NSkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRl
LWN1cnJlbnRDb2xvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQCByb290U1ZH
RWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsKIC8vIFNldHVwIGFuaW1hdGlvbiB0ZXN0CiBmdW5j
dGlvbiBzYW1wbGUxKCkgewogICAgIC8vIENoZWNrIGluaXRpYWwvZW5kIGNvbmRpdGlvbnMKLSAg
ICBzaG91bGRCZSgicmVjdC5zdHlsZS5maWxsIiwgIicjRkYwMDAwJyIpOworICAgIHNob3VsZEJl
KCJyZWN0LnN0eWxlLmZpbGwiLCAiJyNmZjAwMDAnIik7CiB9CiAKIGZ1bmN0aW9uIHNhbXBsZTIo
KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0
ZS1pbmhlcml0LWNzcy1wcm9wZXJ0eS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1pbmhlcml0LWNzcy1wcm9wZXJ0eS5qcwko
cmV2aXNpb24gNzkzNDUpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVz
dHMvYW5pbWF0ZS1pbmhlcml0LWNzcy1wcm9wZXJ0eS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQCByb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChnKTsKIC8vIFNldHVwIGFuaW1h
dGlvbiB0ZXN0CiBmdW5jdGlvbiBzYW1wbGUxKCkgewogICAgIC8vIENoZWNrIGluaXRpYWwvZW5k
IGNvbmRpdGlvbnMKLSAgICBzaG91bGRCZSgicmVjdC5zdHlsZS5maWxsIiwgIicjRkYwMDAwJyIp
OworICAgIHNob3VsZEJlKCJyZWN0LnN0eWxlLmZpbGwiLCAiJyNmZjAwMDAnIik7CiB9CiAKIGZ1
bmN0aW9uIHNhbXBsZTIoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3NzL2dldENvbXB1dGVk
U3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9j
c3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDc5MzQ1KQor
KysgTGF5b3V0VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMzcyLDcgKzM3Miw3IEBAIHJlY3Q6IHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoY29sb3ItaW50ZXIKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoY29s
b3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBy
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGNvbG9yLXJlbmRlcmluZykgOiBhdXRvCiByZWN0
OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbG9yLXJlbmRlcmluZykgOiBbb2JqZWN0IENT
U1ByaW1pdGl2ZVZhbHVlXQotcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShmaWxsKSA6ICMw
MDAwRkYKK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoZmlsbCkgOiAjMDAwMGZmCiByZWN0
OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGZpbGwpIDogW29iamVjdCBTVkdQYWludF0KIHJl
Y3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoZmlsbC1vcGFjaXR5KSA6IDEKIHJlY3Q6IHN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoZmlsbC1vcGFjaXR5KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZl
VmFsdWVdCkBAIC0zODgsNyArMzg4LDcgQEAgcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSht
YXJrZXItc3RhcgogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShtYXJrZXItc3RhcnQp
IDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFs
dWUoc2hhcGUtcmVuZGVyaW5nKSA6IGF1dG8KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoc2hhcGUtcmVuZGVyaW5nKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCi1yZWN0OiBz
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHN0cm9rZSkgOiAjRkZBNTAwCityZWN0OiBzdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKHN0cm9rZSkgOiAjZmZhNTAwCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKHN0cm9rZSkgOiBbb2JqZWN0IFNWR1BhaW50XQogcmVjdDogc3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZShzdHJva2UtZGFzaGFycmF5KSA6IG5vbmUKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoc3Ryb2tlLWRhc2hhcnJheSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQpA
QCAtODE0LDcgKzgxNCw3IEBAIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUobWFya2VyLXN0YXJ0
KSAKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUobWFya2VyLXN0YXJ0KSA6IFtvYmplY3Qg
Q1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHNoYXBlLXJlbmRl
cmluZykgOiBhdXRvCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHNoYXBlLXJlbmRlcmlu
ZykgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQotZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZShzdHJva2UpIDogI0ZGQTUwMAorZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShzdHJva2UpIDog
I2ZmYTUwMAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShzdHJva2UpIDogW29iamVjdCBT
VkdQYWludF0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoc3Ryb2tlLWRhc2hhcnJheSkgOiBu
b25lCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHN0cm9rZS1kYXNoYXJyYXkpIDogW29i
amVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vZ2V0
UHJlc2VudGF0aW9uQXR0cmlidXRlLW1vZGlmeS5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9nZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUtbW9kaWZ5LnN2ZwkocmV2aXNp
b24gNzkzNDUpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dldFByZXNlbnRhdGlvbkF0dHJp
YnV0ZS1tb2RpZnkuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgICAg
IGZpbGwuc2V0UkdCQ29sb3IoImdyZWVuIik7CiAgICAgICAgIHJlY3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZmlyc3RyZWN0Iik7CiAgICAgICAgIGZpbGwgPSByZWN0LmdldFByZXNlbnRh
dGlvbkF0dHJpYnV0ZSgiZmlsbCIpOwotICAgICAgICBpZiAoZmlsbC5jc3NUZXh0ICE9ICcjRkYw
MDAwJykgeworICAgICAgICBpZiAoZmlsbC5jc3NUZXh0ICE9ICcjZmYwMDAwJykgewogICAgICAg
ICAgICAgbG9nKCJDaGFuZ2luZyBmaWxsIFBBIHNob3VsZCBub3QgY2hhbmdlIGZpcnN0cmVjdCBm
aWxsIFBBIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9jdXN0b20vcmdiY29sb3Itc3ludGF4LnN2Zwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3JnYmNvbG9yLXN5bnRheC5zdmcJKHJldmlzaW9uIDc5MzQ1KQorKysg
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZ2Jjb2xvci1zeW50YXguc3ZnCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw5ICs0NSw5IEBACiAgICAgICAgIGlmICghZXhwZWN0c0V4Y2VwdGlvbihjb2wsICIj
ZmZmZmYiKSkgcmV0dXJuOwogICAgICAgICBpZiAoIWV4cGVjdHNFeGNlcHRpb24oY29sLCAiI2Zm
ZmZmZmYiKSkgcmV0dXJuOwogICAgICAgICBpZiAoIWV4cGVjdHNFeGNlcHRpb24oY29sLCAiZ3Jl
ZW4sIikpIHJldHVybjsKLSAgICAgICAgaWYgKCFleHBlY3RzVmFsaWQoY29sLCAicmdiKDAsIDEw
LCAyMCkiLCAiIzAwMEExNCIpKSByZXR1cm47Ci0gICAgICAgIGlmICghZXhwZWN0c1ZhbGlkKGNv
bCwgIiNGRkYiLCAiI0ZGRkZGRiIpKSByZXR1cm47Ci0gICAgICAgIGlmICghZXhwZWN0c1ZhbGlk
KGNvbCwgIiNGRkZGRkYiLCAiI0ZGRkZGRiIpKSByZXR1cm47CisgICAgICAgIGlmICghZXhwZWN0
c1ZhbGlkKGNvbCwgInJnYigwLCAxMCwgMjApIiwgIiMwMDBhMTQiKSkgcmV0dXJuOworICAgICAg
ICBpZiAoIWV4cGVjdHNWYWxpZChjb2wsICIjRkZGIiwgIiNmZmZmZmYiKSkgcmV0dXJuOworICAg
ICAgICBpZiAoIWV4cGVjdHNWYWxpZChjb2wsICIjRkZGRkZGIiwgIiNmZmZmZmYiKSkgcmV0dXJu
OwogICAgICAgICBpZiAoIWV4cGVjdHNWYWxpZChjb2wsICIgZ3JlZW4iLCAiIzAwODAwMCIpKSBy
ZXR1cm47CiAgICAgICAgIGlmICghZXhwZWN0c1ZhbGlkKGNvbCwgImdyZWVuICIsICIjMDA4MDAw
IikpIHJldHVybjsKICAgICAgICAgaWYgKCFleHBlY3RzVmFsaWQoY29sLCAiZ3JlZW4iLCAiIzAw
ODAwMCIpKSByZXR1cm47CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0NvbG9yLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0NvbG9yLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHQ29sb3ItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACitUaGlzIHRlc3QgY2hlY2tz
IHRoZSBTVkdDb2xvciBBUEkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworQ2hl
Y2sgaW5pdGlhbCBjb2xvciB2YWx1ZXMKK1BBU1MgKHN0b3BDb2xvciA9IHN0b3BFbGVtZW50LnN0
eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ3N0b3AtY29sb3InKSkudG9TdHJpbmcoKSBpcyAiW29i
amVjdCBTVkdDb2xvcl0iCitQQVNTIHN0b3BDb2xvci5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZH
X0NPTE9SVFlQRV9SR0JDT0xPUgorUEFTUyAocmdiQ29sb3IgPSBzdG9wQ29sb3IucmdiQ29sb3Ip
LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgUkdCQ29sb3JdIgorUEFTUyByZ2JDb2xvci5yZWQuZ2V0
RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAyNTUKK1BBU1Mgcmdi
Q29sb3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBp
cyAwCitQQVNTIHJnYkNvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5D
U1NfTlVNQkVSKSBpcyAwCitQQVNTIHN0b3BFbGVtZW50LnN0eWxlLnN0b3BDb2xvciBpcyAiI2Zm
MDAwMCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzdG9wRWxl
bWVudCkuc3RvcENvbG9yIGlzICJyZ2IoMjU1LCAwLCAwKSIKKworVHJ5IGludmFsaWQgYXJndW1l
bnRzIGZvciBzZXRDb2xvcigpCitQQVNTIHN0b3BDb2xvci5zZXRDb2xvcihudWxsLCBudWxsLCBu
dWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNW
RyBFeGNlcHRpb24gMS4KK1BBU1Mgc3RvcENvbG9yLnNldENvbG9yKFNWR0NvbG9yLlNWR19DT0xP
UlRZUEVfUkdCQ09MT1IsIHN2Z0VsZW1lbnQsICcnKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
VkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDEuCitQQVNTIHN0b3BDb2xv
ci5zZXRDb2xvcihTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SLCAnJywgJycpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlv
biAxLgorUEFTUyBzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9DVVJS
RU5UQ09MT1IgKyAxLCAnJywgJycpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19XUk9OR19U
WVBFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMC4KK1BBU1Mgc3RvcENvbG9yLnNldENvbG9yKCkg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mg
c3RvcENvbG9yLnNldENvbG9yKHN0b3BDb2xvcikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KKworVHJ5IGFzc2lnbmluZyB0byB0aGUgcmVhZG9ubHkg
Y29sb3JUeXBlIHByb3BlcnR5LCB3aGljaCBzaWxlbnRseSBmYWlscworUEFTUyBzdG9wQ29sb3Iu
Y29sb3JUeXBlID0gU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9VTktLTk9XTjsgaXMgdW5kZWZpbmVk
LgorUEFTUyBzdG9wQ29sb3IuY29sb3JUeXBlIGlzIFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdC
Q09MT1IKK1BBU1Mgc3RvcEVsZW1lbnQuc3R5bGUuc3RvcENvbG9yIGlzICIjZmYwMDAwIgorUEFT
UyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHN0b3BFbGVtZW50KS5zdG9w
Q29sb3IgaXMgInJnYigyNTUsIDAsIDApIgorCitUZXN0IHVzaW5nIHNldENvbG9yKCkgYW5kIFNW
R19DT0xPUlRZUEVfVU5LTk9XTgorUEFTUyBzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZHQ29sb3IuU1ZH
X0NPTE9SVFlQRV9VTktLTk9XTiwgJycsICcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19J
TlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMS4KK1BBU1Mgc3RvcENvbG9yLnNl
dENvbG9yKFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfVU5LS05PV04sICdyZ2IoMCwxMjgsMTI4KScs
ICcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNW
RyBFeGNlcHRpb24gMS4KK1BBU1Mgc3RvcENvbG9yLnNldENvbG9yKFNWR0NvbG9yLlNWR19DT0xP
UlRZUEVfVU5LS05PV04sICcnLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAx
LgorUEFTUyBzdG9wQ29sb3Iuc2V0Q29sb3IoU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9VTktLTk9X
TiwgJ3JnYigwLDAsMCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgor
CitUZXN0IHVzaW5nIHNldENvbG9yKCkgYW5kIFNWR19DT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09M
T1IKK1BBU1Mgc3RvcENvbG9yLnNldENvbG9yKFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdCQ09M
T1JfSUNDQ09MT1IsICdyZ2IoNzcsMCw3NyknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScp
IGlzIHVuZGVmaW5lZC4KK1BBU1Mgc3RvcENvbG9yLmNvbG9yVHlwZSBpcyBTVkdDb2xvci5TVkdf
Q09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SCitQQVNTIHN0b3BDb2xvci5jb2xvclR5cGUgaXMg
U1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUgorUEFTUyAocmdiQ29sb3Ig
PSBzdG9wQ29sb3IucmdiQ29sb3IpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgUkdCQ29sb3JdIgor
UEFTUyByZ2JDb2xvci5yZWQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVN
QkVSKSBpcyA3NworUEFTUyByZ2JDb2xvci5ncmVlbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgcmdiQ29sb3IuYmx1ZS5nZXRGbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDc3CitQQVNTIHN0b3BFbGVtZW50LnN0
eWxlLnN0b3BDb2xvciBpcyAiIzRkMDA0ZCIKK0ZBSUwgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShzdG9wRWxlbWVudCkuc3RvcENvbG9yIHNob3VsZCBiZSByZ2IoNzcsIDAs
IDc3KS4gV2FzIHJnYigyNTUsIDAsIDApLgorCitUZXN0IHVzaW5nIHNldENvbG9yKCkgYW5kIFNW
R19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SCitQQVNTIHN0b3BDb2xvci5zZXRDb2xvcihTVkdDb2xv
ci5TVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiwgJ3JnYig3NywwLDc3KScsICdpY2MtY29sb3Io
bXlSR0IsIDAsIDEsIDIpJykgaXMgdW5kZWZpbmVkLgorUEFTUyBzdG9wQ29sb3IuY29sb3JUeXBl
IGlzIFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SCitQQVNTIHN0b3BDb2xvci5j
b2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IKK1BBU1MgKHJn
YkNvbG9yID0gc3RvcENvbG9yLnJnYkNvbG9yKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFJHQkNv
bG9yXSIKK1BBU1MgcmdiQ29sb3IucmVkLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUu
Q1NTX05VTUJFUikgaXMgMAorUEFTUyByZ2JDb2xvci5ncmVlbi5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgcmdiQ29sb3IuYmx1ZS5nZXRGbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1Mgc3RvcEVsZW1l
bnQuc3R5bGUuc3RvcENvbG9yIGlzICJjdXJyZW50Q29sb3IiCitGQUlMIGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc3RvcEVsZW1lbnQpLnN0b3BDb2xvciBzaG91bGQgYmUg
cmdiKDAsIDEyOCwgMCkuIFdhcyByZ2IoMjU1LCAwLCAwKS4KKworVGVzdCB1c2luZyBzZXRDb2xv
cigpIGFuZCBTVkdfQ09MT1JUWVBFX1JHQkNPTE9SCitQQVNTIHN0b3BDb2xvci5zZXRDb2xvcihT
VkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SLCAncmdiKDAsNzcsMCknLCAnaWNjLWNvbG9y
KG15UkdCLCAwLCAxLCAyKScpIGlzIHVuZGVmaW5lZC4KK1BBU1Mgc3RvcENvbG9yLmNvbG9yVHlw
ZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SCitQQVNTIHN0b3BDb2xvci5jb2xv
clR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUgorUEFTUyAocmdiQ29sb3Ig
PSBzdG9wQ29sb3IucmdiQ29sb3IpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgUkdCQ29sb3JdIgor
UEFTUyByZ2JDb2xvci5yZWQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVN
QkVSKSBpcyAwCitQQVNTIHJnYkNvbG9yLmdyZWVuLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWUuQ1NTX05VTUJFUikgaXMgNzcKK1BBU1MgcmdiQ29sb3IuYmx1ZS5nZXRGbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK0ZBSUwgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzdG9wRWxlbWVudCkuc3RvcENvbG9yIHNob3VsZCBiZSBy
Z2IoMCwgNzcsIDApLiBXYXMgcmdiKDI1NSwgMCwgMCkuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9T
VkdDb2xvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHQ29sb3Iu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHQ29sb3IuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvU1ZHQ29sb3IuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcv
ZG9tL1NWR1BhaW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
ZG9tL1NWR1BhaW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2
Zy9kb20vU1ZHUGFpbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0NCBA
QAorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgU1ZHUGFpbnQgQVBJCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCisKK0NoZWNrIGluaXRpYWwgcGFpbnQgdmFsdWVzCitQQVNTIChmaWxsUGFp
bnQgPSByZWN0RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdmaWxsJykpLnRvU3Ry
aW5nKCkgaXMgIltvYmplY3QgU1ZHUGFpbnRdIgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlz
IFNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IKK1BBU1MgZmlsbFBhaW50LnVyaSBpcyAi
IgorUEFTUyBmaWxsUGFpbnQuY29sb3JUeXBlIGlzIFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdC
Q09MT1IKK1BBU1MgKGZpbGxDb2xvciA9IGZpbGxQYWludC5yZ2JDb2xvcikudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBSR0JDb2xvcl0iCitQQVNTIGZpbGxDb2xvci5yZWQuZ2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGZpbGxDb2xvci5ncmVlbi5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDEyOAorUEFTUyBm
aWxsQ29sb3IuYmx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIp
IGlzIDAKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAiIzAwODAwMCIKK1BBU1MgZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAi
IzAwODAwMCIKKworVHJ5IGludmFsaWQgYXJndW1lbnRzIGZvciBzZXRQYWludCgpCitQQVNTIGZp
bGxQYWludC5zZXRQYWludChudWxsLCBudWxsLCBudWxsLCBudWxsKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMS4KK1BBU1Mg
ZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIHN2Z0Vs
ZW1lbnQsICcnLCAnJyk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVf
RVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFp
bnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgJycsICcnKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZH
UGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiArIDEsICcnLCAnJywgJycpOyB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19XUk9OR19UWVBFX0VSUjogRE9NIFNWRyBFeGNlcHRp
b24gMC4KK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfTk9O
RSAtIDEsICcnLCAnJywgJycpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19XUk9OR19UWVBF
X0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMC4KK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1Bh
aW50LlNWR19QQUlOVFRZUEVfVVJJICsgMSwgJycsICcnLCAnJyk7IHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1ZHX1dST05HX1RZUEVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAwLgorUEFTUyBmaWxs
UGFpbnQuc2V0UGFpbnQoKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzLgorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoZmlsbFBhaW50KSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorCitUcnkgaW52YWxpZCBh
cmd1bWVudHMgZm9yIHNldFVyaSgpCitQQVNTIGZpbGxQYWludC5zZXRVcmkoKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorCitUcnkgYXNzaWduaW5n
IHRvIHRoZSByZWFkb25seSBwYWludFR5cGUgcHJvcGVydHksIHdoaWNoIHNpbGVudGx5IGZhaWxz
CitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgPSBTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VOS0tO
T1dOOyBpcyB1bmRlZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQu
U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUgorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICIj
MDA4MDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RF
bGVtZW50KS5maWxsIGlzICIjMDA4MDAwIgorCitUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNW
R19QQUlOVFRZUEVfVU5LTk9XTgorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZH
X1BBSU5UVFlQRV9VTktLTk9XTiwgJycsICcnLCAnJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
VkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDEuCitQQVNTIGZpbGxQYWlu
dC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VOS0tOT1dOLCAndXJsKCNmb28pJywg
JycsICcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9N
IFNWRyBFeGNlcHRpb24gMS4KK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19Q
QUlOVFRZUEVfVU5LS05PV04sICcnLCAncmdiKDAsMTI4LDEyOCknLCAnJykgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDEuCitQ
QVNTIGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VOS0tOT1dOLCAn
JywgJycsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDEuCitQQVNTIGZpbGxQ
YWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VOS0tOT1dOLCAndXJsKCNmb28p
JywgJ3JnYigwLDAsMCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgor
CitUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVfTk9ORSAtIGEKK1BBU1Mg
ZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfTk9ORSwgJycsICcnLCAn
JykgaXMgdW5kZWZpbmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNW
R19QQUlOVFRZUEVfTk9ORQorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJub25lIgor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5m
aWxsIGlzICJub25lIgorCitSZXNldCBzdHlsZSB0byBpbml0aWFsIHZhbHVlCitQQVNTIChmaWxs
UGFpbnQgPSByZWN0RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdmaWxsJykpLnRv
U3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHUGFpbnRdIgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBl
IGlzIFNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IKK1BBU1MgcmVjdEVsZW1lbnQuc3R5
bGUuZmlsbCBpcyAiIzAwODAwMCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAiIzAwODAwMCIKKworVGVzdCB1c2luZyBzZXRQ
YWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX05PTkUgLSBiCitQQVNTIGZpbGxQYWludC5zZXRQYWlu
dChTVkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUsICd1cmwoI2ZvbyknLCAnJywgJycpIGlzIHVu
ZGVmaW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWludC5TVkdfUEFJTlRU
WVBFX05PTkUKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAibm9uZSIKK1BBU1MgZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAi
bm9uZSIKKworUmVzZXQgc3R5bGUgdG8gaW5pdGlhbCB2YWx1ZQorUEFTUyAoZmlsbFBhaW50ID0g
cmVjdEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZmlsbCcpKS50b1N0cmluZygp
IGlzICJbb2JqZWN0IFNWR1BhaW50XSIKK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQ
YWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SCitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwg
aXMgIiMwMDgwMDAiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
cmVjdEVsZW1lbnQpLmZpbGwgaXMgIiMwMDgwMDAiCisKK1Rlc3QgdXNpbmcgc2V0UGFpbnQoKSBh
bmQgU1ZHX1BBSU5UVFlQRV9OT05FIC0gYworUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFp
bnQuU1ZHX1BBSU5UVFlQRV9OT05FLCAnJywgJ3JnYigwLDEyOCwxMjgpJywgJycpIGlzIHVuZGVm
aW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWludC5TVkdfUEFJTlRUWVBF
X05PTkUKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAibm9uZSIKK1BBU1MgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAibm9u
ZSIKKworUmVzZXQgc3R5bGUgdG8gaW5pdGlhbCB2YWx1ZQorUEFTUyAoZmlsbFBhaW50ID0gcmVj
dEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZmlsbCcpKS50b1N0cmluZygpIGlz
ICJbb2JqZWN0IFNWR1BhaW50XSIKK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWlu
dC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SCitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMg
IiMwMDgwMDAiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVj
dEVsZW1lbnQpLmZpbGwgaXMgIiMwMDgwMDAiCisKK1Rlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQg
U1ZHX1BBSU5UVFlQRV9OT05FIC0gZAorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQu
U1ZHX1BBSU5UVFlQRV9OT05FLCAnJywgJycsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykg
aXMgdW5kZWZpbmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNWR19Q
QUlOVFRZUEVfTk9ORQorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJub25lIgorUEFT
UyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxs
IGlzICJub25lIgorCitSZXNldCBzdHlsZSB0byBpbml0aWFsIHZhbHVlCitQQVNTIChmaWxsUGFp
bnQgPSByZWN0RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdmaWxsJykpLnRvU3Ry
aW5nKCkgaXMgIltvYmplY3QgU1ZHUGFpbnRdIgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlz
IFNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IKK1BBU1MgcmVjdEVsZW1lbnQuc3R5bGUu
ZmlsbCBpcyAiIzAwODAwMCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAiIzAwODAwMCIKKworVGVzdCB1c2luZyBzZXRQYWlu
dCgpIGFuZCBTVkdfUEFJTlRUWVBFX05PTkUgLSBlCitQQVNTIGZpbGxQYWludC5zZXRQYWludChT
VkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUsICd1cmwoI2ZvbyknLCAncmdiKDAsMCwwKScsICdp
Y2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykgaXMgdW5kZWZpbmVkLgorUEFTUyByZWN0RWxlbWVu
dC5zdHlsZS5maWxsIGlzICJub25lIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIGlzICJub25lIgorCitUZXN0IHVzaW5nIHNldFBh
aW50KCkgYW5kIFNWR19QQUlOVFRZUEVfVVJJIC0gYQorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQo
U1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkksICcnLCAnJywgJycpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgorUEFTUyBm
aWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNWR19QQUlOVFRZUEVfTk9ORQorUEFTUyBy
ZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJub25lIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIGlzICJub25lIgorCitUZXN0IHVz
aW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVfVVJJIC0gYgorUEFTUyBmaWxsUGFpbnQu
c2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkksICcnLCAncmdiKDAsMTI4LDEyOCkn
LCAnJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBT
VkcgRXhjZXB0aW9uIDEuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQuU1ZH
X1BBSU5UVFlQRV9OT05FCitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgIm5vbmUiCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZp
bGwgaXMgIm5vbmUiCisKK1Rlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9V
UkkgLSBjCitQQVNTIGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VS
SSwgJycsICcnLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxLgorUEFTUyBm
aWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNWR19QQUlOVFRZUEVfTk9ORQorUEFTUyBy
ZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJub25lIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIGlzICJub25lIgorCitUZXN0IHVz
aW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVfVVJJIC0gZAorUEFTUyBmaWxsUGFpbnQu
c2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkksICd1cmwoI3Rlc3QpJywgJycsICcn
KSBpcyB1bmRlZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQuU1ZH
X1BBSU5UVFlQRV9VUkkKK1BBU1MgZmlsbFBhaW50LnVyaSBpcyAidXJsKCN0ZXN0KSIKK1BBU1Mg
ZmlsbFBhaW50LmNvbG9yVHlwZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1VOS05PV04KK1BB
U1MgKGZpbGxDb2xvciA9IGZpbGxQYWludC5yZ2JDb2xvcikudG9TdHJpbmcoKSBpcyAiW29iamVj
dCBSR0JDb2xvcl0iCitQQVNTIGZpbGxDb2xvci5yZWQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGZpbGxDb2xvci5ncmVlbi5nZXRGbG9hdFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgZmlsbENvbG9yLmJs
dWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNT
IHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgInVybCgjdGVzdCkiCitQQVNTIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwgaXMgInVybCgjdGVz
dCkiCisKK1Jlc2V0IHN0eWxlIHRvIGluaXRpYWwgdmFsdWUKK1BBU1MgKGZpbGxQYWludCA9IHJl
Y3RFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2ZpbGwnKSkudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBTVkdQYWludF0iCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFp
bnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUgorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlz
ICIjMDA4MDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJl
Y3RFbGVtZW50KS5maWxsIGlzICIjMDA4MDAwIgorCitUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5k
IFNWR19QQUlOVFRZUEVfVVJJIC0gZQorUEFTUyBmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQu
U1ZHX1BBSU5UVFlQRV9VUkksICd1cmwoI2ZvbyknLCAncmdiKDAsMCwwKScsICdpY2MtY29sb3Io
bXlSR0IsIDAsIDEsIDIpJykgaXMgdW5kZWZpbmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBl
IGlzIFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJCitQQVNTIGZpbGxQYWludC51cmkgaXMgInVy
bCgjZm9vKSIKK1BBU1MgZmlsbFBhaW50LmNvbG9yVHlwZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JU
WVBFX1VOS05PV04KK1BBU1MgKGZpbGxDb2xvciA9IGZpbGxQYWludC5yZ2JDb2xvcikudG9TdHJp
bmcoKSBpcyAiW29iamVjdCBSR0JDb2xvcl0iCitQQVNTIGZpbGxDb2xvci5yZWQuZ2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGZpbGxDb2xvci5n
cmVlbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BB
U1MgZmlsbENvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVN
QkVSKSBpcyAwCitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgInVybCgjZm9vKSIKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmls
bCBpcyAidXJsKCNmb28pIgorCitUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZ
UEVfVVJJX05PTkUKK1BBU1MgZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZ
UEVfVVJJX05PTkUsICd1cmwoI3Rlc3QpJywgJ3JnYigwLDAsMCknLCAnaWNjLWNvbG9yKG15UkdC
LCAwLCAxLCAyKScpIGlzIHVuZGVmaW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBT
VkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSV9OT05FCitQQVNTIGZpbGxQYWludC51cmkgaXMgInVy
bCgjdGVzdCkiCitQQVNTIGZpbGxQYWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9S
VFlQRV9VTktOT1dOCitQQVNTIChmaWxsQ29sb3IgPSBmaWxsUGFpbnQucmdiQ29sb3IpLnRvU3Ry
aW5nKCkgaXMgIltvYmplY3QgUkdCQ29sb3JdIgorUEFTUyBmaWxsQ29sb3IucmVkLmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBmaWxsQ29sb3Iu
Z3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQ
QVNTIGZpbGxDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUikgaXMgMAorUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJ1cmwoI3Rlc3QpIG5v
bmUiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1l
bnQpLmZpbGwgaXMgInVybCgjdGVzdCkgbm9uZSIKKworVGVzdCB1c2luZyBzZXRQYWludCgpIGFu
ZCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IKK1BBU1MgZmlsbFBhaW50LnNldFBhaW50
KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiwgJ3VybCgjZm9vKScsICdy
Z2IoMCwwLDApJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSBpcyB1bmRlZmluZWQuCitQ
QVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUklfQ1VS
UkVOVENPTE9SCitQQVNTIGZpbGxQYWludC51cmkgaXMgInVybCgjZm9vKSIKK1BBU1MgZmlsbFBh
aW50LmNvbG9yVHlwZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUgorUEFT
UyAoZmlsbENvbG9yID0gZmlsbFBhaW50LnJnYkNvbG9yKS50b1N0cmluZygpIGlzICJbb2JqZWN0
IFJHQkNvbG9yXSIKK1BBU1MgZmlsbENvbG9yLnJlZC5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgZmlsbENvbG9yLmdyZWVuLmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBmaWxsQ29sb3IuYmx1
ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1Mg
cmVjdEVsZW1lbnQuc3R5bGUuZmlsbCBpcyAidXJsKCNmb28pIGN1cnJlbnRDb2xvciIKK0ZBSUwg
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBz
aG91bGQgYmUgdXJsKCNmb28pICMwMGZmMDAuIFdhcyB1cmwoI2ZvbykgY3VycmVudENvbG9yLgor
CitUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SCitQ
QVNTIGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xP
UiwgJ3VybCgjdGVzdCknLCAncmdiKDc3LDAsNzcpJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwg
MiknKSBpcyB1bmRlZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQu
U1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IKK1BBU1MgZmlsbFBhaW50LnVyaSBpcyAidXJsKCN0
ZXN0KSIKK1BBU1MgZmlsbFBhaW50LmNvbG9yVHlwZSBpcyBTVkdDb2xvci5TVkdfQ09MT1JUWVBF
X1JHQkNPTE9SCitQQVNTIChmaWxsQ29sb3IgPSBmaWxsUGFpbnQucmdiQ29sb3IpLnRvU3RyaW5n
KCkgaXMgIltvYmplY3QgUkdCQ29sb3JdIgorUEFTUyBmaWxsQ29sb3IucmVkLmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgNzcKK1BBU1MgZmlsbENvbG9yLmdy
ZWVuLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFT
UyBmaWxsQ29sb3IuYmx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1C
RVIpIGlzIDc3CitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgInVybCgjdGVzdCkgIzRk
MDA0ZCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxl
bWVudCkuZmlsbCBpcyAidXJsKCN0ZXN0KSAjNGQwMDRkIgorCitUZXN0IHVzaW5nIHNldFBhaW50
KCkgYW5kIFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SCitQQVNTIGZpbGxQYWlu
dC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiwg
J3VybCgjZm9vKScsICdyZ2IoNzcsMCw3NyknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScp
IGlzIHVuZGVmaW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50VHlwZSBpcyBTVkdQYWludC5TVkdf
UEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUgorUEFTUyBmaWxsUGFpbnQudXJpIGlzICJ1
cmwoI2ZvbykiCitQQVNTIGZpbGxQYWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9S
VFlQRV9SR0JDT0xPUl9JQ0NDT0xPUgorUEFTUyAoZmlsbENvbG9yID0gZmlsbFBhaW50LnJnYkNv
bG9yKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFJHQkNvbG9yXSIKK1BBU1MgZmlsbENvbG9yLnJl
ZC5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDc3CitQQVNT
IGZpbGxDb2xvci5ncmVlbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1C
RVIpIGlzIDAKK1BBU1MgZmlsbENvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZS5DU1NfTlVNQkVSKSBpcyA3NworUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICJ1
cmwoI2ZvbykgIzRkMDA0ZCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAidXJsKCNmb28pICM0ZDAwNGQiCisKK1Rlc3QgdXNp
bmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUgorUEFTUyBm
aWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xP
UiwgJ3VybCgjdGVzdCknLCAncmdiKDc3LDAsNzcpJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwg
MiknKSBpcyB1bmRlZmluZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQu
U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUgorUEFTUyBmaWxsUGFpbnQudXJpIGlzICIi
CitQQVNTIGZpbGxQYWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JD
T0xPUl9JQ0NDT0xPUgorUEFTUyAoZmlsbENvbG9yID0gZmlsbFBhaW50LnJnYkNvbG9yKS50b1N0
cmluZygpIGlzICJbb2JqZWN0IFJHQkNvbG9yXSIKK1BBU1MgZmlsbENvbG9yLnJlZC5nZXRGbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDc3CitQQVNTIGZpbGxDb2xv
ci5ncmVlbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAK
K1BBU1MgZmlsbENvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1Nf
TlVNQkVSKSBpcyA3NworUEFTUyByZWN0RWxlbWVudC5zdHlsZS5maWxsIGlzICIjNGQwMDRkIgor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5m
aWxsIGlzICIjNGQwMDRkIgorCitUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZ
UEVfQ1VSUkVOVENPTE9SCitQQVNTIGZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJ
TlRUWVBFX0NVUlJFTlRDT0xPUiwgJ3VybCgjZm9vKScsICdyZ2IoNzcsMCw3NyknLCAnaWNjLWNv
bG9yKG15UkdCLCAwLCAxLCAyKScpIGlzIHVuZGVmaW5lZC4KK1BBU1MgZmlsbFBhaW50LnBhaW50
VHlwZSBpcyBTVkdQYWludC5TVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUgorUEFTUyBmaWxsUGFp
bnQudXJpIGlzICIiCitQQVNTIGZpbGxQYWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NP
TE9SVFlQRV9DVVJSRU5UQ09MT1IKK1BBU1MgKGZpbGxDb2xvciA9IGZpbGxQYWludC5yZ2JDb2xv
cikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBSR0JDb2xvcl0iCitQQVNTIGZpbGxDb2xvci5yZWQu
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGZp
bGxDb2xvci5ncmVlbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIp
IGlzIDAKK1BBU1MgZmlsbENvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIHJlY3RFbGVtZW50LnN0eWxlLmZpbGwgaXMgImN1cnJl
bnRDb2xvciIKK0ZBSUwgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0
RWxlbWVudCkuZmlsbCBzaG91bGQgYmUgIzAwZmYwMC4gV2FzIGN1cnJlbnRDb2xvci4KKworVGVz
dCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SCitQQVNTIGZpbGxQ
YWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCAndXJsKCN0ZXN0
KScsICdyZ2IoMCw3NywwKScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykgaXMgdW5kZWZp
bmVkLgorUEFTUyBmaWxsUGFpbnQucGFpbnRUeXBlIGlzIFNWR1BhaW50LlNWR19QQUlOVFRZUEVf
UkdCQ09MT1IKK1BBU1MgZmlsbFBhaW50LnVyaSBpcyAiIgorUEFTUyBmaWxsUGFpbnQuY29sb3JU
eXBlIGlzIFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdCQ09MT1IKK1BBU1MgKGZpbGxDb2xvciA9
IGZpbGxQYWludC5yZ2JDb2xvcikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBSR0JDb2xvcl0iCitQ
QVNTIGZpbGxDb2xvci5yZWQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVN
QkVSKSBpcyAwCitQQVNTIGZpbGxDb2xvci5ncmVlbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDc3CitQQVNTIGZpbGxDb2xvci5ibHVlLmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyByZWN0RWxlbWVudC5z
dHlsZS5maWxsIGlzICIjMDA0ZDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIGlzICIjMDA0ZDAwIgorCitUZXN0IHVzaW5nIHNl
dFVyaSgpCitQQVNTIGZpbGxQYWludC5zZXRVcmkoJ3VybCgjZm9vYmFyKScpOyBpcyB1bmRlZmlu
ZWQuCitQQVNTIGZpbGxQYWludC5wYWludFR5cGUgaXMgU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9V
UklfTk9ORQorUEFTUyBmaWxsUGFpbnQudXJpIGlzICJ1cmwoI2Zvb2JhcikiCitQQVNTIGZpbGxQ
YWludC5jb2xvclR5cGUgaXMgU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9VTktOT1dOCitQQVNTIChm
aWxsQ29sb3IgPSBmaWxsUGFpbnQucmdiQ29sb3IpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgUkdC
Q29sb3JdIgorUEFTUyBmaWxsQ29sb3IucmVkLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBmaWxsQ29sb3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGZpbGxDb2xvci5ibHVlLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyByZWN0
RWxlbWVudC5zdHlsZS5maWxsIGlzICJ1cmwoI2Zvb2Jhcikgbm9uZSIKK1BBU1MgZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCBpcyAidXJsKCNm
b29iYXIpIG5vbmUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQYWludC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHUGFpbnQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHUGFpbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvU1ZHUGFpbnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9TVkdD
b2xvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9T
VkdDb2xvci5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LXRl
c3RzL1NWR0NvbG9yLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgU1ZHQ29sb3IgQVBJIik7CisKKy8vIFNldHVwIGEgcmVh
bCBTVkcgZG9jdW1lbnQsIGFzIHdlIHdhbnQgdG8gYWNjZXNzIENTUyBzdHlsZSBpbmZvcm1hdGlv
bi4KK3ZhciBzdmdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJzdmciKTsKK3N2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0
aCIsICIxNTAiKTsKK3N2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiNTAiKTsKKwor
dmFyIHN0b3BFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJzdG9wIik7CitzdG9wRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxl
IiwgInN0b3AtY29sb3I6IHJlZDsgY29sb3I6IGdyZWVuIik7CitzdmdFbGVtZW50LmFwcGVuZENo
aWxkKHN0b3BFbGVtZW50KTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIp
LmFwcGVuZENoaWxkKHN2Z0VsZW1lbnQpOworCitmdW5jdGlvbiBjaGVja1N0b3BDb2xvcih0eXBl
LCByZWQsIGdyZWVuLCBibHVlKSB7CisgICAgc2hvdWxkQmUoInN0b3BDb2xvci5jb2xvclR5cGUi
LCB0eXBlKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIihyZ2JDb2xvciA9IHN0b3BDb2xv
ci5yZ2JDb2xvcikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFJHQkNvbG9yXSIpOworICAgIHNob3Vs
ZEJlKCJyZ2JDb2xvci5yZWQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVN
QkVSKSIsICIiICsgcmVkKTsKKyAgICBzaG91bGRCZSgicmdiQ29sb3IuZ3JlZW4uZ2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSIsICIiICsgZ3JlZW4pOworICAgIHNo
b3VsZEJlKCJyZ2JDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NT
X05VTUJFUikiLCAiIiArIGJsdWUpOworfQorCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hlY2sgaW5p
dGlhbCBjb2xvciB2YWx1ZXMiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiKHN0b3BDb2xvciA9
IHN0b3BFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ3N0b3AtY29sb3InKSkudG9T
dHJpbmcoKSIsICJbb2JqZWN0IFNWR0NvbG9yXSIpOworY2hlY2tTdG9wQ29sb3IoIlNWR0NvbG9y
LlNWR19DT0xPUlRZUEVfUkdCQ09MT1IiLCAyNTUsIDAsIDApOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzdG9wRWxlbWVudC5zdHlsZS5zdG9wQ29sb3IiLCAiI2ZmMDAwMCIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHN0b3BF
bGVtZW50KS5zdG9wQ29sb3IiLCAicmdiKDI1NSwgMCwgMCkiKTsKKworZGVidWcoIiIpOworZGVi
dWcoIlRyeSBpbnZhbGlkIGFyZ3VtZW50cyBmb3Igc2V0Q29sb3IoKSIpOworc2hvdWxkVGhyb3co
InN0b3BDb2xvci5zZXRDb2xvcihudWxsLCBudWxsLCBudWxsKSIpOworc2hvdWxkVGhyb3coInN0
b3BDb2xvci5zZXRDb2xvcihTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SLCBzdmdFbGVt
ZW50LCAnJyk7Iik7CitzaG91bGRUaHJvdygic3RvcENvbG9yLnNldENvbG9yKFNWR0NvbG9yLlNW
R19DT0xPUlRZUEVfUkdCQ09MT1IsICcnLCAnJykiKTsKK3Nob3VsZFRocm93KCJzdG9wQ29sb3Iu
c2V0Q29sb3IoU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IgKyAxLCAnJywgJycp
OyIpOworc2hvdWxkVGhyb3coInN0b3BDb2xvci5zZXRDb2xvcigpIik7CitzaG91bGRUaHJvdygi
c3RvcENvbG9yLnNldENvbG9yKHN0b3BDb2xvcikiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRy
eSBhc3NpZ25pbmcgdG8gdGhlIHJlYWRvbmx5IGNvbG9yVHlwZSBwcm9wZXJ0eSwgd2hpY2ggc2ls
ZW50bHkgZmFpbHMiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJzdG9wQ29sb3IuY29sb3JUeXBlID0g
U1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9VTktLTk9XTjsiKTsKK3Nob3VsZEJlKCJzdG9wQ29sb3Iu
Y29sb3JUeXBlIiwgIlNWR0NvbG9yLlNWR19DT0xPUlRZUEVfUkdCQ09MT1IiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygic3RvcEVsZW1lbnQuc3R5bGUuc3RvcENvbG9yIiwgIiNmZjAwMDAiKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShzdG9wRWxlbWVudCkuc3RvcENvbG9yIiwgInJnYigyNTUsIDAsIDApIik7CisKK2RlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldENvbG9yKCkgYW5kIFNWR19DT0xPUlRZUEVfVU5L
Tk9XTiIpOworc2hvdWxkVGhyb3coInN0b3BDb2xvci5zZXRDb2xvcihTVkdDb2xvci5TVkdfQ09M
T1JUWVBFX1VOS0tOT1dOLCAnJywgJycpIik7CitzaG91bGRUaHJvdygic3RvcENvbG9yLnNldENv
bG9yKFNWR0NvbG9yLlNWR19DT0xPUlRZUEVfVU5LS05PV04sICdyZ2IoMCwxMjgsMTI4KScsICcn
KSIpOworc2hvdWxkVGhyb3coInN0b3BDb2xvci5zZXRDb2xvcihTVkdDb2xvci5TVkdfQ09MT1JU
WVBFX1VOS0tOT1dOLCAnJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSIpOworc2hvdWxk
VGhyb3coInN0b3BDb2xvci5zZXRDb2xvcihTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1VOS0tOT1dO
LCAncmdiKDAsMCwwKScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykiKTsKKworZGVidWco
IiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0Q29sb3IoKSBhbmQgU1ZHX0NPTE9SVFlQRV9SR0JD
T0xPUl9JQ0NDT0xPUiIpOworc2hvdWxkQmVVbmRlZmluZWQoInN0b3BDb2xvci5zZXRDb2xvcihT
VkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SLCAncmdiKDc3LDAsNzcpJywg
J2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSIpOworc2hvdWxkQmUoInN0b3BDb2xvci5jb2xv
clR5cGUiLCAiU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiIpOworLy8g
RklYTUU6IE5vIHN1cHBvcnQgZm9yIElDQyBjb2xvcnMuCitjaGVja1N0b3BDb2xvcigiU1ZHQ29s
b3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiIsIDc3LCAwLCA3Nyk7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInN0b3BFbGVtZW50LnN0eWxlLnN0b3BDb2xvciIsICIjNGQwMDRkIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoc3RvcEVsZW1lbnQpLnN0b3BDb2xvciIsICJyZ2IoNzcsIDAsIDc3KSIpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRDb2xvcigpIGFuZCBTVkdfQ09MT1JUWVBFX0NV
UlJFTlRDT0xPUiIpOworc2hvdWxkQmVVbmRlZmluZWQoInN0b3BDb2xvci5zZXRDb2xvcihTVkdD
b2xvci5TVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiwgJ3JnYig3NywwLDc3KScsICdpY2MtY29s
b3IobXlSR0IsIDAsIDEsIDIpJykiKTsKK3Nob3VsZEJlKCJzdG9wQ29sb3IuY29sb3JUeXBlIiwg
IlNWR0NvbG9yLlNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SIik7CitjaGVja1N0b3BDb2xvcigi
U1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IiLCAwLCAwLCAwKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygic3RvcEVsZW1lbnQuc3R5bGUuc3RvcENvbG9yIiwgImN1cnJlbnRDb2xv
ciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHN0b3BFbGVtZW50KS5zdG9wQ29sb3IiLCAicmdiKDAsIDEyOCwgMCkiKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0Q29sb3IoKSBhbmQgU1ZHX0NPTE9SVFlQ
RV9SR0JDT0xPUiIpOworc2hvdWxkQmVVbmRlZmluZWQoInN0b3BDb2xvci5zZXRDb2xvcihTVkdD
b2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SLCAncmdiKDAsNzcsMCknLCAnaWNjLWNvbG9yKG15
UkdCLCAwLCAxLCAyKScpIik7CitzaG91bGRCZSgic3RvcENvbG9yLmNvbG9yVHlwZSIsICJTVkdD
b2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SIik7CitjaGVja1N0b3BDb2xvcigiU1ZHQ29sb3Iu
U1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiIsIDAsIDc3LCAwKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzdG9wRWxlbWVudCkuc3Rv
cENvbG9yIiwgInJnYigwLCA3NywgMCkiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LXRlc3RzL1NWR1BhaW50LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LXRlc3RzL1NWR1BhaW50LmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtdGVzdHMvU1ZHUGFpbnQu
anMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjI5IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNoZWNrcyB0aGUgU1ZHUGFpbnQgQVBJIik7CisKKy8vIFNldHVwIGEgcmVhbCBTVkcgZG9jdW1l
bnQsIGFzIHdlIHdhbnQgdG8gYWNjZXNzIENTUyBzdHlsZSBpbmZvcm1hdGlvbi4KK3ZhciBzdmdF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJzdmciKTsKK3N2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIxNTAiKTsK
K3N2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiNTAiKTsKKwordmFyIHJlY3RFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJyZWN0Iik7CityZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImNvbG9yOiBs
aW1lOyBmaWxsOiBncmVlbiIpOworcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIx
NTAiKTsKK3JlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjUwIik7CitzdmdFbGVt
ZW50LmFwcGVuZENoaWxkKHJlY3RFbGVtZW50KTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
ZXNjcmlwdGlvbiIpLmFwcGVuZENoaWxkKHN2Z0VsZW1lbnQpOworCisvLyBGSVhNRTogTW9zdCB0
ZXN0cyB0aGF0IGV4YW1pbmUgdGhlIGNvbXB1dGVkIHN0eWxlIGFmdGVyIG1vZGlmeWluZyB0aGUg
U1ZHUGFpbnQgb2JqZWN0IGZhaWwsIGFzIHdlIGRvbid0IHN1cHBvcnQKKy8vIGludmFsaWRhdGlv
biBvZiB0aGUgc3R5bGUsIGlmIGEgQ1NTVmFsdWUgY2hhbmdlcywgaXQncyBhbHNvIGRhbmdlcm91
cywgYXMgdGhlIENTU1ZhbHVlcyBhcmUgcG9zc2libHkgc2hhcmVkLgorLy8gV2Ugd291bGQgbmVl
ZCBjb3B5LW9uLXdyaXRlIHN1cHBvcnQgZm9yIENTU1ZhbHVlIGZpcnN0LCB0byBtYWtlIHRoaXMg
d29yay4gSXQncyBsb3cgcHJpb3JpdHkgdGhvdWdoLgorLy8gTm8tb25lIHN1cHBvcnRzIG1vZGlm
eWluZyB0aGUgU1ZHUGFpbnQgb2JqZWN0LgorCitmdW5jdGlvbiByZXNldFN0eWxlKCkgeworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiUmVzZXQgc3R5bGUgdG8gaW5pdGlhbCB2YWx1ZSIpOwor
ICAgIHJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiY29sb3I6IGxpbWU7IGZpbGw6
IGdyZWVuIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCIoZmlsbFBhaW50ID0gcmVjdEVs
ZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZmlsbCcpKS50b1N0cmluZygpIiwgIltv
YmplY3QgU1ZHUGFpbnRdIik7CisgICAgc2hvdWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAi
U1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygicmVjdEVsZW1lbnQuc3R5bGUuZmlsbCIsICIjMDA4MDAwIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RF
bGVtZW50KS5maWxsIiwgIiMwMDgwMDAiKTsKK30KKworZnVuY3Rpb24gY2hlY2tGaWxsQ29sb3Io
dHlwZSwgcmVkLCBncmVlbiwgYmx1ZSkgeworICAgIHNob3VsZEJlKCJmaWxsUGFpbnQuY29sb3JU
eXBlIiwgdHlwZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCIoZmlsbENvbG9yID0gZmls
bFBhaW50LnJnYkNvbG9yKS50b1N0cmluZygpIiwgIltvYmplY3QgUkdCQ29sb3JdIik7CisgICAg
c2hvdWxkQmUoImZpbGxDb2xvci5yZWQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5D
U1NfTlVNQkVSKSIsICIiICsgcmVkKTsKKyAgICBzaG91bGRCZSgiZmlsbENvbG9yLmdyZWVuLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikiLCAiIiArIGdyZWVuKTsK
KyAgICBzaG91bGRCZSgiZmlsbENvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZS5DU1NfTlVNQkVSKSIsICIiICsgYmx1ZSk7Cit9CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJD
aGVjayBpbml0aWFsIHBhaW50IHZhbHVlcyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCIoZmls
bFBhaW50ID0gcmVjdEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZmlsbCcpKS50
b1N0cmluZygpIiwgIltvYmplY3QgU1ZHUGFpbnRdIik7CitzaG91bGRCZSgiZmlsbFBhaW50LnBh
aW50VHlwZSIsICJTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SIik7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImZpbGxQYWludC51cmkiLCAiIik7CitjaGVja0ZpbGxDb2xvcigiU1ZHQ29s
b3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiIsIDAsIDEyOCwgMCk7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAiIzAwODAwMCIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVt
ZW50KS5maWxsIiwgIiMwMDgwMDAiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRyeSBpbnZhbGlk
IGFyZ3VtZW50cyBmb3Igc2V0UGFpbnQoKSIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQ
YWludChudWxsLCBudWxsLCBudWxsLCBudWxsKSIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5z
ZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCBzdmdFbGVtZW50LCAnJywg
JycpOyIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJ
TlRUWVBFX1JHQkNPTE9SLCAnJywgJycpIik7CitzaG91bGRUaHJvdygiZmlsbFBhaW50LnNldFBh
aW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgKyAxLCAnJywgJycs
ICcnKTsiKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BB
SU5UVFlQRV9OT05FIC0gMSwgJycsICcnLCAnJyk7Iik7CitzaG91bGRUaHJvdygiZmlsbFBhaW50
LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJICsgMSwgJycsICcnLCAnJyk7Iik7
CitzaG91bGRUaHJvdygiZmlsbFBhaW50LnNldFBhaW50KCkiKTsKK3Nob3VsZFRocm93KCJmaWxs
UGFpbnQuc2V0UGFpbnQoZmlsbFBhaW50KSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVHJ5IGlu
dmFsaWQgYXJndW1lbnRzIGZvciBzZXRVcmkoKSIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5z
ZXRVcmkoKSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVHJ5IGFzc2lnbmluZyB0byB0aGUgcmVh
ZG9ubHkgcGFpbnRUeXBlIHByb3BlcnR5LCB3aGljaCBzaWxlbnRseSBmYWlscyIpOworc2hvdWxk
QmVVbmRlZmluZWQoImZpbGxQYWludC5wYWludFR5cGUgPSBTVkdQYWludC5TVkdfUEFJTlRUWVBF
X1VOS0tOT1dOOyIpOworc2hvdWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQu
U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxl
bWVudC5zdHlsZS5maWxsIiwgIiMwMDgwMDAiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCIsICIj
MDA4MDAwIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5k
IFNWR19QQUlOVFRZUEVfVU5LTk9XTiIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQYWlu
dChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VOS0tOT1dOLCAnJywgJycsICcnKSIpOworc2hvdWxk
VGhyb3coImZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VOS0tOT1dO
LCAndXJsKCNmb28pJywgJycsICcnKSIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQYWlu
dChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VOS0tOT1dOLCAnJywgJ3JnYigwLDEyOCwxMjgpJywg
JycpIik7CitzaG91bGRUaHJvdygiZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlO
VFRZUEVfVU5LS05PV04sICcnLCAnJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSIpOwor
c2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VO
S0tOT1dOLCAndXJsKCNmb28pJywgJ3JnYigwLDAsMCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAx
LCAyKScpIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5k
IFNWR19QQUlOVFRZUEVfTk9ORSAtIGEiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQu
c2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05FLCAnJywgJycsICcnKSIpOworc2hv
dWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05F
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAibm9u
ZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgIm5vbmUiKTsKK3Jlc2V0U3R5bGUoKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQ
RV9OT05FIC0gYiIpOworc2hvdWxkQmVVbmRlZmluZWQoImZpbGxQYWludC5zZXRQYWludChTVkdQ
YWludC5TVkdfUEFJTlRUWVBFX05PTkUsICd1cmwoI2ZvbyknLCAnJywgJycpIik7CitzaG91bGRC
ZSgiZmlsbFBhaW50LnBhaW50VHlwZSIsICJTVkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUiKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygicmVjdEVsZW1lbnQuc3R5bGUuZmlsbCIsICJub25lIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUocmVjdEVsZW1lbnQpLmZpbGwiLCAibm9uZSIpOworcmVzZXRTdHlsZSgpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX05P
TkUgLSBjIik7CitzaG91bGRCZVVuZGVmaW5lZCgiZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50
LlNWR19QQUlOVFRZUEVfTk9ORSwgJycsICdyZ2IoMCwxMjgsMTI4KScsICcnKSIpOworc2hvdWxk
QmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9OT05FIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAibm9uZSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgIm5vbmUiKTsKK3Jlc2V0U3R5bGUoKTsKKworZGVi
dWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9O
T05FIC0gZCIpOworc2hvdWxkQmVVbmRlZmluZWQoImZpbGxQYWludC5zZXRQYWludChTVkdQYWlu
dC5TVkdfUEFJTlRUWVBFX05PTkUsICcnLCAnJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMikn
KSIpOworc2hvdWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5U
VFlQRV9OT05FIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZp
bGwiLCAibm9uZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgIm5vbmUiKTsKK3Jlc2V0U3R5
bGUoKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQgU1ZH
X1BBSU5UVFlQRV9OT05FIC0gZSIpOworc2hvdWxkQmVVbmRlZmluZWQoImZpbGxQYWludC5zZXRQ
YWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUsICd1cmwoI2ZvbyknLCAncmdiKDAsMCww
KScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygicmVjdEVsZW1lbnQuc3R5bGUuZmlsbCIsICJub25lIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZp
bGwiLCAibm9uZSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRQYWludCgp
IGFuZCBTVkdfUEFJTlRUWVBFX1VSSSAtIGEiKTsKK3Nob3VsZFRocm93KCJmaWxsUGFpbnQuc2V0
UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkksICcnLCAnJywgJycpIik7CitzaG91bGRC
ZSgiZmlsbFBhaW50LnBhaW50VHlwZSIsICJTVkdQYWludC5TVkdfUEFJTlRUWVBFX05PTkUiKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygicmVjdEVsZW1lbnQuc3R5bGUuZmlsbCIsICJub25lIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUocmVjdEVsZW1lbnQpLmZpbGwiLCAibm9uZSIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
VGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VSSSAtIGIiKTsKK3Nob3Vs
ZFRocm93KCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkksICcn
LCAncmdiKDAsMTI4LDEyOCknLCAnJykiKTsKK3Nob3VsZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBl
IiwgIlNWR1BhaW50LlNWR19QQUlOVFRZUEVfTk9ORSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgIm5vbmUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0RWxlbWVudCkuZmls
bCIsICJub25lIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkg
YW5kIFNWR19QQUlOVFRZUEVfVVJJIC0gYyIpOworc2hvdWxkVGhyb3coImZpbGxQYWludC5zZXRQ
YWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSSwgJycsICcnLCAnaWNjLWNvbG9yKG15UkdC
LCAwLCAxLCAyKScpIik7CitzaG91bGRCZSgiZmlsbFBhaW50LnBhaW50VHlwZSIsICJTVkdQYWlu
dC5TVkdfUEFJTlRUWVBFX05PTkUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygicmVjdEVsZW1l
bnQuc3R5bGUuZmlsbCIsICJub25lIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwiLCAibm9uZSIp
OworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJ
TlRUWVBFX1VSSSAtIGQiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQuc2V0UGFpbnQo
U1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkksICd1cmwoI3Rlc3QpJywgJycsICcnKSIpOworc2hv
dWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUkki
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFBhaW50LnVyaSIsICJ1cmwoI3Rlc3QpIik7
CitjaGVja0ZpbGxDb2xvcigiU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9VTktOT1dOIiwgMCwgMCwg
MCk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAidXJs
KCN0ZXN0KSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgInVybCgjdGVzdCkiKTsKK3Jlc2V0
U3R5bGUoKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQg
U1ZHX1BBSU5UVFlQRV9VUkkgLSBlIik7CitzaG91bGRCZVVuZGVmaW5lZCgiZmlsbFBhaW50LnNl
dFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJLCAndXJsKCNmb28pJywgJ3JnYigwLDAs
MCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAxLCAyKScpIik7CitzaG91bGRCZSgiZmlsbFBhaW50
LnBhaW50VHlwZSIsICJTVkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSSIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJmaWxsUGFpbnQudXJpIiwgInVybCgjZm9vKSIpOworY2hlY2tGaWxsQ29sb3Io
IlNWR0NvbG9yLlNWR19DT0xPUlRZUEVfVU5LTk9XTiIsIDAsIDAsIDApOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgInVybCgjZm9vKSIpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJl
Y3RFbGVtZW50KS5maWxsIiwgInVybCgjZm9vKSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVz
dCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FIik7CitzaG91bGRC
ZVVuZGVmaW5lZCgiZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJ
X05PTkUsICd1cmwoI3Rlc3QpJywgJ3JnYigwLDAsMCknLCAnaWNjLWNvbG9yKG15UkdCLCAwLCAx
LCAyKScpIik7CitzaG91bGRCZSgiZmlsbFBhaW50LnBhaW50VHlwZSIsICJTVkdQYWludC5TVkdf
UEFJTlRUWVBFX1VSSV9OT05FIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxQYWludC51
cmkiLCAidXJsKCN0ZXN0KSIpOworY2hlY2tGaWxsQ29sb3IoIlNWR0NvbG9yLlNWR19DT0xPUlRZ
UEVfVU5LTk9XTiIsIDAsIDAsIDApOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxlbWVu
dC5zdHlsZS5maWxsIiwgInVybCgjdGVzdCkgbm9uZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxs
IiwgInVybCgjdGVzdCkgbm9uZSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBz
ZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IiKTsKK3Nob3VsZEJl
VW5kZWZpbmVkKCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUklf
Q1VSUkVOVENPTE9SLCAndXJsKCNmb28pJywgJ3JnYigwLDAsMCknLCAnaWNjLWNvbG9yKG15UkdC
LCAwLCAxLCAyKScpIik7CitzaG91bGRCZSgiZmlsbFBhaW50LnBhaW50VHlwZSIsICJTVkdQYWlu
dC5TVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZmlsbFBhaW50LnVyaSIsICJ1cmwoI2ZvbykiKTsKK2NoZWNrRmlsbENvbG9yKCJTVkdDb2xv
ci5TVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiIsIDAsIDAsIDApOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgInVybCgjZm9vKSBjdXJyZW50Q29sb3Ii
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShyZWN0RWxlbWVudCkuZmlsbCIsICJ1cmwoI2ZvbykgIzAwZmYwMCIpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdCB1c2luZyBzZXRQYWludCgpIGFuZCBTVkdfUEFJTlRUWVBFX1VS
SV9SR0JDT0xPUiIpOworc2hvdWxkQmVVbmRlZmluZWQoImZpbGxQYWludC5zZXRQYWludChTVkdQ
YWludC5TVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiwgJ3VybCgjdGVzdCknLCAncmdiKDc3LDAs
NzcpJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSIpOworc2hvdWxkQmUoImZpbGxQYWlu
dC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFBhaW50LnVyaSIsICJ1cmwoI3Rlc3QpIik7CitjaGVj
a0ZpbGxDb2xvcigiU1ZHQ29sb3IuU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUiIsIDc3LCAwLCA3Nyk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAidXJsKCN0
ZXN0KSAjNGQwMDRkIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUocmVjdEVsZW1lbnQpLmZpbGwiLCAidXJsKCN0ZXN0KSAjNGQw
MDRkIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNW
R19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SIik7CitzaG91bGRCZVVuZGVmaW5lZCgi
ZmlsbFBhaW50LnNldFBhaW50KFNWR1BhaW50LlNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lD
Q0NPTE9SLCAndXJsKCNmb28pJywgJ3JnYig3NywwLDc3KScsICdpY2MtY29sb3IobXlSR0IsIDAs
IDEsIDIpJykiKTsKK3Nob3VsZEJlKCJmaWxsUGFpbnQucGFpbnRUeXBlIiwgIlNWR1BhaW50LlNW
R19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImZpbGxQYWludC51cmkiLCAidXJsKCNmb28pIik7CisvLyBGSVhNRTogTm8gc3VwcG9ydCBm
b3IgSUNDIGNvbG9ycy4KK2NoZWNrRmlsbENvbG9yKCJTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JH
QkNPTE9SX0lDQ0NPTE9SIiwgNzcsIDAsIDc3KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygicmVj
dEVsZW1lbnQuc3R5bGUuZmlsbCIsICJ1cmwoI2ZvbykgIzRkMDA0ZCIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVt
ZW50KS5maWxsIiwgInVybCgjZm9vKSAjNGQwMDRkIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJU
ZXN0IHVzaW5nIHNldFBhaW50KCkgYW5kIFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1Ii
KTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BB
SU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiwgJ3VybCgjdGVzdCknLCAncmdiKDc3LDAsNzcpJywg
J2ljYy1jb2xvcihteVJHQiwgMCwgMSwgMiknKSIpOworc2hvdWxkQmUoImZpbGxQYWludC5wYWlu
dFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiIpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxsUGFpbnQudXJpIiwgIiIpOworLy8gRklYTUU6IE5vIHN1
cHBvcnQgZm9yIElDQyBjb2xvcnMuCitjaGVja0ZpbGxDb2xvcigiU1ZHQ29sb3IuU1ZHX0NPTE9S
VFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiIsIDc3LCAwLCA3Nyk7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAiIzRkMDA0ZCIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50
KS5maWxsIiwgIiM0ZDAwNGQiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0
UGFpbnQoKSBhbmQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IiKTsKK3Nob3VsZEJlVW5kZWZp
bmVkKCJmaWxsUGFpbnQuc2V0UGFpbnQoU1ZHUGFpbnQuU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09M
T1IsICd1cmwoI2ZvbyknLCAncmdiKDc3LDAsNzcpJywgJ2ljYy1jb2xvcihteVJHQiwgMCwgMSwg
MiknKSIpOworc2hvdWxkQmUoImZpbGxQYWludC5wYWludFR5cGUiLCAiU1ZHUGFpbnQuU1ZHX1BB
SU5UVFlQRV9DVVJSRU5UQ09MT1IiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFBhaW50
LnVyaSIsICIiKTsKK2NoZWNrRmlsbENvbG9yKCJTVkdDb2xvci5TVkdfQ09MT1JUWVBFX0NVUlJF
TlRDT0xPUiIsIDAsIDAsIDApOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxlbWVudC5z
dHlsZS5maWxsIiwgImN1cnJlbnRDb2xvciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3RFbGVtZW50KS5maWxsIiwgIiMw
MGZmMDAiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdXNpbmcgc2V0UGFpbnQoKSBhbmQg
U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiIpOworc2hvdWxkQmVVbmRlZmluZWQoImZpbGxQYWludC5z
ZXRQYWludChTVkdQYWludC5TVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCAndXJsKCN0ZXN0KScsICdy
Z2IoMCw3NywwKScsICdpY2MtY29sb3IobXlSR0IsIDAsIDEsIDIpJykiKTsKK3Nob3VsZEJlKCJm
aWxsUGFpbnQucGFpbnRUeXBlIiwgIlNWR1BhaW50LlNWR19QQUlOVFRZUEVfUkdCQ09MT1IiKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFBhaW50LnVyaSIsICIiKTsKK2NoZWNrRmlsbENv
bG9yKCJTVkdDb2xvci5TVkdfQ09MT1JUWVBFX1JHQkNPTE9SIiwgMCwgNzcsIDApOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJyZWN0RWxlbWVudC5zdHlsZS5maWxsIiwgIiMwMDRkMDAiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShyZWN0RWxlbWVudCkuZmlsbCIsICIjMDA0ZDAwIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJU
ZXN0IHVzaW5nIHNldFVyaSgpIik7CitzaG91bGRCZVVuZGVmaW5lZCgiZmlsbFBhaW50LnNldFVy
aSgndXJsKCNmb29iYXIpJyk7Iik7CitzaG91bGRCZSgiZmlsbFBhaW50LnBhaW50VHlwZSIsICJT
VkdQYWludC5TVkdfUEFJTlRUWVBFX1VSSV9OT05FIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImZpbGxQYWludC51cmkiLCAidXJsKCNmb29iYXIpIik7CitjaGVja0ZpbGxDb2xvcigiU1ZHQ29s
b3IuU1ZHX0NPTE9SVFlQRV9VTktOT1dOIiwgMCwgMCwgMCk7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInJlY3RFbGVtZW50LnN0eWxlLmZpbGwiLCAidXJsKCNmb29iYXIpIG5vbmUiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShy
ZWN0RWxlbWVudCkuZmlsbCIsICJ1cmwoI2Zvb2Jhcikgbm9uZSIpOworCitzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="75665"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>