<?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>12609</bug_id>
          
          <creation_ts>2007-02-05 05:47:50 -0800</creation_ts>
          <short_desc>Any SVG element will create renderers even when children of HTML elements</short_desc>
          <delta_ts>2007-02-28 00:57:10 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>27486</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-05 05:47:50 -0800</bug_when>
    <thetext>Any SVG element will create renderers even when children of HTML elements

This likely will result in all sorts of bad behavior and crashes.  Either every createRenderer() needs a check to makes sure it&apos;s parent is an SVG element, or HTMLElement::childShouldCreateRenderer() should return false for SVG elements when the document is not an xhtml document and the element is not an &lt;svg&gt; element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27465</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-05 06:42:38 -0800</bug_when>
    <thetext>    // These two methods are mutually exclusive.  The former is used to do strict error-checking
    // when adding children via the public DOM API (e.g., appendChild()).  The latter is called only when parsing, 
    // to sanity-check against the DTD for error recovery.
    void checkAddChild(Node* newChild, ExceptionCode&amp;); // Error-checking when adding via the DOM API
    virtual bool childAllowed(Node* newChild);          // Error-checking during parsing that checks the DTD


We need something like &quot;childAllowed&quot; which is called during appendChild, etc.  Something that can check the node name, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26906</commentid>
    <comment_count>2</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-05 20:01:15 -0800</bug_when>
    <thetext>We should block creating the renderer, not adding the child. I don&apos;t think xhtml and html documents should behave any differently for this. Ideally it would be SVG elements that implement the rule, they can check their parent is an svg element at createRenderer() time, and the &lt;svg&gt; element can override that and not check. Should this really be a P1 without a known symptom?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26760</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-06 05:49:00 -0800</bug_when>
    <thetext>I&apos;d like to fix this by adding a

bool HTMLElement::childShouldCreateRenderer(Node* child)
{
    if (!child-&gt;isSVGElement() || child-&gt;hasTagName(SVGNames::svgTag))
        return true;
}

The problem with checking in createRenderer() is that then *every* SVG createRenderer would need to check, since each of them is unique.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26755</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-06 05:49:53 -0800</bug_when>
    <thetext>Also, although I&apos;m confident we could find at least one crash here, I&apos;ll downgrade this to a p2 until a crash is demonstrated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22304</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-02-21 20:57:36 -0800</bug_when>
    <thetext>If SVG elements put the render tree in an invalid state by design, I think this should be a P1. If nothing else, this is a serious security concern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22305</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-02-21 21:00:42 -0800</bug_when>
    <thetext>Marking P1 for now, so this doesn&apos;t get lost in the shuffle. Let&apos;s talk about this on IRC if you disagree, Eric.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22233</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-22 13:34:00 -0800</bug_when>
    <thetext>I&apos;m not sure what you mean &quot;by design&quot;. :)  But yes, SVG renderers (and elements) generally assume that their parents are also SVG renderers (or elements).  This is part of the SVG spec, as SVG renderers require a &quot;viewport&quot; in order to measure distances from, etc.  (The concept of &quot;containing block&quot; in CSS is similar but not identical.)

WebKit currently would probably try to render something like this:

&lt;html xmlns=&apos;http://www.w3.org/1999/xhtml&apos;&gt;
   &lt;body&gt;
      &lt;div&gt;
         &lt;circle xmlns=&apos;http://www.w3.org/2000/svg&apos; /&gt;
       &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;

Even though it shouldn&apos;t, and it&apos;s likely that certain combinations of javascript calls (or other things which cause the renderer to reach for its containing viewport) could crash.

There are several ways to fix this:
1.  Make it disallowed for svg elements to be inserted under a parent other than an SVG element (mjs previously expressed over IRC that this would be &quot;bad&quot; since we currently only throw exceptions based on trying to insert bad node types, not bad node names).
2.  Change Element:: childShouldCreateRenderer() to disallow creation of SVG element renderers unless it&apos;s an SVGSVGElement, this would be overridden by SVGElement:: childShouldCreateRenderer() of course.  This is the easiest fix, but is perhaps a little hackish.
3.  Add some sort of &quot;Element::shouldCreateRendererWithParent(Element*)&quot; call and override it for SVGElement to produce this behavior.  (also clean, possibly hot code we&apos;re talking about here though.)
4.  Change every since SVGElement subclass createRenderer() to not create a renderer if the parent is not an SVGElement subclass.  (This is decent wrt OO design, but sucks in terms of the amount of duplicate code, and is prone to error.)

I recommend either 2. or 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22028</commentid>
    <comment_count>8</comment_count>
      <attachid>13343</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-02-22 23:56:15 -0800</bug_when>
    <thetext>Created attachment 13343
First  attempt

This is another possible approach, maybe we need to call it 5? :) It makes svg renderer building slightly slower since more checks are needed, but doesnt change Node.h. I am not sure whether we should check that parent can be xhtml element or just parent can&apos;t be a html element. I am waiting with the testcase until I am sure I have the right approach.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22012</commentid>
    <comment_count>9</comment_count>
      <attachid>13343</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-23 00:56:11 -0800</bug_when>
    <thetext>Comment on attachment 13343
First  attempt

+    if (parentNode() &amp;&amp; (parentNode()-&gt;isSVGElement() ||
+        parentNode()-&gt;isDocumentNode() ||
+        parentNode()-&gt;namespaceURI() != HTMLNames::xhtmlNamespaceURI))
+        return StyledElement::rendererIsNeeded(style);
+
+    return false;

1) I don&apos;t think you should check for the HTML namespace, instead, you should check that the parent is in the SVG namespace (or an SVG element or whatever).

2) I don&apos;t think the document node check is right - &lt;circle&gt; as a root of a document should not render.

3) This should specifically allow the &lt;svg:svg&gt; element to render inside a parent of any namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22002</commentid>
    <comment_count>10</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-23 00:57:33 -0800</bug_when>
    <thetext>Element::shouldCreateRendererWithParent is not needed, given Node::rendererIsNeeded, as Rob discovered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22003</commentid>
    <comment_count>11</comment_count>
      <attachid>13344</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-02-23 01:30:23 -0800</bug_when>
    <thetext>Created attachment 13344
Improved patch + testcase

After pointers from Maciej, this should be much better.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21948</commentid>
    <comment_count>12</comment_count>
      <attachid>13344</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-02-23 08:38:20 -0800</bug_when>
    <thetext>Comment on attachment 13344
Improved patch + testcase

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21901</commentid>
    <comment_count>13</comment_count>
      <attachid>13344</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-23 09:00:28 -0800</bug_when>
    <thetext>Comment on attachment 13344
Improved patch + testcase

Actually, I think the latest patch is still wrong (discussing with Rob).

It will allow all SVG elements to render as children of non-elements (which I think should not be allowed) and will allow the to render with no parent (not sure why this is needed or how it can even come up).

r- for now, waiting on revised version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21470</commentid>
    <comment_count>14</comment_count>
      <attachid>13375</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-02-26 02:24:20 -0800</bug_when>
    <thetext>Created attachment 13375
Improved patch

The new check is much better. Unfortunately we have to keep checking for parentNode() because of the code in SVGUseElement I think.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21472</commentid>
    <comment_count>15</comment_count>
      <attachid>13375</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-26 03:38:56 -0800</bug_when>
    <thetext>Comment on attachment 13375
Improved patch

This changes behavior.

At least for things which already had overridden rendererIsNeeded.

Also, what about &lt;svg:switch&gt;?   That also overrides rendererIsNeeded().  What if you place one of those inside a &lt;div&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21402</commentid>
    <comment_count>16</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-02-26 08:23:04 -0800</bug_when>
    <thetext>Hi Eric,

(In reply to comment #15)
&gt; (From update of attachment 13375 [edit])
&gt; This changes behavior.
&gt; 
&gt; At least for things which already had overridden rendererIsNeeded.

I am not sure what you mean? You mean compared to the previous patch? I am trying to implement it according to comment #2, which seems to make sense to me.

&gt; Also, what about &lt;svg:switch&gt;?   That also overrides rendererIsNeeded().  What
&gt; if you place one of those inside a &lt;div&gt;?

AFAIK this is not allowed as direct child? AFAIK the only way for compound docs by inclusion is by using the document element (&lt;svg&gt;) as only possible child? The compound docs by inclusion specs doesnt make clear to me what is allowed here though.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21008</commentid>
    <comment_count>17</comment_count>
      <attachid>13375</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-27 17:30:40 -0800</bug_when>
    <thetext>Comment on attachment 13375
Improved patch

I think this patch is fine, if it passes the layout tests. If Eric has concerns about specific cases, we can make new tests for those.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20999</commentid>
    <comment_count>18</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-27 19:33:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/5028151&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20939</commentid>
    <comment_count>19</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-28 00:57:10 -0800</bug_when>
    <thetext>This was landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13343</attachid>
            <date>2007-02-22 23:56:15 -0800</date>
            <delta_ts>2007-02-23 01:30:23 -0800</delta_ts>
            <desc>First  attempt</desc>
            <filename>12609.diff</filename>
            <type>text/plain</type>
            <size>21844</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTgyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMDctMDItMjMgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjA5CisgICAgICAgIEFueSBTVkcgZWxlbWVu
dCB3aWxsIGNyZWF0ZSByZW5kZXJlcnMgZXZlbiB3aGVuIGNoaWxkcmVuIG9mIEhUTUwgZWxlbWVu
dHMKKworICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0NpcmNs
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHA6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0RlZnNFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0Rlc2NFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZXNjRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdHRWxlbWVudC5oOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xpbmVFbGVt
ZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0
aEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVt
ZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3lt
Ym9sRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RS
ZWZFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RTcGFuRWxlbWVudC5oOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdUaXRsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RpdGxlRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1ZpZXdFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKwogMjAwNy0wMi0yMiAgS3J6eXN6dG9m
IEtvd2FsY3p5ayAgPGtrb3dhbGN6eWtAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gUm9iZW4sIHdobyBuZXZlciBzbGVlcHMuCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FFbGVtZW50
LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0
dHIpOwogCiAgICAgICAgIC8vIERlcml2ZWQgZnJvbTogJ1NWR1N0eWxlZEVsZW1lbnQnCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkgeyBy
ZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QgKmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwg
UmVuZGVyU3R5bGUgKnN0eWxlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCAqZXZ0KTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgZG91YmxlIGdldFNpbXBsZUR1cmF0aW9uKEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VSZW5kZXJlcigpOwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgp
IGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHls
ZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAogICAgIHBy
b3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZp
c2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCisgICAg
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4g
ZmFsc2U7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0
NSw2IEBAIGJvb2wgU1ZHRGVmc0VsZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiBT
VkdUZXN0czo6aXNWYWxpZCgpOwogfQogCi1ib29sIFNWR0RlZnNFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKLXsKLSAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHRGVmc0VsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxl
KQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIodGhp
cyk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAKICAgICAgICAgdmlydHVh
bCBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgCiAg
ICAgcHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVzY0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEZXNjRWxlbWVudC5oCShyZXZpc2lv
biAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0Rlc2NFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVh
bCB+U1ZHRGVzY0VsZW1lbnQoKTsKIAogICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSop
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRl
ICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2Uu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSogYXR0cik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFu
Z2UoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
c3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3Q7CiAKICAg
ICBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZp
c2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
KSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNv
bnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQog
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCgpIGNvbnN0ID0gMDsKIAorICAgICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNl
OyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVz
KFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsK
IAotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5
bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAg
ICAgICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKiBzdHlsZSk7CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHR0VsZW1lbnQuaAko
cmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdHRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkg
eyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRl
Q2hhbmdlKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
IAogICAgICAgICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7
CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0
eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQog
ICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogICAgICAgICAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJp
YnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25z
dDsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50
LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0Owog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHls
ZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAg
ICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3Vy
Y2UoKTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAxOTgy
MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAg
ICAgICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwogCkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0
dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBj
b25zdDsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuaAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJu
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNv
bnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7
IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFz
UmVzb3VyY2UoKTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2x5RWxlbWVudC5oCShyZXZpc2lv
biAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDggKzU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7IAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CiAKLSAgICAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJl
dHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQotCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdS
ZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVt
ZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
KiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNv
bnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7
IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAogICAgIHByb3Rl
Y3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsNyArMTEzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3Jt
IGdldFNjcmVlbkNUTSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1N0b3BFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3RvcEVs
ZW1lbnQuaAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdG9wRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikg
eyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICAKICAgICBwcml2YXRl
OgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5
ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDYgKzU5LDE2IEBAIFNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVt
ZW50KCkKIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU3R5bGVkRWxlbWVudCwg
U3RyaW5nLCBTdHJpbmcsIHN0cmluZywgQ2xhc3NOYW1lLCBjbGFzc05hbWUsIEhUTUxOYW1lczo6
Y2xhc3NBdHRyLmxvY2FsTmFtZSgpLCBtX2NsYXNzTmFtZSkKIAorYm9vbCBTVkdTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK3sKKyAgICBpZiAocGFy
ZW50Tm9kZSgpICYmIChwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpIHx8CisgICAgICAgIHBh
cmVudE5vZGUoKS0+aXNEb2N1bWVudE5vZGUoKSB8fAorICAgICAgICBwYXJlbnROb2RlKCktPm5h
bWVzcGFjZVVSSSgpICE9IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpKQorICAgICAgICBy
ZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHU3R5bGVkRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgLy8g
VGhlIHBhdGggZGF0YSBpcyBzZXQgdXBvbiB0aGUgZmlyc3QgbGF5b3V0KCkgY2FsbC4KSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyAnU1ZHU3R5bGFibGUn
IGZ1bmN0aW9ucwogICAgICAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIGltcGxlbWVudGVkLgotICAg
ICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKik7CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3QgeyByZXR1cm4g
UGF0aCgpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2Uq
IGNhbnZhc1Jlc291cmNlKCkgeyByZXR1cm4gMDsgfQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N3
aXRjaEVsZW1lbnQuaAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdT
d2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRBdHRhY2hDaGlsZChFbGVtZW50KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7
IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogIApJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKLSAg
ICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7
IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwogICAgICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSop
IGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkocmV2aXNpb24g
MTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdUU3Bh
bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1
YWwgflNWR1RTcGFuRWxlbWVudCgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxl
ZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAg
ICAgICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAg
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBnZXRDVE0oKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0
U2NyZWVuQ1RNKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2goKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCShyZXZp
c2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5
bGUqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2
MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGF0dGFjaCgpOwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdWaWV3RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHJl
dmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVmlld0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAv
LyAnU1ZHVmlld0VsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICBTVkdTdHJpbmdMaXN0ICp2aWV3
VGFyZ2V0KCkgY29uc3Q7CiAKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdGhpczsgfQogCg==
</data>
<flag name="review"
          id="5234"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13344</attachid>
            <date>2007-02-23 01:30:23 -0800</date>
            <delta_ts>2007-02-26 02:24:20 -0800</delta_ts>
            <desc>Improved patch + testcase</desc>
            <filename>12609-2.diff</filename>
            <type>text/plain</type>
            <size>28279</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5ODIyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMDItMjMgIFJvYiBCdWlzICA8YnVpc0Br
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCB0ZXN0Y2FzZSBmb3I6CisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjA5CisgICAgICAgIEFueSBTVkcgZWxlbWVudCB3aWxsIGNyZWF0ZSByZW5k
ZXJlcnMgZXZlbiB3aGVuIGNoaWxkcmVuIG9mIEhUTUwgZWxlbWVudHMKKworICAgICAgICAqIHN2
Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvY3VzdG9tL3hodG1sLW5vLXN2Zy1yZW5kZXJlci1leHBlY3RlZC5wbmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS94aHRtbC1uby1zdmctcmVuZGVy
ZXIueGh0bWw6IEFkZGVkLgorCiAyMDA3LTAyLTIyICBJYW4gRW5nICA8aWFuLmVuZy53ZWJraXRA
Z21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVjdGVkLmNoZWNrc3VtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVy
LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS94aHRtbC1uby1zdmctcmVuZGVyZXItZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEgQEAKKzE4ZjFmNjRlYWIzMWRmYjY5NDY3YTQ5N2RlOTQ0MmQ3ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94aHRtbC1uby1z
dmctcmVuZGVyZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9j
dXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDExNgorICBSZW5kZXJCbG9jayB7aHRtbH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTE2Cisg
ICAgUmVuZGVyQm9keSB7Ym9keX0gYXQgKDgsOCkgc2l6ZSA3ODR4MTAwCisgICAgICBSZW5kZXJC
bG9jayB7ZGl2fSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2JnY29sb3I9IzAwODAwMF0KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLnhodG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLnho
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94aHRtbC1uby1zdmct
cmVuZGVyZXIueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorPGh0bWwgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJ3aWR0
aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpncmVlbiI+Cis8cmVjdCB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBw
eCIgZmlsbD0icmVkIi8+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTgy
MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMDctMDItMjMgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjA5CisgICAgICAgIEFueSBTVkcgZWxlbWVudCB3aWxsIGNyZWF0ZSBy
ZW5kZXJlcnMgZXZlbiB3aGVuIGNoaWxkcmVuIG9mIEhUTUwgZWxlbWVudHMKKworICAgICAgICBB
bGxvdyBjcmVhdGlvbiBvZiBzdmcgcmVuZGVyZXJzIG9ubHkgd2hlbiBwYXJlbnQgaXMgU1ZHLCBl
eGNlcHQgZm9yCisgICAgICAgIHRoZSA8c3ZnPiBlbGVtZW50LgorCisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0FFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Ns
aXBQYXRoRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R0RlZnNFbGVtZW50LmNwcDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRGVmc0VsZW1lbnQuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0Rlc2NFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRWxlbWVudC5jcHA6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cmVuZGVyZXJJc05l
ZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXNrRWxl
bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQ
b2x5RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50
Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9s
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RSZWZF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RTcGFuRWxlbWVudC5oOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdU
aXRsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RpdGxlRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zp
ZXdFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKwogMjAwNy0wMi0yMiAgS3J6eXN6dG9mIEtv
d2FsY3p5ayAgPGtrb3dhbGN6eWtAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gUm9iZW4sIHdobyBuZXZlciBzbGVlcHMuCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdB
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FFbGVtZW50LmgJ
KHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIp
OwogCiAgICAgICAgIC8vIERlcml2ZWQgZnJvbTogJ1NWR1N0eWxlZEVsZW1lbnQnCi0gICAgICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkgeyByZXR1
cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QgKmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwgUmVu
ZGVyU3R5bGUgKnN0eWxlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCAqZXZ0KTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVt
ZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgZG91YmxlIGdldFNpbXBsZUR1cmF0aW9uKEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2VSZW5kZXJlcigpOwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
KiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNv
bnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7
IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAogICAgIHByb3Rl
Y3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lv
biAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCisgICAgICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFs
c2U7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIApJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw2
IEBAIGJvb2wgU1ZHRGVmc0VsZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiBTVkdU
ZXN0czo6aXNWYWxpZCgpOwogfQogCi1ib29sIFNWR0RlZnNFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKLXsKLSAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHRGVmc0VsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQog
ewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIodGhpcyk7
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAKICAgICAgICAgdmlydHVhbCBi
b29sIGlzVmFsaWQoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgCiAgICAg
cHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVzY0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEZXNjRWxlbWVudC5oCShyZXZpc2lvbiAx
OTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0Rlc2NFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB+
U1ZHRGVzY0VsZW1lbnQoKTsKIAogICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsK
KworICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJT
VkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBz
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSogYXR0cik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2Uo
KSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5
bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3Q7CiAKICAgICBw
cm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lv
biAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7
CiAKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7
IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBT
VkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCgpIGNvbnN0ID0gMDsKIAorICAgICAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9
CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKFNW
R0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAot
ICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUp
IHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAg
ICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKiBzdHlsZSk7CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHR0VsZW1lbnQuaAkocmV2
aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdHRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyBy
ZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hh
bmdlKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAog
ICAgICAgICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAK
LSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxl
KSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAg
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwogICAgICAgICAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0
ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsK
IAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJ
KHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkg
eyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2Uo
KTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAxOTgyMikK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDcgKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAg
ICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwogCkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1BhdGhFbGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJp
YnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25z
dDsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuaAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBz
dHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0K
ICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVz
b3VyY2UoKTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2x5RWxlbWVudC5oCShyZXZpc2lvbiAx
OTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDggKzU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7IAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CiAKLSAgICAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVy
biBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQotCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdGhpczsgfQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50
LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBh
dHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBz
dHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0K
ICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAogICAgIHByb3RlY3Rl
ZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0b3BFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNpb24gMTk4MjIpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDE1IEBAIFNW
R1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50KCkKIAogQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHU3R5bGVkRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgQ2xh
c3NOYW1lLCBjbGFzc05hbWUsIEhUTUxOYW1lczo6Y2xhc3NBdHRyLmxvY2FsTmFtZSgpLCBtX2Ns
YXNzTmFtZSkKIAorYm9vbCBTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKiBzdHlsZSkKK3sKKyAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+
aXNFbGVtZW50Tm9kZSgpICYmCisgICAgICAgICFwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHU3R5bGVkRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUp
CiB7CiAgICAgLy8gVGhlIHBhdGggZGF0YSBpcyBzZXQgdXBvbiB0aGUgZmlyc3QgbGF5b3V0KCkg
Y2FsbC4KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDE5
ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyAn
U1ZHU3R5bGFibGUnIGZ1bmN0aW9ucwogICAgICAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIGltcGxl
bWVudGVkLgotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29u
c3QgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwg
U1ZHUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNlKCkgeyByZXR1cm4gMDsgfQpJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4g
U3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCiAgICAgICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lv
biAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRBdHRhY2hDaGlsZChFbGVtZW50KikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQogIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lvbiAx
OTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2
b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKik7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5
bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxl
KTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoTm9kZSopIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQu
aAkocmV2aXNpb24gMTk4MjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICBTVkdUU3BhbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgICAgIHZpcnR1YWwgflNWR1RTcGFuRWxlbWVudCgpOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsg
cmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAgICAgICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikg
Y29uc3Q7CiAgICAgCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHJldmlzaW9u
IDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsNyArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFs
IEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Rp
dGxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxl
bWVudC5oCShyZXZpc2lvbiAxOTgyMikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDE5
ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVk
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ZpZXdF
bGVtZW50LmgJKHJldmlzaW9uIDE5ODIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVmlld0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICAvLyAnU1ZHVmlld0VsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICBTVkdTdHJp
bmdMaXN0ICp2aWV3VGFyZ2V0KCkgY29uc3Q7CiAKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdGhpczsgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3ho
dG1sLW5vLXN2Zy1yZW5kZXJlci1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxh
eTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS94aHRtbC1uby1zdmctcmVuZGVyZXItZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKCmlWQk9SdzBLR2dv
QUFBQU5TVWhFVWdBQUF5QUFBQUpZQ0FZQUFBQ2Fkb0p3QUFBTWhFbEVRVlI0bk8zZHNRM0RNQkFF
UWROUTM0SXIKZjVVZ1JVc1ltb2taWExyNGdHdG01Z01BQUJENDdoNEFBQUM4aHdBQkFBQXlBZ1FB
QU1nSUVBQUFJQ05BQUFDQWpBQUJBQUF5QWdRQQpBTWdjZHcvV2J4VTdlR2hPMzdZQUFQQy9YRUFB
QUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5QWdRCkFBQWdJMEFB
QUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFB
SUNNQUFFQUFESUMKQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFB
SUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBQUlDTQpBQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFB
SUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnCkkwQUFB
SUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJ
Q01BQUVBQURJQ0JBQUEKeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJ
Q01BQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFBSUNNQUFFQQpBRElDQkFBQXlBZ1FBQUFnSTBBQUFJ
Q01BQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBCkFJ
Q01BQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBQUlD
TUFBRUFBRElDQkFBQXlBZ1EKQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBQUlD
TUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQwpCQUFBeUFnUUFBQWdJMEFBQUlD
TUFBRUFBRElDQkFBQXlLeVptZDBqQUFDQWQzQUJBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdB
CkFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESQpDQkFBQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FB
UUFBCk1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUEKZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQQpBQ0FqUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFCkFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0EKQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBagpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUVBQURJCkNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUEKTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQQpnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBRElDQkFBCkFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUUKQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QQpBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUFBQ0FqClFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBREkKQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQQpN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWpRQUFBCmdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUEKQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJ
RQpBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
QUFESQpDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBCk1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUEKZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJQ0JBQQpBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFCkFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0EKQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBagpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJCkNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUEKTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqUUFBQQpnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBCkFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUUKQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBZ0l3QQpBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqClFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBREkK
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBQVFBQQpNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBCmdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNC
QUEKQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRQpBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESQpDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0J6QVpiZUQ2bkdrZFp0CkFBQUFBRWxGVGtT
dVFtQ0MKCg==
</data>
<flag name="review"
          id="5235"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13375</attachid>
            <date>2007-02-26 02:24:20 -0800</date>
            <delta_ts>2007-02-27 17:30:40 -0800</delta_ts>
            <desc>Improved patch</desc>
            <filename>12609-3.diff</filename>
            <type>text/plain</type>
            <size>28207</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5ODUyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMDItMjYgIFJvYiBCdWlzICA8YnVpc0Br
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCB0ZXN0Y2FzZSBmb3I6CisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjA5CisgICAgICAgIEFueSBTVkcgZWxlbWVudCB3aWxsIGNyZWF0ZSByZW5k
ZXJlcnMgZXZlbiB3aGVuIGNoaWxkcmVuIG9mIEhUTUwgZWxlbWVudHMKKworICAgICAgICAqIHN2
Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvY3VzdG9tL3hodG1sLW5vLXN2Zy1yZW5kZXJlci1leHBlY3RlZC5wbmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS94aHRtbC1uby1zdmctcmVuZGVy
ZXIueGh0bWw6IEFkZGVkLgorCiAyMDA3LTAyLTI1ICBNaXR6IFBldHRlbCAgPG1pdHpAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVjdGVkLmNoZWNrc3VtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVy
LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS94aHRtbC1uby1zdmctcmVuZGVyZXItZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEgQEAKKzE4ZjFmNjRlYWIzMWRmYjY5NDY3YTQ5N2RlOTQ0MmQ3ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94aHRtbC1uby1z
dmctcmVuZGVyZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9j
dXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDExNgorICBSZW5kZXJCbG9jayB7aHRtbH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTE2Cisg
ICAgUmVuZGVyQm9keSB7Ym9keX0gYXQgKDgsOCkgc2l6ZSA3ODR4MTAwCisgICAgICBSZW5kZXJC
bG9jayB7ZGl2fSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2JnY29sb3I9IzAwODAwMF0KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLnhodG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20veGh0bWwtbm8tc3ZnLXJlbmRlcmVyLnho
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94aHRtbC1uby1zdmct
cmVuZGVyZXIueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorPGh0bWwgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJ3aWR0
aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpncmVlbiI+Cis8cmVjdCB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBw
eCIgZmlsbD0icmVkIi8+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTg1
MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMDctMDItMjYgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjA5CisgICAgICAgIEFueSBTVkcgZWxlbWVudCB3aWxsIGNyZWF0ZSBy
ZW5kZXJlcnMgZXZlbiB3aGVuIGNoaWxkcmVuIG9mIEhUTUwgZWxlbWVudHMKKworICAgICAgICBB
bGxvdyBjcmVhdGlvbiBvZiBzdmcgcmVuZGVyZXJzIG9ubHkgd2hlbiBwYXJlbnQgaXMgU1ZHLCBl
eGNlcHQgZm9yCisgICAgICAgIHRoZSA8c3ZnPiBlbGVtZW50LgorCisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0FFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Ns
aXBQYXRoRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R0RlZnNFbGVtZW50LmNwcDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRGVmc0VsZW1lbnQuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0Rlc2NFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRWxlbWVudC5jcHA6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cmVuZGVyZXJJc05l
ZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXNrRWxl
bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQ
b2x5RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50
Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9s
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RSZWZF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RTcGFuRWxlbWVudC5oOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdU
aXRsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RpdGxlRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zp
ZXdFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKwogMjAwNy0wMi0yNSAgTWl0eiBQZXR0ZWwg
IDxtaXR6QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0FFbGVtZW50LmgJKHJldmlzaW9uIDE5ODUyKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHQUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpOwogCiAgICAgICAgIC8vIERlcml2ZWQgZnJvbTog
J1NWR1N0eWxlZEVsZW1lbnQnCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlICpzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QgKmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hICphcmVuYSwgUmVuZGVyU3R5bGUgKnN0eWxlKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCAqZXZ0KTsKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHJldmlzaW9uIDE5ODUyKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Nyw3ICs5Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZG91YmxlIGdldFNpbXBs
ZUR1cmF0aW9uKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICAKICAgICAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VSZW5kZXJlcigpOwogCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0
aERhdGEoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0
ZUNoYW5nZSgpIGNvbnN0OwogCisgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIHRoaXM7IH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVmc0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkocmV2
aXNpb24gMTk4NTIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw2IEBAIGJvb2wgU1ZHRGVmc0VsZW1lbnQ6OmlzVmFs
aWQoKSBjb25zdAogICAgIHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOwogfQogCi1ib29sIFNW
R0RlZnNFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKLXsKLSAg
ICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7Ci19Ci0KIFJl
bmRlck9iamVjdCogU1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIodGhpcyk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdE
ZWZzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RlZnNFbGVt
ZW50LmgJKHJldmlzaW9uIDE5ODUyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVmc0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICAgICAg
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CiAg
ICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAgICAgCiAgICAgcHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRGVzY0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdEZXNjRWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0Rlc2NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB+U1ZHRGVzY0VsZW1lbnQoKTsKIAogICAgICAgICBT
dHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE5ODUyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNs
dWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0
b1BhdGhEYXRhKCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdGhpczsgfQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24g
MTk4NTIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCgp
IGNvbnN0ID0gMDsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZv
aWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KSBj
b25zdDsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdU
ZXN0czo6aXNWYWxpZCgpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihOb2RlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSk7CiAKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHR0VsZW1lbnQuaAkocmV2aXNpb24gMTk4NTIpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSopOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHByb3RlY3RlZDoKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIHRy
dWU7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgICAgICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBj
YW52YXNSZXNvdXJjZSgpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJl
dmlzaW9uIDE5ODUyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICAKICAgICBw
cm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDE5
ODUyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4g
U3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVh
bCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDE5ODUyKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0
dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBT
VkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoKTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNr
RWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29u
c3Q7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
IHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsg
fQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBjYW52YXNS
ZXNvdXJjZSgpOwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHJldmlzaW9u
IDE5ODUyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTksNyArOTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1
cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmly
dHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMTk4NTIpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3
ICs1OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmly
dHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoKTsKIApJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdQb2x5RWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1BvbHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSogYXR0cik7IAogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRl
Q2hhbmdlKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKHN0eWxlKTsgfQotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHJldmlzaW9uIDE5ODUyKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERh
dGEoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1N0b3BFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3RvcEVs
ZW1lbnQuaAkocmV2aXNpb24gMTk4NTIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdG9wRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikg
eyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICAKICAgICBwcml2YXRl
OgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5
ODUyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDYgKzU5LDE0IEBAIFNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVt
ZW50KCkKIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU3R5bGVkRWxlbWVudCwg
U3RyaW5nLCBTdHJpbmcsIHN0cmluZywgQ2xhc3NOYW1lLCBjbGFzc05hbWUsIEhUTUxOYW1lczo6
Y2xhc3NBdHRyLmxvY2FsTmFtZSgpLCBtX2NsYXNzTmFtZSkKIAorYm9vbCBTVkdTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK3sKKyAgICBpZiAoIXBh
cmVudE5vZGUoKSB8fCBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICByZXR1
cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHU3R5bGVkRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgLy8gVGhl
IHBhdGggZGF0YSBpcyBzZXQgdXBvbiB0aGUgZmlyc3QgbGF5b3V0KCkgY2FsbC4KSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDE5ODUyKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyAnU1ZHU3R5bGFibGUnIGZ1
bmN0aW9ucwogICAgICAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIGltcGxlbWVudGVkLgotICAgICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
Kik7CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3QgeyByZXR1cm4gUGF0
aCgpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNh
bnZhc1Jlc291cmNlKCkgeyByZXR1cm4gMDsgfQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
U3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N3aXRj
aEVsZW1lbnQuaAkocmV2aXNpb24gMTk4NTIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTd2l0
Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRBdHRhY2hDaGlsZChFbGVtZW50KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAK
KyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJl
dHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogIApJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lvbiAxOTg1MikKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKLSAgICAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJl
dHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNv
bnN0OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkocmV2aXNpb24gMTk4
NTIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdUU3BhbkVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwg
flNWR1RTcGFuRWxlbWVudCgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAg
ICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHJldmlzaW9uIDE5ODUyKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBnZXRDVE0oKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2Ny
ZWVuQ1RNKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCShyZXZpc2lv
biAxOTg1MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDE5ODUyKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0
dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaCgpOwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdWaWV3RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHJldmlz
aW9uIDE5ODUyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVmlld0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAvLyAn
U1ZHVmlld0VsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICBTVkdTdHJpbmdMaXN0ICp2aWV3VGFy
Z2V0KCkgY29uc3Q7CiAKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3hodG1sLW5vLXN2Zy1yZW5k
ZXJlci1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQg
YXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94aHRtbC1uby1z
dmctcmVuZGVyZXItZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQog
ICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF5
QUFBQUpZQ0FZQUFBQ2Fkb0p3QUFBTWhFbEVRVlI0bk8zZHNRM0RNQkFFUWROUTM0SXIKZjVVZ1JV
c1ltb2taWExyNGdHdG01Z01BQUJENDdoNEFBQUM4aHdBQkFBQXlBZ1FBQU1nSUVBQUFJQ05BQUFD
QWpBQUJBQUF5QWdRQQpBTWdjZHcvV2J4VTdlR2hPMzdZQUFQQy9YRUFBQUlDTUFBRUFBRElDQkFB
QXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5QWdRCkFBQWdJMEFBQUlDTUFBRUFBRElDQkFB
QXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFBSUNNQUFFQUFESUMKQkFB
QXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFB
eUFnUUFBQWdJMEFBQUlDTQpBQUVBQURJQ0JBQUF5QWdRQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFB
eUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnCkkwQUFBSUNNQUFFQUFESUNCQUFB
eUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUEK
eUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5
QWdRQUFBZ0kwQUFBSUNNQUFFQQpBRElDQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5
QWdRQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBCkFJQ01BQUVBQURJQ0JBQUF5
QWdRQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlB
Z1EKQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlB
Z1FBQUFnSTBBQUFJQ01BQUVBQURJQwpCQUFBeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlL
eVptZDBqQUFDQWQzQUJBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESQpDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBCk1nSUVBQURJQ0JB
QUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFB
QUNBalFBQUEKZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFB
QUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQQpBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFB
QUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFCkFBRElDQkFB
QUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFB
Q0FqUUFBQWdJd0EKQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFB
Q0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBagpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFB
Q0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJCkNCQUFB
Q0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFD
QWpRQUFBZ0l3QUFRQUEKTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFD
QWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQQpnSXdBQVFBQU1nSUVBQURJQ0JBQUFD
QWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBCkFD
QWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNB
alFBQUFnSXdBQVFBQU1nSUUKQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNB
alFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QQpBUUFBTWdJRUFBRElDQkFBQUNB
alFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0Fq
ClFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0Fq
UUFBQWdJd0FBUUFBTWdJRUFBREkKQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0Fq
UUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQQpNZ0lFQUFESUNCQUFBQ0Fq
UUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpR
QUFBCmdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpR
QUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUEKQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpR
QUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRQpBQURJQ0JBQUFDQWpR
QUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFB
QUFnSXdBCkFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFB
QUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFB
QUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESQpDQkFBQUNBalFB
QUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFB
QWdJd0FBUUFBCk1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFB
QWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUEKZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFB
QWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQQpBQ0FqUUFB
QWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFB
Z0l3QUFRQUFNZ0lFCkFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFB
Z0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0EKQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFB
Z0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBagpRQUFB
Z0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFn
SXdBQVFBQU1nSUVBQURJCkNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFn
SXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUEKTWdJRUFBRElDQkFBQUNBalFBQUFn
SXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQQpn
SXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJ
d0FBUUFBTWdJRUFBRElDQkFBCkFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJ
d0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUUKQUFESUNCQUFBQ0FqUUFBQWdJ
d0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3
QQpBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3
QUFRQUFNZ0lFQUFESUNCQUFBQ0FqClFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3
QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBREkKQ0JBQUFDQWpRQUFBZ0l3
QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdB
QVFBQQpNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBCmdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUEKQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FB
UUFBTWdJRQpBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESQpDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0J6QVpiZUQ2bkdrZFp0CkFBQUFBRWxGVGtTdVFtQ0MKCg==
</data>
<flag name="review"
          id="5255"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>