<?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>33590</bug_id>
          
          <creation_ts>2010-01-13 04:35:31 -0800</creation_ts>
          <short_desc>[GTK] GObject DOM bindings</short_desc>
          <delta_ts>2010-06-06 12:48:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Xan Lopez">xan.lopez</assigned_to>
          <cc>a9016009</cc>
    
    <cc>abarth</cc>
    
    <cc>alp</cc>
    
    <cc>bjt23</cc>
    
    <cc>christian</cc>
    
    <cc>cosimoc</cc>
    
    <cc>eric</cc>
    
    <cc>grant_gayed</cc>
    
    <cc>gustavo</cc>
    
    <cc>hausmann</cc>
    
    <cc>joseph</cc>
    
    <cc>lkcl</cc>
    
    <cc>lwi</cc>
    
    <cc>mrowe</cc>
    
    <cc>paulburton89</cc>
    
    <cc>sam</cc>
    
    <cc>slomo</cc>
    
    <cc>tevaum</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wk.censorship.bypass.0005</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180156</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-13 04:35:31 -0800</bug_when>
    <thetext>Opening a new bug for this, since the original one is insanely long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180164</commentid>
    <comment_count>1</comment_count>
      <attachid>46446</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-13 04:59:45 -0800</bug_when>
    <thetext>Created attachment 46446
featuredefines.patch

A trivial patch, generalizing the feature defines list in preparation for the DOM bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180169</commentid>
    <comment_count>2</comment_count>
      <attachid>46448</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-13 05:02:10 -0800</bug_when>
    <thetext>Created attachment 46448
inputfilecheck.patch

A trivial cleanup in the generate-bindings.pl script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180171</commentid>
    <comment_count>3</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-13 05:04:15 -0800</bug_when>
    <thetext>*** Bug 16401 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180172</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 05:06:23 -0800</bug_when>
    <thetext>Attachment 46446 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/185281</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180173</commentid>
    <comment_count>5</comment_count>
      <attachid>46449</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-13 05:10:48 -0800</bug_when>
    <thetext>Created attachment 46449
featuredefines.patch

Missed a new feature when rebasing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180188</commentid>
    <comment_count>6</comment_count>
      <attachid>46453</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-13 06:39:53 -0800</bug_when>
    <thetext>Created attachment 46453
gobjectdombindings.patch

The main patch.

As was suggested in the original bug, I have reduced the scope of the patch, and I&apos;m just generating bindings for a fairly small subset of the IDL files. Some comments:

- I basically provide Node.idl and all its dependencies (a ~dozen files) with two exceptions:
  * The ownerDocument method is excluded for the GObject bindings, since it brings along a lot of other files (through Document.idl) and thus defeats the purpose of a reduced initial patch. This would be the first thing to correct in a follow-up.
  * The EventListener feature is also excluded.
- I changed the prefix for the DOM methods to &quot;WebKitDOM&quot;, as discussed in the old bug.
- I have removed lots of corner cases and hacks from the generator script, plus some heavy refactoring in some places. It&apos;s still not the prettiest thing, but I think it&apos;s more readable and it&apos;s about 300 lines shorter than the previous shortest version.
- Overall the patch is about 40K smaller than the previous smallest patch (which was about ~110K). I&apos;m sure it can be made more clear/better in many places, but I&apos;m not sure it can be made smaller in scope than it is, so this is pretty much it as far as complexity is concerned I&apos;d say.

I&apos;ll attach another patch that adds a &apos;inner-node&apos; property to WebKitHitTestResult as an example and proof that the whole thing works :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180191</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 06:44:38 -0800</bug_when>
    <thetext>Attachment 46453 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/gobject/webkitdomstringconvert.h:21:  #ifndef header guard has wrong style, please use: webkitdomstringconvert_h  [build/header_guard] [5]
WebCore/bindings/gobject/webkitdomstringconvert.h:32:  webkit_dom_gstring_convert is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/webkitdomstringconvert.h:33:  webkit_dom_gstring_convert is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/webkitdomstringconvert.h:34:  webkit_dom_gstring_convert is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/webkitdomstringconvert.h:35:  webkit_dom_gstring_convert is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/WebKitDOMBinding.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitDOMBinding.cpp:82:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/bindings/gobject/WebKitDOMObject.cpp:16:  webkit_dom_object_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/WebKitDOMObject.cpp:20:  webkit_dom_object_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/WebKitDOMBinding.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitDOMBinding.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/bindings/gobject/WebKitDOMObject.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitDOMObject.h:44:  parent_instance is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/WebKitDOMObject.h:50:  parent_class is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/WebKitDOMObject.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 15</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180229</commentid>
    <comment_count>8</comment_count>
      <attachid>46465</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-13 08:15:32 -0800</bug_when>
    <thetext>Created attachment 46465
gobjectdombindings.patch

This should fix all style issues that are fixable/makes sense to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180230</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 08:16:07 -0800</bug_when>
    <thetext>Attachment 46465 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/gobject/WebKitDOMObject.cpp:12:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitDOMObject.cpp:16:  webkit_dom_object_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/WebKitDOMObject.cpp:20:  webkit_dom_object_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/WebKitDOMBinding.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/bindings/gobject/WebKitDOMObject.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitDOMObject.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180234</commentid>
    <comment_count>10</comment_count>
      <attachid>46466</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-13 08:21:58 -0800</bug_when>
    <thetext>Created attachment 46466
gobjectdombindings.patch

OK, checked it locally this time, only warnings should be the ones for the init/class_init functions in DOMObject, which have to be that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180236</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 08:26:58 -0800</bug_when>
    <thetext>Attachment 46466 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/gobject/WebKitDOMObject.cpp:12:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitDOMObject.cpp:16:  webkit_dom_object_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/gobject/WebKitDOMObject.cpp:20:  webkit_dom_object_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180267</commentid>
    <comment_count>12</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-01-13 09:55:19 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=46466) [details]
&gt; gobjectdombindings.patch
&gt; 
&gt; OK, checked it locally this time, only warnings should be the ones for the
&gt; init/class_init functions in DOMObject, which have to be that way.

I reported this as a bug to the style checker here: https://bugs.webkit.org/show_bug.cgi?id=33606</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180678</commentid>
    <comment_count>13</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-14 04:59:13 -0800</bug_when>
    <thetext>*** Bug 27410 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183301</commentid>
    <comment_count>14</comment_count>
      <attachid>46449</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-01-21 13:42:29 -0800</bug_when>
    <thetext>Comment on attachment 46449
featuredefines.patch

Looks good to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183323</commentid>
    <comment_count>15</comment_count>
      <attachid>46466</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-01-21 14:44:45 -0800</bug_when>
    <thetext>Comment on attachment 46466
gobjectdombindings.patch

 29 2010-01-13  Xan Lopez  &lt;xlopez@igalia.com&gt;
 30 
 31         Reviewed by NOBODY (OOPS!).
 32 
 33         No need to check twice if there&apos;s an input file.
 34 
 35         * bindings/scripts/generate-bindings.pl:

I think this is from the other patch =).

 79     switch (node-&gt;nodeType()) {
 80     default:
 81         ret = wrapNode(node);
 82     }

This doesn&apos;t seem to make sense. Are we going to add case statements here some day, and that&apos;s why this is a switch? I am not opposed, but a comment would be good.

WebCore/bindings/gobject/webkitdomstringconvert.h -&gt; perhaps this should actually go inside WebCore/platform/gtk, since it is useful everywhere =).

171 sub GetGlibTypeName {

Why use char* and gchar elsewhere here? We are also using gint, and such here, it would be good to be consistent

 427     WebKitDOMObject* dom_object = WEBKIT_DOM_OBJECT(object);
 428     
 429     if(dom_object != NULL)

Isn&apos;t this impossible? I mean, if dom_object is already NULL, why are we on its finalize? And the type-safe cast would have failed already =).

 433             WebCore::${interfaceName} *coreObject = static_cast&lt;WebCore::${interfaceName} *&gt;(dom_object-&gt;coreObject);
 434             coreObject-&gt;deref();
 435             
 436             dom_object-&gt;coreObject = NULL;
 437             
 438             WebKit::DOMObjectCache::forget(coreObject);

The cache doesn&apos;t seem to ref the object; can this be its last reference? Would it be safer to first tell the cache to forget about it, then deref and set the local variable to NULL?

 680         if ($functionName eq &quot;webkit_dom_xml_http_request_open&quot; &amp;&amp;
 681         $param-&gt;name eq &quot;url&quot;) {

This line break seems odd

134 136 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
    137 #if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT

I think adding the conditions to the same line would be more readable here. Overall the GTK+/GObject parts of the patch look really good to me, except for these comments. Except for the the ref count issue, which might be serious, I see no blockers to going forward with this. I&apos;ll leave the review? like it is, though, for it would be useful to have someone who has written bindings before have a quick look at the generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183531</commentid>
    <comment_count>16</comment_count>
      <attachid>46448</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-22 00:43:53 -0800</bug_when>
    <thetext>Comment on attachment 46448
inputfilecheck.patch

Landed in r53686.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183532</commentid>
    <comment_count>17</comment_count>
      <attachid>46449</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-22 00:44:20 -0800</bug_when>
    <thetext>Comment on attachment 46449
featuredefines.patch

Landed in r53685.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183533</commentid>
    <comment_count>18</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-22 01:01:22 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 46466 [details])
&gt;  29 2010-01-13  Xan Lopez  &lt;xlopez@igalia.com&gt;
&gt;  30 
&gt;  31         Reviewed by NOBODY (OOPS!).
&gt;  32 
&gt;  33         No need to check twice if there&apos;s an input file.
&gt;  34 
&gt;  35         * bindings/scripts/generate-bindings.pl:
&gt; 
&gt; I think this is from the other patch =).

Oops :)

&gt; 
&gt;  79     switch (node-&gt;nodeType()) {
&gt;  80     default:
&gt;  81         ret = wrapNode(node);
&gt;  82     }
&gt; 
&gt; This doesn&apos;t seem to make sense. Are we going to add case statements here some
&gt; day, and that&apos;s why this is a switch? I am not opposed, but a comment would be
&gt; good.

That&apos;s exactly the case, yes. I will clarify the situation in the code.

&gt; 
&gt; WebCore/bindings/gobject/webkitdomstringconvert.h -&gt; perhaps this should
&gt; actually go inside WebCore/platform/gtk, since it is useful everywhere =).

Yeah, I think I even said the same thing in the old bug. Maybe we can do another patch adding that file only and changing code in genera to use it?

&gt; 
&gt; 171 sub GetGlibTypeName {
&gt; 
&gt; Why use char* and gchar elsewhere here? We are also using gint, and such here,
&gt; it would be good to be consistent

I&apos;m not sure I understand the comment. Do you think we should NOT use the g-prefixed types here? Or we should? I don&apos;t like them in general when they are useless (char vs gchar, etc), but I stuck with them because that&apos;s our code style in WebKit as far as I remember.

&gt; 
&gt;  427     WebKitDOMObject* dom_object = WEBKIT_DOM_OBJECT(object);
&gt;  428     
&gt;  429     if(dom_object != NULL)
&gt; 
&gt; Isn&apos;t this impossible? I mean, if dom_object is already NULL, why are we on its
&gt; finalize? And the type-safe cast would have failed already =).

You are right, the outer if is pointless.

&gt; 
&gt;  433             WebCore::${interfaceName} *coreObject =
&gt; static_cast&lt;WebCore::${interfaceName} *&gt;(dom_object-&gt;coreObject);
&gt;  434             coreObject-&gt;deref();
&gt;  435             
&gt;  436             dom_object-&gt;coreObject = NULL;
&gt;  437             
&gt;  438             WebKit::DOMObjectCache::forget(coreObject);
&gt; 
&gt; The cache doesn&apos;t seem to ref the object; can this be its last reference? Would
&gt; it be safer to first tell the cache to forget about it, then deref and set the
&gt; local variable to NULL?

I&apos;m not sure there will be any difference, since I think we are only using the address and that should still be the same, but I agree it makes more sense to switch the order just in case.

&gt; 
&gt;  680         if ($functionName eq &quot;webkit_dom_xml_http_request_open&quot; &amp;&amp;
&gt;  681         $param-&gt;name eq &quot;url&quot;) {
&gt; 
&gt; This line break seems odd

Yup.

&gt; 
&gt; 134 136 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
&gt;     137 #if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
&gt; 
&gt; I think adding the conditions to the same line would be more readable here.

I was actually just copying the existing style, in other files when there were (say) COM and OBJECTIVE_C #ifs, each one would be in one line IIRC. I have no strong opinion about this, other than noting than putting them in the same line makes for a really long line.

&gt; Overall the GTK+/GObject parts of the patch look really good to me, except for
&gt; these comments. Except for the the ref count issue, which might be serious, I
&gt; see no blockers to going forward with this. I&apos;ll leave the review? like it is,
&gt; though, for it would be useful to have someone who has written bindings before
&gt; have a quick look at the generator.

Yeah, we should have Sam or Mark take a look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183668</commentid>
    <comment_count>19</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-01-22 09:05:05 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; WebCore/bindings/gobject/webkitdomstringconvert.h -&gt; perhaps this should
&gt; &gt; actually go inside WebCore/platform/gtk, since it is useful everywhere =).
&gt; 
&gt; Yeah, I think I even said the same thing in the old bug. Maybe we can do
&gt; another patch adding that file only and changing code in genera to use it?

Sounds like a great idea to me!

&gt; &gt; 171 sub GetGlibTypeName {
&gt; &gt; 
&gt; &gt; Why use char* and gchar elsewhere here? We are also using gint, and such here,
&gt; &gt; it would be good to be consistent
&gt; 
&gt; I&apos;m not sure I understand the comment. Do you think we should NOT use the
&gt; g-prefixed types here? Or we should? I don&apos;t like them in general when they are
&gt; useless (char vs gchar, etc), but I stuck with them because that&apos;s our code
&gt; style in WebKit as far as I remember.

No, I agree on using them. I&apos;m just pointing out that you are using non-g-prefixed char in the first line:

+    my %types = (&quot;DOMString&quot;, &quot;char* &quot;,
+                 &quot;float&quot;, &quot;gfloat&quot;,
+                 &quot;double&quot;, &quot;gdouble&quot;,
+                 &quot;boolean&quot;, &quot;gboolean&quot;,
+                 &quot;char&quot;, &quot;gchar&quot;,

DOMString is mapped to char*, while char is mapped to gchar =). Make the DOMString a gchar*, perhaps.

&gt; I was actually just copying the existing style, in other files when there were
&gt; (say) COM and OBJECTIVE_C #ifs, each one would be in one line IIRC. I have no
&gt; strong opinion about this, other than noting than putting them in the same line
&gt; makes for a really long line.

I don&apos;t have a strong opinion either. If that is what current code already does, I&apos;m fine.

&gt; Yeah, we should have Sam or Mark take a look at it.

Now we just need to grab one of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184214</commentid>
    <comment_count>20</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-25 02:22:16 -0800</bug_when>
    <thetext>Adding Sam and Mark in case they want to have a look at the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184240</commentid>
    <comment_count>21</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-25 04:33:34 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; &gt; WebCore/bindings/gobject/webkitdomstringconvert.h -&gt; perhaps this should
&gt; &gt; &gt; actually go inside WebCore/platform/gtk, since it is useful everywhere =).
&gt; &gt; 
&gt; &gt; Yeah, I think I even said the same thing in the old bug. Maybe we can do
&gt; &gt; another patch adding that file only and changing code in genera to use it?
&gt; 
&gt; Sounds like a great idea to me!
&gt; 

A quick update on this: on further reflection this is not such a great idea because, a) the functions can only be made to work if they strdup the char data (otherwise the char data dies when you temporary CString we create goes out of scope) b) the cases were we want to explicitly strdup the data are really few, in the vast majority of cases the data is duped in the function you pass the const char* data too.

So after talking with Gustavo we have decided to leave things like they are for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185975</commentid>
    <comment_count>22</comment_count>
    <who name="Brian Tarricone">bjt23</who>
    <bug_when>2010-01-29 15:01:47 -0800</bug_when>
    <thetext>Glad I found this bug -- this turns out to be exactly what I need for some DOM manipulations in my webkit-gtk based app.

I applied the patch and I&apos;m looking through the code it generates... I assume this will also require some API additions to webkit-gtk proper to be able to e.g. retrieve the gobject-wrapped DOM tree from a WebKitWeb(View|Frame)&apos;s window/document object?  If so, is there a separate bug tracking that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185995</commentid>
    <comment_count>23</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-29 16:04:51 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Glad I found this bug -- this turns out to be exactly what I need for some DOM
&gt; manipulations in my webkit-gtk based app.
&gt; 
&gt; I applied the patch and I&apos;m looking through the code it generates... I assume
&gt; this will also require some API additions to webkit-gtk proper to be able to
&gt; e.g. retrieve the gobject-wrapped DOM tree from a WebKitWeb(View|Frame)&apos;s
&gt; window/document object?  If so, is there a separate bug tracking that work?

You are right, that&apos;s needed and would come in the next patch to the one flagged for review, when we wrap Document.idl and everything that it brings. We tried to keep the first patch as small as possible to facilitate review, as explained in the previous comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186137</commentid>
    <comment_count>24</comment_count>
    <who name="Brian Tarricone">bjt23</who>
    <bug_when>2010-01-30 15:39:46 -0800</bug_when>
    <thetext>I came across this patch here:
http://github.com/lkcl/webkit/blob/16401.master/16401.master.patch

... which looks to be much more complete.  Any reason why that work isn&apos;t being used as is, or at least as a base for what you&apos;re doing, Xan?  Seems to be an unfortunate duplication of effort :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186178</commentid>
    <comment_count>25</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-31 00:55:38 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; I came across this patch here:
&gt; http://github.com/lkcl/webkit/blob/16401.master/16401.master.patch
&gt; 
&gt; ... which looks to be much more complete.  Any reason why that work isn&apos;t being
&gt; used as is, or at least as a base for what you&apos;re doing, Xan?  Seems to be an
&gt; unfortunate duplication of effort :(

It is being used as a base, and the new patches are less complete *on purpose*, since previous reviewers asked for this explicitly to ease their work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186246</commentid>
    <comment_count>26</comment_count>
      <attachid>46466</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-01-31 15:09:59 -0800</bug_when>
    <thetext>Comment on attachment 46466
gobjectdombindings.patch

&gt; diff --git a/WebCore/bindings/gobject/WebKitDOMBinding.cpp b/WebCore/bindings/gobject/WebKitDOMBinding.cpp
&gt; new file mode 100644
&gt; index 0000000..10dc6e6
&gt; --- /dev/null
&gt; +++ b/WebCore/bindings/gobject/WebKitDOMBinding.cpp
&gt; @@ -0,0 +1,99 @@
&gt; +// gcc 3.x can&apos;t handle including the HashMap pointer specialization
&gt; +// in this file
&gt; +#if defined __GNUC__ &amp;&amp; !defined __GLIBCXX__ // less than gcc 3.4
&gt; +#define HASH_MAP_PTR_SPEC_WORKAROUND 1
&gt; +#endif

This isn’t needed any more, and hasn’t done anything useful for a long time.

&gt; +static gpointer createWrapper(Node* node)
&gt; +{
&gt; +    ASSERT(node);
&gt; +    ASSERT(!ScriptInterpreter::getDOMObject(node));
&gt; +
&gt; +    gpointer ret = 0;
&gt; +
&gt; +    switch (node-&gt;nodeType()) {
&gt; +    default:
&gt; +        ret = wrapNode(node);
&gt; +    }

“ret” is a poor name for a local variable.  Something like “wrappedNode” would be more descriptive.  The switch statement with only a default case is odd, but presumably it was done like that as further patches will add cases to the switch?  I think it’d be preferable to remove the switch until it’s needed so that the code doesn’t look so odd.

&gt; +gpointer kit(Node* node)
&gt; +{
&gt; +    if (!node)
&gt; +        return 0;
&gt; +
&gt; +    gpointer ret = DOMObjectCache::get(node);
&gt; +    if (ret)
&gt; +        return ret;

Similar comment about “ret” as above.

&gt; +
&gt; +    return createWrapper(node);
&gt; +}
&gt; +


&gt; diff --git a/WebCore/bindings/gobject/WebKitDOMBinding.h b/WebCore/bindings/gobject/WebKitDOMBinding.h
&gt; new file mode 100644
&gt; index 0000000..025bdba
&gt; --- /dev/null
&gt; +++ b/WebCore/bindings/gobject/WebKitDOMBinding.h
&gt; @@ -0,0 +1,54 @@
&gt; +#ifndef WebKitDOMBinding_h
&gt; +#define WebKitDOMBinding_h
&gt; +
&gt; +#include &quot;Event.h&quot;
&gt; +#include &quot;EventTarget.h&quot;
&gt; +#include &quot;Node.h&quot;
&gt; +#include &quot;WebKitDOMNode.h&quot;
&gt; +#include &quot;WebKitDOMNodePrivate.h&quot;
&gt; +#include &lt;wtf/Noncopyable.h&gt;

I don’t think any of these headers need to be included from this header file.

&gt; +
&gt; +namespace WebCore {
&gt; +class AtomicString;
&gt; +class Event;
&gt; +class Frame;
&gt; +class KURL;
&gt; +class Node;
&gt; +class String;
&gt; +} // namespace WebCore

The only forward-declaration that looks to be needed here is for Node.


&gt; diff --git a/WebCore/bindings/gobject/webkitdomstringconvert.h b/WebCore/bindings/gobject/webkitdomstringconvert.h
&gt; new file mode 100644
&gt; index 0000000..63ea17b
&gt; --- /dev/null
&gt; +++ b/WebCore/bindings/gobject/webkitdomstringconvert.h

The naming of this file isn’t consistent with others in the patch, particular in the aspect of case.   The WebKit prefix on it feels odd too.  The other files with this prefix seem to be part of the API, while this is a set of internal helper functions.

&gt; +
&gt; +#ifndef webkitdomstringconvert_h
&gt; +#define webkitdomstringconvert_h
&gt; +
&gt; +/* convenience functions for converting various webkit string types into a utf glib string */

Comments should be treated as full sentences, and capitalized and punctuated as such.

&gt; +
&gt; +#include &quot;AtomicString.h&quot;
&gt; +#include &quot;CString.h&quot;
&gt; +#include &quot;KURL.h&quot;
&gt; +#include &quot;PlatformString.h&quot;
&gt; +#include &quot;unicode/ustring.h”

This include of &quot;unicode/ustring.h” does not seem to be used here.  The file appears to use glib functionality so it would presumably need to include the relevant headers in order to stand alone.

&gt; +inline char * domStringConvert(WebCore::String const&amp; s) { return g_strdup(s.utf8().data()); }
&gt; +inline char * domStringConvert(WebCore::KURL const&amp; s) { return g_strdup(s.string().utf8().data()); }
&gt; +inline char * domStringConvert(const JSC::UString&amp; s) { return g_strdup(s.UTF8String().c_str()); }
&gt; +inline char * domStringConvert(WebCore::AtomicString const&amp; s) { return g_strdup(s.string().utf8().data()); }

There’s some extra whitespace around the * on these lines.  g_strdup returns gchar*.  Is there a reason the return types here are char* rather than gchar*?  The latter seems to better communicate what type the strings are and how they need to be disposed of.

Do these functions need to be inlined?  They look to be relatively expensive functions to call by virtue of the memory allocation that they perform, so inlining would seem to have little performance benefit.  It may be preferable to move the implementations to a .cpp file so that the number of includes that are pulled in by this header can be reduced.

I’m not crazy about the name “domStringConvert” either.  It feels like it’s trying to say “convert to DOM string”, which would be better expressed by a name like convertToDOMString or toDOMString

&gt; diff --git a/WebCore/bindings/scripts/CodeGeneratorGObject.pm b/WebCore/bindings/scripts/CodeGeneratorGObject.pm
&gt; new file mode 100644
&gt; index 0000000..e9d38ee
&gt; --- /dev/null
&gt; +++ b/WebCore/bindings/scripts/CodeGeneratorGObject.pm

Perl isn’t my most favorite language in the world so it’s probably best for someone deeply familiar to look over this too.  One thing that does jump out is the range of inconsistency in variable naming, many of which deviate from the style guidelines.  Cleaning that up would make it a lot easier for someone with the style guidelines ingrained in their mind to focus on the substance of the patch.

&gt; +        # HACK!

This should be replaced with a FIXME explaining what it’s doing, why it’s doing it, and what it should do in the future instead.

&gt; diff --git a/WebCore/dom/Node.idl b/WebCore/dom/Node.idl
&gt; index c6cd4b9..19546be 100644
&gt; --- a/WebCore/dom/Node.idl
&gt; +++ b/WebCore/dom/Node.idl
&gt; @@ -61,7 +61,9 @@ module core {
&gt;          readonly attribute Node             previousSibling;
&gt;          readonly attribute Node             nextSibling;
&gt;          readonly attribute NamedNodeMap     attributes;
&gt; +#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
&gt;          readonly attribute Document         ownerDocument;
&gt; +#endif
&gt;  
&gt;          [OldStyleObjC, Custom] Node insertBefore(in [Return] Node newChild,
&gt;                                                   in Node refChild)
&gt; @@ -132,6 +134,7 @@ module core {
&gt;  #endif /* defined(LANGUAGE_OBJECTIVE_C) */
&gt;  
&gt;  #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
&gt; +#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
&gt;          [Custom] void addEventListener(in DOMString type, 
&gt;                                         in EventListener listener, 
&gt;                                         in boolean useCapture);
&gt; @@ -141,6 +144,7 @@ module core {
&gt;          boolean dispatchEvent(in Event event)
&gt;              raises(EventException);
&gt;  #endif
&gt; +#endif
&gt;      };
&gt;  
&gt;  }

I don’t see anything in the ChangeLog about why these modifications are here.  If there’s a good reason for them it really needs to be documented so that people looking at the code in the future know why they’re there and whether they can remove them.


Speaking of which… you appear to have two ChangeLog entries in WebCore/ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186372</commentid>
    <comment_count>27</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-01 05:39:49 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; +static gpointer createWrapper(Node* node)
&gt; &gt; +{
&gt; &gt; +    ASSERT(node);
&gt; &gt; +    ASSERT(!ScriptInterpreter::getDOMObject(node));
&gt; &gt; +
&gt; &gt; +    gpointer ret = 0;
&gt; &gt; +
&gt; &gt; +    switch (node-&gt;nodeType()) {
&gt; &gt; +    default:
&gt; &gt; +        ret = wrapNode(node);
&gt; &gt; +    }
&gt; 
&gt; “ret” is a poor name for a local variable.  Something like “wrappedNode” would
&gt; be more descriptive.  The switch statement with only a default case is odd, but
&gt; presumably it was done like that as further patches will add cases to the
&gt; switch?  I think it’d be preferable to remove the switch until it’s needed so
&gt; that the code doesn’t look so odd.

That&apos;s exactly the case, as I told Gustavo. Since you are the second one to ask I&apos;ve changed this into an if as you suggest, we can make it a switch again in the future.


&gt; &gt; diff --git a/WebCore/bindings/gobject/webkitdomstringconvert.h b/WebCore/bindings/gobject/webkitdomstringconvert.h
&gt; &gt; new file mode 100644
&gt; &gt; index 0000000..63ea17b
&gt; &gt; --- /dev/null
&gt; &gt; +++ b/WebCore/bindings/gobject/webkitdomstringconvert.h
&gt; 
&gt; The naming of this file isn’t consistent with others in the patch, particular
&gt; in the aspect of case.   The WebKit prefix on it feels odd too.  The other
&gt; files with this prefix seem to be part of the API, while this is a set of
&gt; internal helper functions.

Right, when I was intending to make this stuff used all over the place I renamed it to ConvertToUTF8String.h, which I think reflects better what it&apos;s about. I don&apos;t plan to make it public again, but I think we should go with that name anyway.

&gt; &gt; +inline char * domStringConvert(WebCore::String const&amp; s) { return g_strdup(s.utf8().data()); }
&gt; &gt; +inline char * domStringConvert(WebCore::KURL const&amp; s) { return g_strdup(s.string().utf8().data()); }
&gt; &gt; +inline char * domStringConvert(const JSC::UString&amp; s) { return g_strdup(s.UTF8String().c_str()); }
&gt; &gt; +inline char * domStringConvert(WebCore::AtomicString const&amp; s) { return g_strdup(s.string().utf8().data()); }
&gt; 
&gt; There’s some extra whitespace around the * on these lines.  g_strdup returns
&gt; gchar*.  Is there a reason the return types here are char* rather than gchar*? 
&gt; The latter seems to better communicate what type the strings are and how they
&gt; need to be disposed of.

gchar* and char* are exactly the same thing, one is just a typedef for the other. The functions return UTF8-encoded NULL-terminated char arrays, that need to be freed manually.

&gt; 
&gt; Do these functions need to be inlined?  They look to be relatively expensive
&gt; functions to call by virtue of the memory allocation that they perform, so
&gt; inlining would seem to have little performance benefit.  It may be preferable
&gt; to move the implementations to a .cpp file so that the number of includes that
&gt; are pulled in by this header can be reduced.

OK, makes sense to me. I guess the intent here was to &quot;keep things the same&quot;, since this operation is usually done inline elsewhere in the code.

&gt; 
&gt; I’m not crazy about the name “domStringConvert” either.  It feels like it’s
&gt; trying to say “convert to DOM string”, which would be better expressed by a
&gt; name like convertToDOMString or toDOMString

I&apos;d say the DOM name is simply wrong here, since what it does is simply go from WebKit string types to UTF8-encoded C-strings that glib wants. So, as I said, I&apos;ll go with convertToUTF8String if it sounds ok.

&gt; 
&gt; &gt; diff --git a/WebCore/bindings/scripts/CodeGeneratorGObject.pm b/WebCore/bindings/scripts/CodeGeneratorGObject.pm
&gt; &gt; new file mode 100644
&gt; &gt; index 0000000..e9d38ee
&gt; &gt; --- /dev/null
&gt; &gt; +++ b/WebCore/bindings/scripts/CodeGeneratorGObject.pm
&gt; 
&gt; Perl isn’t my most favorite language in the world so it’s probably best for
&gt; someone deeply familiar to look over this too.  One thing that does jump out is
&gt; the range of inconsistency in variable naming, many of which deviate from the
&gt; style guidelines.  Cleaning that up would make it a lot easier for someone with
&gt; the style guidelines ingrained in their mind to focus on the substance of the
&gt; patch.

OK, I&apos;ll give it another go. I&apos;m not aware of any official perl style guide for webkit, so I&apos;ll just try to copy as best as I can the style in the other scripts.

&gt; &gt; diff --git a/WebCore/dom/Node.idl b/WebCore/dom/Node.idl
&gt; &gt; index c6cd4b9..19546be 100644
&gt; &gt; --- a/WebCore/dom/Node.idl
&gt; &gt; +++ b/WebCore/dom/Node.idl
&gt; &gt; @@ -61,7 +61,9 @@ module core {
&gt; &gt;          readonly attribute Node             previousSibling;
&gt; &gt;          readonly attribute Node             nextSibling;
&gt; &gt;          readonly attribute NamedNodeMap     attributes;
&gt; &gt; +#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
&gt; &gt;          readonly attribute Document         ownerDocument;
&gt; &gt; +#endif
&gt; &gt;  
&gt; &gt;          [OldStyleObjC, Custom] Node insertBefore(in [Return] Node newChild,
&gt; &gt;                                                   in Node refChild)
&gt; &gt; @@ -132,6 +134,7 @@ module core {
&gt; &gt;  #endif /* defined(LANGUAGE_OBJECTIVE_C) */
&gt; &gt;  
&gt; &gt;  #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
&gt; &gt; +#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
&gt; &gt;          [Custom] void addEventListener(in DOMString type, 
&gt; &gt;                                         in EventListener listener, 
&gt; &gt;                                         in boolean useCapture);
&gt; &gt; @@ -141,6 +144,7 @@ module core {
&gt; &gt;          boolean dispatchEvent(in Event event)
&gt; &gt;              raises(EventException);
&gt; &gt;  #endif
&gt; &gt; +#endif
&gt; &gt;      };
&gt; &gt;  
&gt; &gt;  }
&gt; 
&gt; I don’t see anything in the ChangeLog about why these modifications are here. 
&gt; If there’s a good reason for them it really needs to be documented so that
&gt; people looking at the code in the future know why they’re there and whether
&gt; they can remove them.

I&apos;ve explained where this comes from in a previous comment in the bug, but you are right in saying that it should be mentioned in the ChangeLog.

&gt; 
&gt; 
&gt; Speaking of which… you appear to have two ChangeLog entries in
&gt; WebCore/ChangeLog.

Yup. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186380</commentid>
    <comment_count>28</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2010-02-01 06:05:49 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; &gt; +inline char * domStringConvert(WebCore::String const&amp; s) { return g_strdup(s.utf8().data()); }
&gt; &gt; &gt; +inline char * domStringConvert(WebCore::KURL const&amp; s) { return g_strdup(s.string().utf8().data()); }
&gt; &gt; &gt; +inline char * domStringConvert(const JSC::UString&amp; s) { return g_strdup(s.UTF8String().c_str()); }
&gt; &gt; &gt; +inline char * domStringConvert(WebCore::AtomicString const&amp; s) { return g_strdup(s.string().utf8().data()); }
&gt; &gt; 
&gt; &gt; There’s some extra whitespace around the * on these lines.  g_strdup returns
&gt; &gt; gchar*.  Is there a reason the return types here are char* rather than gchar*? 
&gt; &gt; The latter seems to better communicate what type the strings are and how they
&gt; &gt; need to be disposed of.
&gt; 
&gt; gchar* and char* are exactly the same thing, one is just a typedef for the
&gt; other. The functions return UTF8-encoded NULL-terminated char arrays, that need
&gt; to be freed manually.

There is a subtle difference. g_strdup may be using a different memory allocator, such as GSlice, as opposed to strdup. So using gchar* for the return type makes it clear that g_free rather than free should be used to release the memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186385</commentid>
    <comment_count>29</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-01 06:16:21 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; &gt; 
&gt; &gt; gchar* and char* are exactly the same thing, one is just a typedef for the
&gt; &gt; other. The functions return UTF8-encoded NULL-terminated char arrays, that need
&gt; &gt; to be freed manually.
&gt; 
&gt; There is a subtle difference. g_strdup may be using a different memory
&gt; allocator, such as GSlice, as opposed to strdup. So using gchar* for the return
&gt; type makes it clear that g_free rather than free should be used to release the
&gt; memory.

When inside a glib/gobject project all memory should be freed using the glib functions, g_free, g_slice_free, etc. This is IMHO an orthogonal issue wrt whether you use &apos;gchar&apos; or &apos;char&apos;, which are identical and basically considered bad ideas even by the people who first thought it was desirable to introduce extra names like that when portability is not an issue. We could, and probably should, stop using &apos;gchar&apos; or &apos;gint&apos; inside WebKitGTK+, and you&apos;d still need to use g_free to free our strings, so the idea that this is somehow related to what name you use for your types is not correct IMHO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186412</commentid>
    <comment_count>30</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2010-02-01 07:27:20 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; &gt; 
&gt; &gt; &gt; gchar* and char* are exactly the same thing, one is just a typedef for the
&gt; &gt; &gt; other. The functions return UTF8-encoded NULL-terminated char arrays, that need
&gt; &gt; &gt; to be freed manually.
&gt; &gt; 
&gt; &gt; There is a subtle difference. g_strdup may be using a different memory
&gt; &gt; allocator, such as GSlice, as opposed to strdup. So using gchar* for the return
&gt; &gt; type makes it clear that g_free rather than free should be used to release the
&gt; &gt; memory.
&gt; 
&gt; When inside a glib/gobject project all memory should be freed using the glib
&gt; functions, g_free, g_slice_free, etc. This is IMHO an orthogonal issue wrt
&gt; whether you use &apos;gchar&apos; or &apos;char&apos;, which are identical and basically considered
&gt; bad ideas even by the people who first thought it was desirable to introduce
&gt; extra names like that when portability is not an issue. We could, and probably
&gt; should, stop using &apos;gchar&apos; or &apos;gint&apos; inside WebKitGTK+, and you&apos;d still need to
&gt; use g_free to free our strings, so the idea that this is somehow related to
&gt; what name you use for your types is not correct IMHO.

This is not correct. If memory is allocated using Glib, it needs to be released using Glib. Otherwise you can end up trying to free something with an allocator unaware of that memory. Think of xmlGetProp/ xmlFree or sqlite3_malloc/ sqlite3_free which have the same requirement.

Arguably gchar is &quot;just&quot; an alias. But if used consistently it can serve as a reminder to use the correct memory functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186414</commentid>
    <comment_count>31</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-01 07:36:36 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; &gt; When inside a glib/gobject project all memory should be freed using the glib
&gt; &gt; functions, g_free, g_slice_free, etc. This is IMHO an orthogonal issue wrt
&gt; &gt; whether you use &apos;gchar&apos; or &apos;char&apos;, which are identical and basically considered
&gt; &gt; bad ideas even by the people who first thought it was desirable to introduce
&gt; &gt; extra names like that when portability is not an issue. We could, and probably
&gt; &gt; should, stop using &apos;gchar&apos; or &apos;gint&apos; inside WebKitGTK+, and you&apos;d still need to
&gt; &gt; use g_free to free our strings, so the idea that this is somehow related to
&gt; &gt; what name you use for your types is not correct IMHO.
&gt; 
&gt; This is not correct. If memory is allocated using Glib, it needs to be released
&gt; using Glib. Otherwise you can end up trying to free something with an allocator
&gt; unaware of that memory. Think of xmlGetProp/ xmlFree or sqlite3_malloc/
&gt; sqlite3_free which have the same requirement.

This is exactly what I meant. When using glib in a project most/all of your functions will use the allocation functions from glib, so in the common case you&apos;ll have to use the corresponding release functions, regardless of your style preference between &apos;gchar&apos; and &apos;char&apos;.

&gt; 
&gt; Arguably gchar is &quot;just&quot; an alias. But if used consistently it can serve as a
&gt; reminder to use the correct memory functions.

I don&apos;t agree that we need to do this to be constantly reminded that you have to use &apos;g_free&apos; to free strings instead of simply &apos;free&apos;. That should be the default assumption (certainly we don&apos;t document it all over the place), and special care should be given, documentation-wise, to the cases where for some reason this cannot be done (like, for example, if we need to return strings allocated by different libraries).

In any case I&apos;m reasonable sure that this not the origin of the &apos;gchar&apos; typedef, whether or not some people choose to use for that purpose is another issue.

Also, this is offtopic in any case. For now I&apos;ll use gchar everywhere since that is our current style, we can discuss whether or not we want to change in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186941</commentid>
    <comment_count>32</comment_count>
      <attachid>47928</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-02 05:53:38 -0800</bug_when>
    <thetext>Created attachment 47928
dombindings.diff

Hopefully this addresses all the comments about the patch so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186943</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-02 06:02:13 -0800</bug_when>
    <thetext>Attachment 47928 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/gobject/WebKitDOMObject.cpp:12:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187147</commentid>
    <comment_count>34</comment_count>
      <attachid>46448</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-02 14:18:34 -0800</bug_when>
    <thetext>Comment on attachment 46448
inputfilecheck.patch

Clearing r+ on this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187148</commentid>
    <comment_count>35</comment_count>
      <attachid>46449</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-02 14:18:48 -0800</bug_when>
    <thetext>Comment on attachment 46449
featuredefines.patch

Clearing r+ on this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188663</commentid>
    <comment_count>36</comment_count>
    <who name="Grant Gayed">grant_gayed</who>
    <bug_when>2010-02-08 09:58:49 -0800</bug_when>
    <thetext>Hi, just to confirm, is this bug still targetted for WebKitGTK 1.2?  (I say &quot;still&quot; because I think I remember seeing a blog post indicating that this was the plan).  I ask because I either need to decide whether to wait for the new API if its coming by then, or starting working on a workaround approach otherwise.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197567</commentid>
    <comment_count>37</comment_count>
      <attachid>47928</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-09 07:24:13 -0800</bug_when>
    <thetext>Comment on attachment 47928
dombindings.diff

I struggled with what to do with this patch.  On the one hand, it&apos;s much to large to give anything but a syntactic review, but on the other hand, the patch has been up for review for a while and a number of people have commented.  The GDOM bindings seem to be in demand by a number of people and we&apos;ve got to start somewhere.

I&apos;m surprised that there&apos;s so much code in the make files.  I would have expected those snippets to be broken out into a separate file somehow.

In expanding the GDOM bindings, please consider using the generic bindings, when possible, to improve maintainability.  The generic bindings don&apos;t have much in them yet (and certainly nothing that&apos;s helpful for this patch), but we&apos;re hoping to grow them over time.

On balance, I think we should take this patch and iterate on this code rather than leaving the patch in review forever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197590</commentid>
    <comment_count>38</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-03-09 08:15:31 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; Hi, just to confirm, is this bug still targetted for WebKitGTK 1.2?  (I say
&gt; &quot;still&quot; because I think I remember seeing a blog post indicating that this was
&gt; the plan).  I ask because I either need to decide whether to wait for the new
&gt; API if its coming by then, or starting working on a workaround approach
&gt; otherwise.  Thanks!

1.2 definitely won&apos;t have this in a usable form, the next stable release will (it seems).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197591</commentid>
    <comment_count>39</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-03-09 08:17:15 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 47928 [details])
&gt; I&apos;m surprised that there&apos;s so much code in the make files.  I would have
&gt; expected those snippets to be broken out into a separate file somehow.

This might be a good idea, yes.

&gt; 
&gt; In expanding the GDOM bindings, please consider using the generic bindings,
&gt; when possible, to improve maintainability.  The generic bindings don&apos;t have
&gt; much in them yet (and certainly nothing that&apos;s helpful for this patch), but
&gt; we&apos;re hoping to grow them over time.

OK, have to say I haven&apos;t really looked into it. Will check how other ports use it.

&gt; 
&gt; On balance, I think we should take this patch and iterate on this code rather
&gt; than leaving the patch in review forever.

Yep, that&apos;s the plan, thank you.

Now I&apos;ll check with kov about whether we want to branch for 1.2 before landing this, which I think is the most sensible thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199894</commentid>
    <comment_count>40</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-15 15:57:53 -0700</bug_when>
    <thetext>Attachment 47928 was posted by a committer and has review+, assigning to Xan Lopez for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215335</commentid>
    <comment_count>41</comment_count>
      <attachid>47928</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-21 08:33:41 -0700</bug_when>
    <thetext>Comment on attachment 47928
dombindings.diff

Landed this as r57985, more patches to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215366</commentid>
    <comment_count>42</comment_count>
      <attachid>53964</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-21 09:44:31 -0700</bug_when>
    <thetext>Created attachment 53964
dombindingsdocument.diff

Second patch, binding Document.idl and finally exposing the API to access all the bindings.

This is still very big (55K), but unfortunately this is a bit of a all-or-nothing thing. I think I might be able to split the HTML*Element stuff into a different (useless like the first one) patch if this seems too overwhelming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215372</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-21 09:53:36 -0700</bug_when>
    <thetext>Attachment 53964 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:36:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:61:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:69:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:77:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:97:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:104:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:109:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:118:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:126:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp:136:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/gtk/webkit/webkitwebview.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/gtk/webkit/webkitwebview.h:386:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/gtk/tests/testwebview.c&quot;
Total errors found: 17 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215395</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-21 10:34:59 -0700</bug_when>
    <thetext>Attachment 53964 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/1814032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215797</commentid>
    <comment_count>45</comment_count>
      <attachid>54045</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-22 02:50:26 -0700</bug_when>
    <thetext>Created attachment 54045
dombindingsdocument.diff

Fix the build with geolocation and fix all style warnings except the one ni webkitwebview.h, since fixing that one would make the file internally inconsistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215860</commentid>
    <comment_count>46</comment_count>
      <attachid>54045</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-22 06:46:02 -0700</bug_when>
    <thetext>Comment on attachment 54045
dombindingsdocument.diff

You can&apos;t r+ your own patches, that&apos;s cheating! lol =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215864</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-22 06:50:41 -0700</bug_when>
    <thetext>Attachment 54045 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/gtk/webkit/webkitwebview.h:386:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/gtk/tests/testwebview.c&quot;
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215868</commentid>
    <comment_count>48</comment_count>
      <attachid>54045</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-22 07:04:06 -0700</bug_when>
    <thetext>Comment on attachment 54045
dombindingsdocument.diff

72      if (node-&gt;nodeType())
 74     switch (node-&gt;nodeType()) {
 75     case Node::ELEMENT_NODE:
 76         if (node-&gt;isHTMLElement())
 77             wrappedNode = createHTMLElementWrapper(static_cast&lt;HTMLElement*&gt;(node));
 78         else
 79             wrappedNode = wrapNode(node);
 80         break;
 81     default:
7382         wrappedNode = wrapNode(node);
 83         break;
 84     }

Thisss seems to change the meaning of the default condition. Is it possible that node-&gt;nodeType() will return false boolean-wise? What if t does? You&apos;ll try to wrap something that makes no sense? Perhaps we should add an ASSERT there, since I believe it should not be possible that nodeType will return 0 there. http://trac.webkit.org/browser/trunk/WebCore/dom/Node.h

 108     $CLASS_NAME =~ s/DOMX_PATH/DOM_X_PATH/;

hrm I wonder why this is called DOMX_PATH. I would have expected XPATH to be a single word. Can we go DOM_XPATH here?

 163 
 164 

Needless double blank lines ;D

 171     # Skip all custom methods; is this ok?
 172     if ($function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Custom&quot;}) {
 173         return 1;
 174     }

Add a FIXME note.

 184     if ($function-&gt;signature-&gt;type eq &quot;Event&quot;) {
 185         return 1;
 186     }

This condition appears twice.

 4445 webkit_web_view_get_document(WebKitWebView* webView)

I prefer get_dom_document. Let me post what I have already before I go hunt more information about this Reflect/ReflectURL thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215869</commentid>
    <comment_count>49</comment_count>
      <attachid>54045</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-22 07:14:21 -0700</bug_when>
    <thetext>Comment on attachment 54045
dombindingsdocument.diff

OK, I read the thread, and I remembered reading it last year. I believe this patch looks good, so I&apos;m OK with landing it with the concerns I raised addressed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216049</commentid>
    <comment_count>50</comment_count>
      <attachid>54045</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-22 13:21:09 -0700</bug_when>
    <thetext>Comment on attachment 54045
dombindingsdocument.diff

Addressed all of Gustavo&apos;s comments and pushed as r58108.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216437</commentid>
    <comment_count>51</comment_count>
      <attachid>54166</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-23 09:15:02 -0700</bug_when>
    <thetext>Created attachment 54166
headerfix.diff

This should fix the warnings in the tests, the main DOM header was not included in webkit.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216653</commentid>
    <comment_count>52</comment_count>
      <attachid>54206</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-23 18:14:47 -0700</bug_when>
    <thetext>Created attachment 54206
propertywarnings.diff

This should fix all the warnings we have in the generated code for properties. I&apos;m not sure if what I&apos;m doing passing around references to arrays is very orthodox, so I&apos;d appreciate a double check by someone who actually knows perl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217158</commentid>
    <comment_count>53</comment_count>
      <attachid>54309</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-26 09:54:47 -0700</bug_when>
    <thetext>Created attachment 54309
testdomdocument.diff

This moves the Document tests to their own file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217160</commentid>
    <comment_count>54</comment_count>
      <attachid>54310</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-26 09:55:38 -0700</bug_when>
    <thetext>Created attachment 54310
testelementsbytagname.diff

Adds a test for getElementsByTagName</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217161</commentid>
    <comment_count>55</comment_count>
      <attachid>54311</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-26 09:56:29 -0700</bug_when>
    <thetext>Created attachment 54311
testgetelementsbyclassname.diff

Adds a test for getElementsByClassName.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217163</commentid>
    <comment_count>56</comment_count>
      <attachid>54312</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-26 09:57:13 -0700</bug_when>
    <thetext>Created attachment 54312
testgetelementbyid.diff

Add a test for getElementbyId.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217758</commentid>
    <comment_count>57</comment_count>
      <attachid>54206</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-27 10:13:49 -0700</bug_when>
    <thetext>Comment on attachment 54206
propertywarnings.diff

 351 EOF
 352 push(@txtSetProps, $txtSetProps);
 353     if (scalar @writeableProperties &gt; 0) {
 354         $txtSetProps = &lt;&lt; &quot;EOF&quot;;
306355     ${className} *self = WEBKIT_DOM_${clsCaps}(object);
307356     $privFunction
 357 EOF
 358 push(@txtSetProps, $txtSetProps);
 359     }
308360 

Looks like you have some indentation problems here, except for that looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217763</commentid>
    <comment_count>58</comment_count>
      <attachid>54309</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-27 10:20:45 -0700</bug_when>
    <thetext>Comment on attachment 54309
testdomdocument.diff

It would be awesome if we added JSC to the mix in this test, to make sure the title is reflected in what javascript sees, but this can come later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217771</commentid>
    <comment_count>59</comment_count>
      <attachid>54310</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-27 10:28:37 -0700</bug_when>
    <thetext>Comment on attachment 54310
testelementsbytagname.diff

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217774</commentid>
    <comment_count>60</comment_count>
      <attachid>54311</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-27 10:31:46 -0700</bug_when>
    <thetext>Comment on attachment 54311
testgetelementsbyclassname.diff

Looks good, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217776</commentid>
    <comment_count>61</comment_count>
      <attachid>54312</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-27 10:33:19 -0700</bug_when>
    <thetext>Comment on attachment 54312
testgetelementbyid.diff

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218999</commentid>
    <comment_count>62</comment_count>
      <attachid>54311</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-29 06:52:06 -0700</bug_when>
    <thetext>Comment on attachment 54311
testgetelementsbyclassname.diff

Landed in r58513</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219000</commentid>
    <comment_count>63</comment_count>
      <attachid>54310</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-29 06:52:30 -0700</bug_when>
    <thetext>Comment on attachment 54310
testelementsbytagname.diff

Landed in r58512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219002</commentid>
    <comment_count>64</comment_count>
      <attachid>54309</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-29 06:53:02 -0700</bug_when>
    <thetext>Comment on attachment 54309
testdomdocument.diff

Landed in r58511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219003</commentid>
    <comment_count>65</comment_count>
      <attachid>54206</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-29 06:54:02 -0700</bug_when>
    <thetext>Comment on attachment 54206
propertywarnings.diff

Landed in r58510</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219004</commentid>
    <comment_count>66</comment_count>
      <attachid>54166</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-29 06:54:31 -0700</bug_when>
    <thetext>Comment on attachment 54166
headerfix.diff

Landed in r58509</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219005</commentid>
    <comment_count>67</comment_count>
      <attachid>54697</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-29 06:56:54 -0700</bug_when>
    <thetext>Created attachment 54697
skipfunctioncleanup.diff

A small cleanup to the skip function logic and whitelist a couple of methods in HTMLCollection.idl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219006</commentid>
    <comment_count>68</comment_count>
      <attachid>54698</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-29 06:57:37 -0700</bug_when>
    <thetext>Created attachment 54698
getlinks.diff

Unit test for webkit_dom_document_get_links</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219014</commentid>
    <comment_count>69</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-29 07:18:54 -0700</bug_when>
    <thetext>Attachment 54698 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/1914074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219025</commentid>
    <comment_count>70</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-04-29 07:29:08 -0700</bug_when>
    <thetext>(In reply to comment #69)
&gt; Attachment 54698 [details] did not build on gtk:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/1914074

Well, of course, since it needs the previous patch :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219617</commentid>
    <comment_count>71</comment_count>
      <attachid>54697</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-30 14:29:57 -0700</bug_when>
    <thetext>Comment on attachment 54697
skipfunctioncleanup.diff

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219618</commentid>
    <comment_count>72</comment_count>
      <attachid>54698</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-30 14:32:00 -0700</bug_when>
    <thetext>Comment on attachment 54698
getlinks.diff

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219709</commentid>
    <comment_count>73</comment_count>
      <attachid>54697</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-01 03:42:33 -0700</bug_when>
    <thetext>Comment on attachment 54697
skipfunctioncleanup.diff

Committed as r58633</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219710</commentid>
    <comment_count>74</comment_count>
      <attachid>54698</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-01 03:43:23 -0700</bug_when>
    <thetext>Comment on attachment 54698
getlinks.diff

Committed as r58634.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219712</commentid>
    <comment_count>75</comment_count>
      <attachid>54850</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-01 04:20:05 -0700</bug_when>
    <thetext>Created attachment 54850
isgdomclass.diff

Small cleanup to use more code from CodeGenerator.pm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219968</commentid>
    <comment_count>76</comment_count>
      <attachid>54045</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:18:57 -0700</bug_when>
    <thetext>Comment on attachment 54045
dombindingsdocument.diff

Cleared Gustavo Noronha Silva&apos;s review+ from obsolete attachment 54045 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219969</commentid>
    <comment_count>77</comment_count>
      <attachid>54166</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:19:10 -0700</bug_when>
    <thetext>Comment on attachment 54166
headerfix.diff

Cleared Gustavo Noronha Silva&apos;s review+ from obsolete attachment 54166 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219970</commentid>
    <comment_count>78</comment_count>
      <attachid>54206</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:19:26 -0700</bug_when>
    <thetext>Comment on attachment 54206
propertywarnings.diff

Cleared Gustavo Noronha Silva&apos;s review+ from obsolete attachment 54206 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219971</commentid>
    <comment_count>79</comment_count>
      <attachid>54309</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:19:40 -0700</bug_when>
    <thetext>Comment on attachment 54309
testdomdocument.diff

Cleared Gustavo Noronha Silva&apos;s review+ from obsolete attachment 54309 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219972</commentid>
    <comment_count>80</comment_count>
      <attachid>54310</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:19:55 -0700</bug_when>
    <thetext>Comment on attachment 54310
testelementsbytagname.diff

Cleared Gustavo Noronha Silva&apos;s review+ from obsolete attachment 54310 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219973</commentid>
    <comment_count>81</comment_count>
      <attachid>54311</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:20:10 -0700</bug_when>
    <thetext>Comment on attachment 54311
testgetelementsbyclassname.diff

Cleared Gustavo Noronha Silva&apos;s review+ from obsolete attachment 54311 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219974</commentid>
    <comment_count>82</comment_count>
      <attachid>54312</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:20:25 -0700</bug_when>
    <thetext>Comment on attachment 54312
testgetelementbyid.diff

Cleared Gustavo Noronha Silva&apos;s review+ from obsolete attachment 54312 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219975</commentid>
    <comment_count>83</comment_count>
      <attachid>54697</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:20:42 -0700</bug_when>
    <thetext>Comment on attachment 54697
skipfunctioncleanup.diff

Cleared Oliver Hunt&apos;s review+ from obsolete attachment 54697 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219976</commentid>
    <comment_count>84</comment_count>
      <attachid>54698</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:20:59 -0700</bug_when>
    <thetext>Comment on attachment 54698
getlinks.diff

Cleared Oliver Hunt&apos;s review+ from obsolete attachment 54698 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220129</commentid>
    <comment_count>85</comment_count>
      <attachid>54930</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-03 09:07:11 -0700</bug_when>
    <thetext>Created attachment 54930
geolocationdom.diff

Pay attention to the available WebCore features when generating the bindings (well, to geolocation so far).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220167</commentid>
    <comment_count>86</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-03 10:29:23 -0700</bug_when>
    <thetext>Is there some reason we&apos;re working on this code with an epic uber bug?  This bug has 86 comments and is pretty intimidating to catch up on.  Using one patch per bug would be easier for the rest of us to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220170</commentid>
    <comment_count>87</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-03 10:33:31 -0700</bug_when>
    <thetext>(In reply to comment #86)
&gt; Is there some reason we&apos;re working on this code with an epic uber bug?  This
&gt; bug has 86 comments and is pretty intimidating to catch up on.  Using one patch
&gt; per bug would be easier for the rest of us to follow.

Should I use this as a tracker bug then? Or will you just find the new bugs? I was doing it mostly so that the non-GTK+ people can easily see the patches while we are in the early stages, but I can do anything else if that works best for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220177</commentid>
    <comment_count>88</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-03 10:40:30 -0700</bug_when>
    <thetext>&gt; Should I use this as a tracker bug then? Or will you just find the new bugs?

Yeah, a tracking bug seems like a good idea.  Sometimes I&apos;m tempted to read these patches, but I never know how many of the preceding comments are related to the patch.  By breaking things up into individual bugs, it&apos;s easier for me to see what context is relevant for a given patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220184</commentid>
    <comment_count>89</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-03 10:59:25 -0700</bug_when>
    <thetext>I suggest closing this bug as a dupe of some new clean master bug, and then relating each patch bug to said master.  Master bugs occasionally get comments.  Sorting through zillions of comments is impossible on any bug, even a master/tracking bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220473</commentid>
    <comment_count>90</comment_count>
      <attachid>54850</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-05-03 22:21:27 -0700</bug_when>
    <thetext>Comment on attachment 54850
isgdomclass.diff

Looks fine. Is the GObject generation covered by unit tests introduced by Adam?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220474</commentid>
    <comment_count>91</comment_count>
      <attachid>54930</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-05-03 22:22:44 -0700</bug_when>
    <thetext>Comment on attachment 54930
geolocationdom.diff


&gt;  
&gt; +# Some methods&apos; body (only the body, since the public API can&apos;t be
&gt; +# conditional) should be guarded by #ifdefs depending on whether
&gt; +# certain features in WebKit are enabled.
&gt; +my %conditionalMethods = (&quot;webkit_dom_geolocation_clear_watch&quot; =&gt; &quot;GEOLOCATION&quot;);

I think the current code generation is dangerous. We are not retuning anything from these methods now. We will need to have a default return type or such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220522</commentid>
    <comment_count>92</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-04 01:41:30 -0700</bug_when>
    <thetext>(In reply to comment #90)
&gt; (From update of attachment 54850 [details])
&gt; Looks fine. Is the GObject generation covered by unit tests introduced by Adam?

Yep, I run it when I do changes to the script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220523</commentid>
    <comment_count>93</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-04 01:43:04 -0700</bug_when>
    <thetext>(In reply to comment #91)
&gt; (From update of attachment 54930 [details])
&gt; 
&gt; &gt;  
&gt; &gt; +# Some methods&apos; body (only the body, since the public API can&apos;t be
&gt; &gt; +# conditional) should be guarded by #ifdefs depending on whether
&gt; &gt; +# certain features in WebKit are enabled.
&gt; &gt; +my %conditionalMethods = (&quot;webkit_dom_geolocation_clear_watch&quot; =&gt; &quot;GEOLOCATION&quot;);
&gt; 
&gt; I think the current code generation is dangerous. We are not retuning anything
&gt; from these methods now. We will need to have a default return type or such.

You mean that if they return values the info should also include the default return type? Makes sense, although in this particular case it does not apply since it does not return anything. We can do that when we cover the first method with a return type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220550</commentid>
    <comment_count>94</comment_count>
      <attachid>54850</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-04 04:16:40 -0700</bug_when>
    <thetext>Comment on attachment 54850
isgdomclass.diff

Landed as r58749</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230574</commentid>
    <comment_count>95</comment_count>
      <attachid>54930</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-05-25 21:25:34 -0700</bug_when>
    <thetext>Comment on attachment 54930
geolocationdom.diff

Looks sane to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230620</commentid>
    <comment_count>96</comment_count>
      <attachid>54930</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-26 02:20:11 -0700</bug_when>
    <thetext>Comment on attachment 54930
geolocationdom.diff

Landed as r60223</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230621</commentid>
    <comment_count>97</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-26 02:20:44 -0700</bug_when>
    <thetext>All patches landed, closing the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234680</commentid>
    <comment_count>98</comment_count>
    <who name="webkit censorship bypass 0005">wk.censorship.bypass.0005</who>
    <bug_when>2010-06-06 12:48:18 -0700</bug_when>
    <thetext>(In reply to comment #89)
&gt; I suggest closing this bug as a dupe of some new clean master bug, and then relating each patch bug to said master.  Master bugs occasionally get comments.  Sorting through zillions of comments is impossible on any bug, even a master/tracking bug.

eric, that action was recommended by another webkit developer, for the 16401 bug development, which topped a whopping 300+ comments.  following that recommendation in good faith, the 16401 bugreport was then split into 30 separate bugreports. a lot of effort was made in creating dependencies so that the bugreports could be reviewed in the correct order.  however, as a result of following the recommended and approved course of action, _another_ webkit developer - mark rowe - took unilateral action to close all 30 bugreports, and terminated the account of the submitter.

fortunately, now that this bugreport has _at last_ been accepted, further work can be carried out on an incremental basis.

the inter-dependencies between the DOM objects always meant that this work was pretty much going to have to be accepted &quot;on faith&quot;, and fortunately it doesn&apos;t have any impact or dependencies &quot;per se&quot; on the core webkit functionality (it never did).

there is a lot that still needs to be done, but i think you will find that there are a large number of people who will be extremely grateful to xan, gustav and all the reviewers for finally making this happen.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46446</attachid>
            <date>2010-01-13 04:59:45 -0800</date>
            <delta_ts>2010-01-13 05:10:48 -0800</delta_ts>
            <desc>featuredefines.patch</desc>
            <filename>featuredefines.patch</filename>
            <type>text/plain</type>
            <size>8584</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBhYTYwYWIyYWFlOTI3Yjc2NDhiNjYxYTcyYTY3YmE3OWE3MWIxZmJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
aHUsIDE5IE5vdiAyMDA5IDE1OjUyOjMwICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wMS0x
MyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBSZW5hbWUgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQg
dG8gRkVBVFVSRV9ERUZJTkVTIGFuZCByZW1vdmUKICAgICAgICB0aGUgaGFyZGNvZGVkIExBTkdV
QUdFX0pBVkFTQ1JJUFQ9MSwgaW4gcHJlcGFyYXRpb24gZm9yIGl0cyB1c2UgYnkKICAgICAgICB0
aGUgR09iamVjdCBET00gYmluZGluZ3MuCgogICAgICAgICogR05VbWFrZWZpbGUuYW06Ci0tLQog
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICB8ICAgMTAgKysrKysrKysKIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0gfCAgIDU2ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGU0NjZhZWYuLjE2MDgwNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDEtMTMgIFhhbiBMb3BleiAg
PHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbmFtZSBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCB0byBGRUFUVVJF
X0RFRklORVMgYW5kIHJlbW92ZQorICAgICAgICB0aGUgaGFyZGNvZGVkIExBTkdVQUdFX0pBVkFT
Q1JJUFQ9MSwgaW4gcHJlcGFyYXRpb24gZm9yIGl0cyB1c2UgYnkKKyAgICAgICAgdGhlIEdPYmpl
Y3QgRE9NIGJpbmRpbmdzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMTAtMDEt
MTMgIE1paWtrYSBIZWlra2luZW4gPG1paWtrYS5oZWlra2luZW5AZGlnaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOTcwZTY0OC4uOWUyMmFl
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0xLDcgKzEsNyBAQAogCiBXZWJDb3JlIDo9ICQoc3JjZGlyKS9XZWJDb3Jl
CiAKLUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUIDo9IExBTkdVQUdFX0pBVkFTQ1JJUFQ9MQor
RkVBVFVSRV9ERUZJTkVTIDo9CiBTVkdfRkVBVFVSRVMgOj0KIEhUTUxfRkVBVFVSRVMgOj0KIApA
QCAtMjA3Miw3ICsyMDcyLDcgQEAgZW5kaWYKICMgQ2hhbm5lbCBtZXNhZ2luZyBzdXBwb3J0CiAj
IC0tLQogaWYgRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HCi1GRUFUVVJFX0RFRklORVNfSkFWQVND
UklQVCArPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc9MQorRkVBVFVSRV9ERUZJTkVTICs9IEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORz0xCiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1ERU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HPTEKQEAgLTIxMTAsNyArMjExMCw3IEBAIGVuZGlmICMgRU5E
IFVTRV9QQU5HTwogIyAtLS0tCiAjIEhUTUwgRGF0YSBHcmlkIC0gZGlzYWJsZSBmb3Igbm93Lgog
IyAtLS0tCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfREFUQUdSSUQ9MAor
RkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9EQVRBR1JJRD0wCiAKIHdlYmNvcmVfY3BwZmxhZ3Mg
Kz0gXAogCS1ERU5BQkxFX0RBVEFHUklEPTAKQEAgLTIxMTksNyArMjExOSw3IEBAIHdlYmNvcmVf
Y3BwZmxhZ3MgKz0gXAogIyBKYXZhU2NyaXB0IERlYnVnZ2VyL1Byb2ZpbGVyCiAjIC0tLS0KIGlm
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCAr
PSBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUj0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxF
X0pBVkFTQ1JJUFRfREVCVUdHRVI9MQogCiB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktREVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSPTEKQEAgLTIxMzQsNyArMjEzNCw3IEBAIGVuZGlmICMgRU5E
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAjIE9mZmxpbmUgV2ViIEFwcGxpY2F0aW9ucwog
IyAtLS0tCiBpZiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TCi1GRUFUVVJFX0RFRklO
RVNfSkFWQVNDUklQVCArPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TPTEKK0ZFQVRV
UkVfREVGSU5FUyArPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TPTEKIAogSURMX0JJ
TkRJTkdTICs9IFwKIAlXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
LmlkbApAQCAtMjE2NSw3ICsyMTY1LDcgQEAgZW5kaWYgIyBFTkQgRU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUwogIyBEYXRhYmFzZSBTdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9EQVRB
QkFTRQotRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0RBVEFCQVNFPTEKK0ZF
QVRVUkVfREVGSU5FUyArPSBFTkFCTEVfREFUQUJBU0U9MQogCiBJRExfQklORElOR1MgKz0gXAog
CVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwgXApAQCAtMjI0NSw3ICsyMjQ1LDcgQEAgZW5k
aWYgIyBFTkQgRU5BQkxFX0RBVEFCQVNFCiAjIEhUTUw1IGRhdGFsaXN0IFN1cHBvcnQKICMgLS0t
LQogaWYgRU5BQkxFX0RBVEFMSVNUCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfREFUQUxJU1Q9MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9EQVRBTElTVD0xCiBIVE1M
X0ZFQVRVUkVTICs9IEVOQUJMRV9EQVRBTElTVD0xCiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURF
TkFCTEVfREFUQUxJU1Q9MQpAQCAtMjI2MCw3ICsyMjYwLDcgQEAgZ2xvYmFsX2NwcGZsYWdzICs9
IC1ERU5BQkxFX0VWRU5UU09VUkNFPTAKIGVuZGlmCiAKIGlmIEVOQUJMRV9FVkVOVFNPVVJDRQot
RkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0VWRU5UU09VUkNFPTEKK0ZFQVRV
UkVfREVGSU5FUyArPSBFTkFCTEVfRVZFTlRTT1VSQ0U9MQogCiB3ZWJjb3JlX2NwcGZsYWdzICs9
IFwKIAktREVOQUJMRV9FVkVOVFNPVVJDRT0xCkBAIC0yMjcwLDcgKzIyNzAsNyBAQCBlbmRpZiAj
IEVOQUJMRV9FVkVOVFNPVVJDRQogIyBIVE1MNSBjbGllbnQtc2lkZSBzZXNzaW9uIGFuZCBwZXJz
aXN0ZW50IHN0b3JhZ2UKICMgLS0tLQogaWYgRU5BQkxFX0RPTV9TVE9SQUdFCi1GRUFUVVJFX0RF
RklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfRE9NX1NUT1JBR0U9MQorRkVBVFVSRV9ERUZJTkVT
ICs9IEVOQUJMRV9ET01fU1RPUkFHRT0xCiAKIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuaWRsIFwKQEAgLTIzMzQsNyArMjMzNCw3IEBAIGVuZGlmICMgRU5EIEVO
QUJMRV9JQ09OREFUQUJBU0UKICMgLS0tLQogaWYgRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUwog
Ci1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRT
PTEKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTPTEKIAogd2Vi
Y29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFM9MQogCkBAIC0yMzQ0
LDcgKzIzNDQsNyBAQCBlbmRpZiAjIEVORCBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTCiAjIFZp
ZGVvIFN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX1ZJREVPCi1GRUFUVVJFX0RFRklORVNfSkFW
QVNDUklQVCArPSBFTkFCTEVfVklERU89MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9WSURF
Tz0xCiAKIEhUTUxfRkVBVFVSRVMgKz0gRU5BQkxFX1ZJREVPPTEKIHdlYmNvcmVfY3BwZmxhZ3Mg
Kz0gLURFTkFCTEVfVklERU89MQpAQCAtMjQwOSw3ICsyNDA5LDcgQEAgZW5kaWYgIyBFTkQgRU5B
QkxFX1hIVE1MTVAKICMgWFBhdGggU3VwcG9ydAogIyAtLS0tCiBpZiBFTkFCTEVfWFBBVEgKLUZF
QVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9YUEFUSD0xCitGRUFUVVJFX0RFRklO
RVMgKz0gRU5BQkxFX1hQQVRIPTEKIAogd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9YUEFU
SD0xCiAKQEAgLTI0NzksNyArMjQ3OSw3IEBAIGVuZGlmICMgRU5EIEVOQUJMRV9YUEFUSAogIyBY
U0xUIFN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX1hTTFQKLUZFQVRVUkVfREVGSU5FU19KQVZB
U0NSSVBUICs9IEVOQUJMRV9YU0xUPTEKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfWFNMVD0x
CiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfWFNMVD0xCiAKQEAgLTI1MDMsNyArMjUw
Myw3IEBAIGVuZGlmICMgRU5EIEVOQUJMRV9YU0xUCiAjIFdlYiBXb3JrZXJzIHN1cHBvcnQKICMg
LS0tLQogaWYgRU5BQkxFX1dPUktFUlMKLUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVO
QUJMRV9XT1JLRVJTPTEKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfV09SS0VSUz0xCiAKIHdl
YmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1ERU5BQkxFX1dPUktFUlM9MQpAQCAtMjU1Myw3ICsyNTUz
LDcgQEAgZW5kaWYKICMgU2hhcmVkV29ya2VyIHN1cHBvcnQKICMgLS0tCiBpZiBFTkFCTEVfU0hB
UkVEX1dPUktFUlMKLUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TSEFSRURf
V09SS0VSUz0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEKIAog
d2ViY29yZV9jcHBmbGFncyArPSBcCiAJLURFTkFCTEVfU0hBUkVEX1dPUktFUlM9MQpAQCAtMjU3
Nyw3ICsyNTc3LDcgQEAgZW5kaWYKICMgV01MIFN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX1dN
TAotRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dNTD0xCitGRUFUVVJFX0RF
RklORVMgKz0gRU5BQkxFX1dNTD0xCiAKIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvV01MRWxlbWVudEZhY3RvcnkuY3BwIFwKQEAgLTI2MzYsNyArMjYzNiw3IEBA
IGVuZGlmICMgRU5EIEVOQUJMRV9XTUwKICMgLS0tLQogaWYgRU5BQkxFX0ZJTFRFUlMKIAotRkVB
VFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0ZJTFRFUlM9MQorRkVBVFVSRV9ERUZJ
TkVTICs9IEVOQUJMRV9GSUxURVJTPTEKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfRklM
VEVSUz0xCiAKIHdlYmNvcmVfc291cmNlcyArPSBcCkBAIC0yNjcxLDcgKzI2NzEsNyBAQCBlbmRp
ZiAjIEVORCBFTkFCTEVfRklMVEVSUwogIyAtLS0tCiBpZiBFTkFCTEVfR0VPTE9DQVRJT04KIAot
RkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0dFT0xPQ0FUSU9OPTEKK0ZFQVRV
UkVfREVGSU5FUyArPSBFTkFCTEVfR0VPTE9DQVRJT049MQogd2ViY29yZV9jcHBmbGFncyArPSBc
CiAJLURFTkFCTEVfR0VPTE9DQVRJT049MQogCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCBlbmRpZiAj
IEVORCBFTkFCTEVfR0VPTE9DQVRJT04KICMgLS0tLQogaWYgRU5BQkxFX01BVEhNTAogCi1GRUFU
VVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfTUFUSE1MPTEKK0ZFQVRVUkVfREVGSU5F
UyArPSBFTkFCTEVfTUFUSE1MPTEKIAogd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLURFTkFCTEVf
TUFUSE1MPTEKQEAgLTI3MjQsNyArMjcyNCw3IEBAIGVuZGlmICMgRU5EIEVOQUJMRV9NQVRITUwK
ICMgTm90aWZpY2F0aW9ucyBzdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9OT1RJRklDQVRJT05T
Ci1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCitG
RUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX05PVElGSUNBVElPTlM9MQogCiB3ZWJjb3JlX2NwcGZs
YWdzICs9IFwKIAktREVOQUJMRV9OT1RJRklDQVRJT05TPTEKQEAgLTI3NDUsNyArMjc0NSw3IEBA
IGVuZGlmICMgRU5EIEVOQUJMRV9OT1RJRklDQVRJT05TCiAjIEZJWE1FOiBhbGxvdyBhIG1vcmUg
ZmluZS1ncmFpbmVkIGluY2x1c2lvbi9nZW5lcmF0aW9uIG9mIHNvdXJjZXMgcGVyIFNWRyBmZWF0
dXJlCiAjIC0tLS0KIGlmIEVOQUJMRV9TVkcKLUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9
IEVOQUJMRV9TVkc9MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9TVkc9MQogCiBXRUJDT1JF
X0NTU19QUk9QRVJUWV9OQU1FUyArPSAkKFdlYkNvcmUpL2Nzcy9TVkdDU1NQcm9wZXJ0eU5hbWVz
LmluIAogV0VCQ09SRV9DU1NfVkFMVUVfS0VZV09SRFMgKz0gJChXZWJDb3JlKS9jc3MvU1ZHQ1NT
VmFsdWVLZXl3b3Jkcy5pbgpAQCAtMzMxNSwzMSArMzMxNSwzMSBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCiAjIFNWRyBGZWF0dXJlcwogaWYgRU5BQkxFX1NWR19VU0UKLUZFQVRVUkVfREVGSU5F
U19KQVZBU0NSSVBUICs9IEVOQUJMRV9TVkdfVVNFPTEKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFC
TEVfU1ZHX1VTRT0xCiBTVkdfRkVBVFVSRVMgKz0gRU5BQkxFX1NWR19VU0U9MQogd2ViY29yZV9j
cHBmbGFncyArPSAtREVOQUJMRV9TVkdfVVNFPTEKIGVuZGlmCiAKIGlmIEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QKLUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1Q9MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1Q9MQogU1ZHX0ZFQVRVUkVTICs9IEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q9MQogd2ViY29y
ZV9jcHBmbGFncyArPSAtREVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q9MQogZW5kaWYKIAogaWYg
RU5BQkxFX1NWR19GT05UUwotRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1NW
R19GT05UUz0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1NWR19GT05UUz0xCiBTVkdfRkVB
VFVSRVMgKz0gRU5BQkxFX1NWR19GT05UUz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxF
X1NWR19GT05UUz0xCiBlbmRpZgogCiBpZiBFTkFCTEVfU1ZHX0FTX0lNQUdFCi1GRUFUVVJFX0RF
RklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfU1ZHX0FTX0lNQUdFPTEKK0ZFQVRVUkVfREVGSU5F
UyArPSBFTkFCTEVfU1ZHX0FTX0lNQUdFPTEKIFNWR19GRUFUVVJFUyArPSBFTkFCTEVfU1ZHX0FT
X0lNQUdFPTEKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfU1ZHX0FTX0lNQUdFPTEKIGVu
ZGlmCiAKIGlmIEVOQUJMRV9TVkdfQU5JTUFUSU9OCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQ
VCArPSBFTkFCTEVfU1ZHX0FOSU1BVElPTj0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1NW
R19BTklNQVRJT049MQogU1ZHX0ZFQVRVUkVTICs9IEVOQUJMRV9TVkdfQU5JTUFUSU9OPTEKIHdl
YmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfU1ZHX0FOSU1BVElPTj0xCiBlbmRpZgpAQCAtMzM3
MCw3ICszMzcwLDcgQEAgZW5kaWYgIyBFTkQgRU5BQkxFX1NWRwogIyBXZWIgU29ja2V0cyBTdXBw
b3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9XRUJfU09DS0VUUwotRkVBVFVSRV9ERUZJTkVTX0pBVkFT
Q1JJUFQgKz0gRU5BQkxFX1dFQl9TT0NLRVRTPTEKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVf
V0VCX1NPQ0tFVFM9MQogCiBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaWRsCkBAIC0zNTIwLDcgKzM1MjAsNyBAQCBEZXJpdmVkU291cmNlcy9KUyUuaDog
RGVyaXZlZFNvdXJjZXMvSlMlLmNwcDsKIAogLlNFQ09OREFSWToKIERlcml2ZWRTb3VyY2VzL0pT
JS5jcHA6ICUuaWRsICQoU0NSSVBUU19CSU5ESU5HUykgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQotCSQoQU1fVl9HRU4pJChQRVJMKSAtSSQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmlu
ZGluZ3MucGwgJChJRExfUEFUSDolPS0taW5jbHVkZSAiJSIpIC0tb3V0cHV0RGlyICIkKEdFTlNP
VVJDRVMpIiAtLWRlZmluZXMgIiQoRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQpIiAtLWdlbmVy
YXRvciBKUyAkPAorCSQoQU1fVl9HRU4pJChQRVJMKSAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2Ny
aXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJ
RExfUEFUSDolPS0taW5jbHVkZSAiJSIpIC0tb3V0cHV0RGlyICIkKEdFTlNPVVJDRVMpIiAtLWRl
ZmluZXMgIkxBTkdVQUdFX0pBVkFTQ1JJUFQ9MSAkKEZFQVRVUkVfREVGSU5FUykiIC0tZ2VuZXJh
dG9yIEpTICQ8CiAKIElETF9CSU5ESU5HU19KU19QVVJFIDo9IFwKIAlXZWJDb3JlL3N2Zy9FbGVt
ZW50VGltZUNvbnRyb2wuaWRsIFwKLS0gCjEuNi41LjIKCg==
</data>
<flag name="commit-queue"
          id="28706"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46448</attachid>
            <date>2010-01-13 05:02:10 -0800</date>
            <delta_ts>2010-02-02 14:18:34 -0800</delta_ts>
            <desc>inputfilecheck.patch</desc>
            <filename>inputfilecheck.patch</filename>
            <type>text/plain</type>
            <size>1126</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBhZWZmN2RjZjdhMGZiZjdkNTQzMzYzYWUwNTk3NmFmZTNlYzAwZDdkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBG
cmksIDIwIE5vdiAyMDA5IDE0OjU3OjMxICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wMS0x
MyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBObyBuZWVkIHRvIGNoZWNrIHR3aWNlIGlmIHRoZXJlJ3Mg
YW4gaW5wdXQgZmlsZS4KCiAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRp
bmdzLnBsOgotLS0KIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5w
bCB8ICAgIDEgLQogMSBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRp
bmdzLnBsIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCmlu
ZGV4IGM3YWRlYjMuLmFkMjlkYzUgMTAwNzU1Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2Vu
ZXJhdGUtYmluZGluZ3MucGwKQEAgLTU2LDcgKzU2LDYgQEAgbXkgJGlkbEZpbGUgPSAkQVJHVlsw
XTsKIGRpZSgnTXVzdCBzcGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmluZWQoJGlkbEZp
bGUpOwogZGllKCdNdXN0IHNwZWNpZnkgSURMIHNlYXJjaCBwYXRoLicpIHVubGVzcyBAaWRsRGly
ZWN0b3JpZXM7CiBkaWUoJ011c3Qgc3BlY2lmeSBnZW5lcmF0b3InKSB1bmxlc3MgZGVmaW5lZCgk
Z2VuZXJhdG9yKTsKLWRpZSgnTXVzdCBzcGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmlu
ZWQoJGlkbEZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgb3V0cHV0IGRpcmVjdG9yeS4nKSB1bmxl
c3MgZGVmaW5lZCgkb3V0cHV0RGlyZWN0b3J5KTsKIGRpZSgnTXVzdCBzcGVjaWZ5IGRlZmluZXMn
KSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CiAKLS0gCjEuNi41LjIKCg==
</data>
<flag name="commit-queue"
          id="28708"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46449</attachid>
            <date>2010-01-13 05:10:48 -0800</date>
            <delta_ts>2010-02-02 14:18:48 -0800</delta_ts>
            <desc>featuredefines.patch</desc>
            <filename>featuredefines.patch</filename>
            <type>text/plain</type>
            <size>8807</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBkMDdjMDExNzU3YjFmNGFkOGU0OGE0YWM2MDI0YTc3MTMwMWY5MWU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
aHUsIDE5IE5vdiAyMDA5IDE1OjUyOjMwICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wMS0x
MyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBSZW5hbWUgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQg
dG8gRkVBVFVSRV9ERUZJTkVTIGFuZCByZW1vdmUKICAgICAgICB0aGUgaGFyZGNvZGVkIExBTkdV
QUdFX0pBVkFTQ1JJUFQ9MSwgaW4gcHJlcGFyYXRpb24gZm9yIGl0cyB1c2UgYnkKICAgICAgICB0
aGUgR09iamVjdCBET00gYmluZGluZ3MuCgogICAgICAgICogR05VbWFrZWZpbGUuYW06Ci0tLQog
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICB8ICAgMTAgKysrKysrKysKIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0gfCAgIDU4ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGU0NjZhZWYuLjE2MDgwNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDEtMTMgIFhhbiBMb3BleiAg
PHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbmFtZSBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCB0byBGRUFUVVJF
X0RFRklORVMgYW5kIHJlbW92ZQorICAgICAgICB0aGUgaGFyZGNvZGVkIExBTkdVQUdFX0pBVkFT
Q1JJUFQ9MSwgaW4gcHJlcGFyYXRpb24gZm9yIGl0cyB1c2UgYnkKKyAgICAgICAgdGhlIEdPYmpl
Y3QgRE9NIGJpbmRpbmdzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMTAtMDEt
MTMgIE1paWtrYSBIZWlra2luZW4gPG1paWtrYS5oZWlra2luZW5AZGlnaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOTcwZTY0OC4uMGNlMmVk
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0xLDcgKzEsNyBAQAogCiBXZWJDb3JlIDo9ICQoc3JjZGlyKS9XZWJDb3Jl
CiAKLUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUIDo9IExBTkdVQUdFX0pBVkFTQ1JJUFQ9MQor
RkVBVFVSRV9ERUZJTkVTIDo9CiBTVkdfRkVBVFVSRVMgOj0KIEhUTUxfRkVBVFVSRVMgOj0KIApA
QCAtMjA3Miw3ICsyMDcyLDcgQEAgZW5kaWYKICMgQ2hhbm5lbCBtZXNhZ2luZyBzdXBwb3J0CiAj
IC0tLQogaWYgRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HCi1GRUFUVVJFX0RFRklORVNfSkFWQVND
UklQVCArPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc9MQorRkVBVFVSRV9ERUZJTkVTICs9IEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORz0xCiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1ERU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HPTEKQEAgLTIxMTAsNyArMjExMCw3IEBAIGVuZGlmICMgRU5E
IFVTRV9QQU5HTwogIyAtLS0tCiAjIEhUTUwgRGF0YSBHcmlkIC0gZGlzYWJsZSBmb3Igbm93Lgog
IyAtLS0tCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfREFUQUdSSUQ9MAor
RkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9EQVRBR1JJRD0wCiAKIHdlYmNvcmVfY3BwZmxhZ3Mg
Kz0gXAogCS1ERU5BQkxFX0RBVEFHUklEPTAKQEAgLTIxMTksNyArMjExOSw3IEBAIHdlYmNvcmVf
Y3BwZmxhZ3MgKz0gXAogIyBKYXZhU2NyaXB0IERlYnVnZ2VyL1Byb2ZpbGVyCiAjIC0tLS0KIGlm
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCAr
PSBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUj0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxF
X0pBVkFTQ1JJUFRfREVCVUdHRVI9MQogCiB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktREVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSPTEKQEAgLTIxMzQsNyArMjEzNCw3IEBAIGVuZGlmICMgRU5E
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAjIE9mZmxpbmUgV2ViIEFwcGxpY2F0aW9ucwog
IyAtLS0tCiBpZiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TCi1GRUFUVVJFX0RFRklO
RVNfSkFWQVNDUklQVCArPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TPTEKK0ZFQVRV
UkVfREVGSU5FUyArPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TPTEKIAogSURMX0JJ
TkRJTkdTICs9IFwKIAlXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
LmlkbApAQCAtMjE2NSw3ICsyMTY1LDcgQEAgZW5kaWYgIyBFTkQgRU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUwogIyBEYXRhYmFzZSBTdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9EQVRB
QkFTRQotRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0RBVEFCQVNFPTEKK0ZF
QVRVUkVfREVGSU5FUyArPSBFTkFCTEVfREFUQUJBU0U9MQogCiBJRExfQklORElOR1MgKz0gXAog
CVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwgXApAQCAtMjI0NSw3ICsyMjQ1LDcgQEAgZW5k
aWYgIyBFTkQgRU5BQkxFX0RBVEFCQVNFCiAjIEhUTUw1IGRhdGFsaXN0IFN1cHBvcnQKICMgLS0t
LQogaWYgRU5BQkxFX0RBVEFMSVNUCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfREFUQUxJU1Q9MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9EQVRBTElTVD0xCiBIVE1M
X0ZFQVRVUkVTICs9IEVOQUJMRV9EQVRBTElTVD0xCiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURF
TkFCTEVfREFUQUxJU1Q9MQpAQCAtMjI2MCw3ICsyMjYwLDcgQEAgZ2xvYmFsX2NwcGZsYWdzICs9
IC1ERU5BQkxFX0VWRU5UU09VUkNFPTAKIGVuZGlmCiAKIGlmIEVOQUJMRV9FVkVOVFNPVVJDRQot
RkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0VWRU5UU09VUkNFPTEKK0ZFQVRV
UkVfREVGSU5FUyArPSBFTkFCTEVfRVZFTlRTT1VSQ0U9MQogCiB3ZWJjb3JlX2NwcGZsYWdzICs9
IFwKIAktREVOQUJMRV9FVkVOVFNPVVJDRT0xCkBAIC0yMjcwLDcgKzIyNzAsNyBAQCBlbmRpZiAj
IEVOQUJMRV9FVkVOVFNPVVJDRQogIyBIVE1MNSBjbGllbnQtc2lkZSBzZXNzaW9uIGFuZCBwZXJz
aXN0ZW50IHN0b3JhZ2UKICMgLS0tLQogaWYgRU5BQkxFX0RPTV9TVE9SQUdFCi1GRUFUVVJFX0RF
RklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfRE9NX1NUT1JBR0U9MQorRkVBVFVSRV9ERUZJTkVT
ICs9IEVOQUJMRV9ET01fU1RPUkFHRT0xCiAKIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuaWRsIFwKQEAgLTIzMzQsNyArMjMzNCw3IEBAIGVuZGlmICMgRU5EIEVO
QUJMRV9JQ09OREFUQUJBU0UKICMgLS0tLQogaWYgRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUwog
Ci1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRT
PTEKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTPTEKIAogd2Vi
Y29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFM9MQogCkBAIC0yMzQ0
LDcgKzIzNDQsNyBAQCBlbmRpZiAjIEVORCBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTCiAjIFZp
ZGVvIFN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX1ZJREVPCi1GRUFUVVJFX0RFRklORVNfSkFW
QVNDUklQVCArPSBFTkFCTEVfVklERU89MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9WSURF
Tz0xCiAKIEhUTUxfRkVBVFVSRVMgKz0gRU5BQkxFX1ZJREVPPTEKIHdlYmNvcmVfY3BwZmxhZ3Mg
Kz0gLURFTkFCTEVfVklERU89MQpAQCAtMjM5Niw3ICsyMzk2LDcgQEAgZW5kaWYgIyBFTkQgRU5B
QkxFX1ZJREVPCiAjIFhIVE1MLU1QIFN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX1hIVE1MTVAK
LUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9YSFRNTE1QPTEKK0ZFQVRVUkVf
REVGSU5FUyArPSBFTkFCTEVfWEhUTUxNUD0xCiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFC
TEVfWEhUTUxNUD0xCiAKQEAgLTI0MDksNyArMjQwOSw3IEBAIGVuZGlmICMgRU5EIEVOQUJMRV9Y
SFRNTE1QCiAjIFhQYXRoIFN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX1hQQVRICi1GRUFUVVJF
X0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfWFBBVEg9MQorRkVBVFVSRV9ERUZJTkVTICs9
IEVOQUJMRV9YUEFUSD0xCiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfWFBBVEg9MQog
CkBAIC0yNDc5LDcgKzI0NzksNyBAQCBlbmRpZiAjIEVORCBFTkFCTEVfWFBBVEgKICMgWFNMVCBT
dXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9YU0xUCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQ
VCArPSBFTkFCTEVfWFNMVD0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1hTTFQ9MQogCiB3
ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1hTTFQ9MQogCkBAIC0yNTAzLDcgKzI1MDMsNyBA
QCBlbmRpZiAjIEVORCBFTkFCTEVfWFNMVAogIyBXZWIgV29ya2VycyBzdXBwb3J0CiAjIC0tLS0K
IGlmIEVOQUJMRV9XT1JLRVJTCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVf
V09SS0VSUz0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dPUktFUlM9MQogCiB3ZWJjb3Jl
X2NwcGZsYWdzICs9IFwKIAktREVOQUJMRV9XT1JLRVJTPTEKQEAgLTI1NTMsNyArMjU1Myw3IEBA
IGVuZGlmCiAjIFNoYXJlZFdvcmtlciBzdXBwb3J0CiAjIC0tLQogaWYgRU5BQkxFX1NIQVJFRF9X
T1JLRVJTCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfU0hBUkVEX1dPUktF
UlM9MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9TSEFSRURfV09SS0VSUz0xCiAKIHdlYmNv
cmVfY3BwZmxhZ3MgKz0gXAogCS1ERU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEKQEAgLTI1NzcsNyAr
MjU3Nyw3IEBAIGVuZGlmCiAjIFdNTCBTdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9XTUwKLUZF
QVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9XTUw9MQorRkVBVFVSRV9ERUZJTkVT
ICs9IEVOQUJMRV9XTUw9MQogCiB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRT
b3VyY2VzL1dNTEVsZW1lbnRGYWN0b3J5LmNwcCBcCkBAIC0yNjM2LDcgKzI2MzYsNyBAQCBlbmRp
ZiAjIEVORCBFTkFCTEVfV01MCiAjIC0tLS0KIGlmIEVOQUJMRV9GSUxURVJTCiAKLUZFQVRVUkVf
REVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9GSUxURVJTPTEKK0ZFQVRVUkVfREVGSU5FUyAr
PSBFTkFCTEVfRklMVEVSUz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX0ZJTFRFUlM9
MQogCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXApAQCAtMjY3MSw3ICsyNjcxLDcgQEAgZW5kaWYgIyBF
TkQgRU5BQkxFX0ZJTFRFUlMKICMgLS0tLQogaWYgRU5BQkxFX0dFT0xPQ0FUSU9OCiAKLUZFQVRV
UkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9HRU9MT0NBVElPTj0xCitGRUFUVVJFX0RF
RklORVMgKz0gRU5BQkxFX0dFT0xPQ0FUSU9OPTEKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1E
RU5BQkxFX0dFT0xPQ0FUSU9OPTEKIApAQCAtMjY4NSw3ICsyNjg1LDcgQEAgZW5kaWYgIyBFTkQg
RU5BQkxFX0dFT0xPQ0FUSU9OCiAjIC0tLS0KIGlmIEVOQUJMRV9NQVRITUwKIAotRkVBVFVSRV9E
RUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX01BVEhNTD0xCitGRUFUVVJFX0RFRklORVMgKz0g
RU5BQkxFX01BVEhNTD0xCiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1ERU5BQkxFX01BVEhN
TD0xCkBAIC0yNzI0LDcgKzI3MjQsNyBAQCBlbmRpZiAjIEVORCBFTkFCTEVfTUFUSE1MCiAjIE5v
dGlmaWNhdGlvbnMgc3VwcG9ydAogIyAtLS0tCiBpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUwotRkVB
VFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX05PVElGSUNBVElPTlM9MQorRkVBVFVS
RV9ERUZJTkVTICs9IEVOQUJMRV9OT1RJRklDQVRJT05TPTEKIAogd2ViY29yZV9jcHBmbGFncyAr
PSBcCiAJLURFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCBlbmRp
ZiAjIEVORCBFTkFCTEVfTk9USUZJQ0FUSU9OUwogIyBGSVhNRTogYWxsb3cgYSBtb3JlIGZpbmUt
Z3JhaW5lZCBpbmNsdXNpb24vZ2VuZXJhdGlvbiBvZiBzb3VyY2VzIHBlciBTVkcgZmVhdHVyZQog
IyAtLS0tCiBpZiBFTkFCTEVfU1ZHCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfU1ZHPTEKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfU1ZHPTEKIAogV0VCQ09SRV9DU1Nf
UFJPUEVSVFlfTkFNRVMgKz0gJChXZWJDb3JlKS9jc3MvU1ZHQ1NTUHJvcGVydHlOYW1lcy5pbiAK
IFdFQkNPUkVfQ1NTX1ZBTFVFX0tFWVdPUkRTICs9ICQoV2ViQ29yZSkvY3NzL1NWR0NTU1ZhbHVl
S2V5d29yZHMuaW4KQEAgLTMzMTUsMzEgKzMzMTUsMzEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAogIyBTVkcgRmVhdHVyZXMKIGlmIEVOQUJMRV9TVkdfVVNFCi1GRUFUVVJFX0RFRklORVNfSkFW
QVNDUklQVCArPSBFTkFCTEVfU1ZHX1VTRT0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1NW
R19VU0U9MQogU1ZHX0ZFQVRVUkVTICs9IEVOQUJMRV9TVkdfVVNFPTEKIHdlYmNvcmVfY3BwZmxh
Z3MgKz0gLURFTkFCTEVfU1ZHX1VTRT0xCiBlbmRpZgogCiBpZiBFTkFCTEVfU1ZHX0ZPUkVJR05f
T0JKRUNUCi1GRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfU1ZHX0ZPUkVJR05f
T0JKRUNUPTEKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEK
IFNWR19GRUFUVVJFUyArPSBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEKIHdlYmNvcmVfY3Bw
ZmxhZ3MgKz0gLURFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEKIGVuZGlmCiAKIGlmIEVOQUJM
RV9TVkdfRk9OVFMKLUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TVkdfRk9O
VFM9MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9TVkdfRk9OVFM9MQogU1ZHX0ZFQVRVUkVT
ICs9IEVOQUJMRV9TVkdfRk9OVFM9MQogd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9TVkdf
Rk9OVFM9MQogZW5kaWYKIAogaWYgRU5BQkxFX1NWR19BU19JTUFHRQotRkVBVFVSRV9ERUZJTkVT
X0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1NWR19BU19JTUFHRT0xCitGRUFUVVJFX0RFRklORVMgKz0g
RU5BQkxFX1NWR19BU19JTUFHRT0xCiBTVkdfRkVBVFVSRVMgKz0gRU5BQkxFX1NWR19BU19JTUFH
RT0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1NWR19BU19JTUFHRT0xCiBlbmRpZgog
CiBpZiBFTkFCTEVfU1ZHX0FOSU1BVElPTgotRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0g
RU5BQkxFX1NWR19BTklNQVRJT049MQorRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9TVkdfQU5J
TUFUSU9OPTEKIFNWR19GRUFUVVJFUyArPSBFTkFCTEVfU1ZHX0FOSU1BVElPTj0xCiB3ZWJjb3Jl
X2NwcGZsYWdzICs9IC1ERU5BQkxFX1NWR19BTklNQVRJT049MQogZW5kaWYKQEAgLTMzNzAsNyAr
MzM3MCw3IEBAIGVuZGlmICMgRU5EIEVOQUJMRV9TVkcKICMgV2ViIFNvY2tldHMgU3VwcG9ydAog
IyAtLS0tCiBpZiBFTkFCTEVfV0VCX1NPQ0tFVFMKLUZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBU
ICs9IEVOQUJMRV9XRUJfU09DS0VUUz0xCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dFQl9T
T0NLRVRTPTEKIAogSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbApAQCAtMzUyMCw3ICszNTIwLDcgQEAgRGVyaXZlZFNvdXJjZXMvSlMlLmg6IERlcml2
ZWRTb3VyY2VzL0pTJS5jcHA7CiAKIC5TRUNPTkRBUlk6CiBEZXJpdmVkU291cmNlcy9KUyUuY3Bw
OiAlLmlkbCAkKFNDUklQVFNfQklORElOR1MpICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KLQkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRp
bmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsICQoSURMX1BBVEg6JT0tLWluY2x1ZGUgIiUiKSAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VT
KSIgLS1kZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUKSIgLS1nZW5lcmF0b3Ig
SlMgJDwKKwkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMg
JChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsICQoSURMX1BB
VEg6JT0tLWluY2x1ZGUgIiUiKSAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTKSIgLS1kZWZpbmVz
ICJMQU5HVUFHRV9KQVZBU0NSSVBUPTEgJChGRUFUVVJFX0RFRklORVMpIiAtLWdlbmVyYXRvciBK
UyAkPAogCiBJRExfQklORElOR1NfSlNfUFVSRSA6PSBcCiAJV2ViQ29yZS9zdmcvRWxlbWVudFRp
bWVDb250cm9sLmlkbCBcCi0tIAoxLjYuNS4yCgo=
</data>
<flag name="commit-queue"
          id="28710"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46453</attachid>
            <date>2010-01-13 06:39:53 -0800</date>
            <delta_ts>2010-01-13 08:15:32 -0800</delta_ts>
            <desc>gobjectdombindings.patch</desc>
            <filename>gobjectdombindings.patch</filename>
            <type>text/plain</type>
            <size>66598</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA4YjQyZGZlZjRkNDk1MjY5YmIyN2FlMzUzYjk0NTQ4M2YxOTQwNzliIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDEzIEphbiAyMDEwIDEzOjE1OjUxICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wMS0x
MyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzLgoKICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgoKV2ViQ29yZToKCjIwMTAtMDEtMTMgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2Fs
aWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dU
S10gR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzM1OTAKCiAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhl
IEdPYmplY3QgRE9NIGJpbmRpbmdzLgoKICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAg
ICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcDogQWRkZWQuCiAgICAgICAg
KFdlYktpdDo6ZG9tT2JqZWN0cyk6CiAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6Omdl
dCk6CiAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dCk6CiAgICAgICAgKFdlYktp
dDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldCk6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlV3JhcHBl
cik6CiAgICAgICAgKFdlYktpdDo6a2l0KToKICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5oOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0
RE9NT2JqZWN0LmNwcDogQWRkZWQuCiAgICAgICAgKHdlYmtpdF9kb21fb2JqZWN0X2luaXQpOgog
ICAgICAgICh3ZWJraXRfZG9tX29iamVjdF9jbGFzc19pbml0KToKICAgICAgICAqIGJpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0Lmg6IEFkZGVkLgogICAgICAgICogYmluZGluZ3MvZ29i
amVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0Lmg6IEFkZGVkLgogICAgICAgICh3ZWJraXRfZG9t
X2dzdHJpbmdfY29udmVydCk6CiAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1n
ZW5lcmF0ZS1oZWFkZXJzLnBsOiBBZGRlZC4KICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKLS0tCiBD
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEg
KwogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDY0ICsrLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDM2ICsKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA5MiArKy0KIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5k
aW5nLmNwcCAgICAgIHwgIDEwMSArKwogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TUJpbmRpbmcuaCAgICAgICAgfCAgIDU2ICsKIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJL
aXRET01PYmplY3QuY3BwICAgICAgIHwgICAyMyArCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NT2JqZWN0LmggICAgICAgICB8ICAgNTggKwogV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L3dlYmtpdGRvbXN0cmluZ2NvbnZlcnQuaCAgfCAgIDM3ICsKIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAgIHwgMTEwNiArKysrKysrKysrKysrKysr
KysrKwogLi4uL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsICAg
fCAgIDc3ICsrCiBXZWJDb3JlL2RvbS9Ob2RlLmlkbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDQgKwogMTIgZmlsZXMgY2hhbmdlZCwgMTY2MiBpbnNlcnRpb25zKCspLCAzIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01CaW5kaW5nLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01CaW5kaW5nLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0LmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdP
YmplY3QucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29i
amVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IDM5MTk2ZTAuLjNkYzI5MDIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMS0xMyAgWGFuIExvcGV6ICA8eGxvcGV6
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHRoZSBHT2JqZWN0IERPTSBiaW5kaW5ncy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
CiAyMDEwLTAxLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05V
bWFrZWZpbGUuYW0KaW5kZXggZjlhZDIxYy4uNGNmZWJlNSAxMDA2NDQKLS0tIGEvR05VbWFrZWZp
bGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTM1LDYgKzM1LDcgQEAgRElTVENIRUNLX0NP
TkZJR1VSRV9GTEFHUyA9IFwKIAogIyBEaXJlY3RvcnkgZm9yIGF1dG9nZW5lcmF0ZWQgc291cmNl
cwogR0VOU09VUkNFUyA6PSAkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMKK0dFTlNPVVJD
RVNXRUJLSVRET00gOj0gJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdAogR0VO
UFJPR1JBTVMgOj0gJCh0b3BfYnVpbGRkaXIpL1Byb2dyYW1zCiAKICMgU2NyaXB0IGZvciBjcmVh
dGluZyBoYXNoIHRhYmxlcwpAQCAtODksNiArOTAsMTEgQEAgQ0xFQU5GSUxFUyA6PQogRElTVENM
RUFORklMRVMgOj0KIE1BSU5UQUlORVJDTEVBTkZJTEVTIDo9CiAKK3dlYmNvcmVndGtfY3BwZmxh
Z3MgKz0gXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdCBcCisJLUkk
KHNyY2RpcikvV2ViQ29yZS9iaW5kaW5ncyBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0CisKICMgQ0ZMQUdTL0NYWEZMQUdTIHVzZWQgYnkgV2ViQ29yZSBhbmQgV2ViS2l0
CiAjCiAjIGd0aysucGMgYWxyZWFkeSBpbmNsdWRlIGdsaWIsIGNhaXJvLCBmcmVldHlwZSBhbmQg
cGFuZ28gQ0ZMQUdTCkBAIC0yMzYsNiArMjQyLDcgQEAgbGlid2Via2l0XzFfMF9sYV9MSUJBREQg
PSBcCiAJLWxwdGhyZWFkIFwKIAlsaWJKYXZhU2NyaXB0Q29yZS5sYSBcCiAJbGliV2ViQ29yZUpT
LmxhIFwKKwlsaWJnZG9tLmxhIFwKIAkkKHdlYmNvcmVfbGRmbGFncykgXAogCSQoQ0FJUk9fTElC
UykgXAogCSQoQ09WRVJBR0VfTERGTEFHUykgXApAQCAtMjU3LDYgKzI2NCwxMCBAQCBsaWJ3ZWJr
aXRfMV8wX2xhX0xJQkFERCA9IFwKIAkkKFVOSUNPREVfTElCUykgXAogCSQoWFRfTElCUykKIAor
bGliZ2RvbV9sYWRpciA9ICQocHJlZml4KS9pbmNsdWRlL3dlYmtpdC0xLjAvd2Via2l0ZG9tCits
aWJnZG9tX2xhX0hFQURFUlMgPSBcCisJJChsaWJnZG9tX2hfYXBpKQorCiAjCiAjIEV4dHJhIGNo
ZWNrcyBhbmQgZmxhZ3MKIGdsb2JhbF9jcHBmbGFncyArPSBcCkBAIC0zMzYsNiArMzQ3LDcgQEAg
d2Via2l0Z3RrX2hfYXBpICs9IFwKIAogd2Via2l0Z3RrX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGVudW10eXBlcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbWVudW10eXBlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdG1hcnNoYWwuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRtYXJzaGFsLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGVudW10eXBlcy5oCkBAIC0zODksNyArNDAxLDggQEAgd2Via2l0Z3RrX2NwcGZsYWdzICs9
IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrIFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL3dlYmtpdCBcCi0JLUkkKHRv
cF9idWlsZGRpcikvV2ViS2l0L2d0ay93ZWJraXQKKwktSSQodG9wX2J1aWxkZGlyKS9XZWJLaXQv
Z3RrL3dlYmtpdCBcCisJLUkkKEdFTlNPVVJDRVNXRUJLSVRET00pCiAKIHdlYmtpdGd0a19jbGVh
bmZpbGVzICs9IFwKIAkkKHRvcF9idWlsZGRpcikvc3RhbXAtd2Via2l0bWFyc2hhbC5jcHAgXApA
QCAtNTEwLDYgKzUyMyw0OSBAQCBEZXJpdmVkU291cmNlcy93ZWJraXRlbnVtdHlwZXMuY3BwOiAk
KHdlYmtpdGd0a19oX2FwaSkgR05VbWFrZWZpbGUKIAkmJiBjcCB4Z2VuLWd0YyAkQCBcCiAJJiYg
cm0gLWYgeGdlbi1ndGMKIAorV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG9tZW51bXR5cGVzLmg6
IHN0YW1wLXdlYmtpdGRvbWVudW10eXBlcy5oCisJQHRydWUKK3N0YW1wLXdlYmtpdGRvbWVudW10
eXBlcy5oOiAkKGxpYmdkb21faF9hcGkpIEdOVW1ha2VmaWxlCisJJChBTV9WX0dFTilnbGliLW1r
ZW51bXMgXAorCQkJLS1maGVhZCAiI2lmbmRlZiBXRUJLSVRfRE9NX0VOVU1fVFlQRVNfSFxuIiBc
CisJCQktLWZoZWFkICIjZGVmaW5lIFdFQktJVF9ET01fRU5VTV9UWVBFU19IXG5cbiIgXAorCQkJ
LS1maGVhZCAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG5cbiIgXAorCQkJLS1maGVhZCAiR19C
RUdJTl9ERUNMU1xuXG4iIFwKKwkJCS0tZnRhaWwgIkdfRU5EX0RFQ0xTXG5cbiIgXAorCQkJLS1m
dGFpbCAiI2VuZGlmXG4iIFwKKwkJCS0tZnByb2QgIiNpbmNsdWRlIDx3ZWJraXQvQGJhc2VuYW1l
QD5cblxuIiBcCisJCQktLWVwcm9kICIjZGVmaW5lIFdFQktJVF9ET01fVFlQRV9ARU5VTVNIT1JU
QCBAZW51bV9uYW1lQF9nZXRfdHlwZSgpXG5cbiIgXAorCQkJLS1lcHJvZCAiV0VCS0lUX0FQSSBH
VHlwZVxuQGVudW1fbmFtZUBfZ2V0X3R5cGUodm9pZCk7blxuIiBcCisJCQkkKGxpYmdkb21faF9h
cGkpIHwgXAorCQlzZWQgJ3Msd2ViX2tpdCx3ZWJraXRfZG9tLCcgfCBcCisJCXNlZCAncyxXRUJL
SVRfRE9NX1RZUEVfS0lULFdFQktJVF9ET01fVFlQRSwnIFwKKwkJPiB4Z2VuLWNndGggXAorCSYm
IChjbXAgLXMgeGdlbi1jZ3RoIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvbWVudW10eXBlcy5o
IHx8IGNwIHhnZW4tY2d0aCBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb21lbnVtdHlwZXMuaCkg
XAorCSYmIHJtIC1mIHhnZW4tY2d0aCBcCisJJiYgZWNobyB0aW1lc3RhbXAgPiAkKEBGKQorCitE
ZXJpdmVkU291cmNlcy93ZWJraXRkb21lbnVtdHlwZXMuY3BwOiAkKHRvcF9idWlsZGRpcikvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZG9tZW51bXR5cGVzLmggJChsaWJnZG9tX2hfYXBpKSBHTlVt
YWtlZmlsZQorCSQoQU1fVl9HRU4pZ2xpYi1ta2VudW1zIFwKKwkJCS0tZmhlYWQgIiNpbmNsdWRl
IDxjb25maWcuaD5cbiIgXAorCQkJLS1maGVhZCAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG4i
IFwKKwkJCS0tZmhlYWQgIiNpbmNsdWRlIFwiJCh0b3BfYnVpbGRkaXIpL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRvbWVudW10eXBlcy5oXCJcblxuIiBcCisJCQktLWZoZWFkICJleHRlcm4gXCJD
XCIge1xuXG4iIFwKKwkJCS0tZnByb2QgIlxuLyogZW51bWVyYXRpb25zIGZyb20gXCJAZmlsZW5h
bWVAXCIgKi8iIFwKKwkJCS0tdmhlYWQgInN0YXRpYyBjb25zdCBHQFR5cGVAVmFsdWUgX0BlbnVt
X25hbWVAX3ZhbHVlc10gPSB7IiBcCisJCQktLXZwcm9kICIgICAgeyBAVkFMVUVOQU1FQCwgXCJA
VkFMVUVOQU1FQFwiLCBcIkB2YWx1ZW5pY2tAXCIgfSwiIFwKKwkJCS0tdnRhaWwgIiAgICB7IDAs
IE5VTEwsIE5VTEwgfVxufTtcblxuIiBcCisJCQktLXZ0YWlsICJHVHlwZSBAZW51bV9uYW1lQF9n
ZXRfdHlwZSh2b2lkKVxue1xuIiBcCisJCQktLXZ0YWlsICIgICAgc3RhdGljIEdUeXBlIHR5cGUg
PSAwO1xuXG4iIFwKKwkJCS0tdnRhaWwgIiAgICBpZiAoIXR5cGUpXG4iIFwKKwkJCS0tdnRhaWwg
IiAgICAgICAgdHlwZSA9IGdfQHR5cGVAX3JlZ2lzdGVyX3N0YXRpYyhcIkBFbnVtTmFtZUBcIiwg
X0BlbnVtX25hbWVAX3ZhbHVlcyk7XG5cbiIgXAorCQkJLS12dGFpbCAiICAgIHJldHVybiB0eXBl
O1xufVxuXG4iIFwKKwkJCS0tZnRhaWwgIn1cbiIgXAorCQkkKGxpYmdkb21faF9hcGkpIHwgXAor
CQlzZWQgJ3Msd2ViX2tpdCx3ZWJraXRkb20sJyBcCisJCT4geGdlbi1jZ3RjIFwKKwkmJiBjcCB4
Z2VuLWNndGMgJEAgXAorCSYmIHJtIC1mIHhnZW4tY2d0YworCiAjIEZpbGVzIHRoYXQgd2lsbCBi
ZSBkaXN0cmlidXRlZAogRVhUUkFfRElTVCArPSBcCiAJJChzcmNkaXIpL2d0ay1kb2MubWFrZSBc
CkBAIC01NTAsNiArNjA2LDkgQEAgd2Via2l0X3Rlc3RzX2NmbGFncyA9IFwKIAktSSQoc3JjZGly
KS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvV2ViS2l0
L2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ayBcCisJLUkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMgXAorCS1JJCh0b3Bfc3JjZGlyKS9XZWJDb3JlL2JpbmRpbmdzIFwK
KwktSSQodG9wX3NyY2RpcikvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0IFwKIAkkKGdsb2JhbF9j
ZmxhZ3MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCkBAIC02NzMsNyAr
NzMyLDggQEAgQlVJTFRfU09VUkNFUyArPSBcCiAJJCh3ZWJjb3JlX2J1aWx0X3NvdXJjZXMpIFwK
IAkkKHdlYmNvcmVfYnVpbHRfbm9zb3VyY2VzKSBcCiAJJCh3ZWJraXRndGtfYnVpbHRfc291cmNl
cykgXAotCSQod2Via2l0Z3RrX2J1aWx0X25vc291cmNlcykKKwkkKHdlYmtpdGd0a19idWlsdF9u
b3NvdXJjZXMpIFwKKwkkKGdkb21fYnVpbHRfbm9zb3VyY2VzKQogCiAjIFByb2plY3Qtd2lkZSBj
bGVhbiBydWxlcwogIyBGaWxlcyB0aGF0IHdpbGwgYmUgY2xlYW5lZApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNjA4MDZjLi40NTJiMzli
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMiw2ICsyLDQyIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAK
KyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgQWRkIGluaXRpYWwg
c3VwcG9ydCBmb3IgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmRvbU9iamVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpET01PYmplY3RDYWNoZTo6Z2V0KToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQpOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdF9kb21fb2JqZWN0X2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9vYmplY3RfY2xh
c3NfaW5pdCk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaDog
QWRkZWQuCisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0
Lmg6IEFkZGVkLgorICAgICAgICAod2Via2l0X2RvbV9nc3RyaW5nX2NvbnZlcnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vTm9kZS5pZGw6CisKKzIwMTAtMDEtMTMgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5lZWQgdG8gY2hlY2sgdHdpY2UgaWYgdGhlcmUncyBhbiBpbnB1dCBmaWxl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDoKKwor
MjAxMC0wMS0xMyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVuYW1lIEZFQVRVUkVfREVGSU5F
U19KQVZBU0NSSVBUIHRvIEZFQVRVUkVfREVGSU5FUyBhbmQgcmVtb3ZlCiAgICAgICAgIHRoZSBo
YXJkY29kZWQgTEFOR1VBR0VfSkFWQVNDUklQVD0xLCBpbiBwcmVwYXJhdGlvbiBmb3IgaXRzIHVz
ZSBieQogICAgICAgICB0aGUgR09iamVjdCBET00gYmluZGluZ3MuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAwY2UyZWRm
Li5jNThiM2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KQEAgLTksOSArOSwxMyBAQCBXRUJDT1JFX0NTU19QUk9QRVJUWV9O
QU1FUyA6PSAkKFdlYkNvcmUpL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCiBXRUJDT1JFX0NTU19W
QUxVRV9LRVlXT1JEUyA6PSAkKFdlYkNvcmUpL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCiAKIHdl
YmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1JJChzcmNkaXIpL1dlYktpdC9ndGsgXAorCS1JJChzcmNk
aXIpL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQgXAorCS1JJChzcmNkaXIpL1dlYktpdC9ndGsv
d2Via2l0IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvYmluZGluZ3MvanMgXAorCS1JJChz
cmNkaXIpL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdCBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9i
cmlkZ2UgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvYnJpZGdlL2MgXAogCS1JJChzcmNkaXIpL1dl
YkNvcmUvY3NzIFwKQEAgLTczLDcgKzc3LDggQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiB3
ZWJjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvRG9jVHlwZVN0cmlu
Z3MuY3BwIFwKIAlEZXJpdmVkU291cmNlcy90b2tlbml6ZXIuY3BwIFwKLQlEZXJpdmVkU291cmNl
cy9Db2xvckRhdGEuYworCURlcml2ZWRTb3VyY2VzL0NvbG9yRGF0YS5jIFwKKwlEZXJpdmVkU291
cmNlcy93ZWJraXQvd2Via2l0ZG9tZHVtbXkuYwogCiB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0g
XAogCURlcml2ZWRTb3VyY2VzL0NTU0dyYW1tYXIuY3BwIFwKQEAgLTI5NCw2ICsyOTksMTQgQEAg
SURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3htbC9YTUxTZXJpYWxpemVyLmlkbCBcCiAJV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5pZGwKIAord2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlX
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tc3RyaW5nY29udmVydC5oIFwKKwlXZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5jcHAgXAorCVdlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01PYmplY3QuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NT2JqZWN0LmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmpl
Y3RQcml2YXRlLmgKKwogd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL1dlYkNvcmVQcmVm
aXguaCBcCiAgICAgICAgIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBc
CkBAIC0zNTY3LDYgKzM1ODAsODIgQEAgbGliV2ViQ29yZUpTLmxhOiAkKGxpYldlYkNvcmVKU19v
YmplY3RzKQogCSQoQ1hYTElOSykgJChsaWJXZWJDb3JlSlNfb2JqZWN0cykgJChMSUJTKQogCiAK
K0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb21kdW1teS5jOgorCWVjaG8gPiAkQAorCisj
IEJlY2F1c2UgV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5oIGlzIHN0
YXRpYyBzb3VyY2UgYnV0IGlzIGFsc28gYSBkaXN0cmlidXRlZCBoZWFkZXIKKyMgcmVxdWlyZWQg
Ynkgb3RoZXIgZGlzdHJpYnV0ZWQgaGVhZGVycyAoYm90aCBzdGF0aWMgYW5kIGF1dG8tZ2VuZXJh
dGVkKSwgbmVlZCB0byBtb3ZlIHRoaXMgdG8gdGhlCisjIERlcml2ZWRTb3VyY2VzL3dlYmtpdCBk
aXJlY3RvcnkuICBUaGUgcmVhc29uIGlzIHRoYXQgd2Ugd2FudCBhbGwgaGVhZGVyIGZpbGVzIGRp
c3RyaWJ1dGVkIGluIHRoZQorIyBpbmNsdWRlL3dlYmtpdC14Lnkvd2Via2l0IGRpcmVjdG9yeSwg
YnV0IGRvIG5vdCB3YW50IHRvIG5hbWUgdGhlIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdCBkaXJl
Y3RvcnkgCisjICJ3ZWJraXQiLCBhcyB0aGF0J3MgYSBiaXQgcHJlc3VtcHR1b3VzIGZvciBhIEdU
SyBiaW5kaW5nLgorJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T01PYmplY3QuaDoKKwljcCAtZiAkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
T2JqZWN0LmggJEAKKworIyBTdGFydCB3aXRoIGEgc3Vic2V0IG9mIGFsbCB0aGUgRE9NIGJpbmRp
bmdzCitJRExfQklORElOR1NfR0RPTSA6PSBcCisJV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwgXAor
CVdlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCisJV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNs
YXJhdGlvbi5pZGwgXAorCVdlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsIFwKKwlXZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5pZGwgXAorCVdlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwgXAorCVdlYkNv
cmUvY3NzL1N0eWxlU2hlZXQuaWRsIFwKKwlXZWJDb3JlL2RvbS9BdHRyLmlkbCBcCisJV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwgXAorCVdl
YkNvcmUvZG9tL05vZGUuaWRsIFwKKwlXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwKKworIyBBbGwg
Y2xhc3NlcyBhdXRvZ2VuZXJhdGVkIGluIHRoZSBHT2JqZWN0IERPTSBiaW5kaW5ncworR0RPTV9B
VVRPX0NMQVNTRVMgOj0gJChiYXNlbmFtZSAkKG5vdGRpciAkKElETF9CSU5ESU5HU19HRE9NKSkp
CisKKyMgVGhlIGNsYXNzZXMgaW1wbGVtZW50ZWQgbWFudWFsbHkKK0dET01fRklYRURfQ0xBU1NF
UyA6PSBPYmplY3QKKworR0RPTV9DTEFTU0VTIDo9ICQoR0RPTV9BVVRPX0NMQVNTRVMpICQoR0RP
TV9GSVhFRF9DTEFTU0VTKQorCisjIEZpbHRlciBvdXQgU1ZHIGZvciBub3cKK0ZFQVRVUkVfREVG
SU5FU19HRE9NIDo9ICQoZmlsdGVyLW91dCBFTkFCTEUtU1ZHJSwgJChGRUFUVVJFX0RFRklORVMp
KQorCisjIEF1dG9nZW5lcmF0ZWQgaGVhZGVyIGZpbGVzCitHRE9NX0hFQURFUlNfQlVJTFQgOj0g
JChwYXRzdWJzdCAlLERlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmgsJChHRE9NX0FV
VE9fQ0xBU1NFUykpIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L3dl
YmtpdGRvbS5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L3dlYmtp
dGRvbWRlZmluZXMuaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9X
ZWJLaXRET01PYmplY3QuaAorCisjIEF1dG9nZW5lcmF0ZWQgc291cmNlIGZpbGVzCitHRE9NX1NP
VVJDRVNfQlVJTFQgOj0gJChwYXRzdWJzdCAlLERlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T00lLmNwcCwkKEdET01fQVVUT19DTEFTU0VTKSkKKworIyBIYW5kLWNvZGVkIGhlYWRlciBmaWxl
cworR0RPTV9IRUFERVJTX0ZJWEVEIDo9ICQocGF0c3Vic3QgJSwkKHNyY2RpcikvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTSUuaCwkKEdET01fRklYRURfQ0xBU1NFUykpCisKKyMg
QWxsIGhlYWRlciBmaWxlcyB0aGF0IGdldCBpbnN0YWxsZWQKK2xpYmdkb21faF9hcGkgOj0gJChH
RE9NX0hFQURFUlNfRklYRUQpICQoR0RPTV9IRUFERVJTX0JVSUxUKQorCitEZXJpdmVkU291cmNl
cy93ZWJraXQvd2Via2l0ZG9tLmg6ICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0
LWdlbmVyYXRlLWhlYWRlcnMucGwKKwllY2hvICQoR0RPTV9DTEFTU0VTKSB8ICQoUEVSTCkgJDwg
Z2RvbSA+ICRACisKK0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb21kZWZpbmVzLmg6ICQo
V2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwgJChJ
RExfQklORElOR1NfR0RPTSkKKwllY2hvICQoR0RPTV9DTEFTU0VTKSB8ICQoUEVSTCkgJDwgZGVm
aW5lcyA+ICRACisKK0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmg6IERlcml2ZWRT
b3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmNwcDsKKworRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dl
YktpdERPTSUuY3BwOiAlLmlkbCAkKFNDUklQVFNfQklORElOR1MpICQoV2ViQ29yZSkvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorCSQoQU1fVl9HRU4pJChQRVJMKSAt
SSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MucGwgLS1pbmNsdWRlICQoV2ViQ29yZSkvZG9tIC0taW5jbHVkZSAk
KFdlYkNvcmUpL2h0bWwgLS1pbmNsdWRlICQoV2ViQ29yZSkvY3NzIC0taW5jbHVkZSAkKFdlYkNv
cmUpL3BhZ2UgLS1pbmNsdWRlICQoV2ViQ29yZSkveG1sIC0taW5jbHVkZSAkKFdlYkNvcmUpL3N2
ZyAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTV0VCS0lURE9NKSIgLS1kZWZpbmVzICJMQU5HVUFH
RV9HT0JKRUNUPTEgJChGRUFUVVJFX0RFRklORVNfR0RPTSkiIC0tZ2VuZXJhdG9yIEdPYmplY3Qg
JDwKKworZ2RvbV9idWlsdF9ub3NvdXJjZXMgOj0gJChHRE9NX0hFQURFUlNfQlVJTFQpICQoR0RP
TV9TT1VSQ0VTX0JVSUxUKQorCitsaWJnZG9tX29iamVjdHMgOj0gJChzdWJzdCAuY3BwLC5sbywk
KEdET01fU09VUkNFU19CVUlMVCkpCisKKy1pbmNsdWRlIFdlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC8kKERFUERJUikvJS5QbG8KKy1pbmNsdWRlIERlcml2ZWRTb3VyY2VzL3dlYmtpdC8kKERFUERJ
UikvJS5QbG8KKworJChsaWJnZG9tX29iamVjdHMpOiBBTV9DUFBGTEFHUys9JChsaWJ3ZWJraXRf
MV8wX2xhX0NQUEZMQUdTKQorJChsaWJnZG9tX29iamVjdHMpOiBBTV9DWFhGTEFHUys9JChsaWJ3
ZWJraXRfMV8wX2xhX0NYWEZMQUdTKQorCitsaWJnZG9tLmxhOiAkKGxpYmdkb21fb2JqZWN0cykK
KwkkKENYWExJTkspICQobGliZ2RvbV9vYmplY3RzKSAkKExJQlMpCisKIG5vaW5zdF9IRUFERVJT
ICs9IFwKIAkkKElETF9CSU5ESU5HUykKIApAQCAtMzU4Miw2ICszNjcxLDcgQEAgd2ViY29yZV9k
aXN0ICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSW5GaWxlc1BhcnNlci5wbSBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIFwKKwlXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gXAogCVdlYkNvcmUvY3NzL2h0bWwuY3Nz
IFwKIAlXZWJDb3JlL2Nzcy9tYXRobWwuY3NzIFwKIAlXZWJDb3JlL2Nzcy9xdWlya3MuY3NzIFwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2U2MGVmCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4
IEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0b24gPGxrY2xAbGtjbC5uZXQ+CisgKiAgQ29weXJp
Z2h0IChDKSAyMDA4IE1hcnRpbiBTb3RvIDxzb3RvQGZyZWVkZXNrdG9wLm9yZz4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisKKy8vIGdjYyAzLnggY2FuJ3QgaGFuZGxlIGluY2x1ZGluZyB0aGUgSGFzaE1hcCBwb2ludGVy
IHNwZWNpYWxpemF0aW9uCisvLyBpbiB0aGlzIGZpbGUKKyNpZiBkZWZpbmVkIF9fR05VQ19fICYm
ICFkZWZpbmVkIF9fR0xJQkNYWF9fIC8vIGxlc3MgdGhhbiBnY2MgMy40CisjZGVmaW5lIEhBU0hf
TUFQX1BUUl9TUEVDX1dPUktBUk9VTkQgMQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCisKKyNpbmNsdWRlICJXZWJLaXRET01Ob2Rl
LmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKKworI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKworI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOworCisvLyBET01PYmplY3RDYWNoZQorCit0
eXBlZGVmIEhhc2hNYXA8dm9pZCosIGdwb2ludGVyPiBET01PYmplY3RNYXA7CisKK3N0YXRpYyBE
T01PYmplY3RNYXAmIGRvbU9iamVjdHMoKQoreworICAgIHN0YXRpYyBET01PYmplY3RNYXAgc3Rh
dGljRE9NT2JqZWN0czsKKyAgICByZXR1cm4gc3RhdGljRE9NT2JqZWN0czsKK30KKworZ3BvaW50
ZXIgRE9NT2JqZWN0Q2FjaGU6OmdldCh2b2lkKiBvYmplY3RIYW5kbGUpCit7CisgICAgcmV0dXJu
IGRvbU9iamVjdHMoKS5nZXQob2JqZWN0SGFuZGxlKTsKK30KKworZ3BvaW50ZXIgRE9NT2JqZWN0
Q2FjaGU6OnB1dCh2b2lkKiBvYmplY3RIYW5kbGUsIGdwb2ludGVyIHdyYXBwZXIpCit7CisgICAg
ZG9tT2JqZWN0cygpLnNldChvYmplY3RIYW5kbGUsIHdyYXBwZXIpOworICAgIHJldHVybiB3cmFw
cGVyOworfQorCit2b2lkIERPTU9iamVjdENhY2hlOjpmb3JnZXQodm9pZCogb2JqZWN0SGFuZGxl
KQoreworICAgIGRvbU9iamVjdHMoKS50YWtlKG9iamVjdEhhbmRsZSk7Cit9CisKKy8vIGtpdCBt
ZXRob2RzCisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVXcmFwcGVyKE5vZGUqIG5vZGUpCit7Cisg
ICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghU2NyaXB0SW50ZXJwcmV0ZXI6OmdldERPTU9i
amVjdChub2RlKSk7CisKKyAgICBncG9pbnRlciByZXQgPSAwOworCisgICAgc3dpdGNoIChub2Rl
LT5ub2RlVHlwZSgpKSB7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXQgPSB3cmFw
Tm9kZShub2RlKTsKKyAgICB9CisKKyAgICByZXR1cm4gRE9NT2JqZWN0Q2FjaGU6OnB1dChub2Rl
LCByZXQpOworfQorCitncG9pbnRlciBraXQoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUp
CisgICAgICAgIHJldHVybiAwOworCisgICAgZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6
OmdldChub2RlKTsKKyAgICBpZiAocmV0KQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgcmV0
dXJuIGNyZWF0ZVdyYXBwZXIobm9kZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaCBiL1dl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjM4NGM5YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmgKQEAgLTAsMCArMSw1NiBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBX
ZWluaWcgPHNhbUB3ZWJraXQub3JnPgorICogIENvcHlyaWdodCAoQykgMjAwOCBMdWtlIEtlbm5l
dGggQ2Fzc29uIExlaWdodG9uIDxsa2NsQGxrY2wubmV0PgorICogIENvcHlyaWdodCAoQykgMjAw
OCBNYXJ0aW4gU290byA8c290b0BmcmVlZGVza3RvcC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAy
MDA5IElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVm
IFdlYktpdERPTUJpbmRpbmdfaAorI2RlZmluZSBXZWJLaXRET01CaW5kaW5nX2gKKworI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKworI2luY2x1ZGUgIldlYktpdERPTU5v
ZGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgY2xhc3MgQXRvbWljU3RyaW5nOworICAgIGNsYXNzIEV2ZW50OworICAgIGNs
YXNzIEZyYW1lOworICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgTm9kZTsKKyAgICBjbGFzcyBT
dHJpbmc7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXZWJLaXQgeworICAg
IGdwb2ludGVyIGtpdChXZWJDb3JlOjpOb2RlKiBub2RlKTsKKworICAgIGNsYXNzIERPTU9iamVj
dENhY2hlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBncG9pbnRlciBnZXQodm9pZCog
b2JqZWN0SGFuZGxlKTsKKyAgICAgICAgc3RhdGljIGdwb2ludGVyIHB1dCh2b2lkKiBvYmplY3RI
YW5kbGUsIGdwb2ludGVyIHdyYXBwZXIpOworICAgICAgICBzdGF0aWMgdm9pZCBmb3JnZXQodm9p
ZCogb2JqZWN0SGFuZGxlKTsKKyAgICB9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJLaXRET01CaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01PYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktp
dERPTU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljMTIy
ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01P
YmplY3QuY3BwCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTHVr
ZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCBNYXJ0aW4gU290byA8c290b0BmcmVlZGVza3RvcC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KKyAqLworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTU9iamVjdC5oIgorCisjaW5jbHVk
ZSAiV2ViS2l0RE9NQmluZGluZy5oIgorI2luY2x1ZGUgImdsaWItb2JqZWN0LmgiCisKK0dfREVG
SU5FX1RZUEUoV2ViS2l0RE9NT2JqZWN0LCB3ZWJraXRfZG9tX29iamVjdCwgR19UWVBFX09CSkVD
VCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2luaXQoV2ViS2l0RE9NT2JqZWN0
KiBvYmplY3QpCit7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2NsYXNzX2lu
aXQoV2ViS2l0RE9NT2JqZWN0Q2xhc3MqIGtsYXNzKQoreworfQorCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmggYi9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzBkNDUwMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9XZWJLaXRET01PYmplY3QuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0b24gPGxrY2xAbGtjbC5uZXQ+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTWFydGluIFNvdG8gPHNvdG9AZnJlZWRlc2t0b3Aub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KworI2lmbmRlZiBXZWJLaXRET01PYmplY3RfaAorI2RlZmluZSBXZWJLaXRET01PYmplY3RfaAor
CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlICJnbGliLW9iamVj
dC5oIgorI2luY2x1ZGUgIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmgiCisKK0dfQkVHSU5fREVD
TFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fT0JKRUNUICAgICAgICAgICAgKHdlYmtpdF9k
b21fb2JqZWN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fT0JKRUNUKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0RP
TV9PQkpFQ1QsIFdlYktpdERPTU9iamVjdCkpCisjZGVmaW5lIFdFQktJVF9ET01fT0JKRUNUX0NM
QVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX0RPTV9PQkpFQ1QsIFdlYktpdERPTU9iamVjdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X0RPTV9PQkpFQ1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2Jq
KSwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkpCisjZGVmaW5lIFdFQktJVF9JU19ET01fT0JKRUNU
X0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX0RPTV9PQkpFQ1QpKQorI2RlZmluZSBXRUJLSVRfRE9NX09CSkVDVF9HRVRfQ0xBU1Mob2Jq
KSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9ET01fT0JK
RUNULCBXZWJLaXRET01PYmplY3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01P
YmplY3RQcml2YXRlIFdlYktpdERPTU9iamVjdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0RE9N
T2JqZWN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIGdwb2ludGVyIGNv
cmVPYmplY3Q7Cit9OworCitzdHJ1Y3QgX1dlYktpdERPTU9iamVjdENsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2Rv
bV9vYmplY3RfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2Vi
S2l0RE9NT2JqZWN0X2ggKi8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93
ZWJraXRkb21zdHJpbmdjb252ZXJ0LmggYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0
ZG9tc3RyaW5nY29udmVydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQw
ZTlkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0
ZG9tc3RyaW5nY29udmVydC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTHVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworCisjaWZu
ZGVmIEdTVFJJTkdfQ09OVkVSVF9ICisjZGVmaW5lIEdTVFJJTkdfQ09OVkVSVF9ICisKKy8qIGNv
bnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyB2YXJpb3VzIHdlYmtpdCBzdHJpbmcg
dHlwZXMgaW50byBhIHV0ZiBnbGliIHN0cmluZyAqLworCisjaW5jbHVkZSAiQXRvbWljU3RyaW5n
LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdXN0cmluZy5oIgorCitpbmxpbmUg
Z2NoYXIgKiB3ZWJraXRfZG9tX2dzdHJpbmdfY29udmVydChXZWJDb3JlOjpTdHJpbmcgY29uc3Qm
IHMpIHsgcmV0dXJuIGdfc3RyZHVwKHMudXRmOCgpLmRhdGEoKSk7IH0KK2lubGluZSBnY2hhciAq
IHdlYmtpdF9kb21fZ3N0cmluZ19jb252ZXJ0KFdlYkNvcmU6OktVUkwgY29uc3QmIHMpIHsgcmV0
dXJuIGdfc3RyZHVwKHMuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7IH0KK2lubGluZSBnY2hhciAq
IHdlYmtpdF9kb21fZ3N0cmluZ19jb252ZXJ0KGNvbnN0IEpTQzo6VVN0cmluZyYgcykgeyByZXR1
cm4gZ19zdHJkdXAocy5VVEY4U3RyaW5nKCkuY19zdHIoKSk7IH0KK2lubGluZSBnY2hhciAqIHdl
YmtpdF9kb21fZ3N0cmluZ19jb252ZXJ0KFdlYkNvcmU6OkF0b21pY1N0cmluZyBjb25zdCYgcykg
eyByZXR1cm4gZ19zdHJkdXAocy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsgfQorCisjZW5kaWYg
LyogR1NUUklOR19DT05WRVJUX0ggKi8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yR09iamVjdC5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40MDY1Y2YzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC0wLDAgKzEsMTEwNiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMDggTHVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA4IE1hcnRpbiBTb3RvIDxzb3RvQGZyZWVkZXNrdG9wLm9yZz4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisjIENvcHlyaWdodCAo
QykgMjAwOSBBZGFtIERpbmdsZSA8YWRhbUB5b3JiYS5vcmc+CisjIENvcHlyaWdodCAoQykgMjAw
OSBKaW0gTmVsc29uIDxqaW1AeW9yYmEub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlh
IFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyMgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorIyBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKworcGFja2FnZSBDb2RlR2VuZXJh
dG9yR09iamVjdDsKKworIyBHbG9iYWwgVmFyaWFibGVzCitteSAlaW1wbEluY2x1ZGVzID0gKCk7
CitteSAlaGRySW5jbHVkZXMgPSAoKTsKKworbXkgJGNsYXNzTmFtZSA9ICIiOworCisjIERlZmF1
bHQgY29uc3RydWN0b3IKK3N1YiBuZXcgeworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBt
eSAkcmVmZXJlbmNlID0geyB9OworCisgICAgJGNvZGVHZW5lcmF0b3IgPSBzaGlmdDsKKyAgICAk
b3V0cHV0RGlyID0gc2hpZnQ7CisgICAgbWtkaXIgJG91dHB1dERpcjsKKworICAgIGJsZXNzKCRy
ZWZlcmVuY2UsICRvYmplY3QpOworfQorCitzdWIgZmluaXNoIHsKK30KKworbXkgJGxpY2VuY2VU
ZW1wbGF0ZSA9IDw8ICJFT0YiOworLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworRU9GCisKK3N1YiBH
ZW5lcmF0ZU1vZHVsZSB7Cit9CisKK3N1YiBHZXRQYXJlbnRDbGFzc05hbWUgeworICAgIG15ICRk
YXRhTm9kZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICJXZWJLaXRET01PYmplY3QiIGlmIEB7JGRh
dGFOb2RlLT5wYXJlbnRzfSBlcSAwOworICAgIHJldHVybiAiV2ViS2l0RE9NIiAuICRjb2RlR2Vu
ZXJhdG9yLT5TdHJpcE1vZHVsZSgkZGF0YU5vZGUtPnBhcmVudHMoMCkpOworfQorCisjIEZyb20g
U3RyaW5nOjpDYW1lbENhc2UgMC4wMQorc3ViIGNhbWVsaXplCit7CisgICAgICAgIG15ICRzID0g
c2hpZnQ7CisgICAgICAgIGpvaW4oJycsIG1hcHsgdWNmaXJzdCAkXyB9IHNwbGl0KC8oPzw9W0Et
WmEtel0pXyg/PVtBLVphLXpdKXxcYi8sICRzKSk7Cit9CisKK3N1YiBkZWNhbWVsaXplCit7Cisg
ICAgICAgIG15ICRzID0gc2hpZnQ7CisgICAgICAgICRzID1+IHN7KFteYS16QS1aXT8pKFtBLVpd
KikoW0EtWl0pKFthLXpdPyl9eworICAgICAgICAgICAgICAgIG15ICRmYyA9IHBvcygkcyk9PTA7
CisgICAgICAgICAgICAgICAgbXkgKCRwMCwkcDEsJHAyLCRwMykgPSAoJDEsbGMkMixsYyQzLCQ0
KTsKKyAgICAgICAgICAgICAgICBteSAkdCA9ICRwMCB8fCAkZmMgPyAkcDAgOiAnXyc7CisgICAg
ICAgICAgICAgICAgJHQgLj0gJHAzID8gJHAxID8gIiR7cDF9XyRwMiRwMyIgOiAiJHAyJHAzIiA6
ICIkcDEkcDIiOworICAgICAgICAgICAgICAgICR0OworICAgICAgICB9Z2U7CisgICAgICAgICRz
OworfQorCitzdWIgQ2xhc3NOYW1lVG9HT2JqZWN0VHlwZSB7CisgICAgbXkgJGNsYXNzTmFtZSA9
IHNoaWZ0OworICAgIG15ICRDTEFTU19OQU1FID0gdWMoZGVjYW1lbGl6ZSgkY2xhc3NOYW1lKSk7
CisgICAgIyBGaXh1cDogd2l0aCBvdXIgcHJlZml4IGJlaW5nICdXZWJLaXRET00nIGRlY2FtZWxp
emUgY2FuJ3QgZ2V0CisgICAgIyBXZWJLaXRET01DU1MgcmlnaHQsIHNvIHdlIGhhdmUgdG8gZml4
IGl0IG1hbnVhbGx5IChhbmQgdGhlcmUKKyAgICAjIG1pZ2h0IGJlIG1vcmUgbGlrZSB0aGlzIGlu
IHRoZSBmdXR1cmUpCisgICAgJENMQVNTX05BTUUgPX4gcy9ET01DU1MvRE9NX0NTUy87CisgICAg
cmV0dXJuICRDTEFTU19OQU1FOworfQorCitzdWIgR2V0UGFyZW50R09ialR5cGUgeworICAgIG15
ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICJXRUJLSVRfVFlQRV9ET01fT0JKRUNU
IiBpZiBAeyRkYXRhTm9kZS0+cGFyZW50c30gZXEgMDsKKyAgICByZXR1cm4gIldFQktJVF9UWVBF
X0RPTV8iIC4gQ2xhc3NOYW1lVG9HT2JqZWN0VHlwZSgkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1
bGUoJGRhdGFOb2RlLT5wYXJlbnRzKDApKSk7Cit9CisKK3N1YiBHZXRDbGFzc05hbWUgeworICAg
IG15ICRuYW1lID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKHNoaWZ0KTsKKworICAgIHJl
dHVybiAiV2ViS2l0RE9NJG5hbWUiOworfQorCitzdWIgR2V0Q29yZU9iamVjdCB7CisgICAgbXkg
KCRpbnRlcmZhY2VOYW1lLCAkbmFtZSwgJHBhcmFtZXRlcikgPSBAXzsKKworICAgIHJldHVybiAi
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogJG5hbWUgPSBXZWJLaXQ6OmNvcmUoJHBhcmFtZXRl
cik7IjsKK30KKworc3ViIHNraXBBdHRyaWJ1dGUgeworICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlm
dDsKKyAgICAKKyAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwKKyAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0pIHsKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgfQorICAgIAorICAgIG15ICRwcm9wX3R5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PnR5cGU7CisgICAgaWYgKCRwcm9wX3R5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CisgICAgICAg
IHJldHVybiAxOworICAgIH0KKworICAgICMgc2tpcCBDb25zdHJ1Y3RvcnMgKHdoYXRldmVyIHRo
ZXkgYXJlKSBmb3Igbm93LgorICAgIGlmICgkcHJvcF90eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7
CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjIE5hbWUg
dHlwZSB1c2VkIGluIHRoZSBnX3ZhbHVlX3tzZXQsZ2V0fV8qIGZ1bmN0aW9ucworc3ViIEdldEdW
YWx1ZVR5cGVOYW1lIHsKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworCisgICAgbXkgJXR5cGVzID0g
KCJET01TdHJpbmciLCAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgImZsb2F0IiwgImZsb2F0
IiwKKyAgICAgICAgICAgICAgICAgImRvdWJsZSIsICJkb3VibGUiLAorICAgICAgICAgICAgICAg
ICAiYm9vbGVhbiIsICJib29sZWFuIiwKKyAgICAgICAgICAgICAgICAgImNoYXIiLCAiY2hhciIs
CisgICAgICAgICAgICAgICAgICJsb25nIiwgImxvbmciLAorICAgICAgICAgICAgICAgICAic2hv
cnQiLCAiaW50IiwKKyAgICAgICAgICAgICAgICAgInVjaGFyIiwgInVjaGFyIiwKKyAgICAgICAg
ICAgICAgICAgInVuc2lnbmVkIiwgInVpbnQiLAorICAgICAgICAgICAgICAgICAiaW50IiwgImlu
dCIsCisgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBpbnQiLCAidWludCIsCisgICAgICAgICAg
ICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmciLCAidWludDY0IiwgCisgICAgICAgICAgICAgICAg
ICJ1bnNpZ25lZCBsb25nIiwgInVsb25nIiwKKyAgICAgICAgICAgICAgICAgInVuc2lnbmVkIHNo
b3J0IiwgInVzaG9ydCIpOworCisgICAgcmV0dXJuICR0eXBlc3skdHlwZX0gPyAkdHlwZXN7JHR5
cGV9IDogIm9iamVjdCI7Cit9CisKKyMgTmFtZSB0eXBlIHVzZWQgaW4gQyBkZWNsYXJhdGlvbnMK
K3N1YiBHZXRHbGliVHlwZU5hbWUgeworICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgbXkgJG5h
bWUgPSBHZXRDbGFzc05hbWUoJHR5cGUpOworCisgICAgbXkgJXR5cGVzID0gKCJET01TdHJpbmci
LCAiY2hhciogIiwKKyAgICAgICAgICAgICAgICAgImZsb2F0IiwgImdmbG9hdCIsCisgICAgICAg
ICAgICAgICAgICJkb3VibGUiLCAiZ2RvdWJsZSIsCisgICAgICAgICAgICAgICAgICJib29sZWFu
IiwgImdib29sZWFuIiwKKyAgICAgICAgICAgICAgICAgImNoYXIiLCAiZ2NoYXIiLAorICAgICAg
ICAgICAgICAgICAibG9uZyIsICJnbG9uZyIsCisgICAgICAgICAgICAgICAgICJzaG9ydCIsICJn
c2hvcnQiLAorICAgICAgICAgICAgICAgICAidWNoYXIiLCAiZ3VjaGFyIiwKKyAgICAgICAgICAg
ICAgICAgInVuc2lnbmVkIiwgImd1aW50IiwKKyAgICAgICAgICAgICAgICAgImludCIsICJnaW50
IiwKKyAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGludCIsICJndWludCIsCisgICAgICAgICAg
ICAgICAgICJ1bnNpZ25lZCBsb25nIiwgImd1bG9uZyIsCisgICAgICAgICAgICAgICAgICJ1bnNp
Z25lZCBsb25nIGxvbmciLCAiZ3VpbnQ2NCIsCisgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBz
aG9ydCIsICJndXNob3J0IiwKKyAgICAgICAgICAgICAgICAgInZvaWQiLCAidm9pZCIpOworCisg
ICAgcmV0dXJuICR0eXBlc3skdHlwZX0gPyAkdHlwZXN7JHR5cGV9IDogIiRuYW1lKiAiOworfQor
CitzdWIgSXNHRE9NQ2xhc3NUeXBlIHsKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworCisgICAgcmV0
dXJuIDAgaWYgJHR5cGUgZXEgIkRPTVN0cmluZyI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEg
ImZsb2F0IjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiZG91YmxlIjsKKyAgICByZXR1cm4g
MCBpZiAkdHlwZSBlcSAiYm9vbGVhbiI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImNoYXIi
OworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJsb25nIjsKKyAgICByZXR1cm4gMCBpZiAkdHlw
ZSBlcSAic2hvcnQiOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1Y2hhciI7CisgICAgcmV0
dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAi
aW50IjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidW5zaWduZWQgaW50IjsKKyAgICByZXR1
cm4gMCBpZiAkdHlwZSBlcSAidW5zaWduZWQgbG9uZyI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUg
ZXEgInVuc2lnbmVkIGxvbmcgbG9uZyI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2ln
bmVkIHNob3J0IjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidm9pZCI7CisKKyAgICByZXR1
cm4gMTsKK30KKworc3ViIEdlbmVyYXRlUHJvcGVydGllcyB7CisgICAgbXkgKCRvYmplY3QsICRp
bnRlcmZhY2VOYW1lLCAkZGF0YU5vZGUpID0gQF87CisKKyAgICBteSAkY2xzQ2FwcyA9IHN1YnN0
cihDbGFzc05hbWVUb0dPYmplY3RUeXBlKCRjbGFzc05hbWUpLCAxMik7CisgICAgbXkgJGxjYXNl
X2lmYWNlbmFtZSA9ICJ3ZWJraXRfZG9tXyIgLiAoZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkp
OworCisgICAgIyBQcm9wZXJ0aWVzCisgICAgbXkgJGltcGxDb250ZW50ID0gIiI7CisKKyAgICAj
IFByb3BlcnRpZXMKKyAgICAkaW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKK2VudW0geworICAgIFBS
T1BfMCwKK0VPRgorICAgIHB1c2goQGNCb2R5UHJpdiwgJGltcGxDb250ZW50KTsKKworICAgIG15
IEB0eHRfaW5zdGFsbF9wcm9wcyA9ICgpOworICAgIG15IEB0eHRfc2V0X3Byb3BzID0gKCk7Cisg
ICAgbXkgQHR4dF9nZXRfcHJvcHMgPSAoKTsKKworICAgIG15ICRwcml2X2ZuID0gR2V0Q29yZU9i
amVjdCgkaW50ZXJmYWNlTmFtZSwgImNvcmVTZWxmIiwgInNlbGYiKTsKKworICAgIG15ICR0eHRf
Z2V0X3Byb3AgPSA8PCAiRU9GIjsKK3N0YXRpYyB2b2lkICR7bGNhc2VfaWZhY2VuYW1lfV9nZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICAke2NsYXNzTmFtZX0qIHNlbGYgPSBXRUJLSVRfRE9N
XyR7Y2xzQ2Fwc30ob2JqZWN0KTsKKyAgICAkcHJpdl9mbgorCisgICAgc3dpdGNoIChwcm9wX2lk
KSB7CitFT0YKKyAgICBwdXNoKEB0eHRfZ2V0X3Byb3BzLCAkdHh0X2dldF9wcm9wKTsKKworICAg
IG15ICR0eHRfc2V0X3Byb3AgPSA8PCAiRU9GIjsKK3N0YXRpYyB2b2lkICR7bGNhc2VfaWZhY2Vu
YW1lfV9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICAke2NsYXNzTmFtZX0gKnNl
bGYgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30ob2JqZWN0KTsKKyAgICAkcHJpdl9mbgorCisgICAg
c3dpdGNoIChwcm9wX2lkKSB7CitFT0YKKyAgICBwdXNoKEB0eHRfc2V0X3Byb3BzLCAkdHh0X3Nl
dF9wcm9wKTsKKworICAgICMgSXRlcmF0ZSBvdmVyIHRoZSBpbnRlcmZhY2UgYXR0cmlidXRlcyBh
bmQgZ2VuZXJhdGUgYSBwcm9wZXJ0eSBmb3IKKyAgICAjIGVhY2ggb25lIG9mIHRoZW0uCisgIFNL
SVBFTlVNOgorICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0
ZXN9KSB7CisgICAgICAgIGlmIChza2lwQXR0cmlidXRlKCRhdHRyaWJ1dGUpKSB7CisgICAgICAg
ICAgICBuZXh0IFNLSVBFTlVNOworICAgICAgICB9CisKKyAgICAgICAgbXkgJHByb3BfbmFtZSA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgbXkgJHNldHByb3BfbmFtZV9m
biA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRwcm9wX25hbWUpOworICAgICAgICBteSAk
Z2V0cHJvcF9uYW1lX2ZuID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJHByb3BfbmFtZSk7
CisKKyAgICAgICAgbXkgJHByb3BOYW1lID0gZGVjYW1lbGl6ZSgkcHJvcF9uYW1lKTsKKyAgICAg
ICAgbXkgJHByb3BOYW1lQ2FwcyA9IHVjKCRwcm9wTmFtZSk7CisgICAgICAgICRwcm9wTmFtZSA9
fiBzL18vLS9nOworICAgICAgICBteSAke3Byb3BFbnVtfSA9ICJQUk9QXyR7cHJvcE5hbWVDYXBz
fSI7CisgICAgICAgIHB1c2goQGNCb2R5UHJpdiwgIiAgICAke3Byb3BFbnVtfSxcbiIpOworCisg
ICAgICAgIG15ICRwcm9wX3R5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAg
ICAgIG15ICR7cHJvcF9ndHlwZX0gPSBkZWNhbWVsaXplKCRwcm9wX3R5cGUpOworICAgICAgICBp
ZiAoJHByb3BfZ3R5cGUgZXEgImV2ZW50X3RhcmdldCIpIHsKKyAgICAgICAgICAgICRwcm9wX2d0
eXBlID0gImV2ZW50X3RhcmdldF9ub2RlIjsKKyAgICAgICAgfQorICAgICAgICBteSAke3Byb3BH
VHlwZX0gPSB1YygkcHJvcF9ndHlwZSk7CisgICAgICAgIG15ICRsY2FzZV9ndHlwZW5hbWUgPSAi
d2Via2l0X2RvbV8iIC4gJHByb3BfZ3R5cGU7CisKKyAgICAgICAgbXkgJGd0eXBlID0gR2V0R1Zh
bHVlVHlwZU5hbWUoJHByb3BfdHlwZSk7CisgICAgICAgIG15ICRncGFyYW1mbGFnID0gIldFQktJ
VF9QQVJBTV9SRUFEQUJMRSI7CisgICAgICAgIG15ICR3cml0ZWFibGUgPSAkYXR0cmlidXRlLT50
eXBlICF+IC9ecmVhZG9ubHkvOworICAgICAgICBteSAkY29uc3QgPSAicmVhZC1vbmx5ICI7Cisg
ICAgICAgIGlmICgkd3JpdGVhYmxlICYmICRjdXN0b20pIHsKKyAgICAgICAgICAgICRjb25zdCA9
ICJyZWFkLW9ubHkgKGR1ZSB0byBjdXN0b20gZnVuY3Rpb25zIG5lZWRlZCBpbiB3ZWJraXRkb20p
IjsKKyAgICAgICAgICAgIG5leHQgU0tJUEVOVU07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCR3
cml0ZWFibGUgJiYgISRjdXN0b20pIHsKKyAgICAgICAgICAgICRncGFyYW1mbGFnID0gIldFQktJ
VF9QQVJBTV9SRUFEV1JJVEUiOworICAgICAgICAgICAgJGNvbnN0ID0gInJlYWQtd3JpdGUgIjsK
KyAgICAgICAgfQorCisgICAgICAgIG15ICR0eXBlID0gR2V0R2xpYlR5cGVOYW1lKCRwcm9wX3R5
cGUpOworICAgICAgICAkbmljayA9IGRlY2FtZWxpemUoIiR7aW50ZXJmYWNlTmFtZX1fJHtwcm9w
TmFtZX0iKTsKKyAgICAgICAgJGxvbmcgPSAiJHtjb25zdH0gJHt0eXBlfSAke2ludGVyZmFjZU5h
bWV9LiR7cHJvcE5hbWV9IjsKKworICAgICAgICBteSAkY29udmVydF9mbiA9ICIiOworCisgICAg
ICAgIGlmICgkd3JpdGVhYmxlICYmICgkZ3R5cGUgZXEgImJvb2xlYW4iIHx8ICRndHlwZSBlcSAi
ZmxvYXQiIHx8ICRndHlwZSBlcSAiZG91YmxlIiB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJGd0eXBlIGVxICJ1aW50NjQiIHx8ICRndHlwZSBlcSAidWxvbmciIHx8ICRndHlwZSBlcSAi
bG9uZyIgfHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQiIHx8
ICRndHlwZSBlcSAidXNob3J0IiB8fCAkZ3R5cGUgZXEgInVjaGFyIiB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGd0eXBlIGVxICJjaGFyIiB8fCAkZ3R5cGUgZXEgInN0cmluZyIpKSB7
CisKKyAgICAgICAgICAgIHB1c2goQHR4dF9zZXRfcHJvcHMsICIgICBjYXNlICR7cHJvcEVudW19
OlxuICAgIHtcbiIpOworICAgICAgICAgICAgcHVzaChAdHh0X3NldF9wcm9wcywgIiAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRl
ckV4Y2VwdGlvbnN9OworCisgICAgICAgICAgICBpZiAoJGd0eXBlIGVxICJzdHJpbmciKSB7Cisg
ICAgICAgICAgICAgICAgJGNvbnZlcnRfZm4gPSAiV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCI7
CisgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDb252ZXJ0RnJvbVN0cmluZyJ9KSB7CisgICAgICAgICAgICAgICAgJGNvbnZl
cnRfZm4gPSAiV2ViQ29yZTo6U3RyaW5nOjpudW1iZXIiOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBwdXNoKEB0eHRfc2V0X3Byb3BzLCAiICAgICAgICBjb3JlU2VsZi0+c2V0JHtzZXRw
cm9wX25hbWVfZm59KCR7Y29udmVydF9mbn0oZ192YWx1ZV9nZXRfJGd0eXBlKHZhbHVlKSkiKTsK
KyAgICAgICAgICAgIHB1c2goQHR4dF9zZXRfcHJvcHMsICIsIGVjIikgaWYgQHskYXR0cmlidXRl
LT5zZXR0ZXJFeGNlcHRpb25zfTsKKyAgICAgICAgICAgIHB1c2goQHR4dF9zZXRfcHJvcHMsICIp
O1xuIik7CisKKyAgICAgICAgICAgIHB1c2goQHR4dF9zZXRfcHJvcHMsICIgICAgICAgIGJyZWFr
O1xuICAgIH1cbiIpOworICAgICAgICB9CisKKyAgICAgICAgcHVzaChAdHh0X2dldF9wcm9wcywg
IiAgIGNhc2UgJHtwcm9wRW51bX06XG4gICAge1xuIik7CisKKyAgICAgICAgbXkgJGV4Y2VwdGlv
biA9ICIiOworICAgICAgICBpZiAoQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfSkgewor
ICAgICAgICAgICAgJGV4Y2VwdGlvbiA9ICJlYyI7CisgICAgICAgICAgICBwdXNoKEB0eHRfZ2V0
X3Byb3BzLCAiICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOworICAg
ICAgICB9CisKKyAgICAgICAgbXkgJHBvc3RfY29udmVydF9mbiA9ICIiOworICAgICAgICBteSAk
ZG9uZSA9IDA7CisgICAgICAgIGlmICgkZ3R5cGUgZXEgInN0cmluZyIpIHsKKyAgICAgICAgICAg
IHB1c2goQHR4dF9nZXRfcHJvcHMsICIgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUs
IHdlYmtpdF9kb21fZ3N0cmluZ19jb252ZXJ0KGNvcmVTZWxmLT4ke2dldHByb3BfbmFtZV9mbn0o
JHtleGNlcHRpb259KSkpO1xuIik7CisgICAgICAgICAgICAkZG9uZSA9IDE7CisgICAgICAgIH0g
ZWxzaWYgKCRndHlwZSBlcSAib2JqZWN0IikgeworICAgICAgICAgICAgbXkgJGRvbW9ialR5cGUg
PSAiV0VCS0lUX0RPTSIuJHByb3BfdHlwZTsKKworICAgICAgICAgICAgJHR4dF9nZXRfcHJvcCA9
IDw8ICJFT0YiOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6JHtwcm9wX3R5cGV9PiBwdHIgPSBj
b3JlU2VsZi0+JHtnZXRwcm9wX25hbWVfZm59KCR7ZXhjZXB0aW9ufSk7CisgICAgICAgIGdfdmFs
dWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7CitFT0YKKyAgICAg
ICAgICAgIHB1c2goQHR4dF9nZXRfcHJvcHMsICR0eHRfZ2V0X3Byb3ApOworCisgICAgICAgICAg
ICAkZG9uZSA9IDE7CisgICAgICAgIH0KKworICAgICAgICBpZigkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0RnJvbVN0cmluZyJ9KSB7CisgICAgICAg
ICAgICAjIFRPRE86IEFkZCBvdGhlciBjb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgZGlmZmVyZW50
IHR5cGVzLiAgQ3VycmVudAorICAgICAgICAgICAgIyBJRExzIG9ubHkgbGlzdCBsb25ncy4KKyAg
ICAgICAgICAgIGlmKCRndHlwZSBlcSAibG9uZyIpIHsKKyAgICAgICAgICAgICAgICAkY29udmVy
dF9mbiA9ICIiOworICAgICAgICAgICAgICAgICRwb3N0X2NvbnZlcnRfZm4gPSAiLnRvSW50KCki
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaWUgIkNhbid0IGNvbnZl
cnQgdG8gdHlwZSAke2d0eXBlfS4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgIyBGSVhNRTogZ2V0IHJpZCBvZiB0aGlzIGdsaXRjaD8KKyAgICAgICAgbXkgJF9ndHlwZSA9
ICRndHlwZTsKKyAgICAgICAgaWYgKCRndHlwZSBlcSAidXNob3J0IikgeworICAgICAgICAgICAg
JF9ndHlwZSA9ICJ1aW50IjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghJGRvbmUpIHsKKyAg
ICAgICAgICAgIHB1c2goQHR4dF9nZXRfcHJvcHMsICIgICAgICAgIGdfdmFsdWVfc2V0XyRfZ3R5
cGUodmFsdWUsICR7Y29udmVydF9mbn1jb3JlU2VsZi0+JHtnZXRwcm9wX25hbWVfZm59KCR7ZXhj
ZXB0aW9ufSkke3Bvc3RfY29udmVydF9mbn0pO1xuIik7CisgICAgICAgIH0KKworICAgICAgICBw
dXNoKEB0eHRfZ2V0X3Byb3BzLCAiICAgICAgICBicmVhaztcbiAgICB9XG4iKTsKKworbXkgJXBh
cmFtX3NwZWNfb3B0aW9ucyA9ICgiaW50IiwgIkdfTUlOSU5ULCAvKiBtaW4gKi9cbkdfTUFYSU5U
LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYm9vbGVhbiIsICJGQUxTRSwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmbG9hdCIsICJHX01JTkZMT0FULCAvKiBtaW4gKi9cbkdfTUFYRkxPQVQsIC8qIG1h
eCAqL1xuMC4wLCAvKiBkZWZhdWx0ICovIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRv
dWJsZSIsICJHX01JTkRPVUJMRSwgLyogbWluICovXG5HX01BWERPVUJMRSwgLyogbWF4ICovXG4w
LjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidWludDY0Iiwg
IjAsIC8qIG1pbiAqL1xuR19NQVhVSU5UNjQsIC8qIG1pbiAqL1xuMCwgLyogZGVmYXVsdCAqLyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJsb25nIiwgIkdfTUlOTE9ORywgLyogbWluICov
XG5HX01BWExPTkcsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ1bG9uZyIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUxPTkcsIC8qIG1heCAq
L1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50Iiwg
IjAsIC8qIG1pbiAqL1xuR19NQVhVSU5ULCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAidXNob3J0IiwgIjAsIC8qIG1pbiAqL1xuR19NQVhV
SU5UMTYsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ1Y2hhciIsICJHX01JTklOVDgsIC8qIG1pbiAqL1xuR19NQVhJTlQ4LCAvKiBtYXgg
Ki9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhciIs
ICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciLCAiXCJcIiwgLyogZGVmYXVsdCAq
LyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiLCAiV0VCS0lUX1RZUEVfRE9N
XyR7cHJvcEdUeXBlfSwgLyogZ29iamVjdCB0eXBlICovIik7CisKKyAgICAgICAgbXkgJHR4dF9p
bnN0YWxsX3Byb3AgPSA8PCAiRU9GIjsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7
cHJvcEVudW19LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjXyR7X2d0eXBlfSgiJHtwcm9wTmFtZX0iLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbmljayIsIC8qIHNo
b3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIkbG9uZyIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGgg
c29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1fc3BlY19vcHRpb25zeyRndHlw
ZX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHtncGFyYW1mbGFnfSkpOworRU9GCisgICAgICAgIHB1c2goQHR4dF9pbnN0YWxsX3By
b3BzLCAkdHh0X2luc3RhbGxfcHJvcCk7CisgICAgICAgICR0eHRfaW5zdGFsbF9wcm9wID0gIi8q
IFRPRE8hICRndHlwZSAqL1xuIjsKKyAgICB9CisKKyAgICBwdXNoKEBjQm9keVByaXYsICJ9O1xu
XG4iKTsKKworICAgICR0eHRfZ2V0X3Byb3AgPSA8PCAiRU9GIjsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBw
c3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KK0VPRgorICAgIHB1c2goQHR4dF9nZXRf
cHJvcHMsICR0eHRfZ2V0X3Byb3ApOworCisgICAgJHR4dF9zZXRfcHJvcCA9IDw8ICJFT0YiOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorRU9GCisg
ICAgcHVzaChAdHh0X3NldF9wcm9wcywgJHR4dF9zZXRfcHJvcCk7CisKKyAgICAjIFRPRE86IHdv
cmsgb3V0IGlmIGl0J3MgYXBwcm9wcmlhdGUgdG8gc3BsaXQgdGhpcyBpbnRvIG1hbnkgZGlmZmVy
ZW50CisgICAgIyBzaWduYWxzIGUuZy4gImNsaWNrIiBldGMuCisgICAgbXkgJHR4dF9pbnN0YWxs
X3NpZ25hbHMgPSAiIjsKKworICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOworCitzdGF0aWMg
dm9pZCAke2xjYXNlX2lmYWNlbmFtZX1fZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAg
IFdlYktpdERPTU9iamVjdCogZG9tX29iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7
CisgICAgCisgICAgaWYoZG9tX29iamVjdCAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgaWYoZG9t
X29iamVjdC0+Y29yZU9iamVjdCAhPSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICBXZWJD
b3JlOjoke2ludGVyZmFjZU5hbWV9ICpjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
JHtpbnRlcmZhY2VOYW1lfSAqPihkb21fb2JqZWN0LT5jb3JlT2JqZWN0KTsKKyAgICAgICAgICAg
IGNvcmVPYmplY3QtPmRlcmVmKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRvbV9vYmpl
Y3QtPmNvcmVPYmplY3QgPSBOVUxMOworICAgICAgICAgICAgCisgICAgICAgICAgICBXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBHX09CSkVDVF9DTEFTUygke2xjYXNlX2lmYWNlbmFtZX1fcGFyZW50X2NsYXNzKS0+Zmlu
YWxpemUob2JqZWN0KTsKK30KKworQHR4dF9zZXRfcHJvcHMKKworQHR4dF9nZXRfcHJvcHMKKwor
c3RhdGljIHZvaWQgJHtsY2FzZV9pZmFjZW5hbWV9X2NsYXNzX2luaXQoJHtjbGFzc05hbWV9Q2xh
c3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9
ICR7bGNhc2VfaWZhY2VuYW1lfV9maW5hbGl6ZTsKKyAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9w
ZXJ0eSA9ICR7bGNhc2VfaWZhY2VuYW1lfV9zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdENsYXNz
LT5nZXRfcHJvcGVydHkgPSAke2xjYXNlX2lmYWNlbmFtZX1fZ2V0X3Byb3BlcnR5OworCitAdHh0
X2luc3RhbGxfcHJvcHMKKworJHR4dF9pbnN0YWxsX3NpZ25hbHMKK30KKworc3RhdGljIHZvaWQg
JHtsY2FzZV9pZmFjZW5hbWV9X2luaXQoJHtjbGFzc05hbWV9KiByZXF1ZXN0KQoreworfQorCitF
T0YKKyAgICBwdXNoKEBjQm9keVByaXYsICRpbXBsQ29udGVudCk7Cit9CisKK3N1YiBHZW5lcmF0
ZUhlYWRlciB7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2VOYW1lLCAkcGFyZW50Q2xhc3NO
YW1lKSA9IEBfOworCisgICAgbXkgJGltcGxDb250ZW50ID0gIiI7CisKKyAgICAjIEFkZCB0aGUg
ZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUKKyAgICBAaFByZWZpeCA9IHNwbGl0KCJcciIsICRsaWNl
bmNlVGVtcGxhdGUpOworICAgIHB1c2goQGhQcmVmaXgsICJcbiIpOworCisgICAgI0hlYWRlciBn
dWFyZAorICAgIG15ICRndWFyZCA9ICRjbGFzc05hbWUgLiAiX2giOworCisgICAgQGhQcmVmaXhH
dWFyZCA9IDw8ICJFT0YiOworI2lmbmRlZiAkZ3VhcmQKKyNkZWZpbmUgJGd1YXJkCisKK0VPRgor
CisgICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CitHX0JFR0lOX0RFQ0xTCitFT0YKKworICAg
IHB1c2goQGhCb2R5UHJlLCAkaW1wbENvbnRlbnQpOworCisgICAgbXkgJGNsc0NhcHMgPSB1Yyhk
ZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKSk7CisgICAgbXkgJGxjYXNlX2lmYWNlbmFtZSA9ICJ3
ZWJraXRfZG9tXyIgLiAoZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkpOworCisgICAgJGltcGxD
b250ZW50ID0gPDwgIkVPRiI7CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfRE9NXyR7Y2xzQ2Fwc30g
ICAgICAgICAgICAoJHtsY2FzZV9pZmFjZW5hbWV9X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJ
VF9ET01fJHtjbHNDYXBzfShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9D
QVNUKChvYmopLCBXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgJHtjbGFzc05hbWV9KSkKKyNk
ZWZpbmUgV0VCS0lUX0RPTV8ke2Nsc0NhcHN9X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9LCAke2NsYXNz
TmFtZX1DbGFzcykKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU18ke2Nsc0NhcHN9KG9iaikgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0RPTV8ke2Ns
c0NhcHN9KSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU18ke2Nsc0NhcHN9X0NMQVNTKGtsYXNzKSAo
R19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV8ke2Nsc0Nh
cHN9KSkKKyNkZWZpbmUgV0VCS0lUX0RPTV8ke2Nsc0NhcHN9X0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9
LCAke2NsYXNzTmFtZX1DbGFzcykpCisKK3N0cnVjdCBfJHtjbGFzc05hbWV9IHsKKyAgICAke3Bh
cmVudENsYXNzTmFtZX0gcGFyZW50X2luc3RhbmNlOworfTsKKworc3RydWN0IF8ke2NsYXNzTmFt
ZX1DbGFzcyB7CisgICAgJHtwYXJlbnRDbGFzc05hbWV9Q2xhc3MgcGFyZW50X2NsYXNzOworfTsK
KworV0VCS0lUX0FQSSBHVHlwZQorJHtsY2FzZV9pZmFjZW5hbWV9X2dldF90eXBlICh2b2lkKTsK
KworRU9GCisKKyAgICBwdXNoKEBoQm9keSwgJGltcGxDb250ZW50KTsKK30KKworc3ViIGdldElu
Y2x1ZGVIZWFkZXIgeworICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgbXkgJG5hbWUgPSBHZXRD
bGFzc05hbWUoJHR5cGUpOworCisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJpbnQiOworICAg
IHJldHVybiAiIiBpZiAkdHlwZSBlcSAibG9uZyI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVx
ICJzaG9ydCI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJjaGFyIjsKKyAgICByZXR1cm4g
IiIgaWYgJHR5cGUgZXEgImZsb2F0IjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgImRvdWJs
ZSI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJ1bnNpZ25lZCI7CisgICAgcmV0dXJuICIi
IGlmICR0eXBlIGVxICJ1bnNpZ25lZCBpbnQiOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAi
dW5zaWduZWQgbG9uZyI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBsb25n
IGxvbmciOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiOworICAg
IHJldHVybiAiIiBpZiAkdHlwZSBlcSAiRE9NVGltZVN0YW1wIjsKKyAgICByZXR1cm4gIiIgaWYg
JHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAidW5z
aWduZWQgY2hhciI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJET01TdHJpbmciOworICAg
IHJldHVybiAiIiBpZiAkdHlwZSBlcSAiZmxvYXQiOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBl
cSAiYm9vbGVhbiI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJ2b2lkIjsKKworICAgIHJl
dHVybiAiJG5hbWUuaCI7Cit9CisKK3N1YiBhZGRJbmNsdWRlSW5Cb2R5IHsKKyAgICBteSAkdHlw
ZSA9IHNoaWZ0OworCisgICAgbXkgJGhlYWRlciA9IGdldEluY2x1ZGVIZWFkZXIoJHR5cGUpOwor
ICAgIGlmICgkaGVhZGVyIGVxICIiKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgaWYgKElzR0RPTUNsYXNzVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3si
d2Via2l0LyRoZWFkZXIifSA9IDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGltcGxJbmNsdWRl
c3skaGVhZGVyfSA9IDEKKyAgICB9Cit9CisKK3N1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKKyAgICBt
eSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUsICRmdW5jdGlvbiwgJHByZWZpeCkgPSBAXzsKKwor
ICAgIG15ICRmbl9zaWdfbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgIG15
ICRmbl9zaWdfdHlwZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlOworICAgIG15ICRmdW5j
dGlvbk5hbWUgPSAid2Via2l0X2RvbV8iIC4gZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkgLiAi
XyIgLiAkcHJlZml4IC4gZGVjYW1lbGl6ZSgkZm5fc2lnX25hbWUpOworICAgIG15ICRyZXR1cm5U
eXBlID0gR2V0R2xpYlR5cGVOYW1lKCRmbl9zaWdfdHlwZSk7CisgICAgbXkgJHJldF9pc19jbHNf
dHlwZSA9IElzR0RPTUNsYXNzVHlwZSgkZm5fc2lnX3R5cGUpOworCisgICAgbXkgJGZ1bmN0aW9u
U2lnID0gIiRjbGFzc05hbWUgKnNlbGYiOworCisgICAgbXkgJGNhbGxfaW1wbF9wYXJhbXMgPSAi
IjsKKyAgICBteSAkZ2RvbV9mbl9wcmVmaXggPSAid2Via2l0X2RvbV8iIC4gZGVjYW1lbGl6ZSgk
Zm5fc2lnX3R5cGUpOworCisgICAgIyBza2lwIHNvbWUgY3VzdG9tIGZ1bmN0aW9ucyBmb3Igbm93
CisgICAgbXkgJGlzX2N1c3RvbV9mbiA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tIn0gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5n
In07CisKKyAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7
CisgICAgICAgIG15ICRwYXJhbUlETFR5cGUgPSAkcGFyYW0tPnR5cGU7CisgICAgICAgIGlmICgk
cGFyYW1JRExUeXBlIGVxICJFdmVudCIpIHsKKyAgICAgICAgICAgIHB1c2goQGhCb2R5LCAiXG4v
KiBUT0RPOiBldmVudCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gKi9cblxuIik7CisgICAgICAg
ICAgICBwdXNoKEBjQm9keSwgIlxuLyogVE9ETzogZXZlbnQgZnVuY3Rpb24gJHtmdW5jdGlvbk5h
bWV9ICovXG5cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFk
ZEluY2x1ZGVJbkJvZHkoJHBhcmFtSURMVHlwZSk7CisgICAgICAgIG15ICRwYXJhbVR5cGUgPSBH
ZXRHbGliVHlwZU5hbWUoJHBhcmFtSURMVHlwZSk7CisgICAgICAgIG15ICRwYXJhbU5hbWUgPSBk
ZWNhbWVsaXplKCRwYXJhbS0+bmFtZSk7CisKKyAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICIsICRw
YXJhbVR5cGUgJHBhcmFtTmFtZSI7CisKKyAgICAgICAgbXkgJHBhcmFtX2lzX2Nsc190eXBlID0g
SXNHRE9NQ2xhc3NUeXBlKCRwYXJhbUlETFR5cGUpOworICAgICAgICBpZiAoJHBhcmFtX2lzX2Ns
c190eXBlKSB7CisgICAgICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBuZSAiRE9NT2JqZWN0Iikg
eworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IndlYmtpdC9XZWJLaXRET00ke3BhcmFt
SURMVHlwZX1Qcml2YXRlLmgifSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCRwYXJhbV9pc19jbHNfdHlwZSB8fCAoJHBhcmFtSURMVHlwZSBlcSAiRE9NU3RyaW5n
IikpIHsKKyAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiX2dfIiAuICRwYXJhbU5hbWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCRjYWxsX2ltcGxfcGFyYW1zKSB7CisgICAgICAgICAgICAkY2Fs
bF9pbXBsX3BhcmFtcyAuPSAiLCAkcGFyYW1OYW1lIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICRjYWxsX2ltcGxfcGFyYW1zID0gIiRwYXJhbU5hbWUiOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCRmbl9zaWdfdHlwZSBlcSAiRXZlbnQiKSB7CisgICAgICAgIHB1c2goQGhC
b2R5LCAiXG4vKiBUT0RPOiBldmVudCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gKi9cblxuIik7
CisgICAgICAgIHB1c2goQGNCb2R5LCAiXG4vKiBUT0RPOiBldmVudCBmdW5jdGlvbiAke2Z1bmN0
aW9uTmFtZX0gKi9cblxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoJHJl
dHVyblR5cGUgbmUgInZvaWQiICYmICRyZXRfaXNfY2xzX3R5cGUpIHsKKyAgICAgICAgaWYgKCRm
bl9zaWdfdHlwZSBuZSAiRXZlbnRUYXJnZXQiKSB7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJ3ZWJraXQvV2ViS2l0RE9NJHtmbl9zaWdfdHlwZX1Qcml2YXRlLmgifSA9IDE7CisgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXQvV2ViS2l0RE9NJHtmbl9zaWdfdHlwZX0uaCJ9ID0g
MTsKKyAgICAgICAgfQorCisgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7Zm5fc2lnX3R5cGV9Lmgi
fSA9IDE7CisgICAgfQorCisgICAgIyBza2lwIGN1c3RvbSBmdW5jdGlvbnMgZm9yIG5vdworICAg
ICMgYnV0IHNraXAgZnJvbSBoZXJlIHRvIGFsbG93IHNvbWUgaGVhZGVycyB0byBiZSBjcmVhdGVk
CisgICAgIyBmb3IgYSBzdWNjZXNzZnVsIGNvbXBpbGUuCisgICAgaWYgKCRpc19jdXN0b21fZm4g
JiYKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBuZSAid2Via2l0X2RvbV9ub2RlX3JlbW92ZV9jaGls
ZCIgJiYgCisgICAgICAgICRmdW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21fbm9kZV9pbnNlcnRf
YmVmb3JlIiAmJgorICAgICAgICAkZnVuY3Rpb25OYW1lIG5lICJ3ZWJraXRfZG9tX25vZGVfcmVw
bGFjZV9jaGlsZCIgJiYKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBuZSAid2Via2l0X2RvbV9ub2Rl
X2FwcGVuZF9jaGlsZCIpIHsKKyAgICAgICAgcHVzaChAaEJvZHksICJcbi8qIFRPRE86IGN1c3Rv
bSBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gKi9cblxuIik7CisgICAgICAgIHB1c2goQGNCb2R5
LCAiXG4vKiBUT0RPOiBjdXN0b20gZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9ICovXG5cbiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXkgJF9yZXR1cm5UeXBlID0gJHJldHVyblR5
cGU7CisgICAgbXkgJGRvbW9ialR5cGUgPSAiV2ViS2l0RE9NIi4kZm5fc2lnX3R5cGU7CisKKyAg
ICBpZihAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICAgICAgJGZ1bmN0aW9u
U2lnIC49ICIsIEdFcnJvciAqKmVycm9yIjsKKyAgICB9CisKKyAgICBwdXNoKEBoQm9keSwgIldF
QktJVF9BUEkgJF9yZXR1cm5UeXBlXG4kZnVuY3Rpb25OYW1lICgkZnVuY3Rpb25TaWcpO1xuXG4i
KTsKKyAgICBwdXNoKEBjQm9keSwgIiRfcmV0dXJuVHlwZVxuJGZ1bmN0aW9uTmFtZSAoJGZ1bmN0
aW9uU2lnKVxue1xuIik7CisKKyAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQiKSB7CisgICAg
ICAgICMgVE9ETzogcmV0dXJuIHByb3BlciBkZWZhdWx0IHJlc3VsdAorICAgICAgICBwdXNoKEBj
Qm9keSwgIiAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VsZiwgMCk7XG4iKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTtc
biIpOworICAgIH0KKworICAgICMgVGhlIFdlYktpdDo6Y29yZSBpbXBsZW1lbnRhdGlvbnMgY2hl
Y2sgZm9yIE5VTEwgYWxyZWFkeTsgbm8gbmVlZCB0bworICAgICMgZHVwbGljYXRlIGVmZm9ydC4K
KyAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTtcbiIpOworCisgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICBteSAkcGFyYW1OYW1lID0gZGVjYW1lbGl6
ZSgkcGFyYW0tPm5hbWUpOworICAgICAgICBteSAkcGFyYW1JRExUeXBlID0gJHBhcmFtLT50eXBl
OworICAgICAgICBteSAkcGFyYW1UeXBlSXNQcmltaXRpdmUgPSAkY29kZUdlbmVyYXRvci0+SXNQ
cmltaXRpdmVUeXBlKCRwYXJhbUlETFR5cGUpOworICAgICAgICBteSAkcGFyYW1faXNfY2xzX3R5
cGUgPSBJc0dET01DbGFzc1R5cGUoJHBhcmFtSURMVHlwZSk7CisgICAgICAgIGlmICghJHBhcmFt
VHlwZUlzUHJpbWl0aXZlKSB7CisgICAgICAgICAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQi
KSB7CisgICAgICAgICAgICAgICAgIyBUT0RPOiByZXR1cm4gcHJvcGVyIGRlZmF1bHQgcmVzdWx0
CisgICAgICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwg
KCRwYXJhbU5hbWUsIDApO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJuX2lmX2ZhaWwgKCRwYXJhbU5hbWUpO1xuIik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAkcmV0dXJuUGFyYW1OYW1l
ID0gIiI7CisgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkg
eworICAgICAgICBteSAkcGFyYW1JRExUeXBlID0gJHBhcmFtLT50eXBlOworICAgICAgICBteSAk
cGFyYW1OYW1lID0gZGVjYW1lbGl6ZSgkcGFyYW0tPm5hbWUpOworCisgICAgICAgIG15ICRwYXJh
bV9pc19jbHNfdHlwZSA9IElzR0RPTUNsYXNzVHlwZSgkcGFyYW1JRExUeXBlKTsKKyAgICAgICAg
IyBIQUNLIQorICAgICAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV94bWxfaHR0
cF9yZXF1ZXN0X29wZW4iICYmCisgICAgICAgICRwYXJhbS0+bmFtZSBlcSAidXJsIikgeworICAg
ICAgICAgICAgcHVzaChAY0JvZHksICIgICAgV2ViQ29yZTo6S1VSTCBfZ18ke3BhcmFtTmFtZX0g
PSBXZWJDb3JlOjpLVVJMKCRwYXJhbU5hbWUpO1xuIik7CisgICAgICAgIH0gZWxzaWYgKCRwYXJh
bUlETFR5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAg
IFdlYkNvcmU6OlN0cmluZyBfZ18ke3BhcmFtTmFtZX0gPSBXZWJDb3JlOjpTdHJpbmc6OmZyb21V
VEY4KCRwYXJhbU5hbWUpO1xuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRwYXJhbV9pc19j
bHNfdHlwZSkgeworICAgICAgICAgICAgbXkgJHBhcmFtX2dkb21fZm4gPSAid2Via2l0X2RvbV8i
IC4gZGVjYW1lbGl6ZSgkcGFyYW1JRExUeXBlKTsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAi
ICAgIFdlYkNvcmU6OiR7cGFyYW1JRExUeXBlfSAqIF9nXyR7cGFyYW1OYW1lfSA9IFdlYktpdDo6
Y29yZSgkcGFyYW1OYW1lKTtcbiIpOworICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2
b2lkIikgeworICAgICAgICAgICAgICAgICMgVE9ETzogcmV0dXJuIHByb3BlciBkZWZhdWx0IHJl
c3VsdAorICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsIChfZ18ke3BhcmFtTmFtZX0sIDApO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJuX2lmX2ZhaWwgKF9nXyR7cGFy
YW1OYW1lfSk7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAkcmV0dXJu
UGFyYW1OYW1lID0gIl9nXyIuJHBhcmFtTmFtZSBpZiAkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJSZXR1cm4ifTsKKyAgICB9CisKKyAgICBteSAkYXNzaWduID0gIiI7CisgICAgbXkgJGFz
c2lnbl9wcmUgPSAiIjsKKyAgICBteSAkYXNzaWduX3Bvc3QgPSAiIjsKKworICAgIGlmICgkcmV0
dXJuVHlwZSBuZSAidm9pZCIgJiYgISRpc19jdXN0b21fZm4pIHsKKyAgICAgICAgaWYgKCRyZXRf
aXNfY2xzX3R5cGUpIHsKKyAgICAgICAgICAgICRhc3NpZ24gPSAiUGFzc1JlZlB0cjxXZWJDb3Jl
Ojoke2ZuX3NpZ190eXBlfT4gZ19yZXMgPSAiOworICAgICAgICAgICAgJGFzc2lnbl9wcmUgPSAi
V1RGOjpnZXRQdHIoIjsKKyAgICAgICAgICAgICRhc3NpZ25fcG9zdCA9ICIpIjsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICRhc3NpZ24gPSAiJHtfcmV0dXJuVHlwZX0gcmVzID0gIjsK
KyAgICAgICAgfQorICAgIH0KKyAgICBteSAkZXhjZXB0aW9ucyA9ICIiOworICAgIGlmIChAeyRm
dW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICAgICAgcHVzaChAY0JvZHksICIgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKKyAgICAgICAgaWYgKCR7Y2FsbF9p
bXBsX3BhcmFtc30gbmUgIiIpIHsKKyAgICAgICAgICAgICRleGNlcHRpb25zID0gIiwgZWMiOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGV4Y2VwdGlvbnMgPSAiZWMiOworICAgICAg
ICB9CisgICAgfQorCisgICAgIyBXZSBuZWVkIHRvIHNwZWNpYWwtY2FzZSB0aGVzZSBOb2RlIG1l
dGhvZHMgYmVjYXVzZSB0aGVpciBDKysgc2lnbmF0dXJlIGlzIGRpZmZlcmVudAorICAgICMgZnJv
bSB3aGF0IHdlJ2QgZXhwZWN0IGdpdmVuIHRoZWlyIElETCBkZXNjcmlwdGlvbjsgc2VlIE5vZGUu
aC4KKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9ub2RlX2FwcGVuZF9jaGls
ZCIgfHwKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9ub2RlX2luc2VydF9i
ZWZvcmUiIHx8CisgICAgICAgICRmdW5jdGlvbk5hbWUgZXEgIndlYmtpdF9kb21fbm9kZV9yZXBs
YWNlX2NoaWxkIiB8fAorICAgICAgICAkZnVuY3Rpb25OYW1lIGVxICJ3ZWJraXRfZG9tX25vZGVf
cmVtb3ZlX2NoaWxkIikgeworICAgICAgICBteSAkY3VzdG9tX2dkb21fbm9kZV9hcHBlbmRfY2hp
bGQgPSA8PCAiRU9GIjsKKyAgICBib29sIG9rID0gaXRlbS0+JHtmbl9zaWdfbmFtZX0oJHtjYWxs
X2ltcGxfcGFyYW1zfSR7ZXhjZXB0aW9uc30pOworICAgIGlmIChvaykKKyAgICB7CisgICAgICAg
ICR7X3JldHVyblR5cGV9IHJlcyA9IHN0YXRpY19jYXN0PCR7X3JldHVyblR5cGV9PihXZWJLaXQ6
OmtpdCgkcmV0dXJuUGFyYW1OYW1lKSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorRU9G
CisgICAgICAgIHB1c2goQGNCb2R5LCAkY3VzdG9tX2dkb21fbm9kZV9hcHBlbmRfY2hpbGQpOwor
ICAgIAorICAgICAgICBpZihAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICAg
ICAgICAgIG15ICRleGNlcHRpb25faGFuZGxpbmcgPSA8PCAiRU9GIjsKKworICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2M7CisgICAgV2ViQ29yZTo6Z2V0RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uKGVjLCBlY2Rlc2MpOworICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwo
ZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVj
ZGVzYy5uYW1lKTsKK0VPRgorICAgICAgICAgICAgcHVzaChAY0JvZHksICRleGNlcHRpb25faGFu
ZGxpbmcpOworICAgICAgICB9CisgICAgICAgIHB1c2goQGNCb2R5LCAicmV0dXJuIE5VTEw7Iik7
CisgICAgICAgIHB1c2goQGNCb2R5LCAifVxuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0g
ZWxzaWYgKCRmbl9zaWdfdHlwZSBlcSAiRE9NT2JqZWN0IiAmJgorICAgICAgICAgJGZ1bmN0aW9u
TmFtZSBuZSAnd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfY3NzX2NhbnZhc19jb250ZXh0Jykgewor
ICAgICAgICBwdXNoKEBjQm9keSwgIiAgICAvKiBUT0RPIC0gZ2V0IGNhbnZhcyBvYmplY3QgKGl0
ZW0tPiR7Zm5fc2lnX25hbWV9KCR7Y2FsbF9pbXBsX3BhcmFtc30ke2V4Y2VwdGlvbnN9KSk7Ki9c
biIgKTsKKworICAgIH0gZWxzaWYgKCRmbl9zaWdfdHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAg
ICAgICBwdXNoKEBjQm9keSwgIiAgICAke2Fzc2lnbn13ZWJraXRfZG9tX2dzdHJpbmdfY29udmVy
dChpdGVtLT4ke2ZuX3NpZ19uYW1lfSgke2NhbGxfaW1wbF9wYXJhbXN9JHtleGNlcHRpb25zfSkp
O1xuIiApOworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGNCb2R5LCAiICAgICR7YXNzaWdu
fSR7YXNzaWduX3ByZX1pdGVtLT4ke2ZuX3NpZ19uYW1lfSgke2NhbGxfaW1wbF9wYXJhbXN9JHtl
eGNlcHRpb25zfSR7YXNzaWduX3Bvc3R9KTtcbiIgKTsKKyAgICAgICAgCisgICAgICAgIGlmKEB7
JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgeworICAgICAgICAgICAgbXkgJGV4Y2VwdGlv
bl9oYW5kbGluZyA9IDw8ICJFT0YiOworICAgIGlmKGVjKSB7CisgICAgICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2M7CisgICAgICAgIFdlYkNvcmU6OmdldEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbihlYywgZWNkZXNjKTsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0
ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29k
ZSwgZWNkZXNjLm5hbWUpOworICAgIH0KK0VPRgorICAgICAgICAgICAgcHVzaChAY0JvZHksICRl
eGNlcHRpb25faGFuZGxpbmcpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCRyZXR1cm5U
eXBlIG5lICJ2b2lkIiAmJiAhJGlzX2N1c3RvbV9mbikgeworICAgICAgICBpZiAoJGZuX3NpZ190
eXBlIG5lICJET01PYmplY3QiKSB7CisgICAgICAgICAgICBpZiAoJHJldF9pc19jbHNfdHlwZSkg
eworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgICR7X3JldHVyblR5cGV9IHJlcyA9
IHN0YXRpY19jYXN0PCR7X3JldHVyblR5cGV9PihXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSkpO1xu
Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRmbl9zaWdfdHlwZSBl
cSAiRE9NT2JqZWN0IikgeworICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgcmV0dXJuIE5V
TEw7IC8qIFRPRE86IHJldHVybiBjYW52YXMgb2JqZWN0ICovXG4iKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiByZXM7XG4iKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBwdXNoKEBjQm9keSwgIlxufVxuXG4iKTsKK30KKworc3ViIENsYXNz
SGFzRnVuY3Rpb24geworICAgIG15ICgkY2xhc3MsICRuYW1lKSA9IEBfOworCisgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGNsYXNzLT5mdW5jdGlvbnN9KSB7CisgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAkbmFtZSkgeworICAgICAgICAgICAgcmV0dXJuIDE7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3ViIEdlbmVyYXRlRnVu
Y3Rpb25zIHsKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUsICRkYXRhTm9kZSkgPSBA
XzsKKworICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkg
eworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUZ1bmN0aW9uKCRpbnRlcmZhY2VOYW1lLCAkZnVu
Y3Rpb24sICIiKTsKKyAgICB9CisKKyAgICBUT1A6CisgICAgZm9yZWFjaCBteSAkYXR0cmlidXRl
IChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgaWYgKHNraXBBdHRyaWJ1dGUo
JGF0dHJpYnV0ZSkpIHsKKyAgICAgICAgICAgIG5leHQgVE9QOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIGVxICJ0eXBlIgorICAg
ICAgICAgICAgIyBUaGlzIHdpbGwgY29uZmxpY3Qgd2l0aCB0aGUgZ2V0X3R5cGUoKSBmdW5jdGlv
biB3ZSBkZWZpbmUgdG8gcmV0dXJuIGEgR1R5cGUKKyAgICAgICAgICAgICMgYWNjb3JkaW5nIHRv
IEdPYmplY3QgY29udmVudGlvbnMuICBTa2lwIHRoaXMgZm9yIG5vdy4KKyAgICAgICAgICAgIHx8
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSBlcSAiVVJMIiAgICAgIyBUT0RPOiBoYW5kbGUg
dGhpcworICAgICAgICAgICAgfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29udmVydEZyb21TdHJpbmcifSAgICAjIFRPRE86IGhhbmRsZSB0aGlzCisgICAg
ICAgICAgICApIHsKKyAgICAgICAgICAgIG5leHQgVE9QOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgbXkgJGF0dG5hbWVfdXBwZXIgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJz
dCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOworICAgICAgICBteSAkZ2V0bmFtZSA9ICJn
ZXQke2F0dG5hbWVfdXBwZXJ9IjsKKyAgICAgICAgbXkgJHNldG5hbWUgPSAic2V0JHthdHRuYW1l
X3VwcGVyfSI7CisgICAgICAgIGlmIChDbGFzc0hhc0Z1bmN0aW9uKCRkYXRhTm9kZSwgJGdldG5h
bWUpIHx8IENsYXNzSGFzRnVuY3Rpb24oJGRhdGFOb2RlLCAkc2V0bmFtZSkpIHsKKyAgICAgICAg
ICAgICMgVmVyeSBvY2Nhc2lvbmFsbHkgYW4gSURMIGZpbGUgZGVmaW5lcyBnZXR0ZXIvc2V0dGVy
IGZ1bmN0aW9ucyBmb3Igb25lIG9mIGl0cworICAgICAgICAgICAgIyBhdHRyaWJ1dGVzOyBpbiB0
aGlzIGNhc2Ugd2UgZG9uJ3QgbmVlZCB0byBhdXRvZ2VuZXJhdGUgdGhlIGdldHRlci9zZXR0ZXIu
CisgICAgICAgICAgICBuZXh0IFRPUDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgIyBH
ZW5lcmF0ZSBhbiBhdHRyaWJ1dGUgZ2V0dGVyLiAgRm9yIGFuIGF0dHJpYnV0ZSAiZm9vIiwgdGhp
cyBpcyBhIGZ1bmN0aW9uIG5hbWVkCisgICAgICAgICMgImdldF9mb28iIHdoaWNoIGNhbGxzIGEg
RE9NIGNsYXNzIG1ldGhvZCBuYW1lZCBmb28oKS4KKyAgICAgICAgbXkgJGZ1bmN0aW9uID0gbmV3
IGRvbUZ1bmN0aW9uKCk7CisgICAgICAgICRmdW5jdGlvbi0+c2lnbmF0dXJlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSk7CisgICAgICAgICRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9ucygkYXR0cmli
dXRlLT5nZXR0ZXJFeGNlcHRpb25zKTsKKyAgICAgICAgJG9iamVjdC0+R2VuZXJhdGVGdW5jdGlv
bigkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uLCAiZ2V0XyIpOworICAgICAgICAKKyAgICAgICAg
aWYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8gfHwKKyAgICAgICAgICAgICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlIn0gICMg
Y2FuJ3QgaGFuZGxlIHRoaXMgeWV0CisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgIG5leHQg
VE9QOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAjIEdlbmVyYXRlIGFuIGF0dHJpYnV0
ZSBzZXR0ZXIuICBGb3IgYW4gYXR0cmlidXRlLCAiZm9vIiwgdGhpcyBpcyBhIGZ1bmN0aW9uIG5h
bWVkCisgICAgICAgICMgInNldF9mb28iIHdoaWNoIGNhbGxzIGEgRE9NIGNsYXNzIG1ldGhvZCBu
YW1lZCBzZXRGb28oKS4KKyAgICAgICAgJGZ1bmN0aW9uID0gbmV3IGRvbUZ1bmN0aW9uKCk7Cisg
ICAgICAgIAorICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkp
OworICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgkc2V0bmFtZSk7CisgICAgICAg
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKCJ2b2lkIik7CisgICAgICAgICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAKKyAgICAgICAgbXkgJHBhcmFtID0gbmV3IGRvbVNp
Z25hdHVyZSgpOworICAgICAgICAkcGFyYW0tPm5hbWUoInZhbHVlIik7CisgICAgICAgICRwYXJh
bS0+dHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICBteSAlYXR0cmli
dXRlcyA9ICgpOworICAgICAgICAkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVz
KTsKKyAgICAgICAgbXkgJGFycmF5UmVmID0gJGZ1bmN0aW9uLT5wYXJhbWV0ZXJzOworICAgICAg
ICBwdXNoKEAkYXJyYXlSZWYsICRwYXJhbSk7CisgICAgICAgIAorICAgICAgICAkZnVuY3Rpb24t
PnJhaXNlc0V4Y2VwdGlvbnMoJGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9ucyk7CisgICAgICAg
IAorICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUZ1bmN0aW9uKCRpbnRlcmZhY2VOYW1lLCAkZnVu
Y3Rpb24sICIiKTsKKyAgICB9Cit9CisKK3N1YiBHZW5lcmF0ZUNGaWxlIHsKKyAgICBteSAoJG9i
amVjdCwgJGludGVyZmFjZU5hbWUsICRwYXJlbnRDbGFzc05hbWUsICRwYXJlbnRHT2JqVHlwZSwg
JGRhdGFOb2RlKSA9IEBfOworICAgIG15ICRpbXBsQ29udGVudCA9ICIiOworCisgICAgbXkgJGNs
c0NhcHMgPSB1YyhkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKSk7CisgICAgbXkgJGxjYXNlX2lm
YWNlbmFtZSA9ICJ3ZWJraXRfZG9tXyIgLiBkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKTsKKwor
ICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOworR19ERUZJTkVfVFlQRSgke2NsYXNzTmFtZX0s
ICR7bGNhc2VfaWZhY2VuYW1lfSwgJHtwYXJlbnRHT2JqVHlwZX0pCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCiske2NsYXNzTmFtZX0qIHdyYXAke2ludGVyZmFjZU5hbWV9KFdlYkNvcmU6OiR7aW50
ZXJmYWNlTmFtZX0qIGNvcmVPYmplY3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29y
ZU9iamVjdCAhPSAwLCAwKTsKKyAgICAKKyAgICAke2NsYXNzTmFtZX0qIHdyYXBwZXIgPSBXRUJL
SVRfRE9NXyR7Y2xzQ2Fwc30oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9
LCBOVUxMKSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod3JhcHBlciAhPSAwLCAwKTsKKwor
ICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRl
ciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAorICAgICAqIGluIGEgQy1hbGxv
Y2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhl
CisgICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KKyAgICAgKi8KKworICAgIGNvcmVPYmplY3QtPnJl
ZigpOworICAgIFdFQktJVF9ET01fT0JKRUNUKHdyYXBwZXIpLT5jb3JlT2JqZWN0ID0gY29yZU9i
amVjdDsKKworICAgIHJldHVybiB3cmFwcGVyOworfQorCitXZWJDb3JlOjoke2ludGVyZmFjZU5h
bWV9KiBjb3JlKCR7Y2xhc3NOYW1lfSogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChyZXF1ZXN0ICE9IDAsIDApOworICAgIAorICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFt
ZX0qIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9Kj4o
V0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvcmVPYmplY3QgIT0gMCwgMCk7CisgICAgCisgICAgcmV0dXJuIGNvcmVPYmpl
Y3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorRU9GCisKKyAgICBwdXNoKEBjQm9keVBy
aXYsICRpbXBsQ29udGVudCk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVQcm9wZXJ0aWVzKCRpbnRl
cmZhY2VOYW1lLCAkZGF0YU5vZGUpOworICAgICRvYmplY3QtPkdlbmVyYXRlRnVuY3Rpb25zKCRp
bnRlcmZhY2VOYW1lLCAkZGF0YU5vZGUpOworfQorCitzdWIgR2VuZXJhdGVFbmRIZWFkZXIgewor
ICAgIG15ICgkb2JqZWN0KSA9IEBfOworCisgICAgI0hlYWRlciBndWFyZAorICAgIG15ICRndWFy
ZCA9ICRjbGFzc05hbWUgLiAiX2giOworCisgICAgcHVzaChAaEJvZHksICJHX0VORF9ERUNMU1xu
XG4iKTsKKyAgICBwdXNoKEBoQm9keSwgIiNlbmRpZiAvKiAkZ3VhcmQgKi9cbiIpOworfQorCitz
dWIgR2VuZXJhdGVQcml2YXRlSGVhZGVyIHsKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAg
bXkgJGRhdGFOb2RlID0gc2hpZnQ7CisKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9k
ZS0+bmFtZTsKKyAgICBteSAkZmlsZW5hbWUgPSAiJG91dHB1dERpci8iIC4gJGNsYXNzTmFtZSAu
ICJQcml2YXRlLmgiOworICAgIG15ICRndWFyZCA9IHVjKGRlY2FtZWxpemUoJGNsYXNzTmFtZSkp
IC4gIl9QUklWQVRFX0giOworICAgIG15ICRwYXJlbnRDbGFzc05hbWUgPSBHZXRQYXJlbnRDbGFz
c05hbWUoJGRhdGFOb2RlKTsKKyAgICBteSAkaGFzTGVnYWN5UGFyZW50ID0gJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5UGFyZW50In07CisgICAgbXkgJGhhc1JlYWxQYXJl
bnQgPSBAeyRkYXRhTm9kZS0+cGFyZW50c30gPiAwOworICAgIG15ICRoYXNQYXJlbnQgPSAkaGFz
TGVnYWN5UGFyZW50IHx8ICRoYXNSZWFsUGFyZW50OworICAgIAorICAgIG9wZW4oUFJJVkhFQURF
UiwgIj4kZmlsZW5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkZmlsZW5hbWUgZm9y
IHdyaXRpbmciOworICAgIAorICAgIHByaW50IFBSSVZIRUFERVIgc3BsaXQoIlxyIiwgJGxpY2Vu
Y2VUZW1wbGF0ZSk7CisgICAgcHJpbnQgUFJJVkhFQURFUiAiXG4iOworICAgIAorICAgIG15ICR0
ZXh0ID0gPDwgIkVPRiI7CisjaWZuZGVmICRndWFyZAorI2RlZmluZSAkZ3VhcmQKKworI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0LyR7cGFyZW50Q2xhc3NOYW1lfS5o
PgorI2luY2x1ZGUgIiR7aW50ZXJmYWNlTmFtZX0uaCIKK0VPRgorCisgICAgcHJpbnQgUFJJVkhF
QURFUiAkdGV4dDsKKyAgICAKKyAgICBwcmludCBQUklWSEVBREVSIG1hcCB7ICIjaW5jbHVkZSBc
IiRfXCJcbiIgfSBzb3J0IGtleXMoJWhkclByb3BJbmNsdWRlcyk7CisgICAgcHJpbnQgUFJJVkhF
QURFUiAiXG4iIGlmIGtleXMoJWhkclByb3BJbmNsdWRlcyk7CisgICAgCisgICAgJHRleHQgPSA8
PCAiRU9GIjsKK25hbWVzcGFjZSBXZWJLaXQgeworICAgICR7Y2xhc3NOYW1lfSAqCisgICAgd3Jh
cCR7aW50ZXJmYWNlTmFtZX0oV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSAqY29yZU9iamVjdCk7
CisKKyAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICoKKyAgICBjb3JlKCR7Y2xhc3NOYW1l
fSAqcmVxdWVzdCk7CisKK0VPRgorCisgICAgcHJpbnQgUFJJVkhFQURFUiAkdGV4dDsKKworICAg
IGlmICgkY2xhc3NOYW1lIG5lICJXZWJLaXRET01Ob2RlIikgeworICAgICAgICAkdGV4dCA9IDw8
ICJFT0YiOworICAgIGdwb2ludGVyCisgICAga2l0KFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0q
IG5vZGUpOworCitFT0YKKyAgICAgICAgcHJpbnQgUFJJVkhFQURFUiAkdGV4dDsKKyAgICB9CisK
KyAgICAkdGV4dCA9IDw8ICJFT0YiOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
KiAke2d1YXJkfSAqLworRU9GCisgICAgcHJpbnQgUFJJVkhFQURFUiAkdGV4dDsKKyAgICAKKyAg
ICBjbG9zZShQUklWSEVBREVSKTsKK30KKworc3ViIFVzZXNNYW51YWxUb0pTSW1wbGVtZW50YXRp
b24geworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAi
Tm9kZSIgb3IgJHR5cGUgZXEgIkRvY3VtZW50IiBvciAkdHlwZSBlcSAiSFRNTENvbGxlY3Rpb24i
IG9yCisgICAgICAkdHlwZSBlcSAiU1ZHUGF0aFNlZyIgb3IgJHR5cGUgZXEgIlN0eWxlU2hlZXQi
IG9yICR0eXBlIGVxICJDU1NSdWxlIiBvciAkdHlwZSBlcSAiQ1NTVmFsdWUiIG9yCisgICAgICAk
dHlwZSBlcSAiRXZlbnQiIG9yICR0eXBlIGVxICJFbGVtZW50IiBvciAkdHlwZSBlcSAiVGV4dCI7
CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBHZW5lcmF0ZSB7CisgICAgbXkgKCRvYmplY3QsICRk
YXRhTm9kZSkgPSBAXzsKKworICAgIG15ICRoYXNMZWdhY3lQYXJlbnQgPSAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lQYXJlbnQifTsKKyAgICBteSAkaGFzUmVhbFBhcmVu
dCA9IEB7JGRhdGFOb2RlLT5wYXJlbnRzfSA+IDA7CisgICAgbXkgJGhhc1BhcmVudCA9ICRoYXNM
ZWdhY3lQYXJlbnQgfHwgJGhhc1JlYWxQYXJlbnQ7CisgICAgbXkgJHBhcmVudENsYXNzTmFtZSA9
IEdldFBhcmVudENsYXNzTmFtZSgkZGF0YU5vZGUpOworICAgIG15ICRwYXJlbnRHT2JqVHlwZSA9
IEdldFBhcmVudEdPYmpUeXBlKCRkYXRhTm9kZSk7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAk
ZGF0YU5vZGUtPm5hbWU7CisKKyAgICAjIEFkZCB0aGUgZGVmYXVsdCBpbXBsIGhlYWRlciB0ZW1w
bGF0ZQorICAgIEBjUHJlZml4ID0gc3BsaXQoIlxyIiwgJGxpY2VuY2VUZW1wbGF0ZSk7CisgICAg
cHVzaChAY1ByZWZpeCwgIlxuIik7CisKKyAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXRtYXJzaGFs
LmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3sid2Via2l0cHJpdmF0ZS5oIn0gPSAxOworICAg
ICRpbXBsSW5jbHVkZXN7IldlYktpdERPTUJpbmRpbmcuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1
ZGVzeyJnb2JqZWN0L3dlYmtpdGRvbXN0cmluZ2NvbnZlcnQuaCJ9ID0gMTsKKyAgICAkaW1wbElu
Y2x1ZGVzeyJ3ZWJraXQvJGNsYXNzTmFtZS5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7Indl
YmtpdC8ke2NsYXNzTmFtZX1Qcml2YXRlLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siJHtp
bnRlcmZhY2VOYW1lfS5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUu
aCJ9ID0gMTsKKworICAgICRoZHJJbmNsdWRlc3sid2Via2l0LyR7cGFyZW50Q2xhc3NOYW1lfS5o
In0gPSAxOworCisgICAgaWYgKCRjbGFzc05hbWUgbmUgIldlYktpdERPTU5vZGUiKSB7CisgICAg
ICAgIG15ICRjb252ZXJ0ZXIgPSA8PCAiRU9GIjsKK25hbWVzcGFjZSBXZWJLaXQgeworICAgIAor
Z3BvaW50ZXIga2l0KFdlYkNvcmU6OiRpbnRlcmZhY2VOYW1lKiBvYmopCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwob2JqICE9IDAsIDApOworCisgICAgaWYgKGdwb2ludGVyIHJldCA9IERP
TU9iamVjdENhY2hlOjpnZXQob2JqKSkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldHVy
biBET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwJHtpbnRlcmZhY2VOYW1lfShv
YmopKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdCAvLworCitFT0YKKyAgICBwdXNo
KEBjQm9keSwgJGNvbnZlcnRlcik7CisgICAgfQorCisgICAgJG9iamVjdC0+R2VuZXJhdGVIZWFk
ZXIoJGludGVyZmFjZU5hbWUsICRwYXJlbnRDbGFzc05hbWUpOworICAgICRvYmplY3QtPkdlbmVy
YXRlQ0ZpbGUoJGludGVyZmFjZU5hbWUsICRwYXJlbnRDbGFzc05hbWUsICRwYXJlbnRHT2JqVHlw
ZSwgJGRhdGFOb2RlKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUVuZEhlYWRlcigpOworICAgICRv
YmplY3QtPkdlbmVyYXRlUHJpdmF0ZUhlYWRlcigkZGF0YU5vZGUpOworfQorCisjIEludGVybmFs
IGhlbHBlcgorc3ViIFdyaXRlRGF0YSB7CisgICAgbXkgKCRvYmplY3QsICRuYW1lKSA9IEBfOwor
CisgICAgIyBXcml0ZSBwdWJsaWMgaGVhZGVyLgorICAgIG15ICRoZHJGTmFtZSA9ICIkb3V0cHV0
RGlyLyIgLiAkbmFtZSAuICIuaCI7CisgICAgb3BlbihIRUFERVIsICI+JGhkckZOYW1lIikgb3Ig
ZGllICJDb3VsZG4ndCBvcGVuIGZpbGUgJGhkckZOYW1lIjsKKworICAgIHByaW50IEhFQURFUiBA
aFByZWZpeDsKKyAgICBwcmludCBIRUFERVIgQGhQcmVmaXhHdWFyZDsKKyAgICBwcmludCBIRUFE
RVIgIiNpbmNsdWRlIFwid2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaFwiXG4iOworICAgIHByaW50
IEhFQURFUiAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG4iOworICAgIHByaW50IEhFQURFUiAi
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+XG4iOworICAgIHByaW50IEhFQURFUiBt
YXAgeyAiI2luY2x1ZGUgXCIkX1wiXG4iIH0gc29ydCBrZXlzKCVoZHJJbmNsdWRlcyk7CisgICAg
cHJpbnQgSEVBREVSICJcbiIgaWYga2V5cyglaGRySW5jbHVkZXMpOworICAgIHByaW50IEhFQURF
UiAiXG4iOworICAgIHByaW50IEhFQURFUiBAaEJvZHlQcmU7CisgICAgcHJpbnQgSEVBREVSIEBo
Qm9keTsKKworICAgIGNsb3NlKEhFQURFUik7CisKKyAgICAjIFdyaXRlIHRoZSBpbXBsZW1lbnRh
dGlvbiBzb3VyY2VzCisgICAgbXkgJGltcGxGaWxlTmFtZSA9ICIkb3V0cHV0RGlyLyIgLiAkbmFt
ZSAuICIuY3BwIjsKKyAgICBvcGVuKElNUEwsICI+JGltcGxGaWxlTmFtZSIpIG9yIGRpZSAiQ291
bGRuJ3Qgb3BlbiBmaWxlICRpbXBsRmlsZU5hbWUiOworCisgICAgcHJpbnQgSU1QTCBAY1ByZWZp
eDsKKyAgICBwcmludCBJTVBMICIjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cbiI7CisgICAgcHJp
bnQgSU1QTCAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG5cbiI7CisgICAgcHJpbnQgSU1QTCAiI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD5cbiI7CisgICAgcHJpbnQgSU1QTCAiI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD5cbiI7CisgICAgcHJpbnQgSU1QTCBtYXAgeyAiI2luY2x1ZGUgXCIkX1wiXG4iIH0g
c29ydCBrZXlzKCVpbXBsSW5jbHVkZXMpOworICAgIHByaW50IElNUEwgIlxuIiBpZiBrZXlzKCVp
bXBsSW5jbHVkZXMpOworICAgIHByaW50IElNUEwgQGNCb2R5OworCisgICAgcHJpbnQgSU1QTCAi
XG4iOworICAgIHByaW50IElNUEwgQGNCb2R5UHJpdjsKKworICAgIGNsb3NlKElNUEwpOworCisg
ICAgJWltcGxJbmNsdWRlcyA9ICgpOworICAgICVoZHJJbmNsdWRlcyA9ICgpOworICAgIEBoUHJl
Zml4ID0gKCk7CisgICAgQGhCb2R5ID0gKCk7CisKKyAgICBAY1ByZWZpeCA9ICgpOworICAgIEBj
Qm9keSA9ICgpOworICAgIEBjQm9keVByaXYgPSAoKTsKK30KKworc3ViIEdlbmVyYXRlSW50ZXJm
YWNlIHsKKyAgICBteSAoJG9iamVjdCwgJGRhdGFOb2RlLCAkZGVmaW5lcykgPSBAXzsKKyAgICBt
eSAkbmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKKworICAgICMgU2V0IHVwIHNvbWUgZ2xvYmFsIHZh
cmlhYmxlcworICAgICRjbGFzc05hbWUgPSBHZXRDbGFzc05hbWUoJGRhdGFOb2RlLT5uYW1lKTsK
KyAgICAkb2JqZWN0LT5HZW5lcmF0ZSgkZGF0YU5vZGUpOworCisgICAgIyBXcml0ZSBjaGFuZ2Vz
CisgICAgbXkgJGZuYW1lID0gIldlYktpdERPTV8iIC4gJG5hbWU7CisgICAgJGZuYW1lID1+IHMv
Xy8vZzsKKyAgICAkb2JqZWN0LT5Xcml0ZURhdGEoJGZuYW1lKTsKK30KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwgYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMTc0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsCkBAIC0w
LDAgKzEsNzcgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworIworIyBDb3B5cmlnaHQgKEMpIDIwMDkg
QWRhbSBEaW5nbGUgPGFkYW1AeW9yYmEub3JnPgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBX
ZWJLaXQKKyMgCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMgCisjIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyMgCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWludCB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIyB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgCisKK215ICRjbGFz
c2xpc3QgPSA8U1RESU4+OworY2hvbXAoJGNsYXNzbGlzdCk7CitteSBAY2xhc3NlcyA9IHNwbGl0
IC8gLywgJGNsYXNzbGlzdDsKK0BjbGFzc2VzID0gc29ydCBAY2xhc3NlczsKKworcHJpbnQgPDxF
T0Y7CisvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCisgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdvYmplY3QtZ2VuZXJhdGUt
aGVhZGVycy5wbC4gIERPIE5PVCBNT0RJRlkhCisgICAKKyAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworRU9GCisKK215ICRvdXRUeXBlID0gJEFSR1ZbMF07Citt
eSAkaGVhZGVyOworaWYgKCRvdXRUeXBlIGVxICJkZWZpbmVzIikgeworICAgICRoZWFkZXIgPSAi
d2Via2l0ZG9tZGVmaW5lc19oIjsKK30gZWxzaWYgKCRvdXRUeXBlIGVxICJnZG9tIikgeworICAg
ICRoZWFkZXIgPSAid2Via2l0ZG9tX2giOworfSBlbHNlIHsKKyAgICBkaWUgInVua25vd24gb3V0
cHV0IHR5cGUiOworfQorCitwcmludCAiI2lmbmRlZiAke2hlYWRlcn1cbiI7CitwcmludCAiI2Rl
ZmluZSAke2hlYWRlcn1cbiI7CitwcmludCAiXG4iOworCitpZiAoJG91dFR5cGUgZXEgImRlZmlu
ZXMiKSB7CisgICAgZm9yZWFjaCBteSAkY2xhc3MgKEBjbGFzc2VzKSB7CisgICAgICAgIHByaW50
ICJ0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NJHtjbGFzc30gV2ViS2l0RE9NJHtjbGFzc307XG4i
OworICAgICAgICBwcmludCAidHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTSR7Y2xhc3N9Q2xhc3Mg
V2ViS2l0RE9NJHtjbGFzc31DbGFzcztcbiI7CisgICAgICAgIHByaW50ICJcbiI7CisgICAgfQor
fSBlbHNpZiAoJG91dFR5cGUgZXEgImdkb20iKSB7CisgICAgZm9yZWFjaCBteSAkY2xhc3MgKEBj
bGFzc2VzKSB7CisgICAgICAgIHByaW50ICIjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTSR7Y2xh
c3N9Lmg+XG4iOworICAgIH0KK30KKworcHJpbnQgIlxuIjsKK3ByaW50ICIjZW5kaWZcbiI7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBiL1dlYkNvcmUvZG9tL05vZGUuaWRsCmlu
ZGV4IGM2Y2Q0YjkuLjE5NTQ2YmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaWRsCisr
KyBiL1dlYkNvcmUvZG9tL05vZGUuaWRsCkBAIC02MSw3ICs2MSw5IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgICAgcHJldmlvdXNTaWJs
aW5nOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBuZXh0U2li
bGluZzsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCAgICAgYXR0cmli
dXRlczsKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSB8fCAhTEFOR1VBR0VfR09CSkVD
VAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgICAgICAgICBvd25lckRvY3Vt
ZW50OworI2VuZGlmCiAKICAgICAgICAgW09sZFN0eWxlT2JqQywgQ3VzdG9tXSBOb2RlIGluc2Vy
dEJlZm9yZShpbiBbUmV0dXJuXSBOb2RlIG5ld0NoaWxkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGUgcmVmQ2hpbGQpCkBAIC0xMzIsNiAr
MTM0LDcgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmIC8qIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNU
SVZFX0MpICovCiAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdV
QUdFX09CSkVDVElWRV9DCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfR09CSkVDVCkgfHwgIUxBTkdV
QUdFX0dPQkpFQ1QKICAgICAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKQEAgLTE0MSw2ICsxNDQsNyBAQCBtb2R1
bGUgY29yZSB7CiAgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkK
ICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAjZW5kaWYKKyNlbmRpZgogICAg
IH07CiAKIH0KLS0gCjEuNi41LjIKCg==
</data>
<flag name="commit-queue"
          id="28715"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46465</attachid>
            <date>2010-01-13 08:15:32 -0800</date>
            <delta_ts>2010-01-13 08:21:58 -0800</delta_ts>
            <desc>gobjectdombindings.patch</desc>
            <filename>gobjectdombindings.patch</filename>
            <type>text/plain</type>
            <size>66265</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA5Y2Y5ZTEwMjU5YTI4NGIyNWVkMWI3OWQ3NDAyMDU0ZWEzNTViYzYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDEzIEphbiAyMDEwIDEzOjE1OjUxICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wMS0x
MyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzLgoKICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgoKV2ViQ29yZToKCjIwMTAtMDEtMTMgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2Fs
aWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dU
S10gR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzM1OTAKCiAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhl
IEdPYmplY3QgRE9NIGJpbmRpbmdzLgoKICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAg
ICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcDogQWRkZWQuCiAgICAgICAg
KFdlYktpdDo6ZG9tT2JqZWN0cyk6CiAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6Omdl
dCk6CiAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dCk6CiAgICAgICAgKFdlYktp
dDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldCk6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlV3JhcHBl
cik6CiAgICAgICAgKFdlYktpdDo6a2l0KToKICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5oOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0
RE9NT2JqZWN0LmNwcDogQWRkZWQuCiAgICAgICAgKHdlYmtpdF9kb21fb2JqZWN0X2luaXQpOgog
ICAgICAgICh3ZWJraXRfZG9tX29iamVjdF9jbGFzc19pbml0KToKICAgICAgICAqIGJpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0Lmg6IEFkZGVkLgogICAgICAgICogYmluZGluZ3MvZ29i
amVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0Lmg6IEFkZGVkLgogICAgICAgICh3ZWJraXRfZG9t
X2dzdHJpbmdfY29udmVydCk6CiAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1n
ZW5lcmF0ZS1oZWFkZXJzLnBsOiBBZGRlZC4KICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKLS0tCiBD
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEg
KwogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDY0ICsrLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDM2ICsKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA5MiArKy0KIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5k
aW5nLmNwcCAgICAgIHwgICA5OSArKwogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TUJpbmRpbmcuaCAgICAgICAgfCAgIDU0ICsKIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJL
aXRET01PYmplY3QuY3BwICAgICAgIHwgICAyMyArCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NT2JqZWN0LmggICAgICAgICB8ICAgNTggKwogV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L3dlYmtpdGRvbXN0cmluZ2NvbnZlcnQuaCAgfCAgIDM3ICsKIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAgIHwgMTEwMiArKysrKysrKysrKysrKysr
KysrKwogLi4uL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsICAg
fCAgIDc3ICsrCiBXZWJDb3JlL2RvbS9Ob2RlLmlkbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDQgKwogMTIgZmlsZXMgY2hhbmdlZCwgMTY1NCBpbnNlcnRpb25zKCspLCAzIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01CaW5kaW5nLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01CaW5kaW5nLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0LmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdP
YmplY3QucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29i
amVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IDM5MTk2ZTAuLjNkYzI5MDIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMS0xMyAgWGFuIExvcGV6ICA8eGxvcGV6
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHRoZSBHT2JqZWN0IERPTSBiaW5kaW5ncy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
CiAyMDEwLTAxLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05V
bWFrZWZpbGUuYW0KaW5kZXggZjlhZDIxYy4uNGNmZWJlNSAxMDA2NDQKLS0tIGEvR05VbWFrZWZp
bGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTM1LDYgKzM1LDcgQEAgRElTVENIRUNLX0NP
TkZJR1VSRV9GTEFHUyA9IFwKIAogIyBEaXJlY3RvcnkgZm9yIGF1dG9nZW5lcmF0ZWQgc291cmNl
cwogR0VOU09VUkNFUyA6PSAkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMKK0dFTlNPVVJD
RVNXRUJLSVRET00gOj0gJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdAogR0VO
UFJPR1JBTVMgOj0gJCh0b3BfYnVpbGRkaXIpL1Byb2dyYW1zCiAKICMgU2NyaXB0IGZvciBjcmVh
dGluZyBoYXNoIHRhYmxlcwpAQCAtODksNiArOTAsMTEgQEAgQ0xFQU5GSUxFUyA6PQogRElTVENM
RUFORklMRVMgOj0KIE1BSU5UQUlORVJDTEVBTkZJTEVTIDo9CiAKK3dlYmNvcmVndGtfY3BwZmxh
Z3MgKz0gXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdCBcCisJLUkk
KHNyY2RpcikvV2ViQ29yZS9iaW5kaW5ncyBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0CisKICMgQ0ZMQUdTL0NYWEZMQUdTIHVzZWQgYnkgV2ViQ29yZSBhbmQgV2ViS2l0
CiAjCiAjIGd0aysucGMgYWxyZWFkeSBpbmNsdWRlIGdsaWIsIGNhaXJvLCBmcmVldHlwZSBhbmQg
cGFuZ28gQ0ZMQUdTCkBAIC0yMzYsNiArMjQyLDcgQEAgbGlid2Via2l0XzFfMF9sYV9MSUJBREQg
PSBcCiAJLWxwdGhyZWFkIFwKIAlsaWJKYXZhU2NyaXB0Q29yZS5sYSBcCiAJbGliV2ViQ29yZUpT
LmxhIFwKKwlsaWJnZG9tLmxhIFwKIAkkKHdlYmNvcmVfbGRmbGFncykgXAogCSQoQ0FJUk9fTElC
UykgXAogCSQoQ09WRVJBR0VfTERGTEFHUykgXApAQCAtMjU3LDYgKzI2NCwxMCBAQCBsaWJ3ZWJr
aXRfMV8wX2xhX0xJQkFERCA9IFwKIAkkKFVOSUNPREVfTElCUykgXAogCSQoWFRfTElCUykKIAor
bGliZ2RvbV9sYWRpciA9ICQocHJlZml4KS9pbmNsdWRlL3dlYmtpdC0xLjAvd2Via2l0ZG9tCits
aWJnZG9tX2xhX0hFQURFUlMgPSBcCisJJChsaWJnZG9tX2hfYXBpKQorCiAjCiAjIEV4dHJhIGNo
ZWNrcyBhbmQgZmxhZ3MKIGdsb2JhbF9jcHBmbGFncyArPSBcCkBAIC0zMzYsNiArMzQ3LDcgQEAg
d2Via2l0Z3RrX2hfYXBpICs9IFwKIAogd2Via2l0Z3RrX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGVudW10eXBlcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbWVudW10eXBlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdG1hcnNoYWwuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRtYXJzaGFsLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGVudW10eXBlcy5oCkBAIC0zODksNyArNDAxLDggQEAgd2Via2l0Z3RrX2NwcGZsYWdzICs9
IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrIFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL3dlYmtpdCBcCi0JLUkkKHRv
cF9idWlsZGRpcikvV2ViS2l0L2d0ay93ZWJraXQKKwktSSQodG9wX2J1aWxkZGlyKS9XZWJLaXQv
Z3RrL3dlYmtpdCBcCisJLUkkKEdFTlNPVVJDRVNXRUJLSVRET00pCiAKIHdlYmtpdGd0a19jbGVh
bmZpbGVzICs9IFwKIAkkKHRvcF9idWlsZGRpcikvc3RhbXAtd2Via2l0bWFyc2hhbC5jcHAgXApA
QCAtNTEwLDYgKzUyMyw0OSBAQCBEZXJpdmVkU291cmNlcy93ZWJraXRlbnVtdHlwZXMuY3BwOiAk
KHdlYmtpdGd0a19oX2FwaSkgR05VbWFrZWZpbGUKIAkmJiBjcCB4Z2VuLWd0YyAkQCBcCiAJJiYg
cm0gLWYgeGdlbi1ndGMKIAorV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG9tZW51bXR5cGVzLmg6
IHN0YW1wLXdlYmtpdGRvbWVudW10eXBlcy5oCisJQHRydWUKK3N0YW1wLXdlYmtpdGRvbWVudW10
eXBlcy5oOiAkKGxpYmdkb21faF9hcGkpIEdOVW1ha2VmaWxlCisJJChBTV9WX0dFTilnbGliLW1r
ZW51bXMgXAorCQkJLS1maGVhZCAiI2lmbmRlZiBXRUJLSVRfRE9NX0VOVU1fVFlQRVNfSFxuIiBc
CisJCQktLWZoZWFkICIjZGVmaW5lIFdFQktJVF9ET01fRU5VTV9UWVBFU19IXG5cbiIgXAorCQkJ
LS1maGVhZCAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG5cbiIgXAorCQkJLS1maGVhZCAiR19C
RUdJTl9ERUNMU1xuXG4iIFwKKwkJCS0tZnRhaWwgIkdfRU5EX0RFQ0xTXG5cbiIgXAorCQkJLS1m
dGFpbCAiI2VuZGlmXG4iIFwKKwkJCS0tZnByb2QgIiNpbmNsdWRlIDx3ZWJraXQvQGJhc2VuYW1l
QD5cblxuIiBcCisJCQktLWVwcm9kICIjZGVmaW5lIFdFQktJVF9ET01fVFlQRV9ARU5VTVNIT1JU
QCBAZW51bV9uYW1lQF9nZXRfdHlwZSgpXG5cbiIgXAorCQkJLS1lcHJvZCAiV0VCS0lUX0FQSSBH
VHlwZVxuQGVudW1fbmFtZUBfZ2V0X3R5cGUodm9pZCk7blxuIiBcCisJCQkkKGxpYmdkb21faF9h
cGkpIHwgXAorCQlzZWQgJ3Msd2ViX2tpdCx3ZWJraXRfZG9tLCcgfCBcCisJCXNlZCAncyxXRUJL
SVRfRE9NX1RZUEVfS0lULFdFQktJVF9ET01fVFlQRSwnIFwKKwkJPiB4Z2VuLWNndGggXAorCSYm
IChjbXAgLXMgeGdlbi1jZ3RoIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvbWVudW10eXBlcy5o
IHx8IGNwIHhnZW4tY2d0aCBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb21lbnVtdHlwZXMuaCkg
XAorCSYmIHJtIC1mIHhnZW4tY2d0aCBcCisJJiYgZWNobyB0aW1lc3RhbXAgPiAkKEBGKQorCitE
ZXJpdmVkU291cmNlcy93ZWJraXRkb21lbnVtdHlwZXMuY3BwOiAkKHRvcF9idWlsZGRpcikvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZG9tZW51bXR5cGVzLmggJChsaWJnZG9tX2hfYXBpKSBHTlVt
YWtlZmlsZQorCSQoQU1fVl9HRU4pZ2xpYi1ta2VudW1zIFwKKwkJCS0tZmhlYWQgIiNpbmNsdWRl
IDxjb25maWcuaD5cbiIgXAorCQkJLS1maGVhZCAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG4i
IFwKKwkJCS0tZmhlYWQgIiNpbmNsdWRlIFwiJCh0b3BfYnVpbGRkaXIpL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRvbWVudW10eXBlcy5oXCJcblxuIiBcCisJCQktLWZoZWFkICJleHRlcm4gXCJD
XCIge1xuXG4iIFwKKwkJCS0tZnByb2QgIlxuLyogZW51bWVyYXRpb25zIGZyb20gXCJAZmlsZW5h
bWVAXCIgKi8iIFwKKwkJCS0tdmhlYWQgInN0YXRpYyBjb25zdCBHQFR5cGVAVmFsdWUgX0BlbnVt
X25hbWVAX3ZhbHVlc10gPSB7IiBcCisJCQktLXZwcm9kICIgICAgeyBAVkFMVUVOQU1FQCwgXCJA
VkFMVUVOQU1FQFwiLCBcIkB2YWx1ZW5pY2tAXCIgfSwiIFwKKwkJCS0tdnRhaWwgIiAgICB7IDAs
IE5VTEwsIE5VTEwgfVxufTtcblxuIiBcCisJCQktLXZ0YWlsICJHVHlwZSBAZW51bV9uYW1lQF9n
ZXRfdHlwZSh2b2lkKVxue1xuIiBcCisJCQktLXZ0YWlsICIgICAgc3RhdGljIEdUeXBlIHR5cGUg
PSAwO1xuXG4iIFwKKwkJCS0tdnRhaWwgIiAgICBpZiAoIXR5cGUpXG4iIFwKKwkJCS0tdnRhaWwg
IiAgICAgICAgdHlwZSA9IGdfQHR5cGVAX3JlZ2lzdGVyX3N0YXRpYyhcIkBFbnVtTmFtZUBcIiwg
X0BlbnVtX25hbWVAX3ZhbHVlcyk7XG5cbiIgXAorCQkJLS12dGFpbCAiICAgIHJldHVybiB0eXBl
O1xufVxuXG4iIFwKKwkJCS0tZnRhaWwgIn1cbiIgXAorCQkkKGxpYmdkb21faF9hcGkpIHwgXAor
CQlzZWQgJ3Msd2ViX2tpdCx3ZWJraXRkb20sJyBcCisJCT4geGdlbi1jZ3RjIFwKKwkmJiBjcCB4
Z2VuLWNndGMgJEAgXAorCSYmIHJtIC1mIHhnZW4tY2d0YworCiAjIEZpbGVzIHRoYXQgd2lsbCBi
ZSBkaXN0cmlidXRlZAogRVhUUkFfRElTVCArPSBcCiAJJChzcmNkaXIpL2d0ay1kb2MubWFrZSBc
CkBAIC01NTAsNiArNjA2LDkgQEAgd2Via2l0X3Rlc3RzX2NmbGFncyA9IFwKIAktSSQoc3JjZGly
KS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvV2ViS2l0
L2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ayBcCisJLUkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMgXAorCS1JJCh0b3Bfc3JjZGlyKS9XZWJDb3JlL2JpbmRpbmdzIFwK
KwktSSQodG9wX3NyY2RpcikvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0IFwKIAkkKGdsb2JhbF9j
ZmxhZ3MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCkBAIC02NzMsNyAr
NzMyLDggQEAgQlVJTFRfU09VUkNFUyArPSBcCiAJJCh3ZWJjb3JlX2J1aWx0X3NvdXJjZXMpIFwK
IAkkKHdlYmNvcmVfYnVpbHRfbm9zb3VyY2VzKSBcCiAJJCh3ZWJraXRndGtfYnVpbHRfc291cmNl
cykgXAotCSQod2Via2l0Z3RrX2J1aWx0X25vc291cmNlcykKKwkkKHdlYmtpdGd0a19idWlsdF9u
b3NvdXJjZXMpIFwKKwkkKGdkb21fYnVpbHRfbm9zb3VyY2VzKQogCiAjIFByb2plY3Qtd2lkZSBj
bGVhbiBydWxlcwogIyBGaWxlcyB0aGF0IHdpbGwgYmUgY2xlYW5lZApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNjA4MDZjLi40NTJiMzli
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMiw2ICsyLDQyIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAK
KyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgQWRkIGluaXRpYWwg
c3VwcG9ydCBmb3IgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmRvbU9iamVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpET01PYmplY3RDYWNoZTo6Z2V0KToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQpOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdF9kb21fb2JqZWN0X2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9vYmplY3RfY2xh
c3NfaW5pdCk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaDog
QWRkZWQuCisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0
Lmg6IEFkZGVkLgorICAgICAgICAod2Via2l0X2RvbV9nc3RyaW5nX2NvbnZlcnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vTm9kZS5pZGw6CisKKzIwMTAtMDEtMTMgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5lZWQgdG8gY2hlY2sgdHdpY2UgaWYgdGhlcmUncyBhbiBpbnB1dCBmaWxl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDoKKwor
MjAxMC0wMS0xMyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVuYW1lIEZFQVRVUkVfREVGSU5F
U19KQVZBU0NSSVBUIHRvIEZFQVRVUkVfREVGSU5FUyBhbmQgcmVtb3ZlCiAgICAgICAgIHRoZSBo
YXJkY29kZWQgTEFOR1VBR0VfSkFWQVNDUklQVD0xLCBpbiBwcmVwYXJhdGlvbiBmb3IgaXRzIHVz
ZSBieQogICAgICAgICB0aGUgR09iamVjdCBET00gYmluZGluZ3MuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAwY2UyZWRm
Li5jNThiM2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KQEAgLTksOSArOSwxMyBAQCBXRUJDT1JFX0NTU19QUk9QRVJUWV9O
QU1FUyA6PSAkKFdlYkNvcmUpL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCiBXRUJDT1JFX0NTU19W
QUxVRV9LRVlXT1JEUyA6PSAkKFdlYkNvcmUpL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCiAKIHdl
YmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1JJChzcmNkaXIpL1dlYktpdC9ndGsgXAorCS1JJChzcmNk
aXIpL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQgXAorCS1JJChzcmNkaXIpL1dlYktpdC9ndGsv
d2Via2l0IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvYmluZGluZ3MvanMgXAorCS1JJChz
cmNkaXIpL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdCBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9i
cmlkZ2UgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvYnJpZGdlL2MgXAogCS1JJChzcmNkaXIpL1dl
YkNvcmUvY3NzIFwKQEAgLTczLDcgKzc3LDggQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiB3
ZWJjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvRG9jVHlwZVN0cmlu
Z3MuY3BwIFwKIAlEZXJpdmVkU291cmNlcy90b2tlbml6ZXIuY3BwIFwKLQlEZXJpdmVkU291cmNl
cy9Db2xvckRhdGEuYworCURlcml2ZWRTb3VyY2VzL0NvbG9yRGF0YS5jIFwKKwlEZXJpdmVkU291
cmNlcy93ZWJraXQvd2Via2l0ZG9tZHVtbXkuYwogCiB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0g
XAogCURlcml2ZWRTb3VyY2VzL0NTU0dyYW1tYXIuY3BwIFwKQEAgLTI5NCw2ICsyOTksMTQgQEAg
SURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3htbC9YTUxTZXJpYWxpemVyLmlkbCBcCiAJV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5pZGwKIAord2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlX
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tc3RyaW5nY29udmVydC5oIFwKKwlXZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5jcHAgXAorCVdlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01PYmplY3QuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NT2JqZWN0LmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmpl
Y3RQcml2YXRlLmgKKwogd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL1dlYkNvcmVQcmVm
aXguaCBcCiAgICAgICAgIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBc
CkBAIC0zNTY3LDYgKzM1ODAsODIgQEAgbGliV2ViQ29yZUpTLmxhOiAkKGxpYldlYkNvcmVKU19v
YmplY3RzKQogCSQoQ1hYTElOSykgJChsaWJXZWJDb3JlSlNfb2JqZWN0cykgJChMSUJTKQogCiAK
K0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb21kdW1teS5jOgorCWVjaG8gPiAkQAorCisj
IEJlY2F1c2UgV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5oIGlzIHN0
YXRpYyBzb3VyY2UgYnV0IGlzIGFsc28gYSBkaXN0cmlidXRlZCBoZWFkZXIKKyMgcmVxdWlyZWQg
Ynkgb3RoZXIgZGlzdHJpYnV0ZWQgaGVhZGVycyAoYm90aCBzdGF0aWMgYW5kIGF1dG8tZ2VuZXJh
dGVkKSwgbmVlZCB0byBtb3ZlIHRoaXMgdG8gdGhlCisjIERlcml2ZWRTb3VyY2VzL3dlYmtpdCBk
aXJlY3RvcnkuICBUaGUgcmVhc29uIGlzIHRoYXQgd2Ugd2FudCBhbGwgaGVhZGVyIGZpbGVzIGRp
c3RyaWJ1dGVkIGluIHRoZQorIyBpbmNsdWRlL3dlYmtpdC14Lnkvd2Via2l0IGRpcmVjdG9yeSwg
YnV0IGRvIG5vdCB3YW50IHRvIG5hbWUgdGhlIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdCBkaXJl
Y3RvcnkgCisjICJ3ZWJraXQiLCBhcyB0aGF0J3MgYSBiaXQgcHJlc3VtcHR1b3VzIGZvciBhIEdU
SyBiaW5kaW5nLgorJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T01PYmplY3QuaDoKKwljcCAtZiAkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
T2JqZWN0LmggJEAKKworIyBTdGFydCB3aXRoIGEgc3Vic2V0IG9mIGFsbCB0aGUgRE9NIGJpbmRp
bmdzCitJRExfQklORElOR1NfR0RPTSA6PSBcCisJV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwgXAor
CVdlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCisJV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNs
YXJhdGlvbi5pZGwgXAorCVdlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsIFwKKwlXZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5pZGwgXAorCVdlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwgXAorCVdlYkNv
cmUvY3NzL1N0eWxlU2hlZXQuaWRsIFwKKwlXZWJDb3JlL2RvbS9BdHRyLmlkbCBcCisJV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwgXAorCVdl
YkNvcmUvZG9tL05vZGUuaWRsIFwKKwlXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwKKworIyBBbGwg
Y2xhc3NlcyBhdXRvZ2VuZXJhdGVkIGluIHRoZSBHT2JqZWN0IERPTSBiaW5kaW5ncworR0RPTV9B
VVRPX0NMQVNTRVMgOj0gJChiYXNlbmFtZSAkKG5vdGRpciAkKElETF9CSU5ESU5HU19HRE9NKSkp
CisKKyMgVGhlIGNsYXNzZXMgaW1wbGVtZW50ZWQgbWFudWFsbHkKK0dET01fRklYRURfQ0xBU1NF
UyA6PSBPYmplY3QKKworR0RPTV9DTEFTU0VTIDo9ICQoR0RPTV9BVVRPX0NMQVNTRVMpICQoR0RP
TV9GSVhFRF9DTEFTU0VTKQorCisjIEZpbHRlciBvdXQgU1ZHIGZvciBub3cKK0ZFQVRVUkVfREVG
SU5FU19HRE9NIDo9ICQoZmlsdGVyLW91dCBFTkFCTEUtU1ZHJSwgJChGRUFUVVJFX0RFRklORVMp
KQorCisjIEF1dG9nZW5lcmF0ZWQgaGVhZGVyIGZpbGVzCitHRE9NX0hFQURFUlNfQlVJTFQgOj0g
JChwYXRzdWJzdCAlLERlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmgsJChHRE9NX0FV
VE9fQ0xBU1NFUykpIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L3dl
YmtpdGRvbS5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L3dlYmtp
dGRvbWRlZmluZXMuaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9X
ZWJLaXRET01PYmplY3QuaAorCisjIEF1dG9nZW5lcmF0ZWQgc291cmNlIGZpbGVzCitHRE9NX1NP
VVJDRVNfQlVJTFQgOj0gJChwYXRzdWJzdCAlLERlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T00lLmNwcCwkKEdET01fQVVUT19DTEFTU0VTKSkKKworIyBIYW5kLWNvZGVkIGhlYWRlciBmaWxl
cworR0RPTV9IRUFERVJTX0ZJWEVEIDo9ICQocGF0c3Vic3QgJSwkKHNyY2RpcikvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTSUuaCwkKEdET01fRklYRURfQ0xBU1NFUykpCisKKyMg
QWxsIGhlYWRlciBmaWxlcyB0aGF0IGdldCBpbnN0YWxsZWQKK2xpYmdkb21faF9hcGkgOj0gJChH
RE9NX0hFQURFUlNfRklYRUQpICQoR0RPTV9IRUFERVJTX0JVSUxUKQorCitEZXJpdmVkU291cmNl
cy93ZWJraXQvd2Via2l0ZG9tLmg6ICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0
LWdlbmVyYXRlLWhlYWRlcnMucGwKKwllY2hvICQoR0RPTV9DTEFTU0VTKSB8ICQoUEVSTCkgJDwg
Z2RvbSA+ICRACisKK0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb21kZWZpbmVzLmg6ICQo
V2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwgJChJ
RExfQklORElOR1NfR0RPTSkKKwllY2hvICQoR0RPTV9DTEFTU0VTKSB8ICQoUEVSTCkgJDwgZGVm
aW5lcyA+ICRACisKK0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmg6IERlcml2ZWRT
b3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmNwcDsKKworRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dl
YktpdERPTSUuY3BwOiAlLmlkbCAkKFNDUklQVFNfQklORElOR1MpICQoV2ViQ29yZSkvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorCSQoQU1fVl9HRU4pJChQRVJMKSAt
SSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MucGwgLS1pbmNsdWRlICQoV2ViQ29yZSkvZG9tIC0taW5jbHVkZSAk
KFdlYkNvcmUpL2h0bWwgLS1pbmNsdWRlICQoV2ViQ29yZSkvY3NzIC0taW5jbHVkZSAkKFdlYkNv
cmUpL3BhZ2UgLS1pbmNsdWRlICQoV2ViQ29yZSkveG1sIC0taW5jbHVkZSAkKFdlYkNvcmUpL3N2
ZyAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTV0VCS0lURE9NKSIgLS1kZWZpbmVzICJMQU5HVUFH
RV9HT0JKRUNUPTEgJChGRUFUVVJFX0RFRklORVNfR0RPTSkiIC0tZ2VuZXJhdG9yIEdPYmplY3Qg
JDwKKworZ2RvbV9idWlsdF9ub3NvdXJjZXMgOj0gJChHRE9NX0hFQURFUlNfQlVJTFQpICQoR0RP
TV9TT1VSQ0VTX0JVSUxUKQorCitsaWJnZG9tX29iamVjdHMgOj0gJChzdWJzdCAuY3BwLC5sbywk
KEdET01fU09VUkNFU19CVUlMVCkpCisKKy1pbmNsdWRlIFdlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC8kKERFUERJUikvJS5QbG8KKy1pbmNsdWRlIERlcml2ZWRTb3VyY2VzL3dlYmtpdC8kKERFUERJ
UikvJS5QbG8KKworJChsaWJnZG9tX29iamVjdHMpOiBBTV9DUFBGTEFHUys9JChsaWJ3ZWJraXRf
MV8wX2xhX0NQUEZMQUdTKQorJChsaWJnZG9tX29iamVjdHMpOiBBTV9DWFhGTEFHUys9JChsaWJ3
ZWJraXRfMV8wX2xhX0NYWEZMQUdTKQorCitsaWJnZG9tLmxhOiAkKGxpYmdkb21fb2JqZWN0cykK
KwkkKENYWExJTkspICQobGliZ2RvbV9vYmplY3RzKSAkKExJQlMpCisKIG5vaW5zdF9IRUFERVJT
ICs9IFwKIAkkKElETF9CSU5ESU5HUykKIApAQCAtMzU4Miw2ICszNjcxLDcgQEAgd2ViY29yZV9k
aXN0ICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSW5GaWxlc1BhcnNlci5wbSBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIFwKKwlXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gXAogCVdlYkNvcmUvY3NzL2h0bWwuY3Nz
IFwKIAlXZWJDb3JlL2Nzcy9tYXRobWwuY3NzIFwKIAlXZWJDb3JlL2Nzcy9xdWlya3MuY3NzIFwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGRjNmU2Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwCkBAIC0wLDAgKzEs
OTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
NyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgg
THVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDggTWFydGluIFNvdG8gPHNvdG9AZnJlZWRlc2t0b3Aub3JnPgorICogIENvcHly
aWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworLy8gZ2NjIDMueCBjYW4ndCBoYW5kbGUgaW5jbHVkaW5nIHRoZSBIYXNoTWFwIHBvaW50ZXIg
c3BlY2lhbGl6YXRpb24KKy8vIGluIHRoaXMgZmlsZQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYg
IWRlZmluZWQgX19HTElCQ1hYX18gLy8gbGVzcyB0aGFuIGdjYyAzLjQKKyNkZWZpbmUgSEFTSF9N
QVBfUFRSX1NQRUNfV09SS0FST1VORCAxCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJXZWJLaXRET01Ob2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKKworLy8gRE9NT2JqZWN0Q2FjaGUKKwordHlwZWRl
ZiBIYXNoTWFwPHZvaWQqLCBncG9pbnRlcj4gRE9NT2JqZWN0TWFwOworCitzdGF0aWMgRE9NT2Jq
ZWN0TWFwJiBkb21PYmplY3RzKCkKK3sKKyAgICBzdGF0aWMgRE9NT2JqZWN0TWFwIHN0YXRpY0RP
TU9iamVjdHM7CisgICAgcmV0dXJuIHN0YXRpY0RPTU9iamVjdHM7Cit9CisKK2dwb2ludGVyIERP
TU9iamVjdENhY2hlOjpnZXQodm9pZCogb2JqZWN0SGFuZGxlKQoreworICAgIHJldHVybiBkb21P
YmplY3RzKCkuZ2V0KG9iamVjdEhhbmRsZSk7Cit9CisKK2dwb2ludGVyIERPTU9iamVjdENhY2hl
OjpwdXQodm9pZCogb2JqZWN0SGFuZGxlLCBncG9pbnRlciB3cmFwcGVyKQoreworICAgIGRvbU9i
amVjdHMoKS5zZXQob2JqZWN0SGFuZGxlLCB3cmFwcGVyKTsKKyAgICByZXR1cm4gd3JhcHBlcjsK
K30KKwordm9pZCBET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHZvaWQqIG9iamVjdEhhbmRsZSkKK3sK
KyAgICBkb21PYmplY3RzKCkudGFrZShvYmplY3RIYW5kbGUpOworfQorCisvLyBraXQgbWV0aG9k
cworCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlV3JhcHBlcihOb2RlKiBub2RlKQoreworICAgIEFT
U0VSVChub2RlKTsKKyAgICBBU1NFUlQoIVNjcmlwdEludGVycHJldGVyOjpnZXRET01PYmplY3Qo
bm9kZSkpOworCisgICAgZ3BvaW50ZXIgcmV0ID0gMDsKKworICAgIHN3aXRjaCAobm9kZS0+bm9k
ZVR5cGUoKSkgeworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldCA9IHdyYXBOb2RlKG5vZGUpOwor
ICAgIH0KKworICAgIHJldHVybiBET01PYmplY3RDYWNoZTo6cHV0KG5vZGUsIHJldCk7Cit9CisK
K2dwb2ludGVyIGtpdChOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG5vZGUpOwor
ICAgIGlmIChyZXQpCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcihub2RlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40NzU2MDFkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTUJpbmRpbmcuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdl
YmtpdC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVp
Z2h0b24gPGxrY2xAbGtjbC5uZXQ+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE1hcnRpbiBTb3Rv
IDxzb3RvQGZyZWVkZXNrdG9wLm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMu
TC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViS2l0RE9NQmlu
ZGluZ19oCisjZGVmaW5lIFdlYktpdERPTUJpbmRpbmdfaAorCisjaW5jbHVkZSAiRXZlbnQuaCIK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJX
ZWJLaXRET01Ob2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNz
IEF0b21pY1N0cmluZzsKKyAgICBjbGFzcyBFdmVudDsKKyAgICBjbGFzcyBGcmFtZTsKKyAgICBj
bGFzcyBLVVJMOworICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgU3RyaW5nOworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2dwb2ludGVyIGtpdChXZWJDb3Jl
OjpOb2RlKiBub2RlKTsKKworY2xhc3MgRE9NT2JqZWN0Q2FjaGUgeworcHVibGljOgorICAgIHN0
YXRpYyBncG9pbnRlciBnZXQodm9pZCogb2JqZWN0SGFuZGxlKTsKKyAgICBzdGF0aWMgZ3BvaW50
ZXIgcHV0KHZvaWQqIG9iamVjdEhhbmRsZSwgZ3BvaW50ZXIgd3JhcHBlcik7CisgICAgc3RhdGlj
IHZvaWQgZm9yZ2V0KHZvaWQqIG9iamVjdEhhbmRsZSk7Cit9OworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJLaXRET01CaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZmM4YTg3NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9XZWJLaXRET01PYmplY3QuY3BwCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggTHVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCBNYXJ0aW4gU290byA8c290b0BmcmVlZGVza3RvcC5vcmc+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMu
TC4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTU9iamVjdC5o
IgorCisjaW5jbHVkZSAiZ2xpYi1vYmplY3QuaCIKKyNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5n
LmgiCisKK0dfREVGSU5FX1RZUEUoV2ViS2l0RE9NT2JqZWN0LCB3ZWJraXRfZG9tX29iamVjdCwg
R19UWVBFX09CSkVDVCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2luaXQoV2Vi
S2l0RE9NT2JqZWN0KiBvYmplY3QpCit7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fb2Jq
ZWN0X2NsYXNzX2luaXQoV2ViS2l0RE9NT2JqZWN0Q2xhc3MqIGtsYXNzKQoreworfQorCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmggYi9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uN2NlZWRkOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0b24gPGxrY2xAbGtj
bC5uZXQ+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWFydGluIFNvdG8gPHNvdG9AZnJlZWRlc2t0
b3Aub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKworI2lmbmRlZiBXZWJLaXRET01PYmplY3RfaAorI2RlZmluZSBXZWJLaXRE
T01PYmplY3RfaAorCisjaW5jbHVkZSAiZ2xpYi1vYmplY3QuaCIKKyNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0ZGVmaW5lcy5oPgorI2luY2x1ZGUgIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmgiCisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fT0JKRUNUICAgICAgICAg
ICAgKHdlYmtpdF9kb21fb2JqZWN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fT0JK
RUNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9UWVBFX0RPTV9PQkpFQ1QsIFdlYktpdERPTU9iamVjdCkpCisjZGVmaW5lIFdFQktJVF9E
T01fT0JKRUNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX0RPTV9PQkpFQ1QsIFdlYktpdERPTU9iamVjdENsYXNzKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX0RPTV9PQkpFQ1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkpCisjZGVmaW5lIFdFQktJVF9J
U19ET01fT0JKRUNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX0RPTV9PQkpFQ1QpKQorI2RlZmluZSBXRUJLSVRfRE9NX09CSkVDVF9H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9ET01fT0JKRUNULCBXZWJLaXRET01PYmplY3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRET01PYmplY3RQcml2YXRlIFdlYktpdERPTU9iamVjdFByaXZhdGU7CisKK3N0cnVj
dCBfV2ViS2l0RE9NT2JqZWN0IHsKKyAgICBHT2JqZWN0IHBhcmVudEluc3RhbmNlOworCisgICAg
Z3BvaW50ZXIgY29yZU9iamVjdDsKK307CisKK3N0cnVjdCBfV2ViS2l0RE9NT2JqZWN0Q2xhc3Mg
eworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRDbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUK
K3dlYmtpdF9kb21fb2JqZWN0X2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2Vu
ZGlmIC8qIFdlYktpdERPTU9iamVjdF9oICovCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3Qvd2Via2l0ZG9tc3RyaW5nY29udmVydC5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L3dlYmtpdGRvbXN0cmluZ2NvbnZlcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42M2VhMTdiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L3dlYmtpdGRvbXN0cmluZ2NvbnZlcnQuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0b24gPGxrY2xAbGtjbC5u
ZXQ+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKworI2lmbmRlZiB3ZWJraXRkb21zdHJpbmdjb252ZXJ0X2gKKyNkZWZpbmUgd2Via2l0ZG9t
c3RyaW5nY29udmVydF9oCisKKy8qIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgY29udmVydGlu
ZyB2YXJpb3VzIHdlYmtpdCBzdHJpbmcgdHlwZXMgaW50byBhIHV0ZiBnbGliIHN0cmluZyAqLwor
CisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgInVuaWNv
ZGUvdXN0cmluZy5oIgorCitpbmxpbmUgY2hhciAqIGRvbVN0cmluZ0NvbnZlcnQoV2ViQ29yZTo6
U3RyaW5nIGNvbnN0JiBzKSB7IHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOyB9Citp
bmxpbmUgY2hhciAqIGRvbVN0cmluZ0NvbnZlcnQoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykgeyBy
ZXR1cm4gZ19zdHJkdXAocy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsgfQoraW5saW5lIGNoYXIg
KiBkb21TdHJpbmdDb252ZXJ0KGNvbnN0IEpTQzo6VVN0cmluZyYgcykgeyByZXR1cm4gZ19zdHJk
dXAocy5VVEY4U3RyaW5nKCkuY19zdHIoKSk7IH0KK2lubGluZSBjaGFyICogZG9tU3RyaW5nQ29u
dmVydChXZWJDb3JlOjpBdG9taWNTdHJpbmcgY29uc3QmIHMpIHsgcmV0dXJuIGdfc3RyZHVwKHMu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7IH0KKworI2VuZGlmIC8qIHdlYmtpdGRvbXN0cmluZ2Nv
bnZlcnRfaCAqLwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JHT2JqZWN0LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JH
T2JqZWN0LnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZDM4ZWUKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdP
YmplY3QucG0KQEAgLTAsMCArMSwxMTAyIEBACisjIENvcHlyaWdodCAoQykgMjAwOCBMdWtlIEtl
bm5ldGggQ2Fzc29uIExlaWdodG9uIDxsa2NsQGxrY2wubmV0PgorIyBDb3B5cmlnaHQgKEMpIDIw
MDggTWFydGluIFNvdG8gPHNvdG9AZnJlZWRlc2t0b3Aub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIw
MDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyMgQ29weXJpZ2h0IChDKSAyMDA5IEFkYW0g
RGluZ2xlIDxhZGFtQHlvcmJhLm9yZz4KKyMgQ29weXJpZ2h0IChDKSAyMDA5IEppbSBOZWxzb24g
PGppbUB5b3JiYS5vcmc+CisjIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorIworIyBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIyB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisjIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywgVVNBLgorCitwYWNrYWdlIENvZGVHZW5lcmF0b3JHT2JqZWN0Owor
CisjIEdsb2JhbCBWYXJpYWJsZXMKK215ICVpbXBsSW5jbHVkZXMgPSAoKTsKK215ICVoZHJJbmNs
dWRlcyA9ICgpOworCitteSAkY2xhc3NOYW1lID0gIiI7CisKKyMgRGVmYXVsdCBjb25zdHJ1Y3Rv
cgorc3ViIG5ldyB7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRyZWZlcmVuY2Ug
PSB7IH07CisKKyAgICAkY29kZUdlbmVyYXRvciA9IHNoaWZ0OworICAgICRvdXRwdXREaXIgPSBz
aGlmdDsKKyAgICBta2RpciAkb3V0cHV0RGlyOworCisgICAgYmxlc3MoJHJlZmVyZW5jZSwgJG9i
amVjdCk7Cit9CisKK3N1YiBmaW5pc2ggeworfQorCitteSAkbGljZW5jZVRlbXBsYXRlID0gPDwg
IkVPRiI7CisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCitFT0YKKworc3ViIEdlbmVyYXRlTW9kdWxl
IHsKK30KKworc3ViIEdldFBhcmVudENsYXNzTmFtZSB7CisgICAgbXkgJGRhdGFOb2RlID0gc2hp
ZnQ7CisKKyAgICByZXR1cm4gIldlYktpdERPTU9iamVjdCIgaWYgQHskZGF0YU5vZGUtPnBhcmVu
dHN9IGVxIDA7CisgICAgcmV0dXJuICJXZWJLaXRET00iIC4gJGNvZGVHZW5lcmF0b3ItPlN0cmlw
TW9kdWxlKCRkYXRhTm9kZS0+cGFyZW50cygwKSk7Cit9CisKKyMgRnJvbSBTdHJpbmc6OkNhbWVs
Q2FzZSAwLjAxCitzdWIgY2FtZWxpemUKK3sKKyAgICAgICAgbXkgJHMgPSBzaGlmdDsKKyAgICAg
ICAgam9pbignJywgbWFweyB1Y2ZpcnN0ICRfIH0gc3BsaXQoLyg/PD1bQS1aYS16XSlfKD89W0Et
WmEtel0pfFxiLywgJHMpKTsKK30KKworc3ViIGRlY2FtZWxpemUKK3sKKyAgICAgICAgbXkgJHMg
PSBzaGlmdDsKKyAgICAgICAgJHMgPX4gc3soW15hLXpBLVpdPykoW0EtWl0qKShbQS1aXSkoW2Et
el0/KX17CisgICAgICAgICAgICAgICAgbXkgJGZjID0gcG9zKCRzKT09MDsKKyAgICAgICAgICAg
ICAgICBteSAoJHAwLCRwMSwkcDIsJHAzKSA9ICgkMSxsYyQyLGxjJDMsJDQpOworICAgICAgICAg
ICAgICAgIG15ICR0ID0gJHAwIHx8ICRmYyA/ICRwMCA6ICdfJzsKKyAgICAgICAgICAgICAgICAk
dCAuPSAkcDMgPyAkcDEgPyAiJHtwMX1fJHAyJHAzIiA6ICIkcDIkcDMiIDogIiRwMSRwMiI7Cisg
ICAgICAgICAgICAgICAgJHQ7CisgICAgICAgIH1nZTsKKyAgICAgICAgJHM7Cit9CisKK3N1YiBD
bGFzc05hbWVUb0dPYmplY3RUeXBlIHsKKyAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CisgICAg
bXkgJENMQVNTX05BTUUgPSB1YyhkZWNhbWVsaXplKCRjbGFzc05hbWUpKTsKKyAgICAjIEZpeHVw
OiB3aXRoIG91ciBwcmVmaXggYmVpbmcgJ1dlYktpdERPTScgZGVjYW1lbGl6ZSBjYW4ndCBnZXQK
KyAgICAjIFdlYktpdERPTUNTUyByaWdodCwgc28gd2UgaGF2ZSB0byBmaXggaXQgbWFudWFsbHkg
KGFuZCB0aGVyZQorICAgICMgbWlnaHQgYmUgbW9yZSBsaWtlIHRoaXMgaW4gdGhlIGZ1dHVyZSkK
KyAgICAkQ0xBU1NfTkFNRSA9fiBzL0RPTUNTUy9ET01fQ1NTLzsKKyAgICByZXR1cm4gJENMQVNT
X05BTUU7Cit9CisKK3N1YiBHZXRQYXJlbnRHT2JqVHlwZSB7CisgICAgbXkgJGRhdGFOb2RlID0g
c2hpZnQ7CisKKyAgICByZXR1cm4gIldFQktJVF9UWVBFX0RPTV9PQkpFQ1QiIGlmIEB7JGRhdGFO
b2RlLT5wYXJlbnRzfSBlcSAwOworICAgIHJldHVybiAiV0VCS0lUX1RZUEVfRE9NXyIgLiBDbGFz
c05hbWVUb0dPYmplY3RUeXBlKCRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkZGF0YU5vZGUt
PnBhcmVudHMoMCkpKTsKK30KKworc3ViIEdldENsYXNzTmFtZSB7CisgICAgbXkgJG5hbWUgPSAk
Y29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworCisgICAgcmV0dXJuICJXZWJLaXRE
T00kbmFtZSI7Cit9CisKK3N1YiBHZXRDb3JlT2JqZWN0IHsKKyAgICBteSAoJGludGVyZmFjZU5h
bWUsICRuYW1lLCAkcGFyYW1ldGVyKSA9IEBfOworCisgICAgcmV0dXJuICJXZWJDb3JlOjoke2lu
dGVyZmFjZU5hbWV9KiAkbmFtZSA9IFdlYktpdDo6Y29yZSgkcGFyYW1ldGVyKTsiOworfQorCitz
dWIgc2tpcEF0dHJpYnV0ZSB7CisgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OworICAgIAorICAg
IGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21H
ZXR0ZXIifSB8fAorICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21TZXR0ZXIifSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAg
CisgICAgbXkgJHByb3BfdHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKKyAgICBp
ZiAoJHByb3BfdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgfQorCisgICAgIyBza2lwIENvbnN0cnVjdG9ycyAod2hhdGV2ZXIgdGhleSBhcmUpIGZvciBu
b3cuCisgICAgaWYgKCRwcm9wX3R5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKyMgTmFtZSB0eXBlIHVzZWQgaW4g
dGhlIGdfdmFsdWVfe3NldCxnZXR9XyogZnVuY3Rpb25zCitzdWIgR2V0R1ZhbHVlVHlwZU5hbWUg
eworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICBteSAldHlwZXMgPSAoIkRPTVN0cmluZyIs
ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAiZmxvYXQiLCAiZmxvYXQiLAorICAgICAgICAg
ICAgICAgICAiZG91YmxlIiwgImRvdWJsZSIsCisgICAgICAgICAgICAgICAgICJib29sZWFuIiwg
ImJvb2xlYW4iLAorICAgICAgICAgICAgICAgICAiY2hhciIsICJjaGFyIiwKKyAgICAgICAgICAg
ICAgICAgImxvbmciLCAibG9uZyIsCisgICAgICAgICAgICAgICAgICJzaG9ydCIsICJpbnQiLAor
ICAgICAgICAgICAgICAgICAidWNoYXIiLCAidWNoYXIiLAorICAgICAgICAgICAgICAgICAidW5z
aWduZWQiLCAidWludCIsCisgICAgICAgICAgICAgICAgICJpbnQiLCAiaW50IiwKKyAgICAgICAg
ICAgICAgICAgInVuc2lnbmVkIGludCIsICJ1aW50IiwKKyAgICAgICAgICAgICAgICAgInVuc2ln
bmVkIGxvbmcgbG9uZyIsICJ1aW50NjQiLCAKKyAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxv
bmciLCAidWxvbmciLAorICAgICAgICAgICAgICAgICAidW5zaWduZWQgc2hvcnQiLCAidXNob3J0
Iik7CisKKyAgICByZXR1cm4gJHR5cGVzeyR0eXBlfSA/ICR0eXBlc3skdHlwZX0gOiAib2JqZWN0
IjsKK30KKworIyBOYW1lIHR5cGUgdXNlZCBpbiBDIGRlY2xhcmF0aW9ucworc3ViIEdldEdsaWJU
eXBlTmFtZSB7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKyAgICBteSAkbmFtZSA9IEdldENsYXNz
TmFtZSgkdHlwZSk7CisKKyAgICBteSAldHlwZXMgPSAoIkRPTVN0cmluZyIsICJjaGFyKiAiLAor
ICAgICAgICAgICAgICAgICAiZmxvYXQiLCAiZ2Zsb2F0IiwKKyAgICAgICAgICAgICAgICAgImRv
dWJsZSIsICJnZG91YmxlIiwKKyAgICAgICAgICAgICAgICAgImJvb2xlYW4iLCAiZ2Jvb2xlYW4i
LAorICAgICAgICAgICAgICAgICAiY2hhciIsICJnY2hhciIsCisgICAgICAgICAgICAgICAgICJs
b25nIiwgImdsb25nIiwKKyAgICAgICAgICAgICAgICAgInNob3J0IiwgImdzaG9ydCIsCisgICAg
ICAgICAgICAgICAgICJ1Y2hhciIsICJndWNoYXIiLAorICAgICAgICAgICAgICAgICAidW5zaWdu
ZWQiLCAiZ3VpbnQiLAorICAgICAgICAgICAgICAgICAiaW50IiwgImdpbnQiLAorICAgICAgICAg
ICAgICAgICAidW5zaWduZWQgaW50IiwgImd1aW50IiwKKyAgICAgICAgICAgICAgICAgInVuc2ln
bmVkIGxvbmciLCAiZ3Vsb25nIiwKKyAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmcgbG9u
ZyIsICJndWludDY0IiwKKyAgICAgICAgICAgICAgICAgInVuc2lnbmVkIHNob3J0IiwgImd1c2hv
cnQiLAorICAgICAgICAgICAgICAgICAidm9pZCIsICJ2b2lkIik7CisKKyAgICByZXR1cm4gJHR5
cGVzeyR0eXBlfSA/ICR0eXBlc3skdHlwZX0gOiAiJG5hbWUqICI7Cit9CisKK3N1YiBJc0dET01D
bGFzc1R5cGUgeworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMCBpZiAkdHlw
ZSBlcSAiRE9NU3RyaW5nIjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiZmxvYXQiOworICAg
IHJldHVybiAwIGlmICR0eXBlIGVxICJkb3VibGUiOworICAgIHJldHVybiAwIGlmICR0eXBlIGVx
ICJib29sZWFuIjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiY2hhciI7CisgICAgcmV0dXJu
IDAgaWYgJHR5cGUgZXEgImxvbmciOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJzaG9ydCI7
CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVjaGFyIjsKKyAgICByZXR1cm4gMCBpZiAkdHlw
ZSBlcSAidW5zaWduZWQiOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJpbnQiOworICAgIHJl
dHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBpbnQiOworICAgIHJldHVybiAwIGlmICR0eXBl
IGVxICJ1bnNpZ25lZCBsb25nIjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidW5zaWduZWQg
bG9uZyBsb25nIjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiOwor
ICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ2b2lkIjsKKworICAgIHJldHVybiAxOworfQorCitz
dWIgR2VuZXJhdGVQcm9wZXJ0aWVzIHsKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUs
ICRkYXRhTm9kZSkgPSBAXzsKKworICAgIG15ICRjbHNDYXBzID0gc3Vic3RyKENsYXNzTmFtZVRv
R09iamVjdFR5cGUoJGNsYXNzTmFtZSksIDEyKTsKKyAgICBteSAkbGNhc2VfaWZhY2VuYW1lID0g
IndlYmtpdF9kb21fIiAuIChkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKSk7CisKKyAgICAjIFBy
b3BlcnRpZXMKKyAgICBteSAkaW1wbENvbnRlbnQgPSAiIjsKKworICAgICMgUHJvcGVydGllcwor
ICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOworZW51bSB7CisgICAgUFJPUF8wLAorRU9GCisg
ICAgcHVzaChAY0JvZHlQcml2LCAkaW1wbENvbnRlbnQpOworCisgICAgbXkgQHR4dF9pbnN0YWxs
X3Byb3BzID0gKCk7CisgICAgbXkgQHR4dF9zZXRfcHJvcHMgPSAoKTsKKyAgICBteSBAdHh0X2dl
dF9wcm9wcyA9ICgpOworCisgICAgbXkgJHByaXZfZm4gPSBHZXRDb3JlT2JqZWN0KCRpbnRlcmZh
Y2VOYW1lLCAiY29yZVNlbGYiLCAic2VsZiIpOworCisgICAgbXkgJHR4dF9nZXRfcHJvcCA9IDw8
ICJFT0YiOworc3RhdGljIHZvaWQgJHtsY2FzZV9pZmFjZW5hbWV9X2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQoreworICAgICR7Y2xhc3NOYW1lfSogc2VsZiA9IFdFQktJVF9ET01fJHtjbHNDYXBzfShv
YmplY3QpOworICAgICRwcml2X2ZuCisKKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKK0VPRgorICAg
IHB1c2goQHR4dF9nZXRfcHJvcHMsICR0eHRfZ2V0X3Byb3ApOworCisgICAgbXkgJHR4dF9zZXRf
cHJvcCA9IDw8ICJFT0YiOworc3RhdGljIHZvaWQgJHtsY2FzZV9pZmFjZW5hbWV9X3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgICR7Y2xhc3NOYW1lfSAqc2VsZiA9IFdFQktJVF9E
T01fJHtjbHNDYXBzfShvYmplY3QpOworICAgICRwcml2X2ZuCisKKyAgICBzd2l0Y2ggKHByb3Bf
aWQpIHsKK0VPRgorICAgIHB1c2goQHR4dF9zZXRfcHJvcHMsICR0eHRfc2V0X3Byb3ApOworCisg
ICAgIyBJdGVyYXRlIG92ZXIgdGhlIGludGVyZmFjZSBhdHRyaWJ1dGVzIGFuZCBnZW5lcmF0ZSBh
IHByb3BlcnR5IGZvcgorICAgICMgZWFjaCBvbmUgb2YgdGhlbS4KKyAgU0tJUEVOVU06CisgICAg
Zm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAg
ICAgaWYgKHNraXBBdHRyaWJ1dGUoJGF0dHJpYnV0ZSkpIHsKKyAgICAgICAgICAgIG5leHQgU0tJ
UEVOVU07CisgICAgICAgIH0KKworICAgICAgICBteSAkcHJvcF9uYW1lID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lOworICAgICAgICBteSAkc2V0cHJvcF9uYW1lX2ZuID0gJGNvZGVHZW5l
cmF0b3ItPldLX3VjZmlyc3QoJHByb3BfbmFtZSk7CisgICAgICAgIG15ICRnZXRwcm9wX25hbWVf
Zm4gPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkcHJvcF9uYW1lKTsKKworICAgICAgICBt
eSAkcHJvcE5hbWUgPSBkZWNhbWVsaXplKCRwcm9wX25hbWUpOworICAgICAgICBteSAkcHJvcE5h
bWVDYXBzID0gdWMoJHByb3BOYW1lKTsKKyAgICAgICAgJHByb3BOYW1lID1+IHMvXy8tL2c7Cisg
ICAgICAgIG15ICR7cHJvcEVudW19ID0gIlBST1BfJHtwcm9wTmFtZUNhcHN9IjsKKyAgICAgICAg
cHVzaChAY0JvZHlQcml2LCAiICAgICR7cHJvcEVudW19LFxuIik7CisKKyAgICAgICAgbXkgJHBy
b3BfdHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKKyAgICAgICAgbXkgJHtwcm9w
X2d0eXBlfSA9IGRlY2FtZWxpemUoJHByb3BfdHlwZSk7CisgICAgICAgIGlmICgkcHJvcF9ndHlw
ZSBlcSAiZXZlbnRfdGFyZ2V0IikgeworICAgICAgICAgICAgJHByb3BfZ3R5cGUgPSAiZXZlbnRf
dGFyZ2V0X25vZGUiOworICAgICAgICB9CisgICAgICAgIG15ICR7cHJvcEdUeXBlfSA9IHVjKCRw
cm9wX2d0eXBlKTsKKyAgICAgICAgbXkgJGxjYXNlX2d0eXBlbmFtZSA9ICJ3ZWJraXRfZG9tXyIg
LiAkcHJvcF9ndHlwZTsKKworICAgICAgICBteSAkZ3R5cGUgPSBHZXRHVmFsdWVUeXBlTmFtZSgk
cHJvcF90eXBlKTsKKyAgICAgICAgbXkgJGdwYXJhbWZsYWcgPSAiV0VCS0lUX1BBUkFNX1JFQURB
QkxFIjsKKyAgICAgICAgbXkgJHdyaXRlYWJsZSA9ICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFk
b25seS87CisgICAgICAgIG15ICRjb25zdCA9ICJyZWFkLW9ubHkgIjsKKyAgICAgICAgaWYgKCR3
cml0ZWFibGUgJiYgJGN1c3RvbSkgeworICAgICAgICAgICAgJGNvbnN0ID0gInJlYWQtb25seSAo
ZHVlIHRvIGN1c3RvbSBmdW5jdGlvbnMgbmVlZGVkIGluIHdlYmtpdGRvbSkiOworICAgICAgICAg
ICAgbmV4dCBTS0lQRU5VTTsKKyAgICAgICAgfQorICAgICAgICBpZiAoJHdyaXRlYWJsZSAmJiAh
JGN1c3RvbSkgeworICAgICAgICAgICAgJGdwYXJhbWZsYWcgPSAiV0VCS0lUX1BBUkFNX1JFQURX
UklURSI7CisgICAgICAgICAgICAkY29uc3QgPSAicmVhZC13cml0ZSAiOworICAgICAgICB9CisK
KyAgICAgICAgbXkgJHR5cGUgPSBHZXRHbGliVHlwZU5hbWUoJHByb3BfdHlwZSk7CisgICAgICAg
ICRuaWNrID0gZGVjYW1lbGl6ZSgiJHtpbnRlcmZhY2VOYW1lfV8ke3Byb3BOYW1lfSIpOworICAg
ICAgICAkbG9uZyA9ICIke2NvbnN0fSAke3R5cGV9ICR7aW50ZXJmYWNlTmFtZX0uJHtwcm9wTmFt
ZX0iOworCisgICAgICAgIG15ICRjb252ZXJ0X2ZuID0gIiI7CisKKyAgICAgICAgaWYgKCR3cml0
ZWFibGUgJiYgKCRndHlwZSBlcSAiYm9vbGVhbiIgfHwgJGd0eXBlIGVxICJmbG9hdCIgfHwgJGd0
eXBlIGVxICJkb3VibGUiIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEg
InVpbnQ2NCIgfHwgJGd0eXBlIGVxICJ1bG9uZyIgfHwgJGd0eXBlIGVxICJsb25nIiB8fCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRndHlwZSBlcSAidWludCIgfHwgJGd0eXBlIGVxICJ1
c2hvcnQiIHx8ICRndHlwZSBlcSAidWNoYXIiIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkZ3R5cGUgZXEgImNoYXIiIHx8ICRndHlwZSBlcSAic3RyaW5nIikpIHsKKworICAgICAgICAg
ICAgcHVzaChAdHh0X3NldF9wcm9wcywgIiAgIGNhc2UgJHtwcm9wRW51bX06XG4gICAge1xuIik7
CisgICAgICAgICAgICBwdXNoKEB0eHRfc2V0X3Byb3BzLCAiICAgICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307
CisKKyAgICAgICAgICAgIGlmICgkZ3R5cGUgZXEgInN0cmluZyIpIHsKKyAgICAgICAgICAgICAg
ICAkY29udmVydF9mbiA9ICJXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4IjsKKyAgICAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnZlcnRGcm9tU3RyaW5nIn0pIHsKKyAgICAgICAgICAgICAgICAkY29udmVydF9mbiA9ICJXZWJD
b3JlOjpTdHJpbmc6Om51bWJlciI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2go
QHR4dF9zZXRfcHJvcHMsICIgICAgICAgIGNvcmVTZWxmLT5zZXQke3NldHByb3BfbmFtZV9mbn0o
JHtjb252ZXJ0X2ZufShnX3ZhbHVlX2dldF8kZ3R5cGUodmFsdWUpKSIpOworICAgICAgICAgICAg
cHVzaChAdHh0X3NldF9wcm9wcywgIiwgZWMiKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2Vw
dGlvbnN9OworICAgICAgICAgICAgcHVzaChAdHh0X3NldF9wcm9wcywgIik7XG4iKTsKKworICAg
ICAgICAgICAgcHVzaChAdHh0X3NldF9wcm9wcywgIiAgICAgICAgYnJlYWs7XG4gICAgfVxuIik7
CisgICAgICAgIH0KKworICAgICAgICBwdXNoKEB0eHRfZ2V0X3Byb3BzLCAiICAgY2FzZSAke3By
b3BFbnVtfTpcbiAgICB7XG4iKTsKKworICAgICAgICBteSAkZXhjZXB0aW9uID0gIiI7CisgICAg
ICAgIGlmIChAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9KSB7CisgICAgICAgICAgICAk
ZXhjZXB0aW9uID0gImVjIjsKKyAgICAgICAgICAgIHB1c2goQHR4dF9nZXRfcHJvcHMsICIgICAg
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CisgICAgICAgIH0KKworICAg
ICAgICBteSAkcG9zdF9jb252ZXJ0X2ZuID0gIiI7CisgICAgICAgIG15ICRkb25lID0gMDsKKyAg
ICAgICAgaWYgKCRndHlwZSBlcSAic3RyaW5nIikgeworICAgICAgICAgICAgcHVzaChAdHh0X2dl
dF9wcm9wcywgIiAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgZG9tU3RyaW5nQ29u
dmVydChjb3JlU2VsZi0+JHtnZXRwcm9wX25hbWVfZm59KCR7ZXhjZXB0aW9ufSkpKTtcbiIpOwor
ICAgICAgICAgICAgJGRvbmUgPSAxOworICAgICAgICB9IGVsc2lmICgkZ3R5cGUgZXEgIm9iamVj
dCIpIHsKKyAgICAgICAgICAgIG15ICRkb21vYmpUeXBlID0gIldFQktJVF9ET00iLiRwcm9wX3R5
cGU7CisKKyAgICAgICAgICAgICR0eHRfZ2V0X3Byb3AgPSA8PCAiRU9GIjsKKyAgICAgICAgUmVm
UHRyPFdlYkNvcmU6OiR7cHJvcF90eXBlfT4gcHRyID0gY29yZVNlbGYtPiR7Z2V0cHJvcF9uYW1l
X2ZufSgke2V4Y2VwdGlvbn0pOworICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdl
YktpdDo6a2l0KHB0ci5nZXQoKSkpOworRU9GCisgICAgICAgICAgICBwdXNoKEB0eHRfZ2V0X3By
b3BzLCAkdHh0X2dldF9wcm9wKTsKKworICAgICAgICAgICAgJGRvbmUgPSAxOworICAgICAgICB9
CisKKyAgICAgICAgaWYoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29udmVydEZyb21TdHJpbmcifSkgeworICAgICAgICAgICAgIyBUT0RPOiBBZGQgb3RoZXIg
Y29udmVyc2lvbiBmdW5jdGlvbnMgZm9yIGRpZmZlcmVudCB0eXBlcy4gIEN1cnJlbnQKKyAgICAg
ICAgICAgICMgSURMcyBvbmx5IGxpc3QgbG9uZ3MuCisgICAgICAgICAgICBpZigkZ3R5cGUgZXEg
ImxvbmciKSB7CisgICAgICAgICAgICAgICAgJGNvbnZlcnRfZm4gPSAiIjsKKyAgICAgICAgICAg
ICAgICAkcG9zdF9jb252ZXJ0X2ZuID0gIi50b0ludCgpIjsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGllICJDYW4ndCBjb252ZXJ0IHRvIHR5cGUgJHtndHlwZX0uIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICMgRklYTUU6IGdldCByaWQgb2Yg
dGhpcyBnbGl0Y2g/CisgICAgICAgIG15ICRfZ3R5cGUgPSAkZ3R5cGU7CisgICAgICAgIGlmICgk
Z3R5cGUgZXEgInVzaG9ydCIpIHsKKyAgICAgICAgICAgICRfZ3R5cGUgPSAidWludCI7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoISRkb25lKSB7CisgICAgICAgICAgICBwdXNoKEB0eHRfZ2V0
X3Byb3BzLCAiICAgICAgICBnX3ZhbHVlX3NldF8kX2d0eXBlKHZhbHVlLCAke2NvbnZlcnRfZm59
Y29yZVNlbGYtPiR7Z2V0cHJvcF9uYW1lX2ZufSgke2V4Y2VwdGlvbn0pJHtwb3N0X2NvbnZlcnRf
Zm59KTtcbiIpOworICAgICAgICB9CisKKyAgICAgICAgcHVzaChAdHh0X2dldF9wcm9wcywgIiAg
ICAgICAgYnJlYWs7XG4gICAgfVxuIik7CisKK215ICVwYXJhbV9zcGVjX29wdGlvbnMgPSAoImlu
dCIsICJHX01JTklOVCwgLyogbWluICovXG5HX01BWElOVCwgLyogbWF4ICovXG4wLCAvKiBkZWZh
dWx0ICovIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2xlYW4iLCAiRkFMU0UsIC8q
IGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQiLCAiR19NSU5G
TE9BVCwgLyogbWluICovXG5HX01BWEZMT0FULCAvKiBtYXggKi9cbjAuMCwgLyogZGVmYXVsdCAq
LyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJkb3VibGUiLCAiR19NSU5ET1VCTEUsIC8q
IG1pbiAqL1xuR19NQVhET1VCTEUsIC8qIG1heCAqL1xuMC4wLCAvKiBkZWZhdWx0ICovIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQ2NCIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlO
VDY0LCAvKiBtaW4gKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAibG9uZyIsICJHX01JTkxPTkcsIC8qIG1pbiAqL1xuR19NQVhMT05HLCAvKiBtYXggKi9c
bjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidWxvbmciLCAi
MCwgLyogbWluICovXG5HX01BWFVMT05HLCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAidWludCIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlO
VCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgInVzaG9ydCIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDE2LCAvKiBtYXggKi9cbjAsIC8q
IGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidWNoYXIiLCAiR19NSU5J
TlQ4LCAvKiBtaW4gKi9cbkdfTUFYSU5UOCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXIiLCAiMCwgLyogbWluICovXG5HX01BWFVJ
TlQ4LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAic3RyaW5nIiwgIlwiXCIsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAib2JqZWN0IiwgIldFQktJVF9UWVBFX0RPTV8ke3Byb3BHVHlwZX0sIC8qIGdvYmpl
Y3QgdHlwZSAqLyIpOworCisgICAgICAgIG15ICR0eHRfaW5zdGFsbF9wcm9wID0gPDwgIkVPRiI7
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3Byb3BFbnVtfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY18ke19ndHlwZX0oIiR7cHJvcE5h
bWV9IiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJG5pY2siLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
JGxvbmciLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhl
cmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHBhcmFtX3NwZWNfb3B0aW9uc3skZ3R5cGV9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Z3BhcmFtZmxhZ30pKTsK
K0VPRgorICAgICAgICBwdXNoKEB0eHRfaW5zdGFsbF9wcm9wcywgJHR4dF9pbnN0YWxsX3Byb3Ap
OworICAgICAgICAkdHh0X2luc3RhbGxfcHJvcCA9ICIvKiBUT0RPISAkZ3R5cGUgKi9cbiI7Cisg
ICAgfQorCisgICAgcHVzaChAY0JvZHlQcml2LCAifTtcblxuIik7CisKKyAgICAkdHh0X2dldF9w
cm9wID0gPDwgIkVPRiI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CitFT0YKKyAgICBwdXNoKEB0eHRfZ2V0X3Byb3BzLCAkdHh0X2dldF9wcm9wKTsK
KworICAgICR0eHRfc2V0X3Byb3AgPSA8PCAiRU9GIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KK0VPRgorICAgIHB1c2goQHR4dF9zZXRfcHJvcHMs
ICR0eHRfc2V0X3Byb3ApOworCisgICAgIyBUT0RPOiB3b3JrIG91dCBpZiBpdCdzIGFwcHJvcHJp
YXRlIHRvIHNwbGl0IHRoaXMgaW50byBtYW55IGRpZmZlcmVudAorICAgICMgc2lnbmFscyBlLmcu
ICJjbGljayIgZXRjLgorICAgIG15ICR0eHRfaW5zdGFsbF9zaWduYWxzID0gIiI7CisKKyAgICAk
aW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKKworc3RhdGljIHZvaWQgJHtsY2FzZV9pZmFjZW5hbWV9
X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRET01PYmplY3QqIGRvbV9v
YmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOworICAgIAorICAgIGlmKGRvbV9vYmpl
Y3QgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIGlmKGRvbV9vYmplY3QtPmNvcmVPYmplY3QgIT0g
TlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSAq
Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0gKj4oZG9t
X29iamVjdC0+Y29yZU9iamVjdCk7CisgICAgICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBkb21fb2JqZWN0LT5jb3JlT2JqZWN0ID0gTlVMTDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0
KGNvcmVPYmplY3QpOworICAgICAgICB9CisgICAgfQorCisgICAgR19PQkpFQ1RfQ0xBU1MoJHts
Y2FzZV9pZmFjZW5hbWV9X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK0B0
eHRfc2V0X3Byb3BzCisKK0B0eHRfZ2V0X3Byb3BzCisKK3N0YXRpYyB2b2lkICR7bGNhc2VfaWZh
Y2VuYW1lfV9jbGFzc19pbml0KCR7Y2xhc3NOYW1lfUNsYXNzKiByZXF1ZXN0Q2xhc3MpCit7Cisg
ICAgR09iamVjdENsYXNzICpnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xh
c3MpOworICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSAke2xjYXNlX2lmYWNlbmFtZX1fZmlu
YWxpemU7CisgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSAke2xjYXNlX2lmYWNlbmFt
ZX1fc2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gJHtsY2Fz
ZV9pZmFjZW5hbWV9X2dldF9wcm9wZXJ0eTsKKworQHR4dF9pbnN0YWxsX3Byb3BzCisKKyR0eHRf
aW5zdGFsbF9zaWduYWxzCit9CisKK3N0YXRpYyB2b2lkICR7bGNhc2VfaWZhY2VuYW1lfV9pbml0
KCR7Y2xhc3NOYW1lfSogcmVxdWVzdCkKK3sKK30KKworRU9GCisgICAgcHVzaChAY0JvZHlQcml2
LCAkaW1wbENvbnRlbnQpOworfQorCitzdWIgR2VuZXJhdGVIZWFkZXIgeworICAgIG15ICgkb2Jq
ZWN0LCAkaW50ZXJmYWNlTmFtZSwgJHBhcmVudENsYXNzTmFtZSkgPSBAXzsKKworICAgIG15ICRp
bXBsQ29udGVudCA9ICIiOworCisgICAgIyBBZGQgdGhlIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRl
CisgICAgQGhQcmVmaXggPSBzcGxpdCgiXHIiLCAkbGljZW5jZVRlbXBsYXRlKTsKKyAgICBwdXNo
KEBoUHJlZml4LCAiXG4iKTsKKworICAgICNIZWFkZXIgZ3VhcmQKKyAgICBteSAkZ3VhcmQgPSAk
Y2xhc3NOYW1lIC4gIl9oIjsKKworICAgIEBoUHJlZml4R3VhcmQgPSA8PCAiRU9GIjsKKyNpZm5k
ZWYgJGd1YXJkCisjZGVmaW5lICRndWFyZAorCitFT0YKKworICAgICRpbXBsQ29udGVudCA9IDw8
ICJFT0YiOworR19CRUdJTl9ERUNMUworRU9GCisKKyAgICBwdXNoKEBoQm9keVByZSwgJGltcGxD
b250ZW50KTsKKworICAgIG15ICRjbHNDYXBzID0gdWMoZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFt
ZSkpOworICAgIG15ICRsY2FzZV9pZmFjZW5hbWUgPSAid2Via2l0X2RvbV8iIC4gKGRlY2FtZWxp
emUoJGludGVyZmFjZU5hbWUpKTsKKworICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOworCisj
ZGVmaW5lIFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9ICAgICAgICAgICAgKCR7bGNhc2VfaWZh
Y2VuYW1lfV9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30ob2JqKSAg
ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVf
RE9NXyR7Y2xzQ2Fwc30sICR7Y2xhc3NOYW1lfSkpCisjZGVmaW5lIFdFQktJVF9ET01fJHtjbHND
YXBzfV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBX
RUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgJHtjbGFzc05hbWV9Q2xhc3MpCisjZGVmaW5lIFdF
QktJVF9ET01fSVNfJHtjbHNDYXBzfShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSkpCisjZGVmaW5lIFdFQktJ
VF9ET01fSVNfJHtjbHNDYXBzfV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksICBXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSkpCisjZGVmaW5lIFdFQktJVF9E
T01fJHtjbHNDYXBzfV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1Mo
KG9iaiksICBXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgJHtjbGFzc05hbWV9Q2xhc3MpKQor
CitzdHJ1Y3QgXyR7Y2xhc3NOYW1lfSB7CisgICAgJHtwYXJlbnRDbGFzc05hbWV9IHBhcmVudF9p
bnN0YW5jZTsKK307CisKK3N0cnVjdCBfJHtjbGFzc05hbWV9Q2xhc3MgeworICAgICR7cGFyZW50
Q2xhc3NOYW1lfUNsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKKyR7
bGNhc2VfaWZhY2VuYW1lfV9nZXRfdHlwZSAodm9pZCk7CisKK0VPRgorCisgICAgcHVzaChAaEJv
ZHksICRpbXBsQ29udGVudCk7Cit9CisKK3N1YiBnZXRJbmNsdWRlSGVhZGVyIHsKKyAgICBteSAk
dHlwZSA9IHNoaWZ0OworICAgIG15ICRuYW1lID0gR2V0Q2xhc3NOYW1lKCR0eXBlKTsKKworICAg
IHJldHVybiAiIiBpZiAkdHlwZSBlcSAiaW50IjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEg
ImxvbmciOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAic2hvcnQiOworICAgIHJldHVybiAi
IiBpZiAkdHlwZSBlcSAiY2hhciI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJmbG9hdCI7
CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJkb3VibGUiOworICAgIHJldHVybiAiIiBpZiAk
dHlwZSBlcSAidW5zaWduZWQiOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAidW5zaWduZWQg
aW50IjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciOworICAgIHJl
dHVybiAiIiBpZiAkdHlwZSBlcSAidW5zaWduZWQgbG9uZyBsb25nIjsKKyAgICByZXR1cm4gIiIg
aWYgJHR5cGUgZXEgInVuc2lnbmVkIHNob3J0IjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEg
IkRPTVRpbWVTdGFtcCI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJFdmVudExpc3RlbmVy
IjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGNoYXIiOworICAgIHJldHVy
biAiIiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nIjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEg
ImZsb2F0IjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOworICAgIHJldHVy
biAiIiBpZiAkdHlwZSBlcSAidm9pZCI7CisKKyAgICByZXR1cm4gIiRuYW1lLmgiOworfQorCitz
dWIgYWRkSW5jbHVkZUluQm9keSB7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIG15ICRo
ZWFkZXIgPSBnZXRJbmNsdWRlSGVhZGVyKCR0eXBlKTsKKyAgICBpZiAoJGhlYWRlciBlcSAiIikg
eworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChJc0dET01DbGFzc1R5cGUo
JHR5cGUpKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IndlYmtpdC8kaGVhZGVyIn0gPSAxOwor
ICAgIH0gZWxzZSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7JGhlYWRlcn0gPSAxCisgICAgfQor
fQorCitzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2VO
YW1lLCAkZnVuY3Rpb24sICRwcmVmaXgpID0gQF87CisKKyAgICBteSAkZm5fc2lnX25hbWUgPSAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBteSAkZm5fc2lnX3R5cGUgPSAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+dHlwZTsKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gIndlYmtpdF9kb21f
IiAuIGRlY2FtZWxpemUoJGludGVyZmFjZU5hbWUpIC4gIl8iIC4gJHByZWZpeCAuIGRlY2FtZWxp
emUoJGZuX3NpZ19uYW1lKTsKKyAgICBteSAkcmV0dXJuVHlwZSA9IEdldEdsaWJUeXBlTmFtZSgk
Zm5fc2lnX3R5cGUpOworICAgIG15ICRyZXRfaXNfY2xzX3R5cGUgPSBJc0dET01DbGFzc1R5cGUo
JGZuX3NpZ190eXBlKTsKKworICAgIG15ICRmdW5jdGlvblNpZyA9ICIkY2xhc3NOYW1lICpzZWxm
IjsKKworICAgIG15ICRjYWxsX2ltcGxfcGFyYW1zID0gIiI7CisgICAgbXkgJGdkb21fZm5fcHJl
Zml4ID0gIndlYmtpdF9kb21fIiAuIGRlY2FtZWxpemUoJGZuX3NpZ190eXBlKTsKKworICAgICMg
c2tpcCBzb21lIGN1c3RvbSBmdW5jdGlvbnMgZm9yIG5vdworICAgIG15ICRpc19jdXN0b21fZm4g
PSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8
CisgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9OworCisgICAgZm9yZWFjaCBteSAk
cGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICBteSAkcGFyYW1JRExU
eXBlID0gJHBhcmFtLT50eXBlOworICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBlcSAiRXZlbnQi
KSB7CisgICAgICAgICAgICBwdXNoKEBoQm9keSwgIlxuLyogVE9ETzogZXZlbnQgZnVuY3Rpb24g
JHtmdW5jdGlvbk5hbWV9ICovXG5cbiIpOworICAgICAgICAgICAgcHVzaChAY0JvZHksICJcbi8q
IFRPRE86IGV2ZW50IGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSAqL1xuXG4iKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhZGRJbmNsdWRlSW5Cb2R5KCRwYXJhbUlE
TFR5cGUpOworICAgICAgICBteSAkcGFyYW1UeXBlID0gR2V0R2xpYlR5cGVOYW1lKCRwYXJhbUlE
TFR5cGUpOworICAgICAgICBteSAkcGFyYW1OYW1lID0gZGVjYW1lbGl6ZSgkcGFyYW0tPm5hbWUp
OworCisgICAgICAgICRmdW5jdGlvblNpZyAuPSAiLCAkcGFyYW1UeXBlICRwYXJhbU5hbWUiOwor
CisgICAgICAgIG15ICRwYXJhbV9pc19jbHNfdHlwZSA9IElzR0RPTUNsYXNzVHlwZSgkcGFyYW1J
RExUeXBlKTsKKyAgICAgICAgaWYgKCRwYXJhbV9pc19jbHNfdHlwZSkgeworICAgICAgICAgICAg
aWYgKCRwYXJhbUlETFR5cGUgbmUgIkRPTU9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJ3ZWJraXQvV2ViS2l0RE9NJHtwYXJhbUlETFR5cGV9UHJpdmF0ZS5oIn0gPSAx
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgkcGFyYW1faXNfY2xzX3R5
cGUgfHwgKCRwYXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIpKSB7CisgICAgICAgICAgICAkcGFy
YW1OYW1lID0gIl9nXyIgLiAkcGFyYW1OYW1lOworICAgICAgICB9CisgICAgICAgIGlmICgkY2Fs
bF9pbXBsX3BhcmFtcykgeworICAgICAgICAgICAgJGNhbGxfaW1wbF9wYXJhbXMgLj0gIiwgJHBh
cmFtTmFtZSI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkY2FsbF9pbXBsX3BhcmFt
cyA9ICIkcGFyYW1OYW1lIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgkZm5fc2lnX3R5
cGUgZXEgIkV2ZW50IikgeworICAgICAgICBwdXNoKEBoQm9keSwgIlxuLyogVE9ETzogZXZlbnQg
ZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9ICovXG5cbiIpOworICAgICAgICBwdXNoKEBjQm9keSwg
IlxuLyogVE9ETzogZXZlbnQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9ICovXG5cbiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIiAmJiAk
cmV0X2lzX2Nsc190eXBlKSB7CisgICAgICAgIGlmICgkZm5fc2lnX3R5cGUgbmUgIkV2ZW50VGFy
Z2V0IikgeworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sid2Via2l0L1dlYktpdERPTSR7Zm5f
c2lnX3R5cGV9UHJpdmF0ZS5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sid2Vi
a2l0L1dlYktpdERPTSR7Zm5fc2lnX3R5cGV9LmgifSA9IDE7CisgICAgICAgIH0KKworICAgICAg
ICAkaW1wbEluY2x1ZGVzeyIke2ZuX3NpZ190eXBlfS5oIn0gPSAxOworICAgIH0KKworICAgICMg
c2tpcCBjdXN0b20gZnVuY3Rpb25zIGZvciBub3cKKyAgICAjIGJ1dCBza2lwIGZyb20gaGVyZSB0
byBhbGxvdyBzb21lIGhlYWRlcnMgdG8gYmUgY3JlYXRlZAorICAgICMgZm9yIGEgc3VjY2Vzc2Z1
bCBjb21waWxlLgorICAgIGlmICgkaXNfY3VzdG9tX2ZuICYmCisgICAgICAgICRmdW5jdGlvbk5h
bWUgbmUgIndlYmtpdF9kb21fbm9kZV9yZW1vdmVfY2hpbGQiICYmIAorICAgICAgICAkZnVuY3Rp
b25OYW1lIG5lICJ3ZWJraXRfZG9tX25vZGVfaW5zZXJ0X2JlZm9yZSIgJiYKKyAgICAgICAgJGZ1
bmN0aW9uTmFtZSBuZSAid2Via2l0X2RvbV9ub2RlX3JlcGxhY2VfY2hpbGQiICYmCisgICAgICAg
ICRmdW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21fbm9kZV9hcHBlbmRfY2hpbGQiKSB7CisgICAg
ICAgIHB1c2goQGhCb2R5LCAiXG4vKiBUT0RPOiBjdXN0b20gZnVuY3Rpb24gJHtmdW5jdGlvbk5h
bWV9ICovXG5cbiIpOworICAgICAgICBwdXNoKEBjQm9keSwgIlxuLyogVE9ETzogY3VzdG9tIGZ1
bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSAqL1xuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG15ICRfcmV0dXJuVHlwZSA9ICRyZXR1cm5UeXBlOworICAgIG15ICRkb21vYmpUeXBl
ID0gIldlYktpdERPTSIuJGZuX3NpZ190eXBlOworCisgICAgaWYoQHskZnVuY3Rpb24tPnJhaXNl
c0V4Y2VwdGlvbnN9KSB7CisgICAgICAgICRmdW5jdGlvblNpZyAuPSAiLCBHRXJyb3IgKiplcnJv
ciI7CisgICAgfQorCisgICAgcHVzaChAaEJvZHksICJXRUJLSVRfQVBJICRfcmV0dXJuVHlwZVxu
JGZ1bmN0aW9uTmFtZSAoJGZ1bmN0aW9uU2lnKTtcblxuIik7CisgICAgcHVzaChAY0JvZHksICIk
X3JldHVyblR5cGVcbiRmdW5jdGlvbk5hbWUgKCRmdW5jdGlvblNpZylcbntcbiIpOworCisgICAg
aWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIikgeworICAgICAgICAjIFRPRE86IHJldHVybiBwcm9w
ZXIgZGVmYXVsdCByZXN1bHQKKyAgICAgICAgcHVzaChAY0JvZHksICIgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwgKHNlbGYsIDApO1xuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHVzaChAY0Jv
ZHksICIgICAgZ19yZXR1cm5faWZfZmFpbCAoc2VsZik7XG4iKTsKKyAgICB9CisKKyAgICAjIFRo
ZSBXZWJLaXQ6OmNvcmUgaW1wbGVtZW50YXRpb25zIGNoZWNrIGZvciBOVUxMIGFscmVhZHk7IG5v
IG5lZWQgdG8KKyAgICAjIGR1cGxpY2F0ZSBlZmZvcnQuCisgICAgcHVzaChAY0JvZHksICIgICAg
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7XG4i
KTsKKworICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsK
KyAgICAgICAgbXkgJHBhcmFtTmFtZSA9IGRlY2FtZWxpemUoJHBhcmFtLT5uYW1lKTsKKyAgICAg
ICAgbXkgJHBhcmFtSURMVHlwZSA9ICRwYXJhbS0+dHlwZTsKKyAgICAgICAgbXkgJHBhcmFtVHlw
ZUlzUHJpbWl0aXZlID0gJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgkcGFyYW1JRExU
eXBlKTsKKyAgICAgICAgbXkgJHBhcmFtX2lzX2Nsc190eXBlID0gSXNHRE9NQ2xhc3NUeXBlKCRw
YXJhbUlETFR5cGUpOworICAgICAgICBpZiAoISRwYXJhbVR5cGVJc1ByaW1pdGl2ZSkgeworICAg
ICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIikgeworICAgICAgICAgICAgICAgICMg
VE9ETzogcmV0dXJuIHByb3BlciBkZWZhdWx0IHJlc3VsdAorICAgICAgICAgICAgICAgIHB1c2go
QGNCb2R5LCAiICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICgkcGFyYW1OYW1lLCAwKTtcbiIpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBn
X3JldHVybl9pZl9mYWlsICgkcGFyYW1OYW1lKTtcbiIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgJHJldHVyblBhcmFtTmFtZSA9ICIiOworICAgIGZvcmVhY2ggbXkg
JHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgbXkgJHBhcmFtSURM
VHlwZSA9ICRwYXJhbS0+dHlwZTsKKyAgICAgICAgbXkgJHBhcmFtTmFtZSA9IGRlY2FtZWxpemUo
JHBhcmFtLT5uYW1lKTsKKworICAgICAgICBteSAkcGFyYW1faXNfY2xzX3R5cGUgPSBJc0dET01D
bGFzc1R5cGUoJHBhcmFtSURMVHlwZSk7CisgICAgICAgICMgSEFDSyEKKyAgICAgICAgaWYgKCRm
dW5jdGlvbk5hbWUgZXEgIndlYmtpdF9kb21feG1sX2h0dHBfcmVxdWVzdF9vcGVuIiAmJgorICAg
ICAgICAkcGFyYW0tPm5hbWUgZXEgInVybCIpIHsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAi
ICAgIFdlYkNvcmU6OktVUkwgX2dfJHtwYXJhbU5hbWV9ID0gV2ViQ29yZTo6S1VSTCgkcGFyYW1O
YW1lKTtcbiIpOworICAgICAgICB9IGVsc2lmICgkcGFyYW1JRExUeXBlIGVxICJET01TdHJpbmci
KSB7CisgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjpTdHJpbmcgX2dfJHtw
YXJhbU5hbWV9ID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCgkcGFyYW1OYW1lKTtcbiIpOwor
ICAgICAgICB9CisgICAgICAgIGlmICgkcGFyYW1faXNfY2xzX3R5cGUpIHsKKyAgICAgICAgICAg
IG15ICRwYXJhbV9nZG9tX2ZuID0gIndlYmtpdF9kb21fIiAuIGRlY2FtZWxpemUoJHBhcmFtSURM
VHlwZSk7CisgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke3BhcmFtSURM
VHlwZX0gKiBfZ18ke3BhcmFtTmFtZX0gPSBXZWJLaXQ6OmNvcmUoJHBhcmFtTmFtZSk7XG4iKTsK
KyAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIpIHsKKyAgICAgICAgICAgICAg
ICAjIFRPRE86IHJldHVybiBwcm9wZXIgZGVmYXVsdCByZXN1bHQKKyAgICAgICAgICAgICAgICBw
dXNoKEBjQm9keSwgIiAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoX2dfJHtwYXJhbU5hbWV9LCAw
KTtcbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBjQm9k
eSwgIiAgICBnX3JldHVybl9pZl9mYWlsIChfZ18ke3BhcmFtTmFtZX0pO1xuIik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgJHJldHVyblBhcmFtTmFtZSA9ICJfZ18iLiRwYXJh
bU5hbWUgaWYgJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmV0dXJuIn07CisgICAgfQor
CisgICAgbXkgJGFzc2lnbiA9ICIiOworICAgIG15ICRhc3NpZ25fcHJlID0gIiI7CisgICAgbXkg
JGFzc2lnbl9wb3N0ID0gIiI7CisKKyAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQiICYmICEk
aXNfY3VzdG9tX2ZuKSB7CisgICAgICAgIGlmICgkcmV0X2lzX2Nsc190eXBlKSB7CisgICAgICAg
ICAgICAkYXNzaWduID0gIlBhc3NSZWZQdHI8V2ViQ29yZTo6JHtmbl9zaWdfdHlwZX0+IGdfcmVz
ID0gIjsKKyAgICAgICAgICAgICRhc3NpZ25fcHJlID0gIldURjo6Z2V0UHRyKCI7CisgICAgICAg
ICAgICAkYXNzaWduX3Bvc3QgPSAiKSI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAk
YXNzaWduID0gIiR7X3JldHVyblR5cGV9IHJlcyA9ICI7CisgICAgICAgIH0KKyAgICB9CisgICAg
bXkgJGV4Y2VwdGlvbnMgPSAiIjsKKyAgICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlv
bnN9KSB7CisgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwO1xuIik7CisgICAgICAgIGlmICgke2NhbGxfaW1wbF9wYXJhbXN9IG5lICIiKSB7Cisg
ICAgICAgICAgICAkZXhjZXB0aW9ucyA9ICIsIGVjIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICRleGNlcHRpb25zID0gImVjIjsKKyAgICAgICAgfQorICAgIH0KKworICAgICMgV2Ug
bmVlZCB0byBzcGVjaWFsLWNhc2UgdGhlc2UgTm9kZSBtZXRob2RzIGJlY2F1c2UgdGhlaXIgQysr
IHNpZ25hdHVyZSBpcyBkaWZmZXJlbnQKKyAgICAjIGZyb20gd2hhdCB3ZSdkIGV4cGVjdCBnaXZl
biB0aGVpciBJREwgZGVzY3JpcHRpb247IHNlZSBOb2RlLmguCisgICAgaWYgKCRmdW5jdGlvbk5h
bWUgZXEgIndlYmtpdF9kb21fbm9kZV9hcHBlbmRfY2hpbGQiIHx8CisgICAgICAgICRmdW5jdGlv
bk5hbWUgZXEgIndlYmtpdF9kb21fbm9kZV9pbnNlcnRfYmVmb3JlIiB8fAorICAgICAgICAkZnVu
Y3Rpb25OYW1lIGVxICJ3ZWJraXRfZG9tX25vZGVfcmVwbGFjZV9jaGlsZCIgfHwKKyAgICAgICAg
JGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9ub2RlX3JlbW92ZV9jaGlsZCIpIHsKKyAgICAg
ICAgbXkgJGN1c3RvbV9nZG9tX25vZGVfYXBwZW5kX2NoaWxkID0gPDwgIkVPRiI7CisgICAgYm9v
bCBvayA9IGl0ZW0tPiR7Zm5fc2lnX25hbWV9KCR7Y2FsbF9pbXBsX3BhcmFtc30ke2V4Y2VwdGlv
bnN9KTsKKyAgICBpZiAob2spCisgICAgeworICAgICAgICAke19yZXR1cm5UeXBlfSByZXMgPSBz
dGF0aWNfY2FzdDwke19yZXR1cm5UeXBlfT4oV2ViS2l0OjpraXQoJHJldHVyblBhcmFtTmFtZSkp
OworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KK0VPRgorICAgICAgICBwdXNoKEBjQm9keSwg
JGN1c3RvbV9nZG9tX25vZGVfYXBwZW5kX2NoaWxkKTsKKyAgICAKKyAgICAgICAgaWYoQHskZnVu
Y3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9KSB7CisgICAgICAgICAgICBteSAkZXhjZXB0aW9uX2hh
bmRsaW5nID0gPDwgIkVPRiI7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24gZWNkZXNjOworICAgIFdlYkNvcmU6OmdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihlYywg
ZWNkZXNjKTsKKyAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3Ry
aW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CitFT0YKKyAgICAg
ICAgICAgIHB1c2goQGNCb2R5LCAkZXhjZXB0aW9uX2hhbmRsaW5nKTsKKyAgICAgICAgfQorICAg
ICAgICBwdXNoKEBjQm9keSwgInJldHVybiBOVUxMOyIpOworICAgICAgICBwdXNoKEBjQm9keSwg
In1cblxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2lmICgkZm5fc2lnX3R5cGUgZXEg
IkRPTVN0cmluZyIpIHsKKyAgICAgICAgcHVzaChAY0JvZHksICIgICAgJHthc3NpZ259ZG9tU3Ry
aW5nQ29udmVydChpdGVtLT4ke2ZuX3NpZ19uYW1lfSgke2NhbGxfaW1wbF9wYXJhbXN9JHtleGNl
cHRpb25zfSkpO1xuIiApOworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGNCb2R5LCAiICAg
ICR7YXNzaWdufSR7YXNzaWduX3ByZX1pdGVtLT4ke2ZuX3NpZ19uYW1lfSgke2NhbGxfaW1wbF9w
YXJhbXN9JHtleGNlcHRpb25zfSR7YXNzaWduX3Bvc3R9KTtcbiIgKTsKKyAgICAgICAgCisgICAg
ICAgIGlmKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgeworICAgICAgICAgICAgbXkg
JGV4Y2VwdGlvbl9oYW5kbGluZyA9IDw8ICJFT0YiOworICAgIGlmKGVjKSB7CisgICAgICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2M7CisgICAgICAgIFdlYkNvcmU6
OmdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihlYywgZWNkZXNjKTsKKyAgICAgICAgZ19zZXRf
ZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBl
Y2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgIH0KK0VPRgorICAgICAgICAgICAgcHVzaChA
Y0JvZHksICRleGNlcHRpb25faGFuZGxpbmcpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KCRyZXR1cm5UeXBlIG5lICJ2b2lkIiAmJiAhJGlzX2N1c3RvbV9mbikgeworICAgICAgICBpZiAo
JGZuX3NpZ190eXBlIG5lICJET01PYmplY3QiKSB7CisgICAgICAgICAgICBpZiAoJHJldF9pc19j
bHNfdHlwZSkgeworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgICR7X3JldHVyblR5
cGV9IHJlcyA9IHN0YXRpY19jYXN0PCR7X3JldHVyblR5cGV9PihXZWJLaXQ6OmtpdChnX3Jlcy5n
ZXQoKSkpO1xuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRmbl9z
aWdfdHlwZSBlcSAiRE9NT2JqZWN0IikgeworICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAg
cmV0dXJuIE5VTEw7IC8qIFRPRE86IHJldHVybiBjYW52YXMgb2JqZWN0ICovXG4iKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiByZXM7XG4i
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwdXNoKEBjQm9keSwgIlxufVxuXG4iKTsKK30KKwor
c3ViIENsYXNzSGFzRnVuY3Rpb24geworICAgIG15ICgkY2xhc3MsICRuYW1lKSA9IEBfOworCisg
ICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGNsYXNzLT5mdW5jdGlvbnN9KSB7CisgICAgICAg
IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAkbmFtZSkgeworICAgICAgICAgICAg
cmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3ViIEdl
bmVyYXRlRnVuY3Rpb25zIHsKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUsICRkYXRh
Tm9kZSkgPSBAXzsKKworICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVu
Y3Rpb25zfSkgeworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUZ1bmN0aW9uKCRpbnRlcmZhY2VO
YW1lLCAkZnVuY3Rpb24sICIiKTsKKyAgICB9CisKKyAgICBUT1A6CisgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgaWYgKHNraXBB
dHRyaWJ1dGUoJGF0dHJpYnV0ZSkpIHsKKyAgICAgICAgICAgIG5leHQgVE9QOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIGVxICJ0
eXBlIgorICAgICAgICAgICAgIyBUaGlzIHdpbGwgY29uZmxpY3Qgd2l0aCB0aGUgZ2V0X3R5cGUo
KSBmdW5jdGlvbiB3ZSBkZWZpbmUgdG8gcmV0dXJuIGEgR1R5cGUKKyAgICAgICAgICAgICMgYWNj
b3JkaW5nIHRvIEdPYmplY3QgY29udmVudGlvbnMuICBTa2lwIHRoaXMgZm9yIG5vdy4KKyAgICAg
ICAgICAgIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSBlcSAiVVJMIiAgICAgIyBUT0RP
OiBoYW5kbGUgdGhpcworICAgICAgICAgICAgfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydEZyb21TdHJpbmcifSAgICAjIFRPRE86IGhhbmRsZSB0
aGlzCisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgIG5leHQgVE9QOworICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgbXkgJGF0dG5hbWVfdXBwZXIgPSAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOworICAgICAgICBteSAkZ2V0
bmFtZSA9ICJnZXQke2F0dG5hbWVfdXBwZXJ9IjsKKyAgICAgICAgbXkgJHNldG5hbWUgPSAic2V0
JHthdHRuYW1lX3VwcGVyfSI7CisgICAgICAgIGlmIChDbGFzc0hhc0Z1bmN0aW9uKCRkYXRhTm9k
ZSwgJGdldG5hbWUpIHx8IENsYXNzSGFzRnVuY3Rpb24oJGRhdGFOb2RlLCAkc2V0bmFtZSkpIHsK
KyAgICAgICAgICAgICMgVmVyeSBvY2Nhc2lvbmFsbHkgYW4gSURMIGZpbGUgZGVmaW5lcyBnZXR0
ZXIvc2V0dGVyIGZ1bmN0aW9ucyBmb3Igb25lIG9mIGl0cworICAgICAgICAgICAgIyBhdHRyaWJ1
dGVzOyBpbiB0aGlzIGNhc2Ugd2UgZG9uJ3QgbmVlZCB0byBhdXRvZ2VuZXJhdGUgdGhlIGdldHRl
ci9zZXR0ZXIuCisgICAgICAgICAgICBuZXh0IFRPUDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgIyBHZW5lcmF0ZSBhbiBhdHRyaWJ1dGUgZ2V0dGVyLiAgRm9yIGFuIGF0dHJpYnV0ZSAi
Zm9vIiwgdGhpcyBpcyBhIGZ1bmN0aW9uIG5hbWVkCisgICAgICAgICMgImdldF9mb28iIHdoaWNo
IGNhbGxzIGEgRE9NIGNsYXNzIG1ldGhvZCBuYW1lZCBmb28oKS4KKyAgICAgICAgbXkgJGZ1bmN0
aW9uID0gbmV3IGRvbUZ1bmN0aW9uKCk7CisgICAgICAgICRmdW5jdGlvbi0+c2lnbmF0dXJlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSk7CisgICAgICAgICRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9u
cygkYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zKTsKKyAgICAgICAgJG9iamVjdC0+R2VuZXJh
dGVGdW5jdGlvbigkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uLCAiZ2V0XyIpOworICAgICAgICAK
KyAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8gfHwKKyAgICAgICAg
ICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2Vh
YmxlIn0gICMgY2FuJ3QgaGFuZGxlIHRoaXMgeWV0CisgICAgICAgICAgICApIHsKKyAgICAgICAg
ICAgIG5leHQgVE9QOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAjIEdlbmVyYXRlIGFu
IGF0dHJpYnV0ZSBzZXR0ZXIuICBGb3IgYW4gYXR0cmlidXRlLCAiZm9vIiwgdGhpcyBpcyBhIGZ1
bmN0aW9uIG5hbWVkCisgICAgICAgICMgInNldF9mb28iIHdoaWNoIGNhbGxzIGEgRE9NIGNsYXNz
IG1ldGhvZCBuYW1lZCBzZXRGb28oKS4KKyAgICAgICAgJGZ1bmN0aW9uID0gbmV3IGRvbUZ1bmN0
aW9uKCk7CisgICAgICAgIAorICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZShuZXcgZG9tU2ln
bmF0dXJlKCkpOworICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgkc2V0bmFtZSk7
CisgICAgICAgICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKCJ2b2lkIik7CisgICAgICAgICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAKKyAgICAgICAgbXkgJHBhcmFtID0g
bmV3IGRvbVNpZ25hdHVyZSgpOworICAgICAgICAkcGFyYW0tPm5hbWUoInZhbHVlIik7CisgICAg
ICAgICRwYXJhbS0+dHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICBt
eSAlYXR0cmlidXRlcyA9ICgpOworICAgICAgICAkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKKyAgICAgICAgbXkgJGFycmF5UmVmID0gJGZ1bmN0aW9uLT5wYXJhbWV0ZXJz
OworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRwYXJhbSk7CisgICAgICAgIAorICAgICAgICAk
ZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnMoJGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9ucyk7
CisgICAgICAgIAorICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUZ1bmN0aW9uKCRpbnRlcmZhY2VO
YW1lLCAkZnVuY3Rpb24sICIiKTsKKyAgICB9Cit9CisKK3N1YiBHZW5lcmF0ZUNGaWxlIHsKKyAg
ICBteSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUsICRwYXJlbnRDbGFzc05hbWUsICRwYXJlbnRH
T2JqVHlwZSwgJGRhdGFOb2RlKSA9IEBfOworICAgIG15ICRpbXBsQ29udGVudCA9ICIiOworCisg
ICAgbXkgJGNsc0NhcHMgPSB1YyhkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKSk7CisgICAgbXkg
JGxjYXNlX2lmYWNlbmFtZSA9ICJ3ZWJraXRfZG9tXyIgLiBkZWNhbWVsaXplKCRpbnRlcmZhY2VO
YW1lKTsKKworICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOworR19ERUZJTkVfVFlQRSgke2Ns
YXNzTmFtZX0sICR7bGNhc2VfaWZhY2VuYW1lfSwgJHtwYXJlbnRHT2JqVHlwZX0pCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCiske2NsYXNzTmFtZX0qIHdyYXAke2ludGVyZmFjZU5hbWV9KFdlYkNv
cmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVPYmplY3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsKKyAgICAKKyAgICAke2NsYXNzTmFtZX0qIHdyYXBw
ZXIgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV8k
e2Nsc0NhcHN9LCBOVUxMKSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod3JhcHBlciAhPSAw
LCAwKTsKKworICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21h
cnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAorICAgICAqIGlu
IGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkgY29k
ZSBmb3IgdGhlCisgICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KKyAgICAgKi8KKworICAgIGNvcmVP
YmplY3QtPnJlZigpOworICAgIFdFQktJVF9ET01fT0JKRUNUKHdyYXBwZXIpLT5jb3JlT2JqZWN0
ID0gY29yZU9iamVjdDsKKworICAgIHJldHVybiB3cmFwcGVyOworfQorCitXZWJDb3JlOjoke2lu
dGVyZmFjZU5hbWV9KiBjb3JlKCR7Y2xhc3NOYW1lfSogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChyZXF1ZXN0ICE9IDAsIDApOworICAgIAorICAgIFdlYkNvcmU6OiR7aW50
ZXJmYWNlTmFtZX0qIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjoke2ludGVyZmFj
ZU5hbWV9Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QgIT0gMCwgMCk7CisgICAgCisgICAgcmV0dXJu
IGNvcmVPYmplY3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorRU9GCisKKyAgICBwdXNo
KEBjQm9keVByaXYsICRpbXBsQ29udGVudCk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVQcm9wZXJ0
aWVzKCRpbnRlcmZhY2VOYW1lLCAkZGF0YU5vZGUpOworICAgICRvYmplY3QtPkdlbmVyYXRlRnVu
Y3Rpb25zKCRpbnRlcmZhY2VOYW1lLCAkZGF0YU5vZGUpOworfQorCitzdWIgR2VuZXJhdGVFbmRI
ZWFkZXIgeworICAgIG15ICgkb2JqZWN0KSA9IEBfOworCisgICAgI0hlYWRlciBndWFyZAorICAg
IG15ICRndWFyZCA9ICRjbGFzc05hbWUgLiAiX2giOworCisgICAgcHVzaChAaEJvZHksICJHX0VO
RF9ERUNMU1xuXG4iKTsKKyAgICBwdXNoKEBoQm9keSwgIiNlbmRpZiAvKiAkZ3VhcmQgKi9cbiIp
OworfQorCitzdWIgR2VuZXJhdGVQcml2YXRlSGVhZGVyIHsKKyAgICBteSAkb2JqZWN0ID0gc2hp
ZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9
ICRkYXRhTm9kZS0+bmFtZTsKKyAgICBteSAkZmlsZW5hbWUgPSAiJG91dHB1dERpci8iIC4gJGNs
YXNzTmFtZSAuICJQcml2YXRlLmgiOworICAgIG15ICRndWFyZCA9IHVjKGRlY2FtZWxpemUoJGNs
YXNzTmFtZSkpIC4gIl9QUklWQVRFX0giOworICAgIG15ICRwYXJlbnRDbGFzc05hbWUgPSBHZXRQ
YXJlbnRDbGFzc05hbWUoJGRhdGFOb2RlKTsKKyAgICBteSAkaGFzTGVnYWN5UGFyZW50ID0gJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5UGFyZW50In07CisgICAgbXkgJGhh
c1JlYWxQYXJlbnQgPSBAeyRkYXRhTm9kZS0+cGFyZW50c30gPiAwOworICAgIG15ICRoYXNQYXJl
bnQgPSAkaGFzTGVnYWN5UGFyZW50IHx8ICRoYXNSZWFsUGFyZW50OworICAgIAorICAgIG9wZW4o
UFJJVkhFQURFUiwgIj4kZmlsZW5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkZmls
ZW5hbWUgZm9yIHdyaXRpbmciOworICAgIAorICAgIHByaW50IFBSSVZIRUFERVIgc3BsaXQoIlxy
IiwgJGxpY2VuY2VUZW1wbGF0ZSk7CisgICAgcHJpbnQgUFJJVkhFQURFUiAiXG4iOworICAgIAor
ICAgIG15ICR0ZXh0ID0gPDwgIkVPRiI7CisjaWZuZGVmICRndWFyZAorI2RlZmluZSAkZ3VhcmQK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0LyR7cGFyZW50Q2xh
c3NOYW1lfS5oPgorI2luY2x1ZGUgIiR7aW50ZXJmYWNlTmFtZX0uaCIKK0VPRgorCisgICAgcHJp
bnQgUFJJVkhFQURFUiAkdGV4dDsKKyAgICAKKyAgICBwcmludCBQUklWSEVBREVSIG1hcCB7ICIj
aW5jbHVkZSBcIiRfXCJcbiIgfSBzb3J0IGtleXMoJWhkclByb3BJbmNsdWRlcyk7CisgICAgcHJp
bnQgUFJJVkhFQURFUiAiXG4iIGlmIGtleXMoJWhkclByb3BJbmNsdWRlcyk7CisgICAgCisgICAg
JHRleHQgPSA8PCAiRU9GIjsKK25hbWVzcGFjZSBXZWJLaXQgeworICAgICR7Y2xhc3NOYW1lfSAq
CisgICAgd3JhcCR7aW50ZXJmYWNlTmFtZX0oV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSAqY29y
ZU9iamVjdCk7CisKKyAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICoKKyAgICBjb3JlKCR7
Y2xhc3NOYW1lfSAqcmVxdWVzdCk7CisKK0VPRgorCisgICAgcHJpbnQgUFJJVkhFQURFUiAkdGV4
dDsKKworICAgIGlmICgkY2xhc3NOYW1lIG5lICJXZWJLaXRET01Ob2RlIikgeworICAgICAgICAk
dGV4dCA9IDw8ICJFT0YiOworICAgIGdwb2ludGVyCisgICAga2l0KFdlYkNvcmU6OiR7aW50ZXJm
YWNlTmFtZX0qIG5vZGUpOworCitFT0YKKyAgICAgICAgcHJpbnQgUFJJVkhFQURFUiAkdGV4dDsK
KyAgICB9CisKKyAgICAkdGV4dCA9IDw8ICJFT0YiOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvKiAke2d1YXJkfSAqLworRU9GCisgICAgcHJpbnQgUFJJVkhFQURFUiAkdGV4dDsK
KyAgICAKKyAgICBjbG9zZShQUklWSEVBREVSKTsKK30KKworc3ViIFVzZXNNYW51YWxUb0pTSW1w
bGVtZW50YXRpb24geworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiTm9kZSIgb3IgJHR5cGUgZXEgIkRvY3VtZW50IiBvciAkdHlwZSBlcSAiSFRNTENv
bGxlY3Rpb24iIG9yCisgICAgICAkdHlwZSBlcSAiU1ZHUGF0aFNlZyIgb3IgJHR5cGUgZXEgIlN0
eWxlU2hlZXQiIG9yICR0eXBlIGVxICJDU1NSdWxlIiBvciAkdHlwZSBlcSAiQ1NTVmFsdWUiIG9y
CisgICAgICAkdHlwZSBlcSAiRXZlbnQiIG9yICR0eXBlIGVxICJFbGVtZW50IiBvciAkdHlwZSBl
cSAiVGV4dCI7CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBHZW5lcmF0ZSB7CisgICAgbXkgKCRv
YmplY3QsICRkYXRhTm9kZSkgPSBAXzsKKworICAgIG15ICRoYXNMZWdhY3lQYXJlbnQgPSAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lQYXJlbnQifTsKKyAgICBteSAkaGFz
UmVhbFBhcmVudCA9IEB7JGRhdGFOb2RlLT5wYXJlbnRzfSA+IDA7CisgICAgbXkgJGhhc1BhcmVu
dCA9ICRoYXNMZWdhY3lQYXJlbnQgfHwgJGhhc1JlYWxQYXJlbnQ7CisgICAgbXkgJHBhcmVudENs
YXNzTmFtZSA9IEdldFBhcmVudENsYXNzTmFtZSgkZGF0YU5vZGUpOworICAgIG15ICRwYXJlbnRH
T2JqVHlwZSA9IEdldFBhcmVudEdPYmpUeXBlKCRkYXRhTm9kZSk7CisgICAgbXkgJGludGVyZmFj
ZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CisKKyAgICAjIEFkZCB0aGUgZGVmYXVsdCBpbXBsIGhl
YWRlciB0ZW1wbGF0ZQorICAgIEBjUHJlZml4ID0gc3BsaXQoIlxyIiwgJGxpY2VuY2VUZW1wbGF0
ZSk7CisgICAgcHVzaChAY1ByZWZpeCwgIlxuIik7CisKKyAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJr
aXRtYXJzaGFsLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3sid2Via2l0cHJpdmF0ZS5oIn0g
PSAxOworICAgICRpbXBsSW5jbHVkZXN7IldlYktpdERPTUJpbmRpbmcuaCJ9ID0gMTsKKyAgICAk
aW1wbEluY2x1ZGVzeyJnb2JqZWN0L3dlYmtpdGRvbXN0cmluZ2NvbnZlcnQuaCJ9ID0gMTsKKyAg
ICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXQvJGNsYXNzTmFtZS5oIn0gPSAxOworICAgICRpbXBsSW5j
bHVkZXN7IndlYmtpdC8ke2NsYXNzTmFtZX1Qcml2YXRlLmgifSA9IDE7CisgICAgJGltcGxJbmNs
dWRlc3siJHtpbnRlcmZhY2VOYW1lfS5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7IkV4Y2Vw
dGlvbkNvZGUuaCJ9ID0gMTsKKworICAgICRoZHJJbmNsdWRlc3sid2Via2l0LyR7cGFyZW50Q2xh
c3NOYW1lfS5oIn0gPSAxOworCisgICAgaWYgKCRjbGFzc05hbWUgbmUgIldlYktpdERPTU5vZGUi
KSB7CisgICAgICAgIG15ICRjb252ZXJ0ZXIgPSA8PCAiRU9GIjsKK25hbWVzcGFjZSBXZWJLaXQg
eworICAgIAorZ3BvaW50ZXIga2l0KFdlYkNvcmU6OiRpbnRlcmZhY2VOYW1lKiBvYmopCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqICE9IDAsIDApOworCisgICAgaWYgKGdwb2ludGVy
IHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKKyAgICAgICAgcmV0dXJuIHJldDsKKwor
ICAgIHJldHVybiBET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwJHtpbnRlcmZh
Y2VOYW1lfShvYmopKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdCAvLworCitFT0YK
KyAgICBwdXNoKEBjQm9keSwgJGNvbnZlcnRlcik7CisgICAgfQorCisgICAgJG9iamVjdC0+R2Vu
ZXJhdGVIZWFkZXIoJGludGVyZmFjZU5hbWUsICRwYXJlbnRDbGFzc05hbWUpOworICAgICRvYmpl
Y3QtPkdlbmVyYXRlQ0ZpbGUoJGludGVyZmFjZU5hbWUsICRwYXJlbnRDbGFzc05hbWUsICRwYXJl
bnRHT2JqVHlwZSwgJGRhdGFOb2RlKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUVuZEhlYWRlcigp
OworICAgICRvYmplY3QtPkdlbmVyYXRlUHJpdmF0ZUhlYWRlcigkZGF0YU5vZGUpOworfQorCisj
IEludGVybmFsIGhlbHBlcgorc3ViIFdyaXRlRGF0YSB7CisgICAgbXkgKCRvYmplY3QsICRuYW1l
KSA9IEBfOworCisgICAgIyBXcml0ZSBwdWJsaWMgaGVhZGVyLgorICAgIG15ICRoZHJGTmFtZSA9
ICIkb3V0cHV0RGlyLyIgLiAkbmFtZSAuICIuaCI7CisgICAgb3BlbihIRUFERVIsICI+JGhkckZO
YW1lIikgb3IgZGllICJDb3VsZG4ndCBvcGVuIGZpbGUgJGhkckZOYW1lIjsKKworICAgIHByaW50
IEhFQURFUiBAaFByZWZpeDsKKyAgICBwcmludCBIRUFERVIgQGhQcmVmaXhHdWFyZDsKKyAgICBw
cmludCBIRUFERVIgIiNpbmNsdWRlIFwid2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaFwiXG4iOwor
ICAgIHByaW50IEhFQURFUiAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG4iOworICAgIHByaW50
IEhFQURFUiAiI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+XG4iOworICAgIHByaW50
IEhFQURFUiBtYXAgeyAiI2luY2x1ZGUgXCIkX1wiXG4iIH0gc29ydCBrZXlzKCVoZHJJbmNsdWRl
cyk7CisgICAgcHJpbnQgSEVBREVSICJcbiIgaWYga2V5cyglaGRySW5jbHVkZXMpOworICAgIHBy
aW50IEhFQURFUiAiXG4iOworICAgIHByaW50IEhFQURFUiBAaEJvZHlQcmU7CisgICAgcHJpbnQg
SEVBREVSIEBoQm9keTsKKworICAgIGNsb3NlKEhFQURFUik7CisKKyAgICAjIFdyaXRlIHRoZSBp
bXBsZW1lbnRhdGlvbiBzb3VyY2VzCisgICAgbXkgJGltcGxGaWxlTmFtZSA9ICIkb3V0cHV0RGly
LyIgLiAkbmFtZSAuICIuY3BwIjsKKyAgICBvcGVuKElNUEwsICI+JGltcGxGaWxlTmFtZSIpIG9y
IGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRpbXBsRmlsZU5hbWUiOworCisgICAgcHJpbnQgSU1Q
TCBAY1ByZWZpeDsKKyAgICBwcmludCBJTVBMICIjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cbiI7
CisgICAgcHJpbnQgSU1QTCAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG5cbiI7CisgICAgcHJpbnQg
SU1QTCAiI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD5cbiI7CisgICAgcHJpbnQgSU1QTCAiI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD5cbiI7CisgICAgcHJpbnQgSU1QTCBtYXAgeyAiI2luY2x1ZGUgXCIk
X1wiXG4iIH0gc29ydCBrZXlzKCVpbXBsSW5jbHVkZXMpOworICAgIHByaW50IElNUEwgIlxuIiBp
ZiBrZXlzKCVpbXBsSW5jbHVkZXMpOworICAgIHByaW50IElNUEwgQGNCb2R5OworCisgICAgcHJp
bnQgSU1QTCAiXG4iOworICAgIHByaW50IElNUEwgQGNCb2R5UHJpdjsKKworICAgIGNsb3NlKElN
UEwpOworCisgICAgJWltcGxJbmNsdWRlcyA9ICgpOworICAgICVoZHJJbmNsdWRlcyA9ICgpOwor
ICAgIEBoUHJlZml4ID0gKCk7CisgICAgQGhCb2R5ID0gKCk7CisKKyAgICBAY1ByZWZpeCA9ICgp
OworICAgIEBjQm9keSA9ICgpOworICAgIEBjQm9keVByaXYgPSAoKTsKK30KKworc3ViIEdlbmVy
YXRlSW50ZXJmYWNlIHsKKyAgICBteSAoJG9iamVjdCwgJGRhdGFOb2RlLCAkZGVmaW5lcykgPSBA
XzsKKyAgICBteSAkbmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKKworICAgICMgU2V0IHVwIHNvbWUg
Z2xvYmFsIHZhcmlhYmxlcworICAgICRjbGFzc05hbWUgPSBHZXRDbGFzc05hbWUoJGRhdGFOb2Rl
LT5uYW1lKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZSgkZGF0YU5vZGUpOworCisgICAgIyBXcml0
ZSBjaGFuZ2VzCisgICAgbXkgJGZuYW1lID0gIldlYktpdERPTV8iIC4gJG5hbWU7CisgICAgJGZu
YW1lID1+IHMvXy8vZzsKKyAgICAkb2JqZWN0LT5Xcml0ZURhdGEoJGZuYW1lKTsKK30KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMu
cGwgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMTc0MDYKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJz
LnBsCkBAIC0wLDAgKzEsNzcgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworIworIyBDb3B5cmlnaHQg
KEMpIDIwMDkgQWRhbSBEaW5nbGUgPGFkYW1AeW9yYmEub3JnPgorIworIyBUaGlzIGZpbGUgaXMg
cGFydCBvZiBXZWJLaXQKKyMgCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMgCisj
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMgCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWludCB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgCisK
K215ICRjbGFzc2xpc3QgPSA8U1RESU4+OworY2hvbXAoJGNsYXNzbGlzdCk7CitteSBAY2xhc3Nl
cyA9IHNwbGl0IC8gLywgJGNsYXNzbGlzdDsKK0BjbGFzc2VzID0gc29ydCBAY2xhc3NlczsKKwor
cHJpbnQgPDxFT0Y7CisvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdvYmplY3Qt
Z2VuZXJhdGUtaGVhZGVycy5wbC4gIERPIE5PVCBNT0RJRlkhCisgICAKKyAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworRU9GCisKK215ICRvdXRUeXBlID0gJEFS
R1ZbMF07CitteSAkaGVhZGVyOworaWYgKCRvdXRUeXBlIGVxICJkZWZpbmVzIikgeworICAgICRo
ZWFkZXIgPSAid2Via2l0ZG9tZGVmaW5lc19oIjsKK30gZWxzaWYgKCRvdXRUeXBlIGVxICJnZG9t
IikgeworICAgICRoZWFkZXIgPSAid2Via2l0ZG9tX2giOworfSBlbHNlIHsKKyAgICBkaWUgInVu
a25vd24gb3V0cHV0IHR5cGUiOworfQorCitwcmludCAiI2lmbmRlZiAke2hlYWRlcn1cbiI7Citw
cmludCAiI2RlZmluZSAke2hlYWRlcn1cbiI7CitwcmludCAiXG4iOworCitpZiAoJG91dFR5cGUg
ZXEgImRlZmluZXMiKSB7CisgICAgZm9yZWFjaCBteSAkY2xhc3MgKEBjbGFzc2VzKSB7CisgICAg
ICAgIHByaW50ICJ0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NJHtjbGFzc30gV2ViS2l0RE9NJHtj
bGFzc307XG4iOworICAgICAgICBwcmludCAidHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTSR7Y2xh
c3N9Q2xhc3MgV2ViS2l0RE9NJHtjbGFzc31DbGFzcztcbiI7CisgICAgICAgIHByaW50ICJcbiI7
CisgICAgfQorfSBlbHNpZiAoJG91dFR5cGUgZXEgImdkb20iKSB7CisgICAgZm9yZWFjaCBteSAk
Y2xhc3MgKEBjbGFzc2VzKSB7CisgICAgICAgIHByaW50ICIjaW5jbHVkZSA8d2Via2l0L1dlYktp
dERPTSR7Y2xhc3N9Lmg+XG4iOworICAgIH0KK30KKworcHJpbnQgIlxuIjsKK3ByaW50ICIjZW5k
aWZcbiI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBiL1dlYkNvcmUvZG9tL05v
ZGUuaWRsCmluZGV4IGM2Y2Q0YjkuLjE5NTQ2YmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05v
ZGUuaWRsCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuaWRsCkBAIC02MSw3ICs2MSw5IEBAIG1vZHVs
ZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgICAgcHJl
dmlvdXNTaWJsaW5nOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAg
ICBuZXh0U2libGluZzsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCAg
ICAgYXR0cmlidXRlczsKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSB8fCAhTEFOR1VB
R0VfR09CSkVDVAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgICAgICAgICBv
d25lckRvY3VtZW50OworI2VuZGlmCiAKICAgICAgICAgW09sZFN0eWxlT2JqQywgQ3VzdG9tXSBO
b2RlIGluc2VydEJlZm9yZShpbiBbUmV0dXJuXSBOb2RlIG5ld0NoaWxkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGUgcmVmQ2hpbGQpCkBA
IC0xMzIsNiArMTM0LDcgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmIC8qIGRlZmluZWQoTEFOR1VB
R0VfT0JKRUNUSVZFX0MpICovCiAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykg
fHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfR09CSkVDVCkg
fHwgIUxBTkdVQUdFX0dPQkpFQ1QKICAgICAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExpc3Rl
bmVyKGluIERPTVN0cmluZyB0eXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKQEAgLTE0MSw2ICsxNDQs
NyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVu
dCBldmVudCkKICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAjZW5kaWYKKyNl
bmRpZgogICAgIH07CiAKIH0KLS0gCjEuNi41LjIKCg==
</data>
<flag name="commit-queue"
          id="28731"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46466</attachid>
            <date>2010-01-13 08:21:58 -0800</date>
            <delta_ts>2010-02-02 05:53:38 -0800</delta_ts>
            <desc>gobjectdombindings.patch</desc>
            <filename>gobjectdombindings.patch</filename>
            <type>text/plain</type>
            <size>66240</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAzZjgyYjJhNjYxYTI4Y2M5YmE1YzJiOWVhNWExNmFkNzdiNjEwMTA4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDEzIEphbiAyMDEwIDEzOjE1OjUxICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wMS0x
MyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzLgoKICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgoKV2ViQ29yZToKCjIwMTAtMDEtMTMgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2Fs
aWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dU
S10gR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzM1OTAKCiAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhl
IEdPYmplY3QgRE9NIGJpbmRpbmdzLgoKICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAg
ICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcDogQWRkZWQuCiAgICAgICAg
KFdlYktpdDo6ZG9tT2JqZWN0cyk6CiAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6Omdl
dCk6CiAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dCk6CiAgICAgICAgKFdlYktp
dDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldCk6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlV3JhcHBl
cik6CiAgICAgICAgKFdlYktpdDo6a2l0KToKICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5oOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0
RE9NT2JqZWN0LmNwcDogQWRkZWQuCiAgICAgICAgKHdlYmtpdF9kb21fb2JqZWN0X2luaXQpOgog
ICAgICAgICh3ZWJraXRfZG9tX29iamVjdF9jbGFzc19pbml0KToKICAgICAgICAqIGJpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0Lmg6IEFkZGVkLgogICAgICAgICogYmluZGluZ3MvZ29i
amVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0Lmg6IEFkZGVkLgogICAgICAgICh3ZWJraXRfZG9t
X2dzdHJpbmdfY29udmVydCk6CiAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1n
ZW5lcmF0ZS1oZWFkZXJzLnBsOiBBZGRlZC4KICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKLS0tCiBD
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEg
KwogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDY0ICsrLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDM2ICsKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA5MiArKy0KIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5k
aW5nLmNwcCAgICAgIHwgICA5OSArKwogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TUJpbmRpbmcuaCAgICAgICAgfCAgIDU0ICsKIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJL
aXRET01PYmplY3QuY3BwICAgICAgIHwgICAyMyArCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NT2JqZWN0LmggICAgICAgICB8ICAgNTggKwogV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L3dlYmtpdGRvbXN0cmluZ2NvbnZlcnQuaCAgfCAgIDM3ICsKIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAgIHwgMTEwMiArKysrKysrKysrKysrKysr
KysrKwogLi4uL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsICAg
fCAgIDc3ICsrCiBXZWJDb3JlL2RvbS9Ob2RlLmlkbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDQgKwogMTIgZmlsZXMgY2hhbmdlZCwgMTY1NCBpbnNlcnRpb25zKCspLCAzIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01CaW5kaW5nLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01CaW5kaW5nLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0LmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdP
YmplY3QucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29i
amVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IDM5MTk2ZTAuLjNkYzI5MDIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMS0xMyAgWGFuIExvcGV6ICA8eGxvcGV6
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHRoZSBHT2JqZWN0IERPTSBiaW5kaW5ncy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
CiAyMDEwLTAxLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05V
bWFrZWZpbGUuYW0KaW5kZXggZjlhZDIxYy4uNGNmZWJlNSAxMDA2NDQKLS0tIGEvR05VbWFrZWZp
bGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTM1LDYgKzM1LDcgQEAgRElTVENIRUNLX0NP
TkZJR1VSRV9GTEFHUyA9IFwKIAogIyBEaXJlY3RvcnkgZm9yIGF1dG9nZW5lcmF0ZWQgc291cmNl
cwogR0VOU09VUkNFUyA6PSAkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMKK0dFTlNPVVJD
RVNXRUJLSVRET00gOj0gJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdAogR0VO
UFJPR1JBTVMgOj0gJCh0b3BfYnVpbGRkaXIpL1Byb2dyYW1zCiAKICMgU2NyaXB0IGZvciBjcmVh
dGluZyBoYXNoIHRhYmxlcwpAQCAtODksNiArOTAsMTEgQEAgQ0xFQU5GSUxFUyA6PQogRElTVENM
RUFORklMRVMgOj0KIE1BSU5UQUlORVJDTEVBTkZJTEVTIDo9CiAKK3dlYmNvcmVndGtfY3BwZmxh
Z3MgKz0gXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdCBcCisJLUkk
KHNyY2RpcikvV2ViQ29yZS9iaW5kaW5ncyBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0CisKICMgQ0ZMQUdTL0NYWEZMQUdTIHVzZWQgYnkgV2ViQ29yZSBhbmQgV2ViS2l0
CiAjCiAjIGd0aysucGMgYWxyZWFkeSBpbmNsdWRlIGdsaWIsIGNhaXJvLCBmcmVldHlwZSBhbmQg
cGFuZ28gQ0ZMQUdTCkBAIC0yMzYsNiArMjQyLDcgQEAgbGlid2Via2l0XzFfMF9sYV9MSUJBREQg
PSBcCiAJLWxwdGhyZWFkIFwKIAlsaWJKYXZhU2NyaXB0Q29yZS5sYSBcCiAJbGliV2ViQ29yZUpT
LmxhIFwKKwlsaWJnZG9tLmxhIFwKIAkkKHdlYmNvcmVfbGRmbGFncykgXAogCSQoQ0FJUk9fTElC
UykgXAogCSQoQ09WRVJBR0VfTERGTEFHUykgXApAQCAtMjU3LDYgKzI2NCwxMCBAQCBsaWJ3ZWJr
aXRfMV8wX2xhX0xJQkFERCA9IFwKIAkkKFVOSUNPREVfTElCUykgXAogCSQoWFRfTElCUykKIAor
bGliZ2RvbV9sYWRpciA9ICQocHJlZml4KS9pbmNsdWRlL3dlYmtpdC0xLjAvd2Via2l0ZG9tCits
aWJnZG9tX2xhX0hFQURFUlMgPSBcCisJJChsaWJnZG9tX2hfYXBpKQorCiAjCiAjIEV4dHJhIGNo
ZWNrcyBhbmQgZmxhZ3MKIGdsb2JhbF9jcHBmbGFncyArPSBcCkBAIC0zMzYsNiArMzQ3LDcgQEAg
d2Via2l0Z3RrX2hfYXBpICs9IFwKIAogd2Via2l0Z3RrX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGVudW10eXBlcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbWVudW10eXBlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdG1hcnNoYWwuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRtYXJzaGFsLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGVudW10eXBlcy5oCkBAIC0zODksNyArNDAxLDggQEAgd2Via2l0Z3RrX2NwcGZsYWdzICs9
IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrIFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL3dlYmtpdCBcCi0JLUkkKHRv
cF9idWlsZGRpcikvV2ViS2l0L2d0ay93ZWJraXQKKwktSSQodG9wX2J1aWxkZGlyKS9XZWJLaXQv
Z3RrL3dlYmtpdCBcCisJLUkkKEdFTlNPVVJDRVNXRUJLSVRET00pCiAKIHdlYmtpdGd0a19jbGVh
bmZpbGVzICs9IFwKIAkkKHRvcF9idWlsZGRpcikvc3RhbXAtd2Via2l0bWFyc2hhbC5jcHAgXApA
QCAtNTEwLDYgKzUyMyw0OSBAQCBEZXJpdmVkU291cmNlcy93ZWJraXRlbnVtdHlwZXMuY3BwOiAk
KHdlYmtpdGd0a19oX2FwaSkgR05VbWFrZWZpbGUKIAkmJiBjcCB4Z2VuLWd0YyAkQCBcCiAJJiYg
cm0gLWYgeGdlbi1ndGMKIAorV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG9tZW51bXR5cGVzLmg6
IHN0YW1wLXdlYmtpdGRvbWVudW10eXBlcy5oCisJQHRydWUKK3N0YW1wLXdlYmtpdGRvbWVudW10
eXBlcy5oOiAkKGxpYmdkb21faF9hcGkpIEdOVW1ha2VmaWxlCisJJChBTV9WX0dFTilnbGliLW1r
ZW51bXMgXAorCQkJLS1maGVhZCAiI2lmbmRlZiBXRUJLSVRfRE9NX0VOVU1fVFlQRVNfSFxuIiBc
CisJCQktLWZoZWFkICIjZGVmaW5lIFdFQktJVF9ET01fRU5VTV9UWVBFU19IXG5cbiIgXAorCQkJ
LS1maGVhZCAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG5cbiIgXAorCQkJLS1maGVhZCAiR19C
RUdJTl9ERUNMU1xuXG4iIFwKKwkJCS0tZnRhaWwgIkdfRU5EX0RFQ0xTXG5cbiIgXAorCQkJLS1m
dGFpbCAiI2VuZGlmXG4iIFwKKwkJCS0tZnByb2QgIiNpbmNsdWRlIDx3ZWJraXQvQGJhc2VuYW1l
QD5cblxuIiBcCisJCQktLWVwcm9kICIjZGVmaW5lIFdFQktJVF9ET01fVFlQRV9ARU5VTVNIT1JU
QCBAZW51bV9uYW1lQF9nZXRfdHlwZSgpXG5cbiIgXAorCQkJLS1lcHJvZCAiV0VCS0lUX0FQSSBH
VHlwZVxuQGVudW1fbmFtZUBfZ2V0X3R5cGUodm9pZCk7blxuIiBcCisJCQkkKGxpYmdkb21faF9h
cGkpIHwgXAorCQlzZWQgJ3Msd2ViX2tpdCx3ZWJraXRfZG9tLCcgfCBcCisJCXNlZCAncyxXRUJL
SVRfRE9NX1RZUEVfS0lULFdFQktJVF9ET01fVFlQRSwnIFwKKwkJPiB4Z2VuLWNndGggXAorCSYm
IChjbXAgLXMgeGdlbi1jZ3RoIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvbWVudW10eXBlcy5o
IHx8IGNwIHhnZW4tY2d0aCBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb21lbnVtdHlwZXMuaCkg
XAorCSYmIHJtIC1mIHhnZW4tY2d0aCBcCisJJiYgZWNobyB0aW1lc3RhbXAgPiAkKEBGKQorCitE
ZXJpdmVkU291cmNlcy93ZWJraXRkb21lbnVtdHlwZXMuY3BwOiAkKHRvcF9idWlsZGRpcikvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZG9tZW51bXR5cGVzLmggJChsaWJnZG9tX2hfYXBpKSBHTlVt
YWtlZmlsZQorCSQoQU1fVl9HRU4pZ2xpYi1ta2VudW1zIFwKKwkJCS0tZmhlYWQgIiNpbmNsdWRl
IDxjb25maWcuaD5cbiIgXAorCQkJLS1maGVhZCAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG4i
IFwKKwkJCS0tZmhlYWQgIiNpbmNsdWRlIFwiJCh0b3BfYnVpbGRkaXIpL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRvbWVudW10eXBlcy5oXCJcblxuIiBcCisJCQktLWZoZWFkICJleHRlcm4gXCJD
XCIge1xuXG4iIFwKKwkJCS0tZnByb2QgIlxuLyogZW51bWVyYXRpb25zIGZyb20gXCJAZmlsZW5h
bWVAXCIgKi8iIFwKKwkJCS0tdmhlYWQgInN0YXRpYyBjb25zdCBHQFR5cGVAVmFsdWUgX0BlbnVt
X25hbWVAX3ZhbHVlc10gPSB7IiBcCisJCQktLXZwcm9kICIgICAgeyBAVkFMVUVOQU1FQCwgXCJA
VkFMVUVOQU1FQFwiLCBcIkB2YWx1ZW5pY2tAXCIgfSwiIFwKKwkJCS0tdnRhaWwgIiAgICB7IDAs
IE5VTEwsIE5VTEwgfVxufTtcblxuIiBcCisJCQktLXZ0YWlsICJHVHlwZSBAZW51bV9uYW1lQF9n
ZXRfdHlwZSh2b2lkKVxue1xuIiBcCisJCQktLXZ0YWlsICIgICAgc3RhdGljIEdUeXBlIHR5cGUg
PSAwO1xuXG4iIFwKKwkJCS0tdnRhaWwgIiAgICBpZiAoIXR5cGUpXG4iIFwKKwkJCS0tdnRhaWwg
IiAgICAgICAgdHlwZSA9IGdfQHR5cGVAX3JlZ2lzdGVyX3N0YXRpYyhcIkBFbnVtTmFtZUBcIiwg
X0BlbnVtX25hbWVAX3ZhbHVlcyk7XG5cbiIgXAorCQkJLS12dGFpbCAiICAgIHJldHVybiB0eXBl
O1xufVxuXG4iIFwKKwkJCS0tZnRhaWwgIn1cbiIgXAorCQkkKGxpYmdkb21faF9hcGkpIHwgXAor
CQlzZWQgJ3Msd2ViX2tpdCx3ZWJraXRkb20sJyBcCisJCT4geGdlbi1jZ3RjIFwKKwkmJiBjcCB4
Z2VuLWNndGMgJEAgXAorCSYmIHJtIC1mIHhnZW4tY2d0YworCiAjIEZpbGVzIHRoYXQgd2lsbCBi
ZSBkaXN0cmlidXRlZAogRVhUUkFfRElTVCArPSBcCiAJJChzcmNkaXIpL2d0ay1kb2MubWFrZSBc
CkBAIC01NTAsNiArNjA2LDkgQEAgd2Via2l0X3Rlc3RzX2NmbGFncyA9IFwKIAktSSQoc3JjZGly
KS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvV2ViS2l0
L2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ayBcCisJLUkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMgXAorCS1JJCh0b3Bfc3JjZGlyKS9XZWJDb3JlL2JpbmRpbmdzIFwK
KwktSSQodG9wX3NyY2RpcikvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0IFwKIAkkKGdsb2JhbF9j
ZmxhZ3MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCkBAIC02NzMsNyAr
NzMyLDggQEAgQlVJTFRfU09VUkNFUyArPSBcCiAJJCh3ZWJjb3JlX2J1aWx0X3NvdXJjZXMpIFwK
IAkkKHdlYmNvcmVfYnVpbHRfbm9zb3VyY2VzKSBcCiAJJCh3ZWJraXRndGtfYnVpbHRfc291cmNl
cykgXAotCSQod2Via2l0Z3RrX2J1aWx0X25vc291cmNlcykKKwkkKHdlYmtpdGd0a19idWlsdF9u
b3NvdXJjZXMpIFwKKwkkKGdkb21fYnVpbHRfbm9zb3VyY2VzKQogCiAjIFByb2plY3Qtd2lkZSBj
bGVhbiBydWxlcwogIyBGaWxlcyB0aGF0IHdpbGwgYmUgY2xlYW5lZApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNjA4MDZjLi40NTJiMzli
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMiw2ICsyLDQyIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAK
KyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgQWRkIGluaXRpYWwg
c3VwcG9ydCBmb3IgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmRvbU9iamVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpET01PYmplY3RDYWNoZTo6Z2V0KToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQpOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdF9kb21fb2JqZWN0X2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9vYmplY3RfY2xh
c3NfaW5pdCk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaDog
QWRkZWQuCisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb21zdHJpbmdjb252ZXJ0
Lmg6IEFkZGVkLgorICAgICAgICAod2Via2l0X2RvbV9nc3RyaW5nX2NvbnZlcnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vTm9kZS5pZGw6CisKKzIwMTAtMDEtMTMgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5lZWQgdG8gY2hlY2sgdHdpY2UgaWYgdGhlcmUncyBhbiBpbnB1dCBmaWxl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDoKKwor
MjAxMC0wMS0xMyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVuYW1lIEZFQVRVUkVfREVGSU5F
U19KQVZBU0NSSVBUIHRvIEZFQVRVUkVfREVGSU5FUyBhbmQgcmVtb3ZlCiAgICAgICAgIHRoZSBo
YXJkY29kZWQgTEFOR1VBR0VfSkFWQVNDUklQVD0xLCBpbiBwcmVwYXJhdGlvbiBmb3IgaXRzIHVz
ZSBieQogICAgICAgICB0aGUgR09iamVjdCBET00gYmluZGluZ3MuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAwY2UyZWRm
Li5jNThiM2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KQEAgLTksOSArOSwxMyBAQCBXRUJDT1JFX0NTU19QUk9QRVJUWV9O
QU1FUyA6PSAkKFdlYkNvcmUpL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCiBXRUJDT1JFX0NTU19W
QUxVRV9LRVlXT1JEUyA6PSAkKFdlYkNvcmUpL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCiAKIHdl
YmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1JJChzcmNkaXIpL1dlYktpdC9ndGsgXAorCS1JJChzcmNk
aXIpL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQgXAorCS1JJChzcmNkaXIpL1dlYktpdC9ndGsv
d2Via2l0IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvYmluZGluZ3MvanMgXAorCS1JJChz
cmNkaXIpL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdCBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9i
cmlkZ2UgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvYnJpZGdlL2MgXAogCS1JJChzcmNkaXIpL1dl
YkNvcmUvY3NzIFwKQEAgLTczLDcgKzc3LDggQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiB3
ZWJjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvRG9jVHlwZVN0cmlu
Z3MuY3BwIFwKIAlEZXJpdmVkU291cmNlcy90b2tlbml6ZXIuY3BwIFwKLQlEZXJpdmVkU291cmNl
cy9Db2xvckRhdGEuYworCURlcml2ZWRTb3VyY2VzL0NvbG9yRGF0YS5jIFwKKwlEZXJpdmVkU291
cmNlcy93ZWJraXQvd2Via2l0ZG9tZHVtbXkuYwogCiB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0g
XAogCURlcml2ZWRTb3VyY2VzL0NTU0dyYW1tYXIuY3BwIFwKQEAgLTI5NCw2ICsyOTksMTQgQEAg
SURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3htbC9YTUxTZXJpYWxpemVyLmlkbCBcCiAJV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5pZGwKIAord2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlX
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tc3RyaW5nY29udmVydC5oIFwKKwlXZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5jcHAgXAorCVdlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01PYmplY3QuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NT2JqZWN0LmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmpl
Y3RQcml2YXRlLmgKKwogd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL1dlYkNvcmVQcmVm
aXguaCBcCiAgICAgICAgIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBc
CkBAIC0zNTY3LDYgKzM1ODAsODIgQEAgbGliV2ViQ29yZUpTLmxhOiAkKGxpYldlYkNvcmVKU19v
YmplY3RzKQogCSQoQ1hYTElOSykgJChsaWJXZWJDb3JlSlNfb2JqZWN0cykgJChMSUJTKQogCiAK
K0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb21kdW1teS5jOgorCWVjaG8gPiAkQAorCisj
IEJlY2F1c2UgV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5oIGlzIHN0
YXRpYyBzb3VyY2UgYnV0IGlzIGFsc28gYSBkaXN0cmlidXRlZCBoZWFkZXIKKyMgcmVxdWlyZWQg
Ynkgb3RoZXIgZGlzdHJpYnV0ZWQgaGVhZGVycyAoYm90aCBzdGF0aWMgYW5kIGF1dG8tZ2VuZXJh
dGVkKSwgbmVlZCB0byBtb3ZlIHRoaXMgdG8gdGhlCisjIERlcml2ZWRTb3VyY2VzL3dlYmtpdCBk
aXJlY3RvcnkuICBUaGUgcmVhc29uIGlzIHRoYXQgd2Ugd2FudCBhbGwgaGVhZGVyIGZpbGVzIGRp
c3RyaWJ1dGVkIGluIHRoZQorIyBpbmNsdWRlL3dlYmtpdC14Lnkvd2Via2l0IGRpcmVjdG9yeSwg
YnV0IGRvIG5vdCB3YW50IHRvIG5hbWUgdGhlIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdCBkaXJl
Y3RvcnkgCisjICJ3ZWJraXQiLCBhcyB0aGF0J3MgYSBiaXQgcHJlc3VtcHR1b3VzIGZvciBhIEdU
SyBiaW5kaW5nLgorJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T01PYmplY3QuaDoKKwljcCAtZiAkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
T2JqZWN0LmggJEAKKworIyBTdGFydCB3aXRoIGEgc3Vic2V0IG9mIGFsbCB0aGUgRE9NIGJpbmRp
bmdzCitJRExfQklORElOR1NfR0RPTSA6PSBcCisJV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwgXAor
CVdlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCisJV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNs
YXJhdGlvbi5pZGwgXAorCVdlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsIFwKKwlXZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5pZGwgXAorCVdlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwgXAorCVdlYkNv
cmUvY3NzL1N0eWxlU2hlZXQuaWRsIFwKKwlXZWJDb3JlL2RvbS9BdHRyLmlkbCBcCisJV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwgXAorCVdl
YkNvcmUvZG9tL05vZGUuaWRsIFwKKwlXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwKKworIyBBbGwg
Y2xhc3NlcyBhdXRvZ2VuZXJhdGVkIGluIHRoZSBHT2JqZWN0IERPTSBiaW5kaW5ncworR0RPTV9B
VVRPX0NMQVNTRVMgOj0gJChiYXNlbmFtZSAkKG5vdGRpciAkKElETF9CSU5ESU5HU19HRE9NKSkp
CisKKyMgVGhlIGNsYXNzZXMgaW1wbGVtZW50ZWQgbWFudWFsbHkKK0dET01fRklYRURfQ0xBU1NF
UyA6PSBPYmplY3QKKworR0RPTV9DTEFTU0VTIDo9ICQoR0RPTV9BVVRPX0NMQVNTRVMpICQoR0RP
TV9GSVhFRF9DTEFTU0VTKQorCisjIEZpbHRlciBvdXQgU1ZHIGZvciBub3cKK0ZFQVRVUkVfREVG
SU5FU19HRE9NIDo9ICQoZmlsdGVyLW91dCBFTkFCTEUtU1ZHJSwgJChGRUFUVVJFX0RFRklORVMp
KQorCisjIEF1dG9nZW5lcmF0ZWQgaGVhZGVyIGZpbGVzCitHRE9NX0hFQURFUlNfQlVJTFQgOj0g
JChwYXRzdWJzdCAlLERlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmgsJChHRE9NX0FV
VE9fQ0xBU1NFUykpIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L3dl
YmtpdGRvbS5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L3dlYmtp
dGRvbWRlZmluZXMuaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9X
ZWJLaXRET01PYmplY3QuaAorCisjIEF1dG9nZW5lcmF0ZWQgc291cmNlIGZpbGVzCitHRE9NX1NP
VVJDRVNfQlVJTFQgOj0gJChwYXRzdWJzdCAlLERlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T00lLmNwcCwkKEdET01fQVVUT19DTEFTU0VTKSkKKworIyBIYW5kLWNvZGVkIGhlYWRlciBmaWxl
cworR0RPTV9IRUFERVJTX0ZJWEVEIDo9ICQocGF0c3Vic3QgJSwkKHNyY2RpcikvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTSUuaCwkKEdET01fRklYRURfQ0xBU1NFUykpCisKKyMg
QWxsIGhlYWRlciBmaWxlcyB0aGF0IGdldCBpbnN0YWxsZWQKK2xpYmdkb21faF9hcGkgOj0gJChH
RE9NX0hFQURFUlNfRklYRUQpICQoR0RPTV9IRUFERVJTX0JVSUxUKQorCitEZXJpdmVkU291cmNl
cy93ZWJraXQvd2Via2l0ZG9tLmg6ICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0
LWdlbmVyYXRlLWhlYWRlcnMucGwKKwllY2hvICQoR0RPTV9DTEFTU0VTKSB8ICQoUEVSTCkgJDwg
Z2RvbSA+ICRACisKK0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb21kZWZpbmVzLmg6ICQo
V2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwgJChJ
RExfQklORElOR1NfR0RPTSkKKwllY2hvICQoR0RPTV9DTEFTU0VTKSB8ICQoUEVSTCkgJDwgZGVm
aW5lcyA+ICRACisKK0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmg6IERlcml2ZWRT
b3VyY2VzL3dlYmtpdC9XZWJLaXRET00lLmNwcDsKKworRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dl
YktpdERPTSUuY3BwOiAlLmlkbCAkKFNDUklQVFNfQklORElOR1MpICQoV2ViQ29yZSkvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorCSQoQU1fVl9HRU4pJChQRVJMKSAt
SSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MucGwgLS1pbmNsdWRlICQoV2ViQ29yZSkvZG9tIC0taW5jbHVkZSAk
KFdlYkNvcmUpL2h0bWwgLS1pbmNsdWRlICQoV2ViQ29yZSkvY3NzIC0taW5jbHVkZSAkKFdlYkNv
cmUpL3BhZ2UgLS1pbmNsdWRlICQoV2ViQ29yZSkveG1sIC0taW5jbHVkZSAkKFdlYkNvcmUpL3N2
ZyAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTV0VCS0lURE9NKSIgLS1kZWZpbmVzICJMQU5HVUFH
RV9HT0JKRUNUPTEgJChGRUFUVVJFX0RFRklORVNfR0RPTSkiIC0tZ2VuZXJhdG9yIEdPYmplY3Qg
JDwKKworZ2RvbV9idWlsdF9ub3NvdXJjZXMgOj0gJChHRE9NX0hFQURFUlNfQlVJTFQpICQoR0RP
TV9TT1VSQ0VTX0JVSUxUKQorCitsaWJnZG9tX29iamVjdHMgOj0gJChzdWJzdCAuY3BwLC5sbywk
KEdET01fU09VUkNFU19CVUlMVCkpCisKKy1pbmNsdWRlIFdlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC8kKERFUERJUikvJS5QbG8KKy1pbmNsdWRlIERlcml2ZWRTb3VyY2VzL3dlYmtpdC8kKERFUERJ
UikvJS5QbG8KKworJChsaWJnZG9tX29iamVjdHMpOiBBTV9DUFBGTEFHUys9JChsaWJ3ZWJraXRf
MV8wX2xhX0NQUEZMQUdTKQorJChsaWJnZG9tX29iamVjdHMpOiBBTV9DWFhGTEFHUys9JChsaWJ3
ZWJraXRfMV8wX2xhX0NYWEZMQUdTKQorCitsaWJnZG9tLmxhOiAkKGxpYmdkb21fb2JqZWN0cykK
KwkkKENYWExJTkspICQobGliZ2RvbV9vYmplY3RzKSAkKExJQlMpCisKIG5vaW5zdF9IRUFERVJT
ICs9IFwKIAkkKElETF9CSU5ESU5HUykKIApAQCAtMzU4Miw2ICszNjcxLDcgQEAgd2ViY29yZV9k
aXN0ICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSW5GaWxlc1BhcnNlci5wbSBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIFwKKwlXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gXAogCVdlYkNvcmUvY3NzL2h0bWwuY3Nz
IFwKIAlXZWJDb3JlL2Nzcy9tYXRobWwuY3NzIFwKIAlXZWJDb3JlL2Nzcy9xdWlya3MuY3NzIFwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGRjNmU2Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwCkBAIC0wLDAgKzEs
OTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
NyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgg
THVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDggTWFydGluIFNvdG8gPHNvdG9AZnJlZWRlc2t0b3Aub3JnPgorICogIENvcHly
aWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworLy8gZ2NjIDMueCBjYW4ndCBoYW5kbGUgaW5jbHVkaW5nIHRoZSBIYXNoTWFwIHBvaW50ZXIg
c3BlY2lhbGl6YXRpb24KKy8vIGluIHRoaXMgZmlsZQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYg
IWRlZmluZWQgX19HTElCQ1hYX18gLy8gbGVzcyB0aGFuIGdjYyAzLjQKKyNkZWZpbmUgSEFTSF9N
QVBfUFRSX1NQRUNfV09SS0FST1VORCAxCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJXZWJLaXRET01Ob2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKKworLy8gRE9NT2JqZWN0Q2FjaGUKKwordHlwZWRl
ZiBIYXNoTWFwPHZvaWQqLCBncG9pbnRlcj4gRE9NT2JqZWN0TWFwOworCitzdGF0aWMgRE9NT2Jq
ZWN0TWFwJiBkb21PYmplY3RzKCkKK3sKKyAgICBzdGF0aWMgRE9NT2JqZWN0TWFwIHN0YXRpY0RP
TU9iamVjdHM7CisgICAgcmV0dXJuIHN0YXRpY0RPTU9iamVjdHM7Cit9CisKK2dwb2ludGVyIERP
TU9iamVjdENhY2hlOjpnZXQodm9pZCogb2JqZWN0SGFuZGxlKQoreworICAgIHJldHVybiBkb21P
YmplY3RzKCkuZ2V0KG9iamVjdEhhbmRsZSk7Cit9CisKK2dwb2ludGVyIERPTU9iamVjdENhY2hl
OjpwdXQodm9pZCogb2JqZWN0SGFuZGxlLCBncG9pbnRlciB3cmFwcGVyKQoreworICAgIGRvbU9i
amVjdHMoKS5zZXQob2JqZWN0SGFuZGxlLCB3cmFwcGVyKTsKKyAgICByZXR1cm4gd3JhcHBlcjsK
K30KKwordm9pZCBET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHZvaWQqIG9iamVjdEhhbmRsZSkKK3sK
KyAgICBkb21PYmplY3RzKCkudGFrZShvYmplY3RIYW5kbGUpOworfQorCisvLyBraXQgbWV0aG9k
cworCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlV3JhcHBlcihOb2RlKiBub2RlKQoreworICAgIEFT
U0VSVChub2RlKTsKKyAgICBBU1NFUlQoIVNjcmlwdEludGVycHJldGVyOjpnZXRET01PYmplY3Qo
bm9kZSkpOworCisgICAgZ3BvaW50ZXIgcmV0ID0gMDsKKworICAgIHN3aXRjaCAobm9kZS0+bm9k
ZVR5cGUoKSkgeworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldCA9IHdyYXBOb2RlKG5vZGUpOwor
ICAgIH0KKworICAgIHJldHVybiBET01PYmplY3RDYWNoZTo6cHV0KG5vZGUsIHJldCk7Cit9CisK
K2dwb2ludGVyIGtpdChOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG5vZGUpOwor
ICAgIGlmIChyZXQpCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcihub2RlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wMjViZGJhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTUJpbmRpbmcuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdl
YmtpdC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVp
Z2h0b24gPGxrY2xAbGtjbC5uZXQ+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE1hcnRpbiBTb3Rv
IDxzb3RvQGZyZWVkZXNrdG9wLm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMu
TC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViS2l0RE9NQmlu
ZGluZ19oCisjZGVmaW5lIFdlYktpdERPTUJpbmRpbmdfaAorCisjaW5jbHVkZSAiRXZlbnQuaCIK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJX
ZWJLaXRET01Ob2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXRv
bWljU3RyaW5nOworY2xhc3MgRXZlbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEtVUkw7CitjbGFz
cyBOb2RlOworY2xhc3MgU3RyaW5nOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2dwb2ludGVyIGtpdChXZWJDb3JlOjpOb2RlKiBub2RlKTsKKworY2xhc3Mg
RE9NT2JqZWN0Q2FjaGUgeworcHVibGljOgorICAgIHN0YXRpYyBncG9pbnRlciBnZXQodm9pZCog
b2JqZWN0SGFuZGxlKTsKKyAgICBzdGF0aWMgZ3BvaW50ZXIgcHV0KHZvaWQqIG9iamVjdEhhbmRs
ZSwgZ3BvaW50ZXIgd3JhcHBlcik7CisgICAgc3RhdGljIHZvaWQgZm9yZ2V0KHZvaWQqIG9iamVj
dEhhbmRsZSk7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJLaXRE
T01CaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRE
T01PYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM4YTg3NAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwCkBA
IC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTHVrZSBLZW5uZXRoIENh
c3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBNYXJ0
aW4gU290byA8c290b0BmcmVlZGVza3RvcC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KKyAqLworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdERPTU9iamVjdC5oIgorCisjaW5jbHVkZSAiZ2xpYi1vYmpl
Y3QuaCIKKyNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCisKK0dfREVGSU5FX1RZUEUoV2Vi
S2l0RE9NT2JqZWN0LCB3ZWJraXRfZG9tX29iamVjdCwgR19UWVBFX09CSkVDVCk7CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2luaXQoV2ViS2l0RE9NT2JqZWN0KiBvYmplY3QpCit7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2NsYXNzX2luaXQoV2ViS2l0RE9N
T2JqZWN0Q2xhc3MqIGtsYXNzKQoreworfQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmggYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk5YzU3
YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01P
YmplY3QuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEx1a2Ug
S2VubmV0aCBDYXNzb24gTGVpZ2h0b24gPGxrY2xAbGtjbC5uZXQ+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTWFydGluIFNvdG8gPHNvdG9AZnJlZWRlc2t0b3Aub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKworI2lmbmRlZiBX
ZWJLaXRET01PYmplY3RfaAorI2RlZmluZSBXZWJLaXRET01PYmplY3RfaAorCisjaW5jbHVkZSAi
Z2xpYi1vYmplY3QuaCIKKyNpbmNsdWRlICJ3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oIgorI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9ET01fT0JKRUNUICAgICAgICAgICAgKHdlYmtpdF9kb21fb2JqZWN0X2dl
dF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fT0JKRUNUKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9PQkpFQ1QsIFdl
YktpdERPTU9iamVjdCkpCisjZGVmaW5lIFdFQktJVF9ET01fT0JKRUNUX0NMQVNTKGtsYXNzKSAg
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9PQkpF
Q1QsIFdlYktpdERPTU9iamVjdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0RPTV9PQkpFQ1Qo
b2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZ
UEVfRE9NX09CSkVDVCkpCisjZGVmaW5lIFdFQktJVF9JU19ET01fT0JKRUNUX0NMQVNTKGtsYXNz
KSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9PQkpF
Q1QpKQorI2RlZmluZSBXRUJLSVRfRE9NX09CSkVDVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9ET01fT0JKRUNULCBXZWJLaXRE
T01PYmplY3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01PYmplY3RQcml2YXRl
IFdlYktpdERPTU9iamVjdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0RE9NT2JqZWN0IHsKKyAg
ICBHT2JqZWN0IHBhcmVudEluc3RhbmNlOworCisgICAgZ3BvaW50ZXIgY29yZU9iamVjdDsKK307
CisKK3N0cnVjdCBfV2ViS2l0RE9NT2JqZWN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJl
bnRDbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9kb21fb2JqZWN0X2dldF90
eXBlKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0RE9NT2JqZWN0X2gg
Ki8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb21zdHJpbmdj
b252ZXJ0LmggYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tc3RyaW5nY29udmVy
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZWExN2IKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tc3RyaW5nY29udmVy
dC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTHVrZSBLZW5u
ZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworCisjaWZuZGVmIHdlYmtpdGRvbXN0
cmluZ2NvbnZlcnRfaAorI2RlZmluZSB3ZWJraXRkb21zdHJpbmdjb252ZXJ0X2gKKworLyogY29u
dmVuaWVuY2UgZnVuY3Rpb25zIGZvciBjb252ZXJ0aW5nIHZhcmlvdXMgd2Via2l0IHN0cmluZyB0
eXBlcyBpbnRvIGEgdXRmIGdsaWIgc3RyaW5nICovCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcu
aCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAidW5pY29kZS91c3RyaW5nLmgiCisKK2lubGluZSBj
aGFyICogZG9tU3RyaW5nQ29udmVydChXZWJDb3JlOjpTdHJpbmcgY29uc3QmIHMpIHsgcmV0dXJu
IGdfc3RyZHVwKHMudXRmOCgpLmRhdGEoKSk7IH0KK2lubGluZSBjaGFyICogZG9tU3RyaW5nQ29u
dmVydChXZWJDb3JlOjpLVVJMIGNvbnN0JiBzKSB7IHJldHVybiBnX3N0cmR1cChzLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOyB9CitpbmxpbmUgY2hhciAqIGRvbVN0cmluZ0NvbnZlcnQoY29uc3Qg
SlNDOjpVU3RyaW5nJiBzKSB7IHJldHVybiBnX3N0cmR1cChzLlVURjhTdHJpbmcoKS5jX3N0cigp
KTsgfQoraW5saW5lIGNoYXIgKiBkb21TdHJpbmdDb252ZXJ0KFdlYkNvcmU6OkF0b21pY1N0cmlu
ZyBjb25zdCYgcykgeyByZXR1cm4gZ19zdHJkdXAocy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsg
fQorCisjZW5kaWYgLyogd2Via2l0ZG9tc3RyaW5nY29udmVydF9oICovCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkMzhlZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAtMCwwICsxLDExMDIg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0b24gPGxr
Y2xAbGtjbC5uZXQ+CisjIENvcHlyaWdodCAoQykgMjAwOCBNYXJ0aW4gU290byA8c290b0BmcmVl
ZGVza3RvcC5vcmc+CisjIENvcHlyaWdodCAoQykgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgQWRhbSBEaW5nbGUgPGFkYW1AeW9yYmEub3JnPgor
IyBDb3B5cmlnaHQgKEMpIDIwMDkgSmltIE5lbHNvbiA8amltQHlvcmJhLm9yZz4KKyMgQ29weXJp
Z2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisj
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyMgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisK
K3BhY2thZ2UgQ29kZUdlbmVyYXRvckdPYmplY3Q7CisKKyMgR2xvYmFsIFZhcmlhYmxlcworbXkg
JWltcGxJbmNsdWRlcyA9ICgpOworbXkgJWhkckluY2x1ZGVzID0gKCk7CisKK215ICRjbGFzc05h
bWUgPSAiIjsKKworIyBEZWZhdWx0IGNvbnN0cnVjdG9yCitzdWIgbmV3IHsKKyAgICBteSAkb2Jq
ZWN0ID0gc2hpZnQ7CisgICAgbXkgJHJlZmVyZW5jZSA9IHsgfTsKKworICAgICRjb2RlR2VuZXJh
dG9yID0gc2hpZnQ7CisgICAgJG91dHB1dERpciA9IHNoaWZ0OworICAgIG1rZGlyICRvdXRwdXRE
aXI7CisKKyAgICBibGVzcygkcmVmZXJlbmNlLCAkb2JqZWN0KTsKK30KKworc3ViIGZpbmlzaCB7
Cit9CisKK215ICRsaWNlbmNlVGVtcGxhdGUgPSA8PCAiRU9GIjsKKy8qCisgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KK0VPRgorCitzdWIgR2VuZXJhdGVNb2R1bGUgeworfQorCitzdWIgR2V0UGFyZW50Q2xh
c3NOYW1lIHsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKworICAgIHJldHVybiAiV2ViS2l0
RE9NT2JqZWN0IiBpZiBAeyRkYXRhTm9kZS0+cGFyZW50c30gZXEgMDsKKyAgICByZXR1cm4gIldl
YktpdERPTSIgLiAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGRhdGFOb2RlLT5wYXJlbnRz
KDApKTsKK30KKworIyBGcm9tIFN0cmluZzo6Q2FtZWxDYXNlIDAuMDEKK3N1YiBjYW1lbGl6ZQor
eworICAgICAgICBteSAkcyA9IHNoaWZ0OworICAgICAgICBqb2luKCcnLCBtYXB7IHVjZmlyc3Qg
JF8gfSBzcGxpdCgvKD88PVtBLVphLXpdKV8oPz1bQS1aYS16XSl8XGIvLCAkcykpOworfQorCitz
dWIgZGVjYW1lbGl6ZQoreworICAgICAgICBteSAkcyA9IHNoaWZ0OworICAgICAgICAkcyA9fiBz
eyhbXmEtekEtWl0/KShbQS1aXSopKFtBLVpdKShbYS16XT8pfXsKKyAgICAgICAgICAgICAgICBt
eSAkZmMgPSBwb3MoJHMpPT0wOworICAgICAgICAgICAgICAgIG15ICgkcDAsJHAxLCRwMiwkcDMp
ID0gKCQxLGxjJDIsbGMkMywkNCk7CisgICAgICAgICAgICAgICAgbXkgJHQgPSAkcDAgfHwgJGZj
ID8gJHAwIDogJ18nOworICAgICAgICAgICAgICAgICR0IC49ICRwMyA/ICRwMSA/ICIke3AxfV8k
cDIkcDMiIDogIiRwMiRwMyIgOiAiJHAxJHAyIjsKKyAgICAgICAgICAgICAgICAkdDsKKyAgICAg
ICAgfWdlOworICAgICAgICAkczsKK30KKworc3ViIENsYXNzTmFtZVRvR09iamVjdFR5cGUgewor
ICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkQ0xBU1NfTkFNRSA9IHVjKGRlY2Ft
ZWxpemUoJGNsYXNzTmFtZSkpOworICAgICMgRml4dXA6IHdpdGggb3VyIHByZWZpeCBiZWluZyAn
V2ViS2l0RE9NJyBkZWNhbWVsaXplIGNhbid0IGdldAorICAgICMgV2ViS2l0RE9NQ1NTIHJpZ2h0
LCBzbyB3ZSBoYXZlIHRvIGZpeCBpdCBtYW51YWxseSAoYW5kIHRoZXJlCisgICAgIyBtaWdodCBi
ZSBtb3JlIGxpa2UgdGhpcyBpbiB0aGUgZnV0dXJlKQorICAgICRDTEFTU19OQU1FID1+IHMvRE9N
Q1NTL0RPTV9DU1MvOworICAgIHJldHVybiAkQ0xBU1NfTkFNRTsKK30KKworc3ViIEdldFBhcmVu
dEdPYmpUeXBlIHsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKworICAgIHJldHVybiAiV0VC
S0lUX1RZUEVfRE9NX09CSkVDVCIgaWYgQHskZGF0YU5vZGUtPnBhcmVudHN9IGVxIDA7CisgICAg
cmV0dXJuICJXRUJLSVRfVFlQRV9ET01fIiAuIENsYXNzTmFtZVRvR09iamVjdFR5cGUoJGNvZGVH
ZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRkYXRhTm9kZS0+cGFyZW50cygwKSkpOworfQorCitzdWIg
R2V0Q2xhc3NOYW1lIHsKKyAgICBteSAkbmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVs
ZShzaGlmdCk7CisKKyAgICByZXR1cm4gIldlYktpdERPTSRuYW1lIjsKK30KKworc3ViIEdldENv
cmVPYmplY3QgeworICAgIG15ICgkaW50ZXJmYWNlTmFtZSwgJG5hbWUsICRwYXJhbWV0ZXIpID0g
QF87CisKKyAgICByZXR1cm4gIldlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qICRuYW1lID0gV2Vi
S2l0Ojpjb3JlKCRwYXJhbWV0ZXIpOyI7Cit9CisKK3N1YiBza2lwQXR0cmlidXRlIHsKKyAgICBt
eSAkYXR0cmlidXRlID0gc2hpZnQ7CisgICAgCisgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9IHx8CisgICAgICAgICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9KSB7
CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAKKyAgICBteSAkcHJvcF90eXBlID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOworICAgIGlmICgkcHJvcF90eXBlIGVxICJFdmVudExp
c3RlbmVyIikgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAjIHNraXAgQ29uc3Ry
dWN0b3JzICh3aGF0ZXZlciB0aGV5IGFyZSkgZm9yIG5vdy4KKyAgICBpZiAoJHByb3BfdHlwZSA9
fiAvQ29uc3RydWN0b3IkLykgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKworIyBOYW1lIHR5cGUgdXNlZCBpbiB0aGUgZ192YWx1ZV97c2V0LGdldH1fKiBm
dW5jdGlvbnMKK3N1YiBHZXRHVmFsdWVUeXBlTmFtZSB7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsK
KworICAgIG15ICV0eXBlcyA9ICgiRE9NU3RyaW5nIiwgInN0cmluZyIsCisgICAgICAgICAgICAg
ICAgICJmbG9hdCIsICJmbG9hdCIsCisgICAgICAgICAgICAgICAgICJkb3VibGUiLCAiZG91Ymxl
IiwKKyAgICAgICAgICAgICAgICAgImJvb2xlYW4iLCAiYm9vbGVhbiIsCisgICAgICAgICAgICAg
ICAgICJjaGFyIiwgImNoYXIiLAorICAgICAgICAgICAgICAgICAibG9uZyIsICJsb25nIiwKKyAg
ICAgICAgICAgICAgICAgInNob3J0IiwgImludCIsCisgICAgICAgICAgICAgICAgICJ1Y2hhciIs
ICJ1Y2hhciIsCisgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCIsICJ1aW50IiwKKyAgICAgICAg
ICAgICAgICAgImludCIsICJpbnQiLAorICAgICAgICAgICAgICAgICAidW5zaWduZWQgaW50Iiwg
InVpbnQiLAorICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIiwgInVpbnQ2NCIs
IAorICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyIsICJ1bG9uZyIsCisgICAgICAgICAg
ICAgICAgICJ1bnNpZ25lZCBzaG9ydCIsICJ1c2hvcnQiKTsKKworICAgIHJldHVybiAkdHlwZXN7
JHR5cGV9ID8gJHR5cGVzeyR0eXBlfSA6ICJvYmplY3QiOworfQorCisjIE5hbWUgdHlwZSB1c2Vk
IGluIEMgZGVjbGFyYXRpb25zCitzdWIgR2V0R2xpYlR5cGVOYW1lIHsKKyAgICBteSAkdHlwZSA9
IHNoaWZ0OworICAgIG15ICRuYW1lID0gR2V0Q2xhc3NOYW1lKCR0eXBlKTsKKworICAgIG15ICV0
eXBlcyA9ICgiRE9NU3RyaW5nIiwgImNoYXIqICIsCisgICAgICAgICAgICAgICAgICJmbG9hdCIs
ICJnZmxvYXQiLAorICAgICAgICAgICAgICAgICAiZG91YmxlIiwgImdkb3VibGUiLAorICAgICAg
ICAgICAgICAgICAiYm9vbGVhbiIsICJnYm9vbGVhbiIsCisgICAgICAgICAgICAgICAgICJjaGFy
IiwgImdjaGFyIiwKKyAgICAgICAgICAgICAgICAgImxvbmciLCAiZ2xvbmciLAorICAgICAgICAg
ICAgICAgICAic2hvcnQiLCAiZ3Nob3J0IiwKKyAgICAgICAgICAgICAgICAgInVjaGFyIiwgImd1
Y2hhciIsCisgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCIsICJndWludCIsCisgICAgICAgICAg
ICAgICAgICJpbnQiLCAiZ2ludCIsCisgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBpbnQiLCAi
Z3VpbnQiLAorICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyIsICJndWxvbmciLAorICAg
ICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIiwgImd1aW50NjQiLAorICAgICAgICAg
ICAgICAgICAidW5zaWduZWQgc2hvcnQiLCAiZ3VzaG9ydCIsCisgICAgICAgICAgICAgICAgICJ2
b2lkIiwgInZvaWQiKTsKKworICAgIHJldHVybiAkdHlwZXN7JHR5cGV9ID8gJHR5cGVzeyR0eXBl
fSA6ICIkbmFtZSogIjsKK30KKworc3ViIElzR0RPTUNsYXNzVHlwZSB7CisgICAgbXkgJHR5cGUg
PSBzaGlmdDsKKworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJET01TdHJpbmciOworICAgIHJl
dHVybiAwIGlmICR0eXBlIGVxICJmbG9hdCI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImRv
dWJsZSI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImJvb2xlYW4iOworICAgIHJldHVybiAw
IGlmICR0eXBlIGVxICJjaGFyIjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAibG9uZyI7Cisg
ICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInNob3J0IjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBl
cSAidWNoYXIiOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCI7CisgICAgcmV0
dXJuIDAgaWYgJHR5cGUgZXEgImludCI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2ln
bmVkIGludCI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciOworICAg
IHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBsb25nIGxvbmciOworICAgIHJldHVybiAw
IGlmICR0eXBlIGVxICJ1bnNpZ25lZCBzaG9ydCI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEg
InZvaWQiOworCisgICAgcmV0dXJuIDE7Cit9CisKK3N1YiBHZW5lcmF0ZVByb3BlcnRpZXMgewor
ICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlTmFtZSwgJGRhdGFOb2RlKSA9IEBfOworCisgICAg
bXkgJGNsc0NhcHMgPSBzdWJzdHIoQ2xhc3NOYW1lVG9HT2JqZWN0VHlwZSgkY2xhc3NOYW1lKSwg
MTIpOworICAgIG15ICRsY2FzZV9pZmFjZW5hbWUgPSAid2Via2l0X2RvbV8iIC4gKGRlY2FtZWxp
emUoJGludGVyZmFjZU5hbWUpKTsKKworICAgICMgUHJvcGVydGllcworICAgIG15ICRpbXBsQ29u
dGVudCA9ICIiOworCisgICAgIyBQcm9wZXJ0aWVzCisgICAgJGltcGxDb250ZW50ID0gPDwgIkVP
RiI7CitlbnVtIHsKKyAgICBQUk9QXzAsCitFT0YKKyAgICBwdXNoKEBjQm9keVByaXYsICRpbXBs
Q29udGVudCk7CisKKyAgICBteSBAdHh0X2luc3RhbGxfcHJvcHMgPSAoKTsKKyAgICBteSBAdHh0
X3NldF9wcm9wcyA9ICgpOworICAgIG15IEB0eHRfZ2V0X3Byb3BzID0gKCk7CisKKyAgICBteSAk
cHJpdl9mbiA9IEdldENvcmVPYmplY3QoJGludGVyZmFjZU5hbWUsICJjb3JlU2VsZiIsICJzZWxm
Iik7CisKKyAgICBteSAkdHh0X2dldF9wcm9wID0gPDwgIkVPRiI7CitzdGF0aWMgdm9pZCAke2xj
YXNlX2lmYWNlbmFtZX1fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9p
ZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgJHtjbGFzc05hbWV9
KiBzZWxmID0gV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KG9iamVjdCk7CisgICAgJHByaXZfZm4KKwor
ICAgIHN3aXRjaCAocHJvcF9pZCkgeworRU9GCisgICAgcHVzaChAdHh0X2dldF9wcm9wcywgJHR4
dF9nZXRfcHJvcCk7CisKKyAgICBteSAkdHh0X3NldF9wcm9wID0gPDwgIkVPRiI7CitzdGF0aWMg
dm9pZCAke2xjYXNlX2lmYWNlbmFtZX1fc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7Cisg
ICAgJHtjbGFzc05hbWV9ICpzZWxmID0gV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KG9iamVjdCk7Cisg
ICAgJHByaXZfZm4KKworICAgIHN3aXRjaCAocHJvcF9pZCkgeworRU9GCisgICAgcHVzaChAdHh0
X3NldF9wcm9wcywgJHR4dF9zZXRfcHJvcCk7CisKKyAgICAjIEl0ZXJhdGUgb3ZlciB0aGUgaW50
ZXJmYWNlIGF0dHJpYnV0ZXMgYW5kIGdlbmVyYXRlIGEgcHJvcGVydHkgZm9yCisgICAgIyBlYWNo
IG9uZSBvZiB0aGVtLgorICBTS0lQRU5VTToKKyAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7
JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICBpZiAoc2tpcEF0dHJpYnV0ZSgkYXR0
cmlidXRlKSkgeworICAgICAgICAgICAgbmV4dCBTS0lQRU5VTTsKKyAgICAgICAgfQorCisgICAg
ICAgIG15ICRwcm9wX25hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAg
IG15ICRzZXRwcm9wX25hbWVfZm4gPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkcHJvcF9u
YW1lKTsKKyAgICAgICAgbXkgJGdldHByb3BfbmFtZV9mbiA9ICRjb2RlR2VuZXJhdG9yLT5XS19s
Y2ZpcnN0KCRwcm9wX25hbWUpOworCisgICAgICAgIG15ICRwcm9wTmFtZSA9IGRlY2FtZWxpemUo
JHByb3BfbmFtZSk7CisgICAgICAgIG15ICRwcm9wTmFtZUNhcHMgPSB1YygkcHJvcE5hbWUpOwor
ICAgICAgICAkcHJvcE5hbWUgPX4gcy9fLy0vZzsKKyAgICAgICAgbXkgJHtwcm9wRW51bX0gPSAi
UFJPUF8ke3Byb3BOYW1lQ2Fwc30iOworICAgICAgICBwdXNoKEBjQm9keVByaXYsICIgICAgJHtw
cm9wRW51bX0sXG4iKTsKKworICAgICAgICBteSAkcHJvcF90eXBlID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlOworICAgICAgICBteSAke3Byb3BfZ3R5cGV9ID0gZGVjYW1lbGl6ZSgkcHJv
cF90eXBlKTsKKyAgICAgICAgaWYgKCRwcm9wX2d0eXBlIGVxICJldmVudF90YXJnZXQiKSB7Cisg
ICAgICAgICAgICAkcHJvcF9ndHlwZSA9ICJldmVudF90YXJnZXRfbm9kZSI7CisgICAgICAgIH0K
KyAgICAgICAgbXkgJHtwcm9wR1R5cGV9ID0gdWMoJHByb3BfZ3R5cGUpOworICAgICAgICBteSAk
bGNhc2VfZ3R5cGVuYW1lID0gIndlYmtpdF9kb21fIiAuICRwcm9wX2d0eXBlOworCisgICAgICAg
IG15ICRndHlwZSA9IEdldEdWYWx1ZVR5cGVOYW1lKCRwcm9wX3R5cGUpOworICAgICAgICBteSAk
Z3BhcmFtZmxhZyA9ICJXRUJLSVRfUEFSQU1fUkVBREFCTEUiOworICAgICAgICBteSAkd3JpdGVh
YmxlID0gJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LzsKKyAgICAgICAgbXkgJGNvbnN0
ID0gInJlYWQtb25seSAiOworICAgICAgICBpZiAoJHdyaXRlYWJsZSAmJiAkY3VzdG9tKSB7Cisg
ICAgICAgICAgICAkY29uc3QgPSAicmVhZC1vbmx5IChkdWUgdG8gY3VzdG9tIGZ1bmN0aW9ucyBu
ZWVkZWQgaW4gd2Via2l0ZG9tKSI7CisgICAgICAgICAgICBuZXh0IFNLSVBFTlVNOworICAgICAg
ICB9CisgICAgICAgIGlmICgkd3JpdGVhYmxlICYmICEkY3VzdG9tKSB7CisgICAgICAgICAgICAk
Z3BhcmFtZmxhZyA9ICJXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIjsKKyAgICAgICAgICAgICRjb25z
dCA9ICJyZWFkLXdyaXRlICI7CisgICAgICAgIH0KKworICAgICAgICBteSAkdHlwZSA9IEdldEds
aWJUeXBlTmFtZSgkcHJvcF90eXBlKTsKKyAgICAgICAgJG5pY2sgPSBkZWNhbWVsaXplKCIke2lu
dGVyZmFjZU5hbWV9XyR7cHJvcE5hbWV9Iik7CisgICAgICAgICRsb25nID0gIiR7Y29uc3R9ICR7
dHlwZX0gJHtpbnRlcmZhY2VOYW1lfS4ke3Byb3BOYW1lfSI7CisKKyAgICAgICAgbXkgJGNvbnZl
cnRfZm4gPSAiIjsKKworICAgICAgICBpZiAoJHdyaXRlYWJsZSAmJiAoJGd0eXBlIGVxICJib29s
ZWFuIiB8fCAkZ3R5cGUgZXEgImZsb2F0IiB8fCAkZ3R5cGUgZXEgImRvdWJsZSIgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRndHlwZSBlcSAidWludDY0IiB8fCAkZ3R5cGUgZXEgInVs
b25nIiB8fCAkZ3R5cGUgZXEgImxvbmciIHx8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
JGd0eXBlIGVxICJ1aW50IiB8fCAkZ3R5cGUgZXEgInVzaG9ydCIgfHwgJGd0eXBlIGVxICJ1Y2hh
ciIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICRndHlwZSBlcSAiY2hhciIgfHwgJGd0
eXBlIGVxICJzdHJpbmciKSkgeworCisgICAgICAgICAgICBwdXNoKEB0eHRfc2V0X3Byb3BzLCAi
ICAgY2FzZSAke3Byb3BFbnVtfTpcbiAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQHR4dF9z
ZXRfcHJvcHMsICIgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYg
QHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKKworICAgICAgICAgICAgaWYgKCRndHlw
ZSBlcSAic3RyaW5nIikgeworICAgICAgICAgICAgICAgICRjb252ZXJ0X2ZuID0gIldlYkNvcmU6
OlN0cmluZzo6ZnJvbVVURjgiOworICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydEZyb21TdHJpbmcifSkgeworICAg
ICAgICAgICAgICAgICRjb252ZXJ0X2ZuID0gIldlYkNvcmU6OlN0cmluZzo6bnVtYmVyIjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVzaChAdHh0X3NldF9wcm9wcywgIiAgICAgICAg
Y29yZVNlbGYtPnNldCR7c2V0cHJvcF9uYW1lX2ZufSgke2NvbnZlcnRfZm59KGdfdmFsdWVfZ2V0
XyRndHlwZSh2YWx1ZSkpIik7CisgICAgICAgICAgICBwdXNoKEB0eHRfc2V0X3Byb3BzLCAiLCBl
YyIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CisgICAgICAgICAgICBwdXNo
KEB0eHRfc2V0X3Byb3BzLCAiKTtcbiIpOworCisgICAgICAgICAgICBwdXNoKEB0eHRfc2V0X3By
b3BzLCAiICAgICAgICBicmVhaztcbiAgICB9XG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1
c2goQHR4dF9nZXRfcHJvcHMsICIgICBjYXNlICR7cHJvcEVudW19OlxuICAgIHtcbiIpOworCisg
ICAgICAgIG15ICRleGNlcHRpb24gPSAiIjsKKyAgICAgICAgaWYgKEB7JGF0dHJpYnV0ZS0+Z2V0
dGVyRXhjZXB0aW9uc30pIHsKKyAgICAgICAgICAgICRleGNlcHRpb24gPSAiZWMiOworICAgICAg
ICAgICAgcHVzaChAdHh0X2dldF9wcm9wcywgIiAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7XG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIG15ICRwb3N0X2NvbnZlcnRfZm4g
PSAiIjsKKyAgICAgICAgbXkgJGRvbmUgPSAwOworICAgICAgICBpZiAoJGd0eXBlIGVxICJzdHJp
bmciKSB7CisgICAgICAgICAgICBwdXNoKEB0eHRfZ2V0X3Byb3BzLCAiICAgICAgICBnX3ZhbHVl
X3Rha2Vfc3RyaW5nKHZhbHVlLCBkb21TdHJpbmdDb252ZXJ0KGNvcmVTZWxmLT4ke2dldHByb3Bf
bmFtZV9mbn0oJHtleGNlcHRpb259KSkpO1xuIik7CisgICAgICAgICAgICAkZG9uZSA9IDE7Cisg
ICAgICAgIH0gZWxzaWYgKCRndHlwZSBlcSAib2JqZWN0IikgeworICAgICAgICAgICAgbXkgJGRv
bW9ialR5cGUgPSAiV0VCS0lUX0RPTSIuJHByb3BfdHlwZTsKKworICAgICAgICAgICAgJHR4dF9n
ZXRfcHJvcCA9IDw8ICJFT0YiOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6JHtwcm9wX3R5cGV9
PiBwdHIgPSBjb3JlU2VsZi0+JHtnZXRwcm9wX25hbWVfZm59KCR7ZXhjZXB0aW9ufSk7CisgICAg
ICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7CitF
T0YKKyAgICAgICAgICAgIHB1c2goQHR4dF9nZXRfcHJvcHMsICR0eHRfZ2V0X3Byb3ApOworCisg
ICAgICAgICAgICAkZG9uZSA9IDE7CisgICAgICAgIH0KKworICAgICAgICBpZigkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0RnJvbVN0cmluZyJ9KSB7
CisgICAgICAgICAgICAjIFRPRE86IEFkZCBvdGhlciBjb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3Ig
ZGlmZmVyZW50IHR5cGVzLiAgQ3VycmVudAorICAgICAgICAgICAgIyBJRExzIG9ubHkgbGlzdCBs
b25ncy4KKyAgICAgICAgICAgIGlmKCRndHlwZSBlcSAibG9uZyIpIHsKKyAgICAgICAgICAgICAg
ICAkY29udmVydF9mbiA9ICIiOworICAgICAgICAgICAgICAgICRwb3N0X2NvbnZlcnRfZm4gPSAi
LnRvSW50KCkiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaWUgIkNh
bid0IGNvbnZlcnQgdG8gdHlwZSAke2d0eXBlfS4iOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgIyBGSVhNRTogZ2V0IHJpZCBvZiB0aGlzIGdsaXRjaD8KKyAgICAgICAgbXkg
JF9ndHlwZSA9ICRndHlwZTsKKyAgICAgICAgaWYgKCRndHlwZSBlcSAidXNob3J0IikgeworICAg
ICAgICAgICAgJF9ndHlwZSA9ICJ1aW50IjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghJGRv
bmUpIHsKKyAgICAgICAgICAgIHB1c2goQHR4dF9nZXRfcHJvcHMsICIgICAgICAgIGdfdmFsdWVf
c2V0XyRfZ3R5cGUodmFsdWUsICR7Y29udmVydF9mbn1jb3JlU2VsZi0+JHtnZXRwcm9wX25hbWVf
Zm59KCR7ZXhjZXB0aW9ufSkke3Bvc3RfY29udmVydF9mbn0pO1xuIik7CisgICAgICAgIH0KKwor
ICAgICAgICBwdXNoKEB0eHRfZ2V0X3Byb3BzLCAiICAgICAgICBicmVhaztcbiAgICB9XG4iKTsK
KworbXkgJXBhcmFtX3NwZWNfb3B0aW9ucyA9ICgiaW50IiwgIkdfTUlOSU5ULCAvKiBtaW4gKi9c
bkdfTUFYSU5ULCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYm9vbGVhbiIsICJGQUxTRSwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmbG9hdCIsICJHX01JTkZMT0FULCAvKiBtaW4gKi9cbkdfTUFYRkxP
QVQsIC8qIG1heCAqL1xuMC4wLCAvKiBkZWZhdWx0ICovIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRvdWJsZSIsICJHX01JTkRPVUJMRSwgLyogbWluICovXG5HX01BWERPVUJMRSwgLyog
bWF4ICovXG4wLjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
dWludDY0IiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVSU5UNjQsIC8qIG1pbiAqL1xuMCwgLyogZGVm
YXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJsb25nIiwgIkdfTUlOTE9ORywg
LyogbWluICovXG5HX01BWExPTkcsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ1bG9uZyIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUxPTkcs
IC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ1aW50IiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVSU5ULCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1
bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidXNob3J0IiwgIjAsIC8qIG1pbiAq
L1xuR19NQVhVSU5UMTYsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ1Y2hhciIsICJHX01JTklOVDgsIC8qIG1pbiAqL1xuR19NQVhJTlQ4
LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiY2hhciIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVm
YXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciLCAiXCJcIiwgLyog
ZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiLCAiV0VCS0lU
X1RZUEVfRE9NXyR7cHJvcEdUeXBlfSwgLyogZ29iamVjdCB0eXBlICovIik7CisKKyAgICAgICAg
bXkgJHR4dF9pbnN0YWxsX3Byb3AgPSA8PCAiRU9GIjsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICR7cHJvcEVudW19LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjXyR7X2d0eXBlfSgiJHtwcm9wTmFtZX0iLCAvKiBuYW1lICovCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbmlj
ayIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbG9uZyIsIC8qIGxvbmdlciAtIGNvdWxk
IGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1fc3BlY19vcHRp
b25zeyRndHlwZX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJHtncGFyYW1mbGFnfSkpOworRU9GCisgICAgICAgIHB1c2goQHR4dF9p
bnN0YWxsX3Byb3BzLCAkdHh0X2luc3RhbGxfcHJvcCk7CisgICAgICAgICR0eHRfaW5zdGFsbF9w
cm9wID0gIi8qIFRPRE8hICRndHlwZSAqL1xuIjsKKyAgICB9CisKKyAgICBwdXNoKEBjQm9keVBy
aXYsICJ9O1xuXG4iKTsKKworICAgICR0eHRfZ2V0X3Byb3AgPSA8PCAiRU9GIjsKKyAgICBkZWZh
dWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KK0VPRgorICAgIHB1c2go
QHR4dF9nZXRfcHJvcHMsICR0eHRfZ2V0X3Byb3ApOworCisgICAgJHR4dF9zZXRfcHJvcCA9IDw8
ICJFT0YiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorRU9GCisgICAgcHVzaChAdHh0X3NldF9wcm9wcywgJHR4dF9zZXRfcHJvcCk7CisKKyAgICAj
IFRPRE86IHdvcmsgb3V0IGlmIGl0J3MgYXBwcm9wcmlhdGUgdG8gc3BsaXQgdGhpcyBpbnRvIG1h
bnkgZGlmZmVyZW50CisgICAgIyBzaWduYWxzIGUuZy4gImNsaWNrIiBldGMuCisgICAgbXkgJHR4
dF9pbnN0YWxsX3NpZ25hbHMgPSAiIjsKKworICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOwor
CitzdGF0aWMgdm9pZCAke2xjYXNlX2lmYWNlbmFtZX1fZmluYWxpemUoR09iamVjdCogb2JqZWN0
KQoreworICAgIFdlYktpdERPTU9iamVjdCogZG9tX29iamVjdCA9IFdFQktJVF9ET01fT0JKRUNU
KG9iamVjdCk7CisgICAgCisgICAgaWYoZG9tX29iamVjdCAhPSBOVUxMKQorICAgIHsKKyAgICAg
ICAgaWYoZG9tX29iamVjdC0+Y29yZU9iamVjdCAhPSBOVUxMKQorICAgICAgICB7CisgICAgICAg
ICAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICpjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSAqPihkb21fb2JqZWN0LT5jb3JlT2JqZWN0KTsKKyAg
ICAgICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGRvbV9vYmplY3QtPmNvcmVPYmplY3QgPSBOVUxMOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBHX09CSkVDVF9DTEFTUygke2xjYXNlX2lmYWNlbmFtZX1fcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworQHR4dF9zZXRfcHJvcHMKKworQHR4dF9nZXRf
cHJvcHMKKworc3RhdGljIHZvaWQgJHtsY2FzZV9pZmFjZW5hbWV9X2NsYXNzX2luaXQoJHtjbGFz
c05hbWV9Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RD
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5m
aW5hbGl6ZSA9ICR7bGNhc2VfaWZhY2VuYW1lfV9maW5hbGl6ZTsKKyAgICBnb2JqZWN0Q2xhc3Mt
PnNldF9wcm9wZXJ0eSA9ICR7bGNhc2VfaWZhY2VuYW1lfV9zZXRfcHJvcGVydHk7CisgICAgZ29i
amVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSAke2xjYXNlX2lmYWNlbmFtZX1fZ2V0X3Byb3BlcnR5
OworCitAdHh0X2luc3RhbGxfcHJvcHMKKworJHR4dF9pbnN0YWxsX3NpZ25hbHMKK30KKworc3Rh
dGljIHZvaWQgJHtsY2FzZV9pZmFjZW5hbWV9X2luaXQoJHtjbGFzc05hbWV9KiByZXF1ZXN0KQor
eworfQorCitFT0YKKyAgICBwdXNoKEBjQm9keVByaXYsICRpbXBsQ29udGVudCk7Cit9CisKK3N1
YiBHZW5lcmF0ZUhlYWRlciB7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2VOYW1lLCAkcGFy
ZW50Q2xhc3NOYW1lKSA9IEBfOworCisgICAgbXkgJGltcGxDb250ZW50ID0gIiI7CisKKyAgICAj
IEFkZCB0aGUgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUKKyAgICBAaFByZWZpeCA9IHNwbGl0KCJc
ciIsICRsaWNlbmNlVGVtcGxhdGUpOworICAgIHB1c2goQGhQcmVmaXgsICJcbiIpOworCisgICAg
I0hlYWRlciBndWFyZAorICAgIG15ICRndWFyZCA9ICRjbGFzc05hbWUgLiAiX2giOworCisgICAg
QGhQcmVmaXhHdWFyZCA9IDw8ICJFT0YiOworI2lmbmRlZiAkZ3VhcmQKKyNkZWZpbmUgJGd1YXJk
CisKK0VPRgorCisgICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CitHX0JFR0lOX0RFQ0xTCitF
T0YKKworICAgIHB1c2goQGhCb2R5UHJlLCAkaW1wbENvbnRlbnQpOworCisgICAgbXkgJGNsc0Nh
cHMgPSB1YyhkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKSk7CisgICAgbXkgJGxjYXNlX2lmYWNl
bmFtZSA9ICJ3ZWJraXRfZG9tXyIgLiAoZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkpOworCisg
ICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfRE9NXyR7
Y2xzQ2Fwc30gICAgICAgICAgICAoJHtsY2FzZV9pZmFjZW5hbWV9X2dldF90eXBlKCkpCisjZGVm
aW5lIFdFQktJVF9ET01fJHtjbHNDYXBzfShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgJHtjbGFzc05h
bWV9KSkKKyNkZWZpbmUgV0VCS0lUX0RPTV8ke2Nsc0NhcHN9X0NMQVNTKGtsYXNzKSAgICAoR19U
WVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9
LCAke2NsYXNzTmFtZX1DbGFzcykKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU18ke2Nsc0NhcHN9KG9i
aikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBF
X0RPTV8ke2Nsc0NhcHN9KSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU18ke2Nsc0NhcHN9X0NMQVNT
KGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RP
TV8ke2Nsc0NhcHN9KSkKKyNkZWZpbmUgV0VCS0lUX0RPTV8ke2Nsc0NhcHN9X0dFVF9DTEFTUyhv
YmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV8k
e2Nsc0NhcHN9LCAke2NsYXNzTmFtZX1DbGFzcykpCisKK3N0cnVjdCBfJHtjbGFzc05hbWV9IHsK
KyAgICAke3BhcmVudENsYXNzTmFtZX0gcGFyZW50X2luc3RhbmNlOworfTsKKworc3RydWN0IF8k
e2NsYXNzTmFtZX1DbGFzcyB7CisgICAgJHtwYXJlbnRDbGFzc05hbWV9Q2xhc3MgcGFyZW50X2Ns
YXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQorJHtsY2FzZV9pZmFjZW5hbWV9X2dldF90eXBl
ICh2b2lkKTsKKworRU9GCisKKyAgICBwdXNoKEBoQm9keSwgJGltcGxDb250ZW50KTsKK30KKwor
c3ViIGdldEluY2x1ZGVIZWFkZXIgeworICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgbXkgJG5h
bWUgPSBHZXRDbGFzc05hbWUoJHR5cGUpOworCisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJp
bnQiOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAibG9uZyI7CisgICAgcmV0dXJuICIiIGlm
ICR0eXBlIGVxICJzaG9ydCI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJjaGFyIjsKKyAg
ICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgImZsb2F0IjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUg
ZXEgImRvdWJsZSI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJ1bnNpZ25lZCI7CisgICAg
cmV0dXJuICIiIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBpbnQiOworICAgIHJldHVybiAiIiBpZiAk
dHlwZSBlcSAidW5zaWduZWQgbG9uZyI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJ1bnNp
Z25lZCBsb25nIGxvbmciOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAidW5zaWduZWQgc2hv
cnQiOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAiRE9NVGltZVN0YW1wIjsKKyAgICByZXR1
cm4gIiIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworICAgIHJldHVybiAiIiBpZiAkdHlw
ZSBlcSAidW5zaWduZWQgY2hhciI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJET01TdHJp
bmciOworICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAiZmxvYXQiOworICAgIHJldHVybiAiIiBp
ZiAkdHlwZSBlcSAiYm9vbGVhbiI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJ2b2lkIjsK
KworICAgIHJldHVybiAiJG5hbWUuaCI7Cit9CisKK3N1YiBhZGRJbmNsdWRlSW5Cb2R5IHsKKyAg
ICBteSAkdHlwZSA9IHNoaWZ0OworCisgICAgbXkgJGhlYWRlciA9IGdldEluY2x1ZGVIZWFkZXIo
JHR5cGUpOworICAgIGlmICgkaGVhZGVyIGVxICIiKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgaWYgKElzR0RPTUNsYXNzVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgJGltcGxJ
bmNsdWRlc3sid2Via2l0LyRoZWFkZXIifSA9IDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGlt
cGxJbmNsdWRlc3skaGVhZGVyfSA9IDEKKyAgICB9Cit9CisKK3N1YiBHZW5lcmF0ZUZ1bmN0aW9u
IHsKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUsICRmdW5jdGlvbiwgJHByZWZpeCkg
PSBAXzsKKworICAgIG15ICRmbl9zaWdfbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OworICAgIG15ICRmbl9zaWdfdHlwZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlOworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSAid2Via2l0X2RvbV8iIC4gZGVjYW1lbGl6ZSgkaW50ZXJmYWNl
TmFtZSkgLiAiXyIgLiAkcHJlZml4IC4gZGVjYW1lbGl6ZSgkZm5fc2lnX25hbWUpOworICAgIG15
ICRyZXR1cm5UeXBlID0gR2V0R2xpYlR5cGVOYW1lKCRmbl9zaWdfdHlwZSk7CisgICAgbXkgJHJl
dF9pc19jbHNfdHlwZSA9IElzR0RPTUNsYXNzVHlwZSgkZm5fc2lnX3R5cGUpOworCisgICAgbXkg
JGZ1bmN0aW9uU2lnID0gIiRjbGFzc05hbWUgKnNlbGYiOworCisgICAgbXkgJGNhbGxfaW1wbF9w
YXJhbXMgPSAiIjsKKyAgICBteSAkZ2RvbV9mbl9wcmVmaXggPSAid2Via2l0X2RvbV8iIC4gZGVj
YW1lbGl6ZSgkZm5fc2lnX3R5cGUpOworCisgICAgIyBza2lwIHNvbWUgY3VzdG9tIGZ1bmN0aW9u
cyBmb3Igbm93CisgICAgbXkgJGlzX2N1c3RvbV9mbiA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0gfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVu
dEhhbmRsaW5nIn07CisKKyAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9KSB7CisgICAgICAgIG15ICRwYXJhbUlETFR5cGUgPSAkcGFyYW0tPnR5cGU7CisgICAg
ICAgIGlmICgkcGFyYW1JRExUeXBlIGVxICJFdmVudCIpIHsKKyAgICAgICAgICAgIHB1c2goQGhC
b2R5LCAiXG4vKiBUT0RPOiBldmVudCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gKi9cblxuIik7
CisgICAgICAgICAgICBwdXNoKEBjQm9keSwgIlxuLyogVE9ETzogZXZlbnQgZnVuY3Rpb24gJHtm
dW5jdGlvbk5hbWV9ICovXG5cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGFkZEluY2x1ZGVJbkJvZHkoJHBhcmFtSURMVHlwZSk7CisgICAgICAgIG15ICRwYXJh
bVR5cGUgPSBHZXRHbGliVHlwZU5hbWUoJHBhcmFtSURMVHlwZSk7CisgICAgICAgIG15ICRwYXJh
bU5hbWUgPSBkZWNhbWVsaXplKCRwYXJhbS0+bmFtZSk7CisKKyAgICAgICAgJGZ1bmN0aW9uU2ln
IC49ICIsICRwYXJhbVR5cGUgJHBhcmFtTmFtZSI7CisKKyAgICAgICAgbXkgJHBhcmFtX2lzX2Ns
c190eXBlID0gSXNHRE9NQ2xhc3NUeXBlKCRwYXJhbUlETFR5cGUpOworICAgICAgICBpZiAoJHBh
cmFtX2lzX2Nsc190eXBlKSB7CisgICAgICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBuZSAiRE9N
T2JqZWN0IikgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IndlYmtpdC9XZWJLaXRE
T00ke3BhcmFtSURMVHlwZX1Qcml2YXRlLmgifSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCRwYXJhbV9pc19jbHNfdHlwZSB8fCAoJHBhcmFtSURMVHlwZSBlcSAi
RE9NU3RyaW5nIikpIHsKKyAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiX2dfIiAuICRwYXJhbU5h
bWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRjYWxsX2ltcGxfcGFyYW1zKSB7CisgICAgICAg
ICAgICAkY2FsbF9pbXBsX3BhcmFtcyAuPSAiLCAkcGFyYW1OYW1lIjsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICRjYWxsX2ltcGxfcGFyYW1zID0gIiRwYXJhbU5hbWUiOworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKCRmbl9zaWdfdHlwZSBlcSAiRXZlbnQiKSB7CisgICAgICAg
IHB1c2goQGhCb2R5LCAiXG4vKiBUT0RPOiBldmVudCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0g
Ki9cblxuIik7CisgICAgICAgIHB1c2goQGNCb2R5LCAiXG4vKiBUT0RPOiBldmVudCBmdW5jdGlv
biAke2Z1bmN0aW9uTmFtZX0gKi9cblxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQiICYmICRyZXRfaXNfY2xzX3R5cGUpIHsKKyAgICAg
ICAgaWYgKCRmbl9zaWdfdHlwZSBuZSAiRXZlbnRUYXJnZXQiKSB7CisgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJ3ZWJraXQvV2ViS2l0RE9NJHtmbl9zaWdfdHlwZX1Qcml2YXRlLmgifSA9IDE7
CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXQvV2ViS2l0RE9NJHtmbl9zaWdfdHlw
ZX0uaCJ9ID0gMTsKKyAgICAgICAgfQorCisgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7Zm5fc2ln
X3R5cGV9LmgifSA9IDE7CisgICAgfQorCisgICAgIyBza2lwIGN1c3RvbSBmdW5jdGlvbnMgZm9y
IG5vdworICAgICMgYnV0IHNraXAgZnJvbSBoZXJlIHRvIGFsbG93IHNvbWUgaGVhZGVycyB0byBi
ZSBjcmVhdGVkCisgICAgIyBmb3IgYSBzdWNjZXNzZnVsIGNvbXBpbGUuCisgICAgaWYgKCRpc19j
dXN0b21fZm4gJiYKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBuZSAid2Via2l0X2RvbV9ub2RlX3Jl
bW92ZV9jaGlsZCIgJiYgCisgICAgICAgICRmdW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21fbm9k
ZV9pbnNlcnRfYmVmb3JlIiAmJgorICAgICAgICAkZnVuY3Rpb25OYW1lIG5lICJ3ZWJraXRfZG9t
X25vZGVfcmVwbGFjZV9jaGlsZCIgJiYKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBuZSAid2Via2l0
X2RvbV9ub2RlX2FwcGVuZF9jaGlsZCIpIHsKKyAgICAgICAgcHVzaChAaEJvZHksICJcbi8qIFRP
RE86IGN1c3RvbSBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gKi9cblxuIik7CisgICAgICAgIHB1
c2goQGNCb2R5LCAiXG4vKiBUT0RPOiBjdXN0b20gZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9ICov
XG5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXkgJF9yZXR1cm5UeXBlID0g
JHJldHVyblR5cGU7CisgICAgbXkgJGRvbW9ialR5cGUgPSAiV2ViS2l0RE9NIi4kZm5fc2lnX3R5
cGU7CisKKyAgICBpZihAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICAgICAg
JGZ1bmN0aW9uU2lnIC49ICIsIEdFcnJvciAqKmVycm9yIjsKKyAgICB9CisKKyAgICBwdXNoKEBo
Qm9keSwgIldFQktJVF9BUEkgJF9yZXR1cm5UeXBlXG4kZnVuY3Rpb25OYW1lICgkZnVuY3Rpb25T
aWcpO1xuXG4iKTsKKyAgICBwdXNoKEBjQm9keSwgIiRfcmV0dXJuVHlwZVxuJGZ1bmN0aW9uTmFt
ZSAoJGZ1bmN0aW9uU2lnKVxue1xuIik7CisKKyAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQi
KSB7CisgICAgICAgICMgVE9ETzogcmV0dXJuIHByb3BlciBkZWZhdWx0IHJlc3VsdAorICAgICAg
ICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VsZiwgMCk7XG4iKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl9pZl9mYWls
IChzZWxmKTtcbiIpOworICAgIH0KKworICAgICMgVGhlIFdlYktpdDo6Y29yZSBpbXBsZW1lbnRh
dGlvbnMgY2hlY2sgZm9yIE5VTEwgYWxyZWFkeTsgbm8gbmVlZCB0bworICAgICMgZHVwbGljYXRl
IGVmZm9ydC4KKyAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9
ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTtcbiIpOworCisgICAgZm9yZWFjaCBteSAkcGFy
YW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICBteSAkcGFyYW1OYW1lID0g
ZGVjYW1lbGl6ZSgkcGFyYW0tPm5hbWUpOworICAgICAgICBteSAkcGFyYW1JRExUeXBlID0gJHBh
cmFtLT50eXBlOworICAgICAgICBteSAkcGFyYW1UeXBlSXNQcmltaXRpdmUgPSAkY29kZUdlbmVy
YXRvci0+SXNQcmltaXRpdmVUeXBlKCRwYXJhbUlETFR5cGUpOworICAgICAgICBteSAkcGFyYW1f
aXNfY2xzX3R5cGUgPSBJc0dET01DbGFzc1R5cGUoJHBhcmFtSURMVHlwZSk7CisgICAgICAgIGlm
ICghJHBhcmFtVHlwZUlzUHJpbWl0aXZlKSB7CisgICAgICAgICAgICBpZiAoJHJldHVyblR5cGUg
bmUgInZvaWQiKSB7CisgICAgICAgICAgICAgICAgIyBUT0RPOiByZXR1cm4gcHJvcGVyIGRlZmF1
bHQgcmVzdWx0CisgICAgICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwgKCRwYXJhbU5hbWUsIDApO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJuX2lmX2ZhaWwgKCRwYXJhbU5h
bWUpO1xuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAkcmV0dXJu
UGFyYW1OYW1lID0gIiI7CisgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkgeworICAgICAgICBteSAkcGFyYW1JRExUeXBlID0gJHBhcmFtLT50eXBlOworICAg
ICAgICBteSAkcGFyYW1OYW1lID0gZGVjYW1lbGl6ZSgkcGFyYW0tPm5hbWUpOworCisgICAgICAg
IG15ICRwYXJhbV9pc19jbHNfdHlwZSA9IElzR0RPTUNsYXNzVHlwZSgkcGFyYW1JRExUeXBlKTsK
KyAgICAgICAgIyBIQUNLIQorICAgICAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2Rv
bV94bWxfaHR0cF9yZXF1ZXN0X29wZW4iICYmCisgICAgICAgICRwYXJhbS0+bmFtZSBlcSAidXJs
IikgeworICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgV2ViQ29yZTo6S1VSTCBfZ18ke3Bh
cmFtTmFtZX0gPSBXZWJDb3JlOjpLVVJMKCRwYXJhbU5hbWUpO1xuIik7CisgICAgICAgIH0gZWxz
aWYgKCRwYXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgICAgIHB1c2goQGNC
b2R5LCAiICAgIFdlYkNvcmU6OlN0cmluZyBfZ18ke3BhcmFtTmFtZX0gPSBXZWJDb3JlOjpTdHJp
bmc6OmZyb21VVEY4KCRwYXJhbU5hbWUpO1xuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRw
YXJhbV9pc19jbHNfdHlwZSkgeworICAgICAgICAgICAgbXkgJHBhcmFtX2dkb21fZm4gPSAid2Vi
a2l0X2RvbV8iIC4gZGVjYW1lbGl6ZSgkcGFyYW1JRExUeXBlKTsKKyAgICAgICAgICAgIHB1c2go
QGNCb2R5LCAiICAgIFdlYkNvcmU6OiR7cGFyYW1JRExUeXBlfSAqIF9nXyR7cGFyYW1OYW1lfSA9
IFdlYktpdDo6Y29yZSgkcGFyYW1OYW1lKTtcbiIpOworICAgICAgICAgICAgaWYgKCRyZXR1cm5U
eXBlIG5lICJ2b2lkIikgeworICAgICAgICAgICAgICAgICMgVE9ETzogcmV0dXJuIHByb3BlciBk
ZWZhdWx0IHJlc3VsdAorICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsIChfZ18ke3BhcmFtTmFtZX0sIDApO1xuIik7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJuX2lmX2ZhaWwg
KF9nXyR7cGFyYW1OYW1lfSk7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICAkcmV0dXJuUGFyYW1OYW1lID0gIl9nXyIuJHBhcmFtTmFtZSBpZiAkcGFyYW0tPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJSZXR1cm4ifTsKKyAgICB9CisKKyAgICBteSAkYXNzaWduID0gIiI7Cisg
ICAgbXkgJGFzc2lnbl9wcmUgPSAiIjsKKyAgICBteSAkYXNzaWduX3Bvc3QgPSAiIjsKKworICAg
IGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIgJiYgISRpc19jdXN0b21fZm4pIHsKKyAgICAgICAg
aWYgKCRyZXRfaXNfY2xzX3R5cGUpIHsKKyAgICAgICAgICAgICRhc3NpZ24gPSAiUGFzc1JlZlB0
cjxXZWJDb3JlOjoke2ZuX3NpZ190eXBlfT4gZ19yZXMgPSAiOworICAgICAgICAgICAgJGFzc2ln
bl9wcmUgPSAiV1RGOjpnZXRQdHIoIjsKKyAgICAgICAgICAgICRhc3NpZ25fcG9zdCA9ICIpIjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRhc3NpZ24gPSAiJHtfcmV0dXJuVHlwZX0g
cmVzID0gIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBteSAkZXhjZXB0aW9ucyA9ICIiOworICAg
IGlmIChAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICAgICAgcHVzaChAY0Jv
ZHksICIgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKKyAgICAgICAgaWYg
KCR7Y2FsbF9pbXBsX3BhcmFtc30gbmUgIiIpIHsKKyAgICAgICAgICAgICRleGNlcHRpb25zID0g
IiwgZWMiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGV4Y2VwdGlvbnMgPSAiZWMi
OworICAgICAgICB9CisgICAgfQorCisgICAgIyBXZSBuZWVkIHRvIHNwZWNpYWwtY2FzZSB0aGVz
ZSBOb2RlIG1ldGhvZHMgYmVjYXVzZSB0aGVpciBDKysgc2lnbmF0dXJlIGlzIGRpZmZlcmVudAor
ICAgICMgZnJvbSB3aGF0IHdlJ2QgZXhwZWN0IGdpdmVuIHRoZWlyIElETCBkZXNjcmlwdGlvbjsg
c2VlIE5vZGUuaC4KKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9ub2RlX2Fw
cGVuZF9jaGlsZCIgfHwKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9ub2Rl
X2luc2VydF9iZWZvcmUiIHx8CisgICAgICAgICRmdW5jdGlvbk5hbWUgZXEgIndlYmtpdF9kb21f
bm9kZV9yZXBsYWNlX2NoaWxkIiB8fAorICAgICAgICAkZnVuY3Rpb25OYW1lIGVxICJ3ZWJraXRf
ZG9tX25vZGVfcmVtb3ZlX2NoaWxkIikgeworICAgICAgICBteSAkY3VzdG9tX2dkb21fbm9kZV9h
cHBlbmRfY2hpbGQgPSA8PCAiRU9GIjsKKyAgICBib29sIG9rID0gaXRlbS0+JHtmbl9zaWdfbmFt
ZX0oJHtjYWxsX2ltcGxfcGFyYW1zfSR7ZXhjZXB0aW9uc30pOworICAgIGlmIChvaykKKyAgICB7
CisgICAgICAgICR7X3JldHVyblR5cGV9IHJlcyA9IHN0YXRpY19jYXN0PCR7X3JldHVyblR5cGV9
PihXZWJLaXQ6OmtpdCgkcmV0dXJuUGFyYW1OYW1lKSk7CisgICAgICAgIHJldHVybiByZXM7Cisg
ICAgfQorRU9GCisgICAgICAgIHB1c2goQGNCb2R5LCAkY3VzdG9tX2dkb21fbm9kZV9hcHBlbmRf
Y2hpbGQpOworICAgIAorICAgICAgICBpZihAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30p
IHsKKyAgICAgICAgICAgIG15ICRleGNlcHRpb25faGFuZGxpbmcgPSA8PCAiRU9GIjsKKworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2M7CisgICAgV2ViQ29yZTo6
Z2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKGVjLCBlY2Rlc2MpOworICAgIGdfc2V0X2Vycm9y
X2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNj
LmNvZGUsIGVjZGVzYy5uYW1lKTsKK0VPRgorICAgICAgICAgICAgcHVzaChAY0JvZHksICRleGNl
cHRpb25faGFuZGxpbmcpOworICAgICAgICB9CisgICAgICAgIHB1c2goQGNCb2R5LCAicmV0dXJu
IE5VTEw7Iik7CisgICAgICAgIHB1c2goQGNCb2R5LCAifVxuXG4iKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0gZWxzaWYgKCRmbl9zaWdfdHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICBw
dXNoKEBjQm9keSwgIiAgICAke2Fzc2lnbn1kb21TdHJpbmdDb252ZXJ0KGl0ZW0tPiR7Zm5fc2ln
X25hbWV9KCR7Y2FsbF9pbXBsX3BhcmFtc30ke2V4Y2VwdGlvbnN9KSk7XG4iICk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcHVzaChAY0JvZHksICIgICAgJHthc3NpZ259JHthc3NpZ25fcHJlfWl0
ZW0tPiR7Zm5fc2lnX25hbWV9KCR7Y2FsbF9pbXBsX3BhcmFtc30ke2V4Y2VwdGlvbnN9JHthc3Np
Z25fcG9zdH0pO1xuIiApOworICAgICAgICAKKyAgICAgICAgaWYoQHskZnVuY3Rpb24tPnJhaXNl
c0V4Y2VwdGlvbnN9KSB7CisgICAgICAgICAgICBteSAkZXhjZXB0aW9uX2hhbmRsaW5nID0gPDwg
IkVPRiI7CisgICAgaWYoZWMpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uIGVjZGVzYzsKKyAgICAgICAgV2ViQ29yZTo6Z2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uKGVjLCBlY2Rlc2MpOworICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7
CisgICAgfQorRU9GCisgICAgICAgICAgICBwdXNoKEBjQm9keSwgJGV4Y2VwdGlvbl9oYW5kbGlu
Zyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQiICYm
ICEkaXNfY3VzdG9tX2ZuKSB7CisgICAgICAgIGlmICgkZm5fc2lnX3R5cGUgbmUgIkRPTU9iamVj
dCIpIHsKKyAgICAgICAgICAgIGlmICgkcmV0X2lzX2Nsc190eXBlKSB7CisgICAgICAgICAgICAg
ICAgcHVzaChAY0JvZHksICIgICAgJHtfcmV0dXJuVHlwZX0gcmVzID0gc3RhdGljX2Nhc3Q8JHtf
cmV0dXJuVHlwZX0+KFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKSk7XG4iKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBpZiAoJGZuX3NpZ190eXBlIGVxICJET01PYmplY3QiKSB7
CisgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICByZXR1cm4gTlVMTDsgLyogVE9ETzogcmV0
dXJuIGNhbnZhcyBvYmplY3QgKi9cbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cHVzaChAY0JvZHksICIgICAgcmV0dXJuIHJlcztcbiIpOworICAgICAgICB9CisgICAgfQorICAg
IHB1c2goQGNCb2R5LCAiXG59XG5cbiIpOworfQorCitzdWIgQ2xhc3NIYXNGdW5jdGlvbiB7Cisg
ICAgbXkgKCRjbGFzcywgJG5hbWUpID0gQF87CisKKyAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAo
QHskY2xhc3MtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lIGVxICRuYW1lKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiAwOworfQorCitzdWIgR2VuZXJhdGVGdW5jdGlvbnMgeworICAgIG15
ICgkb2JqZWN0LCAkaW50ZXJmYWNlTmFtZSwgJGRhdGFOb2RlKSA9IEBfOworCisgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgICRvYmpl
Y3QtPkdlbmVyYXRlRnVuY3Rpb24oJGludGVyZmFjZU5hbWUsICRmdW5jdGlvbiwgIiIpOworICAg
IH0KKworICAgIFRPUDoKKyAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5h
dHRyaWJ1dGVzfSkgeworICAgICAgICBpZiAoc2tpcEF0dHJpYnV0ZSgkYXR0cmlidXRlKSkgewor
ICAgICAgICAgICAgbmV4dCBUT1A7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgZXEgInR5cGUiCisgICAgICAgICAgICAjIFRoaXMg
d2lsbCBjb25mbGljdCB3aXRoIHRoZSBnZXRfdHlwZSgpIGZ1bmN0aW9uIHdlIGRlZmluZSB0byBy
ZXR1cm4gYSBHVHlwZQorICAgICAgICAgICAgIyBhY2NvcmRpbmcgdG8gR09iamVjdCBjb252ZW50
aW9ucy4gIFNraXAgdGhpcyBmb3Igbm93LgorICAgICAgICAgICAgfHwgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lIGVxICJVUkwiICAgICAjIFRPRE86IGhhbmRsZSB0aGlzCisgICAgICAgICAg
ICB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0
RnJvbVN0cmluZyJ9ICAgICMgVE9ETzogaGFuZGxlIHRoaXMKKyAgICAgICAgICAgICkgeworICAg
ICAgICAgICAgbmV4dCBUT1A7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBteSAk
YXR0bmFtZV91cHBlciA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+bmFtZSk7CisgICAgICAgIG15ICRnZXRuYW1lID0gImdldCR7YXR0bmFtZV91cHBl
cn0iOworICAgICAgICBteSAkc2V0bmFtZSA9ICJzZXQke2F0dG5hbWVfdXBwZXJ9IjsKKyAgICAg
ICAgaWYgKENsYXNzSGFzRnVuY3Rpb24oJGRhdGFOb2RlLCAkZ2V0bmFtZSkgfHwgQ2xhc3NIYXNG
dW5jdGlvbigkZGF0YU5vZGUsICRzZXRuYW1lKSkgeworICAgICAgICAgICAgIyBWZXJ5IG9jY2Fz
aW9uYWxseSBhbiBJREwgZmlsZSBkZWZpbmVzIGdldHRlci9zZXR0ZXIgZnVuY3Rpb25zIGZvciBv
bmUgb2YgaXRzCisgICAgICAgICAgICAjIGF0dHJpYnV0ZXM7IGluIHRoaXMgY2FzZSB3ZSBkb24n
dCBuZWVkIHRvIGF1dG9nZW5lcmF0ZSB0aGUgZ2V0dGVyL3NldHRlci4KKyAgICAgICAgICAgIG5l
eHQgVE9QOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAjIEdlbmVyYXRlIGFuIGF0dHJp
YnV0ZSBnZXR0ZXIuICBGb3IgYW4gYXR0cmlidXRlICJmb28iLCB0aGlzIGlzIGEgZnVuY3Rpb24g
bmFtZWQKKyAgICAgICAgIyAiZ2V0X2ZvbyIgd2hpY2ggY2FsbHMgYSBET00gY2xhc3MgbWV0aG9k
IG5hbWVkIGZvbygpLgorICAgICAgICBteSAkZnVuY3Rpb24gPSBuZXcgZG9tRnVuY3Rpb24oKTsK
KyAgICAgICAgJGZ1bmN0aW9uLT5zaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAg
ICAgICAgJGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zKCRhdHRyaWJ1dGUtPmdldHRlckV4Y2Vw
dGlvbnMpOworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUZ1bmN0aW9uKCRpbnRlcmZhY2VOYW1l
LCAkZnVuY3Rpb24sICJnZXRfIik7CisgICAgICAgIAorICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
dHlwZSA9fiAvXnJlYWRvbmx5LyB8fAorICAgICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSAgIyBjYW4ndCBoYW5kbGUgdGhp
cyB5ZXQKKyAgICAgICAgICAgICkgeworICAgICAgICAgICAgbmV4dCBUT1A7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgICMgR2VuZXJhdGUgYW4gYXR0cmlidXRlIHNldHRlci4gIEZvciBh
biBhdHRyaWJ1dGUsICJmb28iLCB0aGlzIGlzIGEgZnVuY3Rpb24gbmFtZWQKKyAgICAgICAgIyAi
c2V0X2ZvbyIgd2hpY2ggY2FsbHMgYSBET00gY2xhc3MgbWV0aG9kIG5hbWVkIHNldEZvbygpLgor
ICAgICAgICAkZnVuY3Rpb24gPSBuZXcgZG9tRnVuY3Rpb24oKTsKKyAgICAgICAgCisgICAgICAg
ICRmdW5jdGlvbi0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUoKSk7CisgICAgICAgICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lKCRzZXRuYW1lKTsKKyAgICAgICAgJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPnR5cGUoInZvaWQiKTsKKyAgICAgICAgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcygkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyk7
CisgICAgICAgIAorICAgICAgICBteSAkcGFyYW0gPSBuZXcgZG9tU2lnbmF0dXJlKCk7CisgICAg
ICAgICRwYXJhbS0+bmFtZSgidmFsdWUiKTsKKyAgICAgICAgJHBhcmFtLT50eXBlKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgIG15ICVhdHRyaWJ1dGVzID0gKCk7CisgICAg
ICAgICRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOworICAgICAgICBteSAk
YXJyYXlSZWYgPSAkZnVuY3Rpb24tPnBhcmFtZXRlcnM7CisgICAgICAgIHB1c2goQCRhcnJheVJl
ZiwgJHBhcmFtKTsKKyAgICAgICAgCisgICAgICAgICRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9u
cygkYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zKTsKKyAgICAgICAgCisgICAgICAgICRvYmpl
Y3QtPkdlbmVyYXRlRnVuY3Rpb24oJGludGVyZmFjZU5hbWUsICRmdW5jdGlvbiwgIiIpOworICAg
IH0KK30KKworc3ViIEdlbmVyYXRlQ0ZpbGUgeworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNl
TmFtZSwgJHBhcmVudENsYXNzTmFtZSwgJHBhcmVudEdPYmpUeXBlLCAkZGF0YU5vZGUpID0gQF87
CisgICAgbXkgJGltcGxDb250ZW50ID0gIiI7CisKKyAgICBteSAkY2xzQ2FwcyA9IHVjKGRlY2Ft
ZWxpemUoJGludGVyZmFjZU5hbWUpKTsKKyAgICBteSAkbGNhc2VfaWZhY2VuYW1lID0gIndlYmtp
dF9kb21fIiAuIGRlY2FtZWxpemUoJGludGVyZmFjZU5hbWUpOworCisgICAgJGltcGxDb250ZW50
ID0gPDwgIkVPRiI7CitHX0RFRklORV9UWVBFKCR7Y2xhc3NOYW1lfSwgJHtsY2FzZV9pZmFjZW5h
bWV9LCAke3BhcmVudEdPYmpUeXBlfSkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyR7Y2xhc3NO
YW1lfSogd3JhcCR7aW50ZXJmYWNlTmFtZX0oV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29y
ZU9iamVjdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0ICE9IDAsIDAp
OworICAgIAorICAgICR7Y2xhc3NOYW1lfSogd3JhcHBlciA9IFdFQktJVF9ET01fJHtjbHNDYXBz
fShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NXyR7Y2xzQ2Fwc30sIE5VTEwpKTsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbCh3cmFwcGVyICE9IDAsIDApOworCisgICAgLyogV2UgY2FsbCBy
ZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2Fu
J3Qgc3RvcmUgYSBDKysgb2JqZWN0CisgICAgICogaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0
cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUKKyAgICAgKiBtYXRjaGlu
ZyBkZXJlZigpLgorICAgICAqLworCisgICAgY29yZU9iamVjdC0+cmVmKCk7CisgICAgV0VCS0lU
X0RPTV9PQkpFQ1Qod3JhcHBlciktPmNvcmVPYmplY3QgPSBjb3JlT2JqZWN0OworCisgICAgcmV0
dXJuIHdyYXBwZXI7Cit9CisKK1dlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmUoJHtjbGFz
c05hbWV9KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QgIT0g
MCwgMCk7CisgICAgCisgICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihXRUJLSVRfRE9NX09CSkVD
VChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9i
amVjdCAhPSAwLCAwKTsKKyAgICAKKyAgICByZXR1cm4gY29yZU9iamVjdDsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CitFT0YKKworICAgIHB1c2goQGNCb2R5UHJpdiwgJGltcGxDb250ZW50
KTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZVByb3BlcnRpZXMoJGludGVyZmFjZU5hbWUsICRkYXRh
Tm9kZSk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVGdW5jdGlvbnMoJGludGVyZmFjZU5hbWUsICRk
YXRhTm9kZSk7Cit9CisKK3N1YiBHZW5lcmF0ZUVuZEhlYWRlciB7CisgICAgbXkgKCRvYmplY3Qp
ID0gQF87CisKKyAgICAjSGVhZGVyIGd1YXJkCisgICAgbXkgJGd1YXJkID0gJGNsYXNzTmFtZSAu
ICJfaCI7CisKKyAgICBwdXNoKEBoQm9keSwgIkdfRU5EX0RFQ0xTXG5cbiIpOworICAgIHB1c2go
QGhCb2R5LCAiI2VuZGlmIC8qICRndWFyZCAqL1xuIik7Cit9CisKK3N1YiBHZW5lcmF0ZVByaXZh
dGVIZWFkZXIgeworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBz
aGlmdDsKKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15
ICRmaWxlbmFtZSA9ICIkb3V0cHV0RGlyLyIgLiAkY2xhc3NOYW1lIC4gIlByaXZhdGUuaCI7Cisg
ICAgbXkgJGd1YXJkID0gdWMoZGVjYW1lbGl6ZSgkY2xhc3NOYW1lKSkgLiAiX1BSSVZBVEVfSCI7
CisgICAgbXkgJHBhcmVudENsYXNzTmFtZSA9IEdldFBhcmVudENsYXNzTmFtZSgkZGF0YU5vZGUp
OworICAgIG15ICRoYXNMZWdhY3lQYXJlbnQgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJMZWdhY3lQYXJlbnQifTsKKyAgICBteSAkaGFzUmVhbFBhcmVudCA9IEB7JGRhdGFOb2Rl
LT5wYXJlbnRzfSA+IDA7CisgICAgbXkgJGhhc1BhcmVudCA9ICRoYXNMZWdhY3lQYXJlbnQgfHwg
JGhhc1JlYWxQYXJlbnQ7CisgICAgCisgICAgb3BlbihQUklWSEVBREVSLCAiPiRmaWxlbmFtZSIp
IG9yIGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRmaWxlbmFtZSBmb3Igd3JpdGluZyI7CisgICAg
CisgICAgcHJpbnQgUFJJVkhFQURFUiBzcGxpdCgiXHIiLCAkbGljZW5jZVRlbXBsYXRlKTsKKyAg
ICBwcmludCBQUklWSEVBREVSICJcbiI7CisgICAgCisgICAgbXkgJHRleHQgPSA8PCAiRU9GIjsK
KyNpZm5kZWYgJGd1YXJkCisjZGVmaW5lICRndWFyZAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQvJHtwYXJlbnRDbGFzc05hbWV9Lmg+CisjaW5jbHVkZSAiJHtp
bnRlcmZhY2VOYW1lfS5oIgorRU9GCisKKyAgICBwcmludCBQUklWSEVBREVSICR0ZXh0OworICAg
IAorICAgIHByaW50IFBSSVZIRUFERVIgbWFwIHsgIiNpbmNsdWRlIFwiJF9cIlxuIiB9IHNvcnQg
a2V5cyglaGRyUHJvcEluY2x1ZGVzKTsKKyAgICBwcmludCBQUklWSEVBREVSICJcbiIgaWYga2V5
cyglaGRyUHJvcEluY2x1ZGVzKTsKKyAgICAKKyAgICAkdGV4dCA9IDw8ICJFT0YiOworbmFtZXNw
YWNlIFdlYktpdCB7CisgICAgJHtjbGFzc05hbWV9ICoKKyAgICB3cmFwJHtpbnRlcmZhY2VOYW1l
fShXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICpjb3JlT2JqZWN0KTsKKworICAgIFdlYkNvcmU6
OiR7aW50ZXJmYWNlTmFtZX0gKgorICAgIGNvcmUoJHtjbGFzc05hbWV9ICpyZXF1ZXN0KTsKKwor
RU9GCisKKyAgICBwcmludCBQUklWSEVBREVSICR0ZXh0OworCisgICAgaWYgKCRjbGFzc05hbWUg
bmUgIldlYktpdERPTU5vZGUiKSB7CisgICAgICAgICR0ZXh0ID0gPDwgIkVPRiI7CisgICAgZ3Bv
aW50ZXIKKyAgICBraXQoV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogbm9kZSk7CisKK0VPRgor
ICAgICAgICBwcmludCBQUklWSEVBREVSICR0ZXh0OworICAgIH0KKworICAgICR0ZXh0ID0gPDwg
IkVPRiI7Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8qICR7Z3VhcmR9ICovCitF
T0YKKyAgICBwcmludCBQUklWSEVBREVSICR0ZXh0OworICAgIAorICAgIGNsb3NlKFBSSVZIRUFE
RVIpOworfQorCitzdWIgVXNlc01hbnVhbFRvSlNJbXBsZW1lbnRhdGlvbiB7CisgICAgbXkgJHR5
cGUgPSBzaGlmdDsKKworICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJOb2RlIiBvciAkdHlwZSBl
cSAiRG9jdW1lbnQiIG9yICR0eXBlIGVxICJIVE1MQ29sbGVjdGlvbiIgb3IKKyAgICAgICR0eXBl
IGVxICJTVkdQYXRoU2VnIiBvciAkdHlwZSBlcSAiU3R5bGVTaGVldCIgb3IgJHR5cGUgZXEgIkNT
U1J1bGUiIG9yICR0eXBlIGVxICJDU1NWYWx1ZSIgb3IKKyAgICAgICR0eXBlIGVxICJFdmVudCIg
b3IgJHR5cGUgZXEgIkVsZW1lbnQiIG9yICR0eXBlIGVxICJUZXh0IjsKKyAgICByZXR1cm4gMDsK
K30KKworc3ViIEdlbmVyYXRlIHsKKyAgICBteSAoJG9iamVjdCwgJGRhdGFOb2RlKSA9IEBfOwor
CisgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkxlZ2FjeVBhcmVudCJ9OworICAgIG15ICRoYXNSZWFsUGFyZW50ID0gQHskZGF0YU5vZGUt
PnBhcmVudHN9ID4gMDsKKyAgICBteSAkaGFzUGFyZW50ID0gJGhhc0xlZ2FjeVBhcmVudCB8fCAk
aGFzUmVhbFBhcmVudDsKKyAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gR2V0UGFyZW50Q2xhc3NO
YW1lKCRkYXRhTm9kZSk7CisgICAgbXkgJHBhcmVudEdPYmpUeXBlID0gR2V0UGFyZW50R09ialR5
cGUoJGRhdGFOb2RlKTsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsK
KworICAgICMgQWRkIHRoZSBkZWZhdWx0IGltcGwgaGVhZGVyIHRlbXBsYXRlCisgICAgQGNQcmVm
aXggPSBzcGxpdCgiXHIiLCAkbGljZW5jZVRlbXBsYXRlKTsKKyAgICBwdXNoKEBjUHJlZml4LCAi
XG4iKTsKKworICAgICRpbXBsSW5jbHVkZXN7IndlYmtpdG1hcnNoYWwuaCJ9ID0gMTsKKyAgICAk
aW1wbEluY2x1ZGVzeyJ3ZWJraXRwcml2YXRlLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3si
V2ViS2l0RE9NQmluZGluZy5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7ImdvYmplY3Qvd2Vi
a2l0ZG9tc3RyaW5nY29udmVydC5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7IndlYmtpdC8k
Y2xhc3NOYW1lLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3sid2Via2l0LyR7Y2xhc3NOYW1l
fVByaXZhdGUuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyIke2ludGVyZmFjZU5hbWV9Lmgi
fSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOworCisgICAg
JGhkckluY2x1ZGVzeyJ3ZWJraXQvJHtwYXJlbnRDbGFzc05hbWV9LmgifSA9IDE7CisKKyAgICBp
ZiAoJGNsYXNzTmFtZSBuZSAiV2ViS2l0RE9NTm9kZSIpIHsKKyAgICAgICAgbXkgJGNvbnZlcnRl
ciA9IDw8ICJFT0YiOworbmFtZXNwYWNlIFdlYktpdCB7CisgICAgCitncG9pbnRlciBraXQoV2Vi
Q29yZTo6JGludGVyZmFjZU5hbWUqIG9iaikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChv
YmogIT0gMCwgMCk7CisKKyAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6Omdl
dChvYmopKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgcmV0dXJuIERPTU9iamVjdENhY2hl
OjpwdXQob2JqLCBXZWJLaXQ6OndyYXAke2ludGVyZmFjZU5hbWV9KG9iaikpOworfQorICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0IC8vCisKK0VPRgorICAgIHB1c2goQGNCb2R5LCAkY29udmVy
dGVyKTsKKyAgICB9CisKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUhlYWRlcigkaW50ZXJmYWNlTmFt
ZSwgJHBhcmVudENsYXNzTmFtZSk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVDRmlsZSgkaW50ZXJm
YWNlTmFtZSwgJHBhcmVudENsYXNzTmFtZSwgJHBhcmVudEdPYmpUeXBlLCAkZGF0YU5vZGUpOwor
ICAgICRvYmplY3QtPkdlbmVyYXRlRW5kSGVhZGVyKCk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVQ
cml2YXRlSGVhZGVyKCRkYXRhTm9kZSk7Cit9CisKKyMgSW50ZXJuYWwgaGVscGVyCitzdWIgV3Jp
dGVEYXRhIHsKKyAgICBteSAoJG9iamVjdCwgJG5hbWUpID0gQF87CisKKyAgICAjIFdyaXRlIHB1
YmxpYyBoZWFkZXIuCisgICAgbXkgJGhkckZOYW1lID0gIiRvdXRwdXREaXIvIiAuICRuYW1lIC4g
Ii5oIjsKKyAgICBvcGVuKEhFQURFUiwgIj4kaGRyRk5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9w
ZW4gZmlsZSAkaGRyRk5hbWUiOworCisgICAgcHJpbnQgSEVBREVSIEBoUHJlZml4OworICAgIHBy
aW50IEhFQURFUiBAaFByZWZpeEd1YXJkOworICAgIHByaW50IEhFQURFUiAiI2luY2x1ZGUgXCJ3
ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oXCJcbiI7CisgICAgcHJpbnQgSEVBREVSICIjaW5jbHVk
ZSA8Z2xpYi1vYmplY3QuaD5cbiI7CisgICAgcHJpbnQgSEVBREVSICIjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdGRlZmluZXMuaD5cbiI7CisgICAgcHJpbnQgSEVBREVSIG1hcCB7ICIjaW5jbHVkZSBc
IiRfXCJcbiIgfSBzb3J0IGtleXMoJWhkckluY2x1ZGVzKTsKKyAgICBwcmludCBIRUFERVIgIlxu
IiBpZiBrZXlzKCVoZHJJbmNsdWRlcyk7CisgICAgcHJpbnQgSEVBREVSICJcbiI7CisgICAgcHJp
bnQgSEVBREVSIEBoQm9keVByZTsKKyAgICBwcmludCBIRUFERVIgQGhCb2R5OworCisgICAgY2xv
c2UoSEVBREVSKTsKKworICAgICMgV3JpdGUgdGhlIGltcGxlbWVudGF0aW9uIHNvdXJjZXMKKyAg
ICBteSAkaW1wbEZpbGVOYW1lID0gIiRvdXRwdXREaXIvIiAuICRuYW1lIC4gIi5jcHAiOworICAg
IG9wZW4oSU1QTCwgIj4kaW1wbEZpbGVOYW1lIikgb3IgZGllICJDb3VsZG4ndCBvcGVuIGZpbGUg
JGltcGxGaWxlTmFtZSI7CisKKyAgICBwcmludCBJTVBMIEBjUHJlZml4OworICAgIHByaW50IElN
UEwgIiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuIjsKKyAgICBwcmludCBJTVBMICIjaW5jbHVk
ZSBcImNvbmZpZy5oXCJcblxuIjsKKyAgICBwcmludCBJTVBMICIjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPlxuIjsKKyAgICBwcmludCBJTVBMICIjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPlxuIjsKKyAg
ICBwcmludCBJTVBMIG1hcCB7ICIjaW5jbHVkZSBcIiRfXCJcbiIgfSBzb3J0IGtleXMoJWltcGxJ
bmNsdWRlcyk7CisgICAgcHJpbnQgSU1QTCAiXG4iIGlmIGtleXMoJWltcGxJbmNsdWRlcyk7Cisg
ICAgcHJpbnQgSU1QTCBAY0JvZHk7CisKKyAgICBwcmludCBJTVBMICJcbiI7CisgICAgcHJpbnQg
SU1QTCBAY0JvZHlQcml2OworCisgICAgY2xvc2UoSU1QTCk7CisKKyAgICAlaW1wbEluY2x1ZGVz
ID0gKCk7CisgICAgJWhkckluY2x1ZGVzID0gKCk7CisgICAgQGhQcmVmaXggPSAoKTsKKyAgICBA
aEJvZHkgPSAoKTsKKworICAgIEBjUHJlZml4ID0gKCk7CisgICAgQGNCb2R5ID0gKCk7CisgICAg
QGNCb2R5UHJpdiA9ICgpOworfQorCitzdWIgR2VuZXJhdGVJbnRlcmZhY2UgeworICAgIG15ICgk
b2JqZWN0LCAkZGF0YU5vZGUsICRkZWZpbmVzKSA9IEBfOworICAgIG15ICRuYW1lID0gJGRhdGFO
b2RlLT5uYW1lOworCisgICAgIyBTZXQgdXAgc29tZSBnbG9iYWwgdmFyaWFibGVzCisgICAgJGNs
YXNzTmFtZSA9IEdldENsYXNzTmFtZSgkZGF0YU5vZGUtPm5hbWUpOworICAgICRvYmplY3QtPkdl
bmVyYXRlKCRkYXRhTm9kZSk7CisKKyAgICAjIFdyaXRlIGNoYW5nZXMKKyAgICBteSAkZm5hbWUg
PSAiV2ViS2l0RE9NXyIgLiAkbmFtZTsKKyAgICAkZm5hbWUgPX4gcy9fLy9nOworICAgICRvYmpl
Y3QtPldyaXRlRGF0YSgkZm5hbWUpOworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVhZGVycy5wbCBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMTAxNzQwNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwKQEAgLTAsMCArMSw3NyBAQAorIyEv
dXNyL2Jpbi9wZXJsIC13CisjCisjIENvcHlyaWdodCAoQykgMjAwOSBBZGFtIERpbmdsZSA8YWRh
bUB5b3JiYS5vcmc+CisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFdlYktpdAorIyAKKyMgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIyAKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
IyAKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisjIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisjIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIyAKKworbXkgJGNsYXNzbGlzdCA9IDxTVERJTj47
CitjaG9tcCgkY2xhc3NsaXN0KTsKK215IEBjbGFzc2VzID0gc3BsaXQgLyAvLCAkY2xhc3NsaXN0
OworQGNsYXNzZXMgPSBzb3J0IEBjbGFzc2VzOworCitwcmludCA8PEVPRjsKKy8qIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsLiAgRE8g
Tk9UIE1PRElGWSEKKyAgIAorICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCitFT0YKKworbXkgJG91dFR5cGUgPSAkQVJHVlswXTsKK215ICRoZWFkZXI7CitpZiAo
JG91dFR5cGUgZXEgImRlZmluZXMiKSB7CisgICAgJGhlYWRlciA9ICJ3ZWJraXRkb21kZWZpbmVz
X2giOworfSBlbHNpZiAoJG91dFR5cGUgZXEgImdkb20iKSB7CisgICAgJGhlYWRlciA9ICJ3ZWJr
aXRkb21faCI7Cit9IGVsc2UgeworICAgIGRpZSAidW5rbm93biBvdXRwdXQgdHlwZSI7Cit9CisK
K3ByaW50ICIjaWZuZGVmICR7aGVhZGVyfVxuIjsKK3ByaW50ICIjZGVmaW5lICR7aGVhZGVyfVxu
IjsKK3ByaW50ICJcbiI7CisKK2lmICgkb3V0VHlwZSBlcSAiZGVmaW5lcyIpIHsKKyAgICBmb3Jl
YWNoIG15ICRjbGFzcyAoQGNsYXNzZXMpIHsKKyAgICAgICAgcHJpbnQgInR5cGVkZWYgc3RydWN0
IF9XZWJLaXRET00ke2NsYXNzfSBXZWJLaXRET00ke2NsYXNzfTtcbiI7CisgICAgICAgIHByaW50
ICJ0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NJHtjbGFzc31DbGFzcyBXZWJLaXRET00ke2NsYXNz
fUNsYXNzO1xuIjsKKyAgICAgICAgcHJpbnQgIlxuIjsKKyAgICB9Cit9IGVsc2lmICgkb3V0VHlw
ZSBlcSAiZ2RvbSIpIHsKKyAgICBmb3JlYWNoIG15ICRjbGFzcyAoQGNsYXNzZXMpIHsKKyAgICAg
ICAgcHJpbnQgIiNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NJHtjbGFzc30uaD5cbiI7CisgICAg
fQorfQorCitwcmludCAiXG4iOworcHJpbnQgIiNlbmRpZlxuIjsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL05vZGUuaWRsIGIvV2ViQ29yZS9kb20vTm9kZS5pZGwKaW5kZXggYzZjZDRiOS4uMTk1
NDZiZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5pZGwKKysrIGIvV2ViQ29yZS9kb20v
Tm9kZS5pZGwKQEAgLTYxLDcgKzYxLDkgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmc7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIG5leHRTaWJsaW5nOwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFwICAgICBhdHRyaWJ1dGVzOworI2lmICFkZWZp
bmVkKExBTkdVQUdFX0dPQkpFQ1QpIHx8ICFMQU5HVUFHRV9HT0JKRUNUCiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBEb2N1bWVudCAgICAgICAgIG93bmVyRG9jdW1lbnQ7CisjZW5kaWYKIAog
ICAgICAgICBbT2xkU3R5bGVPYmpDLCBDdXN0b21dIE5vZGUgaW5zZXJ0QmVmb3JlKGluIFtSZXR1
cm5dIE5vZGUgbmV3Q2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gTm9kZSByZWZDaGlsZCkKQEAgLTEzMiw2ICsxMzQsNyBAQCBtb2R1bGUg
Y29yZSB7CiAjZW5kaWYgLyogZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgKi8KIAogI2lm
ICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MK
KyNpZiAhZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSB8fCAhTEFOR1VBR0VfR09CSkVDVAogICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBs
aXN0ZW5lciwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29s
ZWFuIHVzZUNhcHR1cmUpOwpAQCAtMTQxLDYgKzE0NCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAg
ICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQogICAgICAgICAgICAgcmFp
c2VzKEV2ZW50RXhjZXB0aW9uKTsKICNlbmRpZgorI2VuZGlmCiAgICAgfTsKIAogfQotLSAKMS42
LjUuMgoK
</data>
<flag name="commit-queue"
          id="28733"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47928</attachid>
            <date>2010-02-02 05:53:38 -0800</date>
            <delta_ts>2010-04-21 08:33:41 -0700</delta_ts>
            <desc>dombindings.diff</desc>
            <filename>dombindings.diff</filename>
            <type>text/plain</type>
            <size>67041</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiNjllYzRiMDdiODEwMGQyYzMxY2M0NGEwMWVmMTljZGJkNDFjYWZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDEzIEphbiAyMDEwIDEzOjE1OjUxICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wMi0w
MiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBB
ZGQgYnVpbGQgYml0cyBmb3IgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzLgoKICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgoKMjAxMC0wMi0wMiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2Jq
ZWN0IERPTSBiaW5kaW5ncwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMzU5MAoKICAgICAgICBJbml0aWFsIHZlcnNpb24gb2YgdGhlIEdPYmplY3QgRE9N
IGJpbmRpbmdzLgoKICAgICAgICBPbmx5IGJpbmRpbmdzIGZvciBOb2RlLmlkbCBhbmQgYSBmZXcg
b2YgaXRzIGRlcGVuZGVuY2llcyBhcmUKICAgICAgICBwcm92aWRlZCwgd2l0aG91dCBwdWJsaWMg
QVBJIHRvIGFjY2VzcyB0aGVtIGF0IHRoZQogICAgICAgIG1vbWVudC4gUmVmZXJlbmNlcyB0byB0
aGUgRG9jdW1lbnQgaW50ZXJmYWNlcyBhbmQgdG8KICAgICAgICBFdmVudExpc3RlbmVycyBpbiBO
b2RlLmlkbCBhcmUgaWdub3JlZCBmb3IgR09iamVjdCB0byBtYWtlIHRoZQogICAgICAgIGluaXRp
YWwgcGF0Y2ggYXMgc21hbGwgYXMgcG9zc2libGUsIGJ1dCB3aWxsIGJlIGVuYWJsZWQgaW4gYQog
ICAgICAgIGZvbGxvdy11cCBwYXRjaC4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAg
ICAqIGJpbmRpbmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHA6IEFkZGVkLgogICAg
ICAgIChjb252ZXJ0VG9VVEY4U3RyaW5nKToKICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvQ29u
dmVydFRvVVRGOFN0cmluZy5oOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5jcHA6IEFkZGVkLgogICAgICAgIChXZWJLaXQ6OmRvbU9iamVjdHMpOgog
ICAgICAgIChXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpnZXQpOgogICAgICAgIChXZWJLaXQ6OkRP
TU9iamVjdENhY2hlOjpwdXQpOgogICAgICAgIChXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3Jn
ZXQpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6Omtp
dCk6CiAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaDogQWRkZWQu
CiAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5jcHA6IEFkZGVkLgog
ICAgICAgICh3ZWJraXRfZG9tX29iamVjdF9pbml0KToKICAgICAgICAod2Via2l0X2RvbV9vYmpl
Y3RfY2xhc3NfaW5pdCk6CiAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVj
dC5oOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmpl
Y3QucG06IEFkZGVkLgogICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRl
LWhlYWRlcnMucGw6IEFkZGVkLgogICAgICAgICogZG9tL05vZGUuaWRsOgotLS0KIENoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiBHTlVt
YWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjQgKyst
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzYgKwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDk0ICsrLQogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcu
Y3BwICAgfCAgIDM5ICsKIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3Ry
aW5nLmggICAgIHwgICAzNCArCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmlu
ZGluZy5jcHAgICAgICB8ICAgOTEgKysKIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRE
T01CaW5kaW5nLmggICAgICAgIHwgICA0NCArCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NT2JqZWN0LmNwcCAgICAgICB8ICAgMjMgKwogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L1dlYktpdERPTU9iamVjdC5oICAgICAgICAgfCAgIDU4ICsKIFdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAgIHwgMTA4NiArKysrKysrKysrKysrKysrKysr
KwogLi4uL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsICAgfCAg
IDc3ICsrCiBXZWJDb3JlL2RvbS9Ob2RlLmlkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDQgKwogMTMgZmlsZXMgY2hhbmdlZCwgMTY1OCBpbnNlcnRpb25zKCspLCAzIGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252
ZXJ0VG9VVEY4U3RyaW5nLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3Jl
L2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5jcHAKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IDM1OGU1OTcuLmMzMGEyN2MgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMi0wMiAgWGFuIExvcGV6ICA8
eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgQWRkIGJ1aWxk
IGJpdHMgZm9yIHRoZSBHT2JqZWN0IERPTSBiaW5kaW5ncy4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorCiAyMDEwLTAxLTI5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL0dO
VW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggZjlhZDIxYy4uNGNmZWJlNSAxMDA2
NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTM1LDYgKzM1
LDcgQEAgRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUyA9IFwKIAogIyBEaXJlY3RvcnkgZm9yIGF1
dG9nZW5lcmF0ZWQgc291cmNlcwogR0VOU09VUkNFUyA6PSAkKHRvcF9idWlsZGRpcikvRGVyaXZl
ZFNvdXJjZXMKK0dFTlNPVVJDRVNXRUJLSVRET00gOj0gJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdAogR0VOUFJPR1JBTVMgOj0gJCh0b3BfYnVpbGRkaXIpL1Byb2dyYW1zCiAK
ICMgU2NyaXB0IGZvciBjcmVhdGluZyBoYXNoIHRhYmxlcwpAQCAtODksNiArOTAsMTEgQEAgQ0xF
QU5GSUxFUyA6PQogRElTVENMRUFORklMRVMgOj0KIE1BSU5UQUlORVJDTEVBTkZJTEVTIDo9CiAK
K3dlYmNvcmVndGtfY3BwZmxhZ3MgKz0gXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3Vy
Y2VzL3dlYmtpdCBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9iaW5kaW5ncyBcCisJLUkkKHNyY2Rp
cikvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0CisKICMgQ0ZMQUdTL0NYWEZMQUdTIHVzZWQgYnkg
V2ViQ29yZSBhbmQgV2ViS2l0CiAjCiAjIGd0aysucGMgYWxyZWFkeSBpbmNsdWRlIGdsaWIsIGNh
aXJvLCBmcmVldHlwZSBhbmQgcGFuZ28gQ0ZMQUdTCkBAIC0yMzYsNiArMjQyLDcgQEAgbGlid2Vi
a2l0XzFfMF9sYV9MSUJBREQgPSBcCiAJLWxwdGhyZWFkIFwKIAlsaWJKYXZhU2NyaXB0Q29yZS5s
YSBcCiAJbGliV2ViQ29yZUpTLmxhIFwKKwlsaWJnZG9tLmxhIFwKIAkkKHdlYmNvcmVfbGRmbGFn
cykgXAogCSQoQ0FJUk9fTElCUykgXAogCSQoQ09WRVJBR0VfTERGTEFHUykgXApAQCAtMjU3LDYg
KzI2NCwxMCBAQCBsaWJ3ZWJraXRfMV8wX2xhX0xJQkFERCA9IFwKIAkkKFVOSUNPREVfTElCUykg
XAogCSQoWFRfTElCUykKIAorbGliZ2RvbV9sYWRpciA9ICQocHJlZml4KS9pbmNsdWRlL3dlYmtp
dC0xLjAvd2Via2l0ZG9tCitsaWJnZG9tX2xhX0hFQURFUlMgPSBcCisJJChsaWJnZG9tX2hfYXBp
KQorCiAjCiAjIEV4dHJhIGNoZWNrcyBhbmQgZmxhZ3MKIGdsb2JhbF9jcHBmbGFncyArPSBcCkBA
IC0zMzYsNiArMzQ3LDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAogd2Via2l0Z3RrX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGVudW10eXBlcy5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbWVudW10eXBlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdG1hcnNoYWwuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRtYXJzaGFsLmggXAogCVdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGVudW10eXBlcy5oCkBAIC0zODksNyArNDAxLDggQEAgd2Vi
a2l0Z3RrX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrIFwKIAktSSQoc3Jj
ZGlyKS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3Rr
L3dlYmtpdCBcCi0JLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ay93ZWJraXQKKwktSSQodG9w
X2J1aWxkZGlyKS9XZWJLaXQvZ3RrL3dlYmtpdCBcCisJLUkkKEdFTlNPVVJDRVNXRUJLSVRET00p
CiAKIHdlYmtpdGd0a19jbGVhbmZpbGVzICs9IFwKIAkkKHRvcF9idWlsZGRpcikvc3RhbXAtd2Vi
a2l0bWFyc2hhbC5jcHAgXApAQCAtNTEwLDYgKzUyMyw0OSBAQCBEZXJpdmVkU291cmNlcy93ZWJr
aXRlbnVtdHlwZXMuY3BwOiAkKHdlYmtpdGd0a19oX2FwaSkgR05VbWFrZWZpbGUKIAkmJiBjcCB4
Z2VuLWd0YyAkQCBcCiAJJiYgcm0gLWYgeGdlbi1ndGMKIAorV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0ZG9tZW51bXR5cGVzLmg6IHN0YW1wLXdlYmtpdGRvbWVudW10eXBlcy5oCisJQHRydWUKK3N0
YW1wLXdlYmtpdGRvbWVudW10eXBlcy5oOiAkKGxpYmdkb21faF9hcGkpIEdOVW1ha2VmaWxlCisJ
JChBTV9WX0dFTilnbGliLW1rZW51bXMgXAorCQkJLS1maGVhZCAiI2lmbmRlZiBXRUJLSVRfRE9N
X0VOVU1fVFlQRVNfSFxuIiBcCisJCQktLWZoZWFkICIjZGVmaW5lIFdFQktJVF9ET01fRU5VTV9U
WVBFU19IXG5cbiIgXAorCQkJLS1maGVhZCAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG5cbiIg
XAorCQkJLS1maGVhZCAiR19CRUdJTl9ERUNMU1xuXG4iIFwKKwkJCS0tZnRhaWwgIkdfRU5EX0RF
Q0xTXG5cbiIgXAorCQkJLS1mdGFpbCAiI2VuZGlmXG4iIFwKKwkJCS0tZnByb2QgIiNpbmNsdWRl
IDx3ZWJraXQvQGJhc2VuYW1lQD5cblxuIiBcCisJCQktLWVwcm9kICIjZGVmaW5lIFdFQktJVF9E
T01fVFlQRV9ARU5VTVNIT1JUQCBAZW51bV9uYW1lQF9nZXRfdHlwZSgpXG5cbiIgXAorCQkJLS1l
cHJvZCAiV0VCS0lUX0FQSSBHVHlwZVxuQGVudW1fbmFtZUBfZ2V0X3R5cGUodm9pZCk7blxuIiBc
CisJCQkkKGxpYmdkb21faF9hcGkpIHwgXAorCQlzZWQgJ3Msd2ViX2tpdCx3ZWJraXRfZG9tLCcg
fCBcCisJCXNlZCAncyxXRUJLSVRfRE9NX1RZUEVfS0lULFdFQktJVF9ET01fVFlQRSwnIFwKKwkJ
PiB4Z2VuLWNndGggXAorCSYmIChjbXAgLXMgeGdlbi1jZ3RoIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGRvbWVudW10eXBlcy5oIHx8IGNwIHhnZW4tY2d0aCBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRkb21lbnVtdHlwZXMuaCkgXAorCSYmIHJtIC1mIHhnZW4tY2d0aCBcCisJJiYgZWNobyB0aW1l
c3RhbXAgPiAkKEBGKQorCitEZXJpdmVkU291cmNlcy93ZWJraXRkb21lbnVtdHlwZXMuY3BwOiAk
KHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG9tZW51bXR5cGVzLmggJChs
aWJnZG9tX2hfYXBpKSBHTlVtYWtlZmlsZQorCSQoQU1fVl9HRU4pZ2xpYi1ta2VudW1zIFwKKwkJ
CS0tZmhlYWQgIiNpbmNsdWRlIDxjb25maWcuaD5cbiIgXAorCQkJLS1maGVhZCAiI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+XG4iIFwKKwkJCS0tZmhlYWQgIiNpbmNsdWRlIFwiJCh0b3BfYnVpbGRk
aXIpL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvbWVudW10eXBlcy5oXCJcblxuIiBcCisJCQkt
LWZoZWFkICJleHRlcm4gXCJDXCIge1xuXG4iIFwKKwkJCS0tZnByb2QgIlxuLyogZW51bWVyYXRp
b25zIGZyb20gXCJAZmlsZW5hbWVAXCIgKi8iIFwKKwkJCS0tdmhlYWQgInN0YXRpYyBjb25zdCBH
QFR5cGVAVmFsdWUgX0BlbnVtX25hbWVAX3ZhbHVlc10gPSB7IiBcCisJCQktLXZwcm9kICIgICAg
eyBAVkFMVUVOQU1FQCwgXCJAVkFMVUVOQU1FQFwiLCBcIkB2YWx1ZW5pY2tAXCIgfSwiIFwKKwkJ
CS0tdnRhaWwgIiAgICB7IDAsIE5VTEwsIE5VTEwgfVxufTtcblxuIiBcCisJCQktLXZ0YWlsICJH
VHlwZSBAZW51bV9uYW1lQF9nZXRfdHlwZSh2b2lkKVxue1xuIiBcCisJCQktLXZ0YWlsICIgICAg
c3RhdGljIEdUeXBlIHR5cGUgPSAwO1xuXG4iIFwKKwkJCS0tdnRhaWwgIiAgICBpZiAoIXR5cGUp
XG4iIFwKKwkJCS0tdnRhaWwgIiAgICAgICAgdHlwZSA9IGdfQHR5cGVAX3JlZ2lzdGVyX3N0YXRp
YyhcIkBFbnVtTmFtZUBcIiwgX0BlbnVtX25hbWVAX3ZhbHVlcyk7XG5cbiIgXAorCQkJLS12dGFp
bCAiICAgIHJldHVybiB0eXBlO1xufVxuXG4iIFwKKwkJCS0tZnRhaWwgIn1cbiIgXAorCQkkKGxp
Ymdkb21faF9hcGkpIHwgXAorCQlzZWQgJ3Msd2ViX2tpdCx3ZWJraXRkb20sJyBcCisJCT4geGdl
bi1jZ3RjIFwKKwkmJiBjcCB4Z2VuLWNndGMgJEAgXAorCSYmIHJtIC1mIHhnZW4tY2d0YworCiAj
IEZpbGVzIHRoYXQgd2lsbCBiZSBkaXN0cmlidXRlZAogRVhUUkFfRElTVCArPSBcCiAJJChzcmNk
aXIpL2d0ay1kb2MubWFrZSBcCkBAIC01NTAsNiArNjA2LDkgQEAgd2Via2l0X3Rlc3RzX2NmbGFn
cyA9IFwKIAktSSQoc3JjZGlyKS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJ
LUkkKHNyY2RpcikvV2ViS2l0L2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ayBc
CisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMgXAorCS1JJCh0b3Bfc3JjZGlyKS9X
ZWJDb3JlL2JpbmRpbmdzIFwKKwktSSQodG9wX3NyY2RpcikvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0IFwKIAkkKGdsb2JhbF9jZmxhZ3MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZM
QUdTKSBcCkBAIC02NzMsNyArNzMyLDggQEAgQlVJTFRfU09VUkNFUyArPSBcCiAJJCh3ZWJjb3Jl
X2J1aWx0X3NvdXJjZXMpIFwKIAkkKHdlYmNvcmVfYnVpbHRfbm9zb3VyY2VzKSBcCiAJJCh3ZWJr
aXRndGtfYnVpbHRfc291cmNlcykgXAotCSQod2Via2l0Z3RrX2J1aWx0X25vc291cmNlcykKKwkk
KHdlYmtpdGd0a19idWlsdF9ub3NvdXJjZXMpIFwKKwkkKGdkb21fYnVpbHRfbm9zb3VyY2VzKQog
CiAjIFByb2plY3Qtd2lkZSBjbGVhbiBydWxlcwogIyBGaWxlcyB0aGF0IHdpbGwgYmUgY2xlYW5l
ZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBmMmU2YjgwLi44MzVhNDE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEwLTAyLTAyICBYYW4gTG9wZXog
IDx4bG9wZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM1OTAKKworICAgICAgICBJbml0aWFs
IHZlcnNpb24gb2YgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzLgorCisgICAgICAgIE9ubHkgYmlu
ZGluZ3MgZm9yIE5vZGUuaWRsIGFuZCBhIGZldyBvZiBpdHMgZGVwZW5kZW5jaWVzIGFyZQorICAg
ICAgICBwcm92aWRlZCwgd2l0aG91dCBwdWJsaWMgQVBJIHRvIGFjY2VzcyB0aGVtIGF0IHRoZQor
ICAgICAgICBtb21lbnQuIFJlZmVyZW5jZXMgdG8gdGhlIERvY3VtZW50IGludGVyZmFjZXMgYW5k
IHRvCisgICAgICAgIEV2ZW50TGlzdGVuZXJzIGluIE5vZGUuaWRsIGFyZSBpZ25vcmVkIGZvciBH
T2JqZWN0IHRvIG1ha2UgdGhlCisgICAgICAgIGluaXRpYWwgcGF0Y2ggYXMgc21hbGwgYXMgcG9z
c2libGUsIGJ1dCB3aWxsIGJlIGVuYWJsZWQgaW4gYQorICAgICAgICBmb2xsb3ctdXAgcGF0Y2gu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0
L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNvbnZlcnRUb1VURjhT
dHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5o
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6ZG9tT2JqZWN0cyk6CisgICAgICAgIChXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpnZXQpOgorICAgICAgICAoV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
cHV0KToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldCk6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5oOiBBZGRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAo
d2Via2l0X2RvbV9vYmplY3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX29iamVjdF9jbGFz
c19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBt
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVh
ZGVycy5wbDogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaWRsOgorCiAyMDEwLTAxLTMxICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBS
ZXZlcnQgcjU0MTEyIGFuZCByNTQxMjQgYmVjYXVzZSBvZiBXaW5kb3dzIGJ1aWxkIGVycm9yLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggN2FmZThkOC4uZjRiY2MwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC05LDkgKzksMTMgQEAgV0VCQ09S
RV9DU1NfUFJPUEVSVFlfTkFNRVMgOj0gJChXZWJDb3JlKS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5p
bgogV0VCQ09SRV9DU1NfVkFMVUVfS0VZV09SRFMgOj0gJChXZWJDb3JlKS9jc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgogCiB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKKwktSSQoc3JjZGlyKS9XZWJLaXQv
Z3RrIFwKKwktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0IFwKKwktSSQoc3Jj
ZGlyKS9XZWJLaXQvZ3RrL3dlYmtpdCBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZSBcCiAJLUkkKHNy
Y2RpcikvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2JpbmRp
bmdzL2pzIFwKKwktSSQoc3JjZGlyKS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QgXAogCS1JJChz
cmNkaXIpL1dlYkNvcmUvYnJpZGdlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2JyaWRnZS9jIFwK
IAktSSQoc3JjZGlyKS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjIFwKQEAgLTc1LDcgKzc5LDggQEAg
d2ViY29yZWd0a19jcHBmbGFncyArPSBcCiB3ZWJjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvRG9jVHlwZVN0cmluZ3MuY3BwIFwKIAlEZXJpdmVkU291cmNlcy90b2tl
bml6ZXIuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9Db2xvckRhdGEuYworCURlcml2ZWRTb3VyY2Vz
L0NvbG9yRGF0YS5jIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvd2Via2l0ZG9tZHVtbXkuYwog
CiB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0NTU0dyYW1tYXIu
Y3BwIFwKQEAgLTI5OCw2ICszMDMsMTYgQEAgSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3ht
bC9YTUxTZXJpYWxpemVyLmlkbCBcCiAJV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5pZGwKIAor
d2ViY29yZWd0a19kb21fc291cmNlcyA9IFwKKwlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvQ29u
dmVydFRvVVRGOFN0cmluZy5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0
VG9VVEY4U3RyaW5nLmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5k
aW5nLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaCBc
CisJV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5jcHAgXAorCVdlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaAorCit3ZWJjb3JlZ3RrX3NvdXJj
ZXMgKz0gJCh3ZWJjb3JlZ3RrX2RvbV9zb3VyY2VzKQorCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvV2ViQ29yZVByZWZpeC5oIFwKICAgICAgICAgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwIFwKQEAgLTM1OTIsNiArMzYwNyw4MiBAQCBsaWJXZWJDb3JlSlMu
bGE6ICQobGliV2ViQ29yZUpTX29iamVjdHMpCiAJJChDWFhMSU5LKSAkKGxpYldlYkNvcmVKU19v
YmplY3RzKSAkKExJQlMpCiAKIAorRGVyaXZlZFNvdXJjZXMvd2Via2l0L3dlYmtpdGRvbWR1bW15
LmM6CisJZWNobyA+ICRACisKKyMgQmVjYXVzZSBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NT2JqZWN0LmggaXMgc3RhdGljIHNvdXJjZSBidXQgaXMgYWxzbyBhIGRpc3RyaWJ1dGVk
IGhlYWRlcgorIyByZXF1aXJlZCBieSBvdGhlciBkaXN0cmlidXRlZCBoZWFkZXJzIChib3RoIHN0
YXRpYyBhbmQgYXV0by1nZW5lcmF0ZWQpLCBuZWVkIHRvIG1vdmUgdGhpcyB0byB0aGUKKyMgRGVy
aXZlZFNvdXJjZXMvd2Via2l0IGRpcmVjdG9yeS4gIFRoZSByZWFzb24gaXMgdGhhdCB3ZSB3YW50
IGFsbCBoZWFkZXIgZmlsZXMgZGlzdHJpYnV0ZWQgaW4gdGhlCisjIGluY2x1ZGUvd2Via2l0LXgu
eS93ZWJraXQgZGlyZWN0b3J5LCBidXQgZG8gbm90IHdhbnQgdG8gbmFtZSB0aGUgV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0IGRpcmVjdG9yeSAKKyMgIndlYmtpdCIsIGFzIHRoYXQncyBhIGJpdCBw
cmVzdW1wdHVvdXMgZm9yIGEgR1RLIGJpbmRpbmcuCiskKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0L1dlYktpdERPTU9iamVjdC5oOgorCWNwIC1mICQoV2ViQ29yZSkvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaCAkQAorCisjIFN0YXJ0IHdpdGggYSBzdWJzZXQg
b2YgYWxsIHRoZSBET00gYmluZGluZ3MKK0lETF9CSU5ESU5HU19HRE9NIDo9IFwKKwlXZWJDb3Jl
L2Nzcy9DU1NSdWxlLmlkbCBcCisJV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaWRsIFwKKwlXZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbCBcCisJV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5pZGwgXAorCVdlYkNvcmUvY3NzL0NTU1ZhbHVlLmlkbCBcCisJV2ViQ29yZS9jc3MvTWVk
aWFMaXN0LmlkbCBcCisJV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5pZGwgXAorCVdlYkNvcmUvZG9t
L0F0dHIuaWRsIFwKKwlXZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBcCisJV2ViQ29yZS9kb20vTmFt
ZWROb2RlTWFwLmlkbCBcCisJV2ViQ29yZS9kb20vTm9kZS5pZGwgXAorCVdlYkNvcmUvZG9tL05v
ZGVMaXN0LmlkbAorCisjIEFsbCBjbGFzc2VzIGF1dG9nZW5lcmF0ZWQgaW4gdGhlIEdPYmplY3Qg
RE9NIGJpbmRpbmdzCitHRE9NX0FVVE9fQ0xBU1NFUyA6PSAkKGJhc2VuYW1lICQobm90ZGlyICQo
SURMX0JJTkRJTkdTX0dET00pKSkKKworIyBUaGUgY2xhc3NlcyBpbXBsZW1lbnRlZCBtYW51YWxs
eQorR0RPTV9GSVhFRF9DTEFTU0VTIDo9IE9iamVjdAorCitHRE9NX0NMQVNTRVMgOj0gJChHRE9N
X0FVVE9fQ0xBU1NFUykgJChHRE9NX0ZJWEVEX0NMQVNTRVMpCisKKyMgRmlsdGVyIG91dCBTVkcg
Zm9yIG5vdworRkVBVFVSRV9ERUZJTkVTX0dET00gOj0gJChmaWx0ZXItb3V0IEVOQUJMRS1TVkcl
LCAkKEZFQVRVUkVfREVGSU5FUykpCisKKyMgQXV0b2dlbmVyYXRlZCBoZWFkZXIgZmlsZXMKK0dE
T01fSEVBREVSU19CVUlMVCA6PSAkKHBhdHN1YnN0ICUsRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dl
YktpdERPTSUuaCwkKEdET01fQVVUT19DTEFTU0VTKSkgXAorCSQodG9wX2J1aWxkZGlyKS9EZXJp
dmVkU291cmNlcy93ZWJraXQvd2Via2l0ZG9tLmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVk
U291cmNlcy93ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTU9iamVjdC5oCisKKyMgQXV0b2dlbmVyYXRlZCBz
b3VyY2UgZmlsZXMKK0dET01fU09VUkNFU19CVUlMVCA6PSAkKHBhdHN1YnN0ICUsRGVyaXZlZFNv
dXJjZXMvd2Via2l0L1dlYktpdERPTSUuY3BwLCQoR0RPTV9BVVRPX0NMQVNTRVMpKQorCisjIEhh
bmQtY29kZWQgaGVhZGVyIGZpbGVzCitHRE9NX0hFQURFUlNfRklYRUQgOj0gJChwYXRzdWJzdCAl
LCQoc3JjZGlyKS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NJS5oLCQoR0RPTV9G
SVhFRF9DTEFTU0VTKSkKKworIyBBbGwgaGVhZGVyIGZpbGVzIHRoYXQgZ2V0IGluc3RhbGxlZAor
bGliZ2RvbV9oX2FwaSA6PSAkKEdET01fSEVBREVSU19GSVhFRCkgJChHRE9NX0hFQURFUlNfQlVJ
TFQpCisKK0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb20uaDogJChXZWJDb3JlKS9iaW5k
aW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVhZGVycy5wbAorCWVjaG8gJChHRE9NX0NM
QVNTRVMpIHwgJChQRVJMKSAkPCBnZG9tID4gJEAKKworRGVyaXZlZFNvdXJjZXMvd2Via2l0L3dl
YmtpdGRvbWRlZmluZXMuaDogJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtZ2Vu
ZXJhdGUtaGVhZGVycy5wbCAkKElETF9CSU5ESU5HU19HRE9NKQorCWVjaG8gJChHRE9NX0NMQVNT
RVMpIHwgJChQRVJMKSAkPCBkZWZpbmVzID4gJEAKKworRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dl
YktpdERPTSUuaDogRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTSUuY3BwOworCitEZXJp
dmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NJS5jcHA6ICUuaWRsICQoU0NSSVBUU19CSU5ESU5H
UykgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtICQo
d2ViY29yZWd0a19kb21fc291cmNlcykKKwkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJp
bmRpbmdzLnBsIC0taW5jbHVkZSAkKFdlYkNvcmUpL2RvbSAtLWluY2x1ZGUgJChXZWJDb3JlKS9o
dG1sIC0taW5jbHVkZSAkKFdlYkNvcmUpL2NzcyAtLWluY2x1ZGUgJChXZWJDb3JlKS9wYWdlIC0t
aW5jbHVkZSAkKFdlYkNvcmUpL3htbCAtLWluY2x1ZGUgJChXZWJDb3JlKS9zdmcgLS1vdXRwdXRE
aXIgIiQoR0VOU09VUkNFU1dFQktJVERPTSkiIC0tZGVmaW5lcyAiTEFOR1VBR0VfR09CSkVDVD0x
ICQoRkVBVFVSRV9ERUZJTkVTX0dET00pIiAtLWdlbmVyYXRvciBHT2JqZWN0ICQ8CisKK2dkb21f
YnVpbHRfbm9zb3VyY2VzIDo9ICQoR0RPTV9IRUFERVJTX0JVSUxUKSAkKEdET01fU09VUkNFU19C
VUlMVCkKKworbGliZ2RvbV9vYmplY3RzIDo9ICQoc3Vic3QgLmNwcCwubG8sJChHRE9NX1NPVVJD
RVNfQlVJTFQpKQorCistaW5jbHVkZSBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvJChERVBESVIp
LyUuUGxvCistaW5jbHVkZSBEZXJpdmVkU291cmNlcy93ZWJraXQvJChERVBESVIpLyUuUGxvCisK
KyQobGliZ2RvbV9vYmplY3RzKTogQU1fQ1BQRkxBR1MrPSQobGlid2Via2l0XzFfMF9sYV9DUFBG
TEFHUykKKyQobGliZ2RvbV9vYmplY3RzKTogQU1fQ1hYRkxBR1MrPSQobGlid2Via2l0XzFfMF9s
YV9DWFhGTEFHUykKKworbGliZ2RvbS5sYTogJChsaWJnZG9tX29iamVjdHMpCisJJChDWFhMSU5L
KSAkKGxpYmdkb21fb2JqZWN0cykgJChMSUJTKQorCiBub2luc3RfSEVBREVSUyArPSBcCiAJJChJ
RExfQklORElOR1MpCiAKQEAgLTM2MDcsNiArMzY5OCw3IEBAIHdlYmNvcmVfZGlzdCArPSBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0luRmlsZXNQYXJzZXIucG0gXAogCVdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBcCisJV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JHT2JqZWN0LnBtIFwKIAlXZWJDb3JlL2Nzcy9odG1sLmNzcyBcCiAJV2ViQ29y
ZS9jc3MvbWF0aG1sLmNzcyBcCiAJV2ViQ29yZS9jc3MvcXVpcmtzLmNzcyBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhjZDY2NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0
b24gPGxrY2xAbGtjbC5uZXQ+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKKworI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKworI2luY2x1ZGUgPGdsaWIuaD4KKworZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJp
bmcoV2ViQ29yZTo6U3RyaW5nIGNvbnN0JiBzKQoreworICAgIHJldHVybiBnX3N0cmR1cChzLnV0
ZjgoKS5kYXRhKCkpOworfQorCitnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpL
VVJMIGNvbnN0JiBzKQoreworICAgIHJldHVybiBnX3N0cmR1cChzLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworfQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvQ29udmVy
dFRvVVRGOFN0cmluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhT
dHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmI2NDE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJp
bmcuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEx1a2UgS2Vu
bmV0aCBDYXNzb24gTGVpZ2h0b24gPGxrY2xAbGtjbC5uZXQ+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBDb252ZXJ0VG9VVEY4U3RyaW5nX2gKKyNkZWZpbmUgQ29u
dmVydFRvVVRGOFN0cmluZ19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFN0cmluZzsK
K2NsYXNzIEtVUkw7Cit9CisKK3R5cGVkZWYgY2hhciBnY2hhcjsKKworZ2NoYXIqIGNvbnZlcnRU
b1VURjhTdHJpbmcoV2ViQ29yZTo6U3RyaW5nIGNvbnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9V
VEY4U3RyaW5nKFdlYkNvcmU6OktVUkwgY29uc3QmIHMpOworCisjZW5kaWYgLyogQ29udmVydFRv
VVRGOFN0cmluZ19oICovCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmlu
ZGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MxZmRiMgotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5n
LmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0b24gPGxrY2xAbGtjbC5u
ZXQ+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE1hcnRpbiBTb3RvIDxzb3RvQGZyZWVkZXNrdG9w
Lm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgSWdhbGlhIFMuTC4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJLaXRET01CaW5kaW5nLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50
RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9N
Tm9kZS5oIgorI2luY2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOjpIVE1MTmFtZXM7CisKKy8vIERPTU9iamVjdENhY2hlCisKK3R5cGVkZWYgSGFzaE1hcDx2
b2lkKiwgZ3BvaW50ZXI+IERPTU9iamVjdE1hcDsKKworc3RhdGljIERPTU9iamVjdE1hcCYgZG9t
T2JqZWN0cygpCit7CisgICAgc3RhdGljIERPTU9iamVjdE1hcCBzdGF0aWNET01PYmplY3RzOwor
ICAgIHJldHVybiBzdGF0aWNET01PYmplY3RzOworfQorCitncG9pbnRlciBET01PYmplY3RDYWNo
ZTo6Z2V0KHZvaWQqIG9iamVjdEhhbmRsZSkKK3sKKyAgICByZXR1cm4gZG9tT2JqZWN0cygpLmdl
dChvYmplY3RIYW5kbGUpOworfQorCitncG9pbnRlciBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQq
IG9iamVjdEhhbmRsZSwgZ3BvaW50ZXIgd3JhcHBlcikKK3sKKyAgICBkb21PYmplY3RzKCkuc2V0
KG9iamVjdEhhbmRsZSwgd3JhcHBlcik7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3ZvaWQg
RE9NT2JqZWN0Q2FjaGU6OmZvcmdldCh2b2lkKiBvYmplY3RIYW5kbGUpCit7CisgICAgZG9tT2Jq
ZWN0cygpLnRha2Uob2JqZWN0SGFuZGxlKTsKK30KKworLy8ga2l0IG1ldGhvZHMKKworc3RhdGlj
IGdwb2ludGVyIGNyZWF0ZVdyYXBwZXIoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7
CisgICAgQVNTRVJUKCFTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NT2JqZWN0KG5vZGUpKTsKKwor
ICAgIGdwb2ludGVyIHdyYXBwZWROb2RlID0gMDsKKworICAgIGlmIChub2RlLT5ub2RlVHlwZSgp
KQorICAgICAgICB3cmFwcGVkTm9kZSA9IHdyYXBOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIERP
TU9iamVjdENhY2hlOjpwdXQobm9kZSwgd3JhcHBlZE5vZGUpOworfQorCitncG9pbnRlciBraXQo
Tm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAwOworCisgICAg
Z3BvaW50ZXIga2l0Tm9kZSA9IERPTU9iamVjdENhY2hlOjpnZXQobm9kZSk7CisgICAgaWYgKGtp
dE5vZGUpCisgICAgICAgIHJldHVybiBraXROb2RlOworCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXIobm9kZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01CaW5kaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZjZlZmE0NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9XZWJLaXRET01CaW5kaW5nLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJr
aXQub3JnPgorICogIENvcHlyaWdodCAoQykgMjAwOCBMdWtlIEtlbm5ldGggQ2Fzc29uIExlaWdo
dG9uIDxsa2NsQGxrY2wubmV0PgorICogIENvcHlyaWdodCAoQykgMjAwOCBNYXJ0aW4gU290byA8
c290b0BmcmVlZGVza3RvcC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgSWdhbGlh
IFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViS2l0RE9N
QmluZGluZ19oCisjZGVmaW5lIFdlYktpdERPTUJpbmRpbmdfaAorCisjaW5jbHVkZSA8Z2xpYi5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOb2RlOworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2dwb2ludGVyIGtpdChXZWJDb3JlOjpOb2RlKiBu
b2RlKTsKKworY2xhc3MgRE9NT2JqZWN0Q2FjaGUgeworcHVibGljOgorICAgIHN0YXRpYyBncG9p
bnRlciBnZXQodm9pZCogb2JqZWN0SGFuZGxlKTsKKyAgICBzdGF0aWMgZ3BvaW50ZXIgcHV0KHZv
aWQqIG9iamVjdEhhbmRsZSwgZ3BvaW50ZXIgd3JhcHBlcik7CisgICAgc3RhdGljIHZvaWQgZm9y
Z2V0KHZvaWQqIG9iamVjdEhhbmRsZSk7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJLaXRET01CaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dl
YktpdERPTU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM4
YTg3NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRE
T01PYmplY3QuY3BwCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
THVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBNYXJ0aW4gU290byA8c290b0BmcmVlZGVza3RvcC5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KKyAqLwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTU9iamVjdC5oIgorCisjaW5j
bHVkZSAiZ2xpYi1vYmplY3QuaCIKKyNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCisKK0df
REVGSU5FX1RZUEUoV2ViS2l0RE9NT2JqZWN0LCB3ZWJraXRfZG9tX29iamVjdCwgR19UWVBFX09C
SkVDVCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2luaXQoV2ViS2l0RE9NT2Jq
ZWN0KiBvYmplY3QpCit7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2NsYXNz
X2luaXQoV2ViS2l0RE9NT2JqZWN0Q2xhc3MqIGtsYXNzKQoreworfQorCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmggYi9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjk5YzU3YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01PYmplY3QuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0b24gPGxrY2xAbGtjbC5uZXQ+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggTWFydGluIFNvdG8gPHNvdG9AZnJlZWRlc2t0b3Aub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKworI2lmbmRlZiBXZWJLaXRET01PYmplY3RfaAorI2RlZmluZSBXZWJLaXRET01PYmplY3Rf
aAorCisjaW5jbHVkZSAiZ2xpYi1vYmplY3QuaCIKKyNpbmNsdWRlICJ3ZWJraXQvd2Via2l0ZG9t
ZGVmaW5lcy5oIgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fT0JKRUNUICAgICAgICAgICAgKHdlYmtp
dF9kb21fb2JqZWN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fT0JKRUNUKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBF
X0RPTV9PQkpFQ1QsIFdlYktpdERPTU9iamVjdCkpCisjZGVmaW5lIFdFQktJVF9ET01fT0JKRUNU
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX0RPTV9PQkpFQ1QsIFdlYktpdERPTU9iamVjdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX0RPTV9PQkpFQ1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgo
b2JqKSwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkpCisjZGVmaW5lIFdFQktJVF9JU19ET01fT0JK
RUNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX0RPTV9PQkpFQ1QpKQorI2RlZmluZSBXRUJLSVRfRE9NX09CSkVDVF9HRVRfQ0xBU1Mo
b2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9ET01f
T0JKRUNULCBXZWJLaXRET01PYmplY3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRE
T01PYmplY3RQcml2YXRlIFdlYktpdERPTU9iamVjdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0
RE9NT2JqZWN0IHsKKyAgICBHT2JqZWN0IHBhcmVudEluc3RhbmNlOworCisgICAgZ3BvaW50ZXIg
Y29yZU9iamVjdDsKK307CisKK3N0cnVjdCBfV2ViS2l0RE9NT2JqZWN0Q2xhc3MgeworICAgIEdP
YmplY3RDbGFzcyBwYXJlbnRDbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9k
b21fb2JqZWN0X2dldF90eXBlKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2Vi
S2l0RE9NT2JqZWN0X2ggKi8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yR09iamVjdC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yR09iamVjdC5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTM4
ZWZmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JHT2JqZWN0LnBtCkBAIC0wLDAgKzEsMTA4NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDgg
THVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4KKyMgQ29weXJpZ2h0
IChDKSAyMDA4IE1hcnRpbiBTb3RvIDxzb3RvQGZyZWVkZXNrdG9wLm9yZz4KKyMgQ29weXJpZ2h0
IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisjIENvcHlyaWdodCAoQykgMjAw
OSBBZGFtIERpbmdsZSA8YWRhbUB5b3JiYS5vcmc+CisjIENvcHlyaWdodCAoQykgMjAwOSBKaW0g
TmVsc29uIDxqaW1AeW9yYmEub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgSWdhbGlh
IFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyMgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorIyBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKworcGFja2FnZSBDb2RlR2VuZXJh
dG9yR09iamVjdDsKKworIyBHbG9iYWwgVmFyaWFibGVzCitteSAlaW1wbEluY2x1ZGVzID0gKCk7
CitteSAlaGRySW5jbHVkZXMgPSAoKTsKKworbXkgJGNsYXNzTmFtZSA9ICIiOworCisjIERlZmF1
bHQgY29uc3RydWN0b3IKK3N1YiBuZXcgeworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBt
eSAkcmVmZXJlbmNlID0geyB9OworCisgICAgJGNvZGVHZW5lcmF0b3IgPSBzaGlmdDsKKyAgICAk
b3V0cHV0RGlyID0gc2hpZnQ7CisgICAgbWtkaXIgJG91dHB1dERpcjsKKworICAgIGJsZXNzKCRy
ZWZlcmVuY2UsICRvYmplY3QpOworfQorCitzdWIgZmluaXNoIHsKK30KKworbXkgJGxpY2VuY2VU
ZW1wbGF0ZSA9IDw8ICJFT0YiOworLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworRU9GCisKK3N1YiBH
ZW5lcmF0ZU1vZHVsZSB7Cit9CisKK3N1YiBHZXRQYXJlbnRDbGFzc05hbWUgeworICAgIG15ICRk
YXRhTm9kZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICJXZWJLaXRET01PYmplY3QiIGlmIEB7JGRh
dGFOb2RlLT5wYXJlbnRzfSBlcSAwOworICAgIHJldHVybiAiV2ViS2l0RE9NIiAuICRjb2RlR2Vu
ZXJhdG9yLT5TdHJpcE1vZHVsZSgkZGF0YU5vZGUtPnBhcmVudHMoMCkpOworfQorCisjIEZyb20g
U3RyaW5nOjpDYW1lbENhc2UgMC4wMQorc3ViIGNhbWVsaXplCit7CisgICAgICAgIG15ICRzID0g
c2hpZnQ7CisgICAgICAgIGpvaW4oJycsIG1hcHsgdWNmaXJzdCAkXyB9IHNwbGl0KC8oPzw9W0Et
WmEtel0pXyg/PVtBLVphLXpdKXxcYi8sICRzKSk7Cit9CisKK3N1YiBkZWNhbWVsaXplCit7Cisg
ICAgICAgIG15ICRzID0gc2hpZnQ7CisgICAgICAgICRzID1+IHN7KFteYS16QS1aXT8pKFtBLVpd
KikoW0EtWl0pKFthLXpdPyl9eworICAgICAgICAgICAgICAgIG15ICRmYyA9IHBvcygkcyk9PTA7
CisgICAgICAgICAgICAgICAgbXkgKCRwMCwkcDEsJHAyLCRwMykgPSAoJDEsbGMkMixsYyQzLCQ0
KTsKKyAgICAgICAgICAgICAgICBteSAkdCA9ICRwMCB8fCAkZmMgPyAkcDAgOiAnXyc7CisgICAg
ICAgICAgICAgICAgJHQgLj0gJHAzID8gJHAxID8gIiR7cDF9XyRwMiRwMyIgOiAiJHAyJHAzIiA6
ICIkcDEkcDIiOworICAgICAgICAgICAgICAgICR0OworICAgICAgICB9Z2U7CisgICAgICAgICRz
OworfQorCitzdWIgQ2xhc3NOYW1lVG9HT2JqZWN0VHlwZSB7CisgICAgbXkgJGNsYXNzTmFtZSA9
IHNoaWZ0OworICAgIG15ICRDTEFTU19OQU1FID0gdWMoZGVjYW1lbGl6ZSgkY2xhc3NOYW1lKSk7
CisgICAgIyBGaXh1cDogd2l0aCBvdXIgcHJlZml4IGJlaW5nICdXZWJLaXRET00nIGRlY2FtZWxp
emUgY2FuJ3QgZ2V0CisgICAgIyBXZWJLaXRET01DU1MgcmlnaHQsIHNvIHdlIGhhdmUgdG8gZml4
IGl0IG1hbnVhbGx5IChhbmQgdGhlcmUKKyAgICAjIG1pZ2h0IGJlIG1vcmUgbGlrZSB0aGlzIGlu
IHRoZSBmdXR1cmUpCisgICAgJENMQVNTX05BTUUgPX4gcy9ET01DU1MvRE9NX0NTUy87CisgICAg
cmV0dXJuICRDTEFTU19OQU1FOworfQorCitzdWIgR2V0UGFyZW50R09ialR5cGUgeworICAgIG15
ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICJXRUJLSVRfVFlQRV9ET01fT0JKRUNU
IiBpZiBAeyRkYXRhTm9kZS0+cGFyZW50c30gZXEgMDsKKyAgICByZXR1cm4gIldFQktJVF9UWVBF
X0RPTV8iIC4gQ2xhc3NOYW1lVG9HT2JqZWN0VHlwZSgkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1
bGUoJGRhdGFOb2RlLT5wYXJlbnRzKDApKSk7Cit9CisKK3N1YiBHZXRDbGFzc05hbWUgeworICAg
IG15ICRuYW1lID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKHNoaWZ0KTsKKworICAgIHJl
dHVybiAiV2ViS2l0RE9NJG5hbWUiOworfQorCitzdWIgR2V0Q29yZU9iamVjdCB7CisgICAgbXkg
KCRpbnRlcmZhY2VOYW1lLCAkbmFtZSwgJHBhcmFtZXRlcikgPSBAXzsKKworICAgIHJldHVybiAi
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogJG5hbWUgPSBXZWJLaXQ6OmNvcmUoJHBhcmFtZXRl
cik7IjsKK30KKworc3ViIFNraXBBdHRyaWJ1dGUgeworICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlm
dDsKKyAgICAKKyAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwKKyAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0pIHsKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgfQorICAgIAorICAgIG15ICRwcm9wVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
dHlwZTsKKyAgICBpZiAoJHByb3BUeXBlIGVxICJFdmVudExpc3RlbmVyIikgeworICAgICAgICBy
ZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoJHByb3BUeXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7
CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjIE5hbWUg
dHlwZSB1c2VkIGluIHRoZSBnX3ZhbHVlX3tzZXQsZ2V0fV8qIGZ1bmN0aW9ucworc3ViIEdldEdW
YWx1ZVR5cGVOYW1lIHsKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworCisgICAgbXkgJXR5cGVzID0g
KCJET01TdHJpbmciLCAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgImZsb2F0IiwgImZsb2F0
IiwKKyAgICAgICAgICAgICAgICAgImRvdWJsZSIsICJkb3VibGUiLAorICAgICAgICAgICAgICAg
ICAiYm9vbGVhbiIsICJib29sZWFuIiwKKyAgICAgICAgICAgICAgICAgImNoYXIiLCAiY2hhciIs
CisgICAgICAgICAgICAgICAgICJsb25nIiwgImxvbmciLAorICAgICAgICAgICAgICAgICAic2hv
cnQiLCAiaW50IiwKKyAgICAgICAgICAgICAgICAgInVjaGFyIiwgInVjaGFyIiwKKyAgICAgICAg
ICAgICAgICAgInVuc2lnbmVkIiwgInVpbnQiLAorICAgICAgICAgICAgICAgICAiaW50IiwgImlu
dCIsCisgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBpbnQiLCAidWludCIsCisgICAgICAgICAg
ICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmciLCAidWludDY0IiwgCisgICAgICAgICAgICAgICAg
ICJ1bnNpZ25lZCBsb25nIiwgInVsb25nIiwKKyAgICAgICAgICAgICAgICAgInVuc2lnbmVkIHNo
b3J0IiwgInVzaG9ydCIpOworCisgICAgcmV0dXJuICR0eXBlc3skdHlwZX0gPyAkdHlwZXN7JHR5
cGV9IDogIm9iamVjdCI7Cit9CisKKyMgTmFtZSB0eXBlIHVzZWQgaW4gQyBkZWNsYXJhdGlvbnMK
K3N1YiBHZXRHbGliVHlwZU5hbWUgeworICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgbXkgJG5h
bWUgPSBHZXRDbGFzc05hbWUoJHR5cGUpOworCisgICAgbXkgJXR5cGVzID0gKCJET01TdHJpbmci
LCAiZ2NoYXIqICIsCisgICAgICAgICAgICAgICAgICJmbG9hdCIsICJnZmxvYXQiLAorICAgICAg
ICAgICAgICAgICAiZG91YmxlIiwgImdkb3VibGUiLAorICAgICAgICAgICAgICAgICAiYm9vbGVh
biIsICJnYm9vbGVhbiIsCisgICAgICAgICAgICAgICAgICJjaGFyIiwgImdjaGFyIiwKKyAgICAg
ICAgICAgICAgICAgImxvbmciLCAiZ2xvbmciLAorICAgICAgICAgICAgICAgICAic2hvcnQiLCAi
Z3Nob3J0IiwKKyAgICAgICAgICAgICAgICAgInVjaGFyIiwgImd1Y2hhciIsCisgICAgICAgICAg
ICAgICAgICJ1bnNpZ25lZCIsICJndWludCIsCisgICAgICAgICAgICAgICAgICJpbnQiLCAiZ2lu
dCIsCisgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBpbnQiLCAiZ3VpbnQiLAorICAgICAgICAg
ICAgICAgICAidW5zaWduZWQgbG9uZyIsICJndWxvbmciLAorICAgICAgICAgICAgICAgICAidW5z
aWduZWQgbG9uZyBsb25nIiwgImd1aW50NjQiLAorICAgICAgICAgICAgICAgICAidW5zaWduZWQg
c2hvcnQiLCAiZ3VzaG9ydCIsCisgICAgICAgICAgICAgICAgICJ2b2lkIiwgInZvaWQiKTsKKwor
ICAgIHJldHVybiAkdHlwZXN7JHR5cGV9ID8gJHR5cGVzeyR0eXBlfSA6ICIkbmFtZSogIjsKK30K
Kworc3ViIElzR0RPTUNsYXNzVHlwZSB7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIHJl
dHVybiAwIGlmICR0eXBlIGVxICJET01TdHJpbmciOworICAgIHJldHVybiAwIGlmICR0eXBlIGVx
ICJmbG9hdCI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImRvdWJsZSI7CisgICAgcmV0dXJu
IDAgaWYgJHR5cGUgZXEgImJvb2xlYW4iOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJjaGFy
IjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAibG9uZyI7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUgZXEgInNob3J0IjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidWNoYXIiOworICAgIHJl
dHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEg
ImludCI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGludCI7CisgICAgcmV0
dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciOworICAgIHJldHVybiAwIGlmICR0eXBl
IGVxICJ1bnNpZ25lZCBsb25nIGxvbmciOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNp
Z25lZCBzaG9ydCI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInZvaWQiOworCisgICAgcmV0
dXJuIDE7Cit9CisKK3N1YiBHZW5lcmF0ZVByb3BlcnRpZXMgeworICAgIG15ICgkb2JqZWN0LCAk
aW50ZXJmYWNlTmFtZSwgJGRhdGFOb2RlKSA9IEBfOworCisgICAgbXkgJGNsc0NhcHMgPSBzdWJz
dHIoQ2xhc3NOYW1lVG9HT2JqZWN0VHlwZSgkY2xhc3NOYW1lKSwgMTIpOworICAgIG15ICRsb3dl
ckNhc2VJZmFjZU5hbWUgPSAid2Via2l0X2RvbV8iIC4gKGRlY2FtZWxpemUoJGludGVyZmFjZU5h
bWUpKTsKKworICAgICMgUHJvcGVydGllcworICAgIG15ICRpbXBsQ29udGVudCA9ICIiOworCisg
ICAgIyBQcm9wZXJ0aWVzCisgICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CitlbnVtIHsKKyAg
ICBQUk9QXzAsCitFT0YKKyAgICBwdXNoKEBjQm9keVByaXYsICRpbXBsQ29udGVudCk7CisKKyAg
ICBteSBAdHh0SW5zdGFsbFByb3BzID0gKCk7CisgICAgbXkgQHR4dFNldFByb3BzID0gKCk7Cisg
ICAgbXkgQHR4dEdldFByb3BzID0gKCk7CisKKyAgICBteSAkcHJpdkZ1bmN0aW9uID0gR2V0Q29y
ZU9iamVjdCgkaW50ZXJmYWNlTmFtZSwgImNvcmVTZWxmIiwgInNlbGYiKTsKKworICAgIG15ICR0
eHRHZXRQcm9wID0gPDwgIkVPRiI7CitzdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1f
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgJHtjbGFzc05hbWV9KiBzZWxmID0gV0VCS0lU
X0RPTV8ke2Nsc0NhcHN9KG9iamVjdCk7CisgICAgJHByaXZGdW5jdGlvbgorCisgICAgc3dpdGNo
IChwcm9wX2lkKSB7CitFT0YKKyAgICBwdXNoKEB0eHRHZXRQcm9wcywgJHR4dEdldFByb3ApOwor
CisgICAgbXkgJHR4dFNldFByb3BzID0gPDwgIkVPRiI7CitzdGF0aWMgdm9pZCAke2xvd2VyQ2Fz
ZUlmYWNlTmFtZX1fc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwg
Y29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgJHtjbGFzc05h
bWV9ICpzZWxmID0gV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KG9iamVjdCk7CisgICAgJHByaXZGdW5j
dGlvbgorCisgICAgc3dpdGNoIChwcm9wX2lkKSB7CitFT0YKKyAgICBwdXNoKEB0eHRTZXRQcm9w
cywgJHR4dFNldFByb3BzKTsKKworICAgICMgSXRlcmF0ZSBvdmVyIHRoZSBpbnRlcmZhY2UgYXR0
cmlidXRlcyBhbmQgZ2VuZXJhdGUgYSBwcm9wZXJ0eSBmb3IKKyAgICAjIGVhY2ggb25lIG9mIHRo
ZW0uCisgIFNLSVBFTlVNOgorICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUt
PmF0dHJpYnV0ZXN9KSB7CisgICAgICAgIGlmIChTa2lwQXR0cmlidXRlKCRhdHRyaWJ1dGUpKSB7
CisgICAgICAgICAgICBuZXh0IFNLSVBFTlVNOworICAgICAgICB9CisKKyAgICAgICAgbXkgJGNh
bWVsUHJvcE5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRz
ZXRQcm9wTmFtZUZ1bmN0aW9uID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNhbWVsUHJv
cE5hbWUpOworICAgICAgICBteSAkZ2V0UHJvcE5hbWVGdW5jdGlvbiA9ICRjb2RlR2VuZXJhdG9y
LT5XS19sY2ZpcnN0KCRjYW1lbFByb3BOYW1lKTsKKworICAgICAgICBteSAkcHJvcE5hbWUgPSBk
ZWNhbWVsaXplKCRjYW1lbFByb3BOYW1lKTsKKyAgICAgICAgbXkgJHByb3BOYW1lQ2FwcyA9IHVj
KCRwcm9wTmFtZSk7CisgICAgICAgICRwcm9wTmFtZSA9fiBzL18vLS9nOworICAgICAgICBteSAk
e3Byb3BFbnVtfSA9ICJQUk9QXyR7cHJvcE5hbWVDYXBzfSI7CisgICAgICAgIHB1c2goQGNCb2R5
UHJpdiwgIiAgICAke3Byb3BFbnVtfSxcbiIpOworCisgICAgICAgIG15ICRwcm9wVHlwZSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKKyAgICAgICAgbXkgJHtwcm9wR1R5cGV9ID0gZGVj
YW1lbGl6ZSgkcHJvcFR5cGUpOworICAgICAgICBpZiAoJHByb3BHVHlwZSBlcSAiZXZlbnRfdGFy
Z2V0IikgeworICAgICAgICAgICAgJHByb3BHVHlwZSA9ICJldmVudF90YXJnZXRfbm9kZSI7Cisg
ICAgICAgIH0KKyAgICAgICAgbXkgJHt1Y1Byb3BHVHlwZX0gPSB1YygkcHJvcEdUeXBlKTsKKwor
ICAgICAgICBteSAkZ3R5cGUgPSBHZXRHVmFsdWVUeXBlTmFtZSgkcHJvcFR5cGUpOworICAgICAg
ICBteSAkZ3BhcmFtZmxhZyA9ICJXRUJLSVRfUEFSQU1fUkVBREFCTEUiOworICAgICAgICBteSAk
d3JpdGVhYmxlID0gJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LzsKKyAgICAgICAgbXkg
JGNvbnN0ID0gInJlYWQtb25seSAiOworICAgICAgICBpZiAoJHdyaXRlYWJsZSAmJiAkY3VzdG9t
KSB7CisgICAgICAgICAgICAkY29uc3QgPSAicmVhZC1vbmx5IChkdWUgdG8gY3VzdG9tIGZ1bmN0
aW9ucyBuZWVkZWQgaW4gd2Via2l0ZG9tKSI7CisgICAgICAgICAgICBuZXh0IFNLSVBFTlVNOwor
ICAgICAgICB9CisgICAgICAgIGlmICgkd3JpdGVhYmxlICYmICEkY3VzdG9tKSB7CisgICAgICAg
ICAgICAkZ3BhcmFtZmxhZyA9ICJXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIjsKKyAgICAgICAgICAg
ICRjb25zdCA9ICJyZWFkLXdyaXRlICI7CisgICAgICAgIH0KKworICAgICAgICBteSAkdHlwZSA9
IEdldEdsaWJUeXBlTmFtZSgkcHJvcFR5cGUpOworICAgICAgICAkbmljayA9IGRlY2FtZWxpemUo
IiR7aW50ZXJmYWNlTmFtZX1fJHtwcm9wTmFtZX0iKTsKKyAgICAgICAgJGxvbmcgPSAiJHtjb25z
dH0gJHt0eXBlfSAke2ludGVyZmFjZU5hbWV9LiR7cHJvcE5hbWV9IjsKKworICAgICAgICBteSAk
Y29udmVydEZ1bmN0aW9uID0gIiI7CisKKyAgICAgICAgaWYgKCR3cml0ZWFibGUgJiYgKCRndHlw
ZSBlcSAiYm9vbGVhbiIgfHwgJGd0eXBlIGVxICJmbG9hdCIgfHwgJGd0eXBlIGVxICJkb3VibGUi
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQ2NCIgfHwgJGd0
eXBlIGVxICJ1bG9uZyIgfHwgJGd0eXBlIGVxICJsb25nIiB8fCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRndHlwZSBlcSAidWludCIgfHwgJGd0eXBlIGVxICJ1c2hvcnQiIHx8ICRndHlw
ZSBlcSAidWNoYXIiIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgImNo
YXIiIHx8ICRndHlwZSBlcSAic3RyaW5nIikpIHsKKworICAgICAgICAgICAgcHVzaChAdHh0U2V0
UHJvcHMsICIgICBjYXNlICR7cHJvcEVudW19OlxuICAgIHtcbiIpOworICAgICAgICAgICAgcHVz
aChAdHh0U2V0UHJvcHMsICIgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xu
IikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKKworICAgICAgICAgICAgaWYg
KCRndHlwZSBlcSAic3RyaW5nIikgeworICAgICAgICAgICAgICAgICRjb252ZXJ0RnVuY3Rpb24g
PSAiV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCI7CisgICAgICAgICAgICB9IGVsc2lmICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0RnJvbVN0cmlu
ZyJ9KSB7CisgICAgICAgICAgICAgICAgJGNvbnZlcnRGdW5jdGlvbiA9ICJXZWJDb3JlOjpTdHJp
bmc6Om51bWJlciI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2goQHR4dFNldFBy
b3BzLCAiICAgICAgICBjb3JlU2VsZi0+c2V0JHtzZXRQcm9wTmFtZUZ1bmN0aW9ufSgke2NvbnZl
cnRGdW5jdGlvbn0oZ192YWx1ZV9nZXRfJGd0eXBlKHZhbHVlKSkiKTsKKyAgICAgICAgICAgIHB1
c2goQHR4dFNldFByb3BzLCAiLCBlYyIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9u
c307CisgICAgICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIik7XG4iKTsKKworICAgICAgICAg
ICAgcHVzaChAdHh0U2V0UHJvcHMsICIgICAgICAgIGJyZWFrO1xuICAgIH1cbiIpOworICAgICAg
ICB9CisKKyAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICBjYXNlICR7cHJvcEVudW19Olxu
ICAgIHtcbiIpOworCisgICAgICAgIG15ICRleGNlcHRpb24gPSAiIjsKKyAgICAgICAgaWYgKEB7
JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc30pIHsKKyAgICAgICAgICAgICRleGNlcHRpb24g
PSAiZWMiOworICAgICAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAgICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CisgICAgICAgIH0KKworICAgICAgICBteSAkcG9z
dENvbnZlcnRGdW5jdGlvbiA9ICIiOworICAgICAgICBteSAkZG9uZSA9IDA7CisgICAgICAgIGlm
ICgkZ3R5cGUgZXEgInN0cmluZyIpIHsKKyAgICAgICAgICAgIHB1c2goQHR4dEdldFByb3BzLCAi
ICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNv
cmVTZWxmLT4ke2dldFByb3BOYW1lRnVuY3Rpb259KCR7ZXhjZXB0aW9ufSkpKTtcbiIpOworICAg
ICAgICAgICAgJGRvbmUgPSAxOworICAgICAgICB9IGVsc2lmICgkZ3R5cGUgZXEgIm9iamVjdCIp
IHsKKworICAgICAgICAgICAgJHR4dEdldFByb3AgPSA8PCAiRU9GIjsKKyAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OiR7cHJvcFR5cGV9PiBwdHIgPSBjb3JlU2VsZi0+JHtnZXRQcm9wTmFtZUZ1bmN0
aW9ufSgke2V4Y2VwdGlvbn0pOworICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdl
YktpdDo6a2l0KHB0ci5nZXQoKSkpOworRU9GCisgICAgICAgICAgICBwdXNoKEB0eHRHZXRQcm9w
cywgJHR4dEdldFByb3ApOworCisgICAgICAgICAgICAkZG9uZSA9IDE7CisgICAgICAgIH0KKwor
ICAgICAgICBpZigkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b252ZXJ0RnJvbVN0cmluZyJ9KSB7CisgICAgICAgICAgICAjIFRPRE86IEFkZCBvdGhlciBjb252
ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgZGlmZmVyZW50IHR5cGVzLiAgQ3VycmVudAorICAgICAgICAg
ICAgIyBJRExzIG9ubHkgbGlzdCBsb25ncy4KKyAgICAgICAgICAgIGlmKCRndHlwZSBlcSAibG9u
ZyIpIHsKKyAgICAgICAgICAgICAgICAkY29udmVydEZ1bmN0aW9uID0gIiI7CisgICAgICAgICAg
ICAgICAgJHBvc3RDb252ZXJ0RnVuY3Rpb24gPSAiLnRvSW50KCkiOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaWUgIkNhbid0IGNvbnZlcnQgdG8gdHlwZSAke2d0eXBl
fS4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgIyBGSVhNRTogZ2V0IHJp
ZCBvZiB0aGlzIGdsaXRjaD8KKyAgICAgICAgbXkgJF9ndHlwZSA9ICRndHlwZTsKKyAgICAgICAg
aWYgKCRndHlwZSBlcSAidXNob3J0IikgeworICAgICAgICAgICAgJF9ndHlwZSA9ICJ1aW50IjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghJGRvbmUpIHsKKyAgICAgICAgICAgIHB1c2goQHR4
dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3NldF8kX2d0eXBlKHZhbHVlLCAke2NvbnZlcnRG
dW5jdGlvbn1jb3JlU2VsZi0+JHtnZXRQcm9wTmFtZUZ1bmN0aW9ufSgke2V4Y2VwdGlvbn0pJHtw
b3N0Q29udmVydEZ1bmN0aW9ufSk7XG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1c2goQHR4
dEdldFByb3BzLCAiICAgICAgICBicmVhaztcbiAgICB9XG4iKTsKKworbXkgJXBhcmFtX3NwZWNf
b3B0aW9ucyA9ICgiaW50IiwgIkdfTUlOSU5ULCAvKiBtaW4gKi9cbkdfTUFYSU5ULCAvKiBtYXgg
Ki9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiYm9vbGVh
biIsICJGQUxTRSwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJm
bG9hdCIsICJHX01JTkZMT0FULCAvKiBtaW4gKi9cbkdfTUFYRkxPQVQsIC8qIG1heCAqL1xuMC4w
LCAvKiBkZWZhdWx0ICovIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRvdWJsZSIsICJH
X01JTkRPVUJMRSwgLyogbWluICovXG5HX01BWERPVUJMRSwgLyogbWF4ICovXG4wLjAsIC8qIGRl
ZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidWludDY0IiwgIjAsIC8qIG1p
biAqL1xuR19NQVhVSU5UNjQsIC8qIG1pbiAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJsb25nIiwgIkdfTUlOTE9ORywgLyogbWluICovXG5HX01BWExP
TkcsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ1bG9uZyIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUxPTkcsIC8qIG1heCAqL1xuMCwgLyog
ZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50IiwgIjAsIC8qIG1p
biAqL1xuR19NQVhVSU5ULCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAidXNob3J0IiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVSU5UMTYsIC8q
IG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1
Y2hhciIsICJHX01JTklOVDgsIC8qIG1pbiAqL1xuR19NQVhJTlQ4LCAvKiBtYXggKi9cbjAsIC8q
IGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhciIsICIwLCAvKiBt
aW4gKi9cbkdfTUFYVUlOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJzdHJpbmciLCAiXCJcIiwgLyogZGVmYXVsdCAqLyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiLCAiV0VCS0lUX1RZUEVfRE9NXyR7dWNQcm9w
R1R5cGV9LCAvKiBnb2JqZWN0IHR5cGUgKi8iKTsKKworICAgICAgICBteSAkdHh0SW5zdGFsbFBy
b3AgPSA8PCAiRU9GIjsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmpl
Y3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJvcEVudW19
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjXyR7X2d0
eXBlfSgiJHtwcm9wTmFtZX0iLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbmljayIsIC8qIHNob3J0IGRlc2Ny
aXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIkbG9uZyIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRy
YSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1fc3BlY19vcHRpb25zeyRndHlwZX0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtn
cGFyYW1mbGFnfSkpOworRU9GCisgICAgICAgIHB1c2goQHR4dEluc3RhbGxQcm9wcywgJHR4dElu
c3RhbGxQcm9wKTsKKyAgICAgICAgJHR4dEluc3RhbGxQcm9wID0gIi8qIFRPRE8hICRndHlwZSAq
L1xuIjsKKyAgICB9CisKKyAgICBwdXNoKEBjQm9keVByaXYsICJ9O1xuXG4iKTsKKworICAgICR0
eHRHZXRQcm9wID0gPDwgIkVPRiI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CitFT0YKKyAgICBwdXNoKEB0eHRHZXRQcm9wcywgJHR4dEdldFByb3Ap
OworCisgICAgJHR4dFNldFByb3BzID0gPDwgIkVPRiI7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CitFT0YKKyAgICBwdXNoKEB0eHRTZXRQcm9wcywg
JHR4dFNldFByb3BzKTsKKworICAgICMgVE9ETzogd29yayBvdXQgaWYgaXQncyBhcHByb3ByaWF0
ZSB0byBzcGxpdCB0aGlzIGludG8gbWFueSBkaWZmZXJlbnQKKyAgICAjIHNpZ25hbHMgZS5nLiAi
Y2xpY2siIGV0Yy4KKyAgICBteSAkdHh0SW5zdGFsbFNpZ25hbHMgPSAiIjsKKworICAgICRpbXBs
Q29udGVudCA9IDw8ICJFT0YiOworCitzdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1f
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdERPTU9iamVjdCogZG9tX29i
amVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7CisgICAgCisgICAgaWYgKGRvbV9vYmpl
Y3QtPmNvcmVPYmplY3QgIT0gTlVMTCkgeworICAgICAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5h
bWV9KiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSAq
Pihkb21fb2JqZWN0LT5jb3JlT2JqZWN0KTsKKworICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENh
Y2hlOjpmb3JnZXQoY29yZU9iamVjdCk7CisgICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7CisK
KyAgICAgICAgZG9tX29iamVjdC0+Y29yZU9iamVjdCA9IE5VTEw7CisgICAgfQorCisgICAgR19P
QkpFQ1RfQ0xBU1MoJHtsb3dlckNhc2VJZmFjZU5hbWV9X3BhcmVudF9jbGFzcyktPmZpbmFsaXpl
KG9iamVjdCk7Cit9CisKK0B0eHRTZXRQcm9wcworCitAdHh0R2V0UHJvcHMKKworc3RhdGljIHZv
aWQgJHtsb3dlckNhc2VJZmFjZU5hbWV9X2NsYXNzX2luaXQoJHtjbGFzc05hbWV9Q2xhc3MqIHJl
cXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9ICR7bG93
ZXJDYXNlSWZhY2VOYW1lfV9maW5hbGl6ZTsKKyAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0
eSA9ICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdENsYXNz
LT5nZXRfcHJvcGVydHkgPSAke2xvd2VyQ2FzZUlmYWNlTmFtZX1fZ2V0X3Byb3BlcnR5OworCitA
dHh0SW5zdGFsbFByb3BzCisKKyR0eHRJbnN0YWxsU2lnbmFscworfQorCitzdGF0aWMgdm9pZCAk
e2xvd2VyQ2FzZUlmYWNlTmFtZX1faW5pdCgke2NsYXNzTmFtZX0qIHJlcXVlc3QpCit7Cit9CisK
K0VPRgorICAgIHB1c2goQGNCb2R5UHJpdiwgJGltcGxDb250ZW50KTsKK30KKworc3ViIEdlbmVy
YXRlSGVhZGVyIHsKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUsICRwYXJlbnRDbGFz
c05hbWUpID0gQF87CisKKyAgICBteSAkaW1wbENvbnRlbnQgPSAiIjsKKworICAgICMgQWRkIHRo
ZSBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQorICAgIEBoUHJlZml4ID0gc3BsaXQoIlxyIiwgJGxp
Y2VuY2VUZW1wbGF0ZSk7CisgICAgcHVzaChAaFByZWZpeCwgIlxuIik7CisKKyAgICAjSGVhZGVy
IGd1YXJkCisgICAgbXkgJGd1YXJkID0gJGNsYXNzTmFtZSAuICJfaCI7CisKKyAgICBAaFByZWZp
eEd1YXJkID0gPDwgIkVPRiI7CisjaWZuZGVmICRndWFyZAorI2RlZmluZSAkZ3VhcmQKKworRU9G
CisKKyAgICAkaW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKK0dfQkVHSU5fREVDTFMKK0VPRgorCisg
ICAgcHVzaChAaEJvZHlQcmUsICRpbXBsQ29udGVudCk7CisKKyAgICBteSAkY2xzQ2FwcyA9IHVj
KGRlY2FtZWxpemUoJGludGVyZmFjZU5hbWUpKTsKKyAgICBteSAkbG93ZXJDYXNlSWZhY2VOYW1l
ID0gIndlYmtpdF9kb21fIiAuIChkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKSk7CisKKyAgICAk
aW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKKworI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fJHtjbHND
YXBzfSAgICAgICAgICAgICgke2xvd2VyQ2FzZUlmYWNlTmFtZX1fZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9LCAke2NsYXNzTmFt
ZX0pKQorI2RlZmluZSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc31fQ0xBU1Moa2xhc3MpICAgIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NXyR7Y2xzQ2Fwc30s
ICR7Y2xhc3NOYW1lfUNsYXNzKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTXyR7Y2xzQ2Fwc30ob2Jq
KSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVf
RE9NXyR7Y2xzQ2Fwc30pKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTXyR7Y2xzQ2Fwc31fQ0xBU1Mo
a2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9N
XyR7Y2xzQ2Fwc30pKQorI2RlZmluZSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc31fR0VUX0NMQVNTKG9i
aikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9NXyR7
Y2xzQ2Fwc30sICR7Y2xhc3NOYW1lfUNsYXNzKSkKKworc3RydWN0IF8ke2NsYXNzTmFtZX0gewor
ICAgICR7cGFyZW50Q2xhc3NOYW1lfSBwYXJlbnRfaW5zdGFuY2U7Cit9OworCitzdHJ1Y3QgXyR7
Y2xhc3NOYW1lfUNsYXNzIHsKKyAgICAke3BhcmVudENsYXNzTmFtZX1DbGFzcyBwYXJlbnRfY2xh
c3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCiske2xvd2VyQ2FzZUlmYWNlTmFtZX1fZ2V0X3R5
cGUgKHZvaWQpOworCitFT0YKKworICAgIHB1c2goQGhCb2R5LCAkaW1wbENvbnRlbnQpOworfQor
CitzdWIgZ2V0SW5jbHVkZUhlYWRlciB7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKyAgICBteSAk
bmFtZSA9IEdldENsYXNzTmFtZSgkdHlwZSk7CisKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEg
ImludCI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJsb25nIjsKKyAgICByZXR1cm4gIiIg
aWYgJHR5cGUgZXEgInNob3J0IjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgImNoYXIiOwor
ICAgIHJldHVybiAiIiBpZiAkdHlwZSBlcSAiZmxvYXQiOworICAgIHJldHVybiAiIiBpZiAkdHlw
ZSBlcSAiZG91YmxlIjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgInVuc2lnbmVkIjsKKyAg
ICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGludCI7CisgICAgcmV0dXJuICIiIGlm
ICR0eXBlIGVxICJ1bnNpZ25lZCBsb25nIjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgInVu
c2lnbmVkIGxvbmcgbG9uZyI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBz
aG9ydCI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJET01UaW1lU3RhbXAiOworICAgIHJl
dHVybiAiIiBpZiAkdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciI7CisgICAgcmV0dXJuICIiIGlmICR0
eXBlIGVxICJ1bnNpZ25lZCBjaGFyIjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgIkRPTVN0
cmluZyI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJmbG9hdCI7CisgICAgcmV0dXJuICIi
IGlmICR0eXBlIGVxICJib29sZWFuIjsKKyAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgInZvaWQi
OworCisgICAgcmV0dXJuICIkbmFtZS5oIjsKK30KKworc3ViIGFkZEluY2x1ZGVJbkJvZHkgewor
ICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICBteSAkaGVhZGVyID0gZ2V0SW5jbHVkZUhlYWRl
cigkdHlwZSk7CisgICAgaWYgKCRoZWFkZXIgZXEgIiIpIHsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBpZiAoSXNHRE9NQ2xhc3NUeXBlKCR0eXBlKSkgeworICAgICAgICAkaW1w
bEluY2x1ZGVzeyJ3ZWJraXQvJGhlYWRlciJ9ID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICAk
aW1wbEluY2x1ZGVzeyRoZWFkZXJ9ID0gMQorICAgIH0KK30KKworc3ViIEdlbmVyYXRlRnVuY3Rp
b24geworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uLCAkcHJlZml4
KSA9IEBfOworCisgICAgbXkgJGZ1bmN0aW9uU2lnTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lOworICAgIG15ICRmdW5jdGlvblNpZ1R5cGUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
dHlwZTsKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gIndlYmtpdF9kb21fIiAuIGRlY2FtZWxpemUo
JGludGVyZmFjZU5hbWUpIC4gIl8iIC4gJHByZWZpeCAuIGRlY2FtZWxpemUoJGZ1bmN0aW9uU2ln
TmFtZSk7CisgICAgbXkgJHJldHVyblR5cGUgPSBHZXRHbGliVHlwZU5hbWUoJGZ1bmN0aW9uU2ln
VHlwZSk7CisgICAgbXkgJHJldHVyblZhbHVlSXNHRE9NVHlwZSA9IElzR0RPTUNsYXNzVHlwZSgk
ZnVuY3Rpb25TaWdUeXBlKTsKKworICAgIG15ICRmdW5jdGlvblNpZyA9ICIkY2xhc3NOYW1lICpz
ZWxmIjsKKworICAgIG15ICRjYWxsSW1wbFBhcmFtcyA9ICIiOworCisgICAgIyBza2lwIHNvbWUg
Y3VzdG9tIGZ1bmN0aW9ucyBmb3Igbm93CisgICAgbXkgJGlzQ3VzdG9tRnVuY3Rpb24gPSAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9OworCisgICAgZm9yZWFjaCBteSAkcGFyYW0g
KEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICBteSAkcGFyYW1JRExUeXBlID0g
JHBhcmFtLT50eXBlOworICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBlcSAiRXZlbnQiKSB7Cisg
ICAgICAgICAgICBwdXNoKEBoQm9keSwgIlxuLyogVE9ETzogZXZlbnQgZnVuY3Rpb24gJHtmdW5j
dGlvbk5hbWV9ICovXG5cbiIpOworICAgICAgICAgICAgcHVzaChAY0JvZHksICJcbi8qIFRPRE86
IGV2ZW50IGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSAqL1xuXG4iKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBhZGRJbmNsdWRlSW5Cb2R5KCRwYXJhbUlETFR5cGUp
OworICAgICAgICBteSAkcGFyYW1UeXBlID0gR2V0R2xpYlR5cGVOYW1lKCRwYXJhbUlETFR5cGUp
OworICAgICAgICBteSAkcGFyYW1OYW1lID0gZGVjYW1lbGl6ZSgkcGFyYW0tPm5hbWUpOworCisg
ICAgICAgICRmdW5jdGlvblNpZyAuPSAiLCAkcGFyYW1UeXBlICRwYXJhbU5hbWUiOworCisgICAg
ICAgIG15ICRwYXJhbUlzR0RPTVR5cGUgPSBJc0dET01DbGFzc1R5cGUoJHBhcmFtSURMVHlwZSk7
CisgICAgICAgIGlmICgkcGFyYW1Jc0dET01UeXBlKSB7CisgICAgICAgICAgICBpZiAoJHBhcmFt
SURMVHlwZSBuZSAiRE9NT2JqZWN0IikgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IndlYmtpdC9XZWJLaXRET00ke3BhcmFtSURMVHlwZX1Qcml2YXRlLmgifSA9IDE7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRwYXJhbUlzR0RPTVR5cGUgfHwgKCRwYXJh
bUlETFR5cGUgZXEgIkRPTVN0cmluZyIpKSB7CisgICAgICAgICAgICAkcGFyYW1OYW1lID0gIl9n
XyIgLiAkcGFyYW1OYW1lOworICAgICAgICB9CisgICAgICAgIGlmICgkY2FsbEltcGxQYXJhbXMp
IHsKKyAgICAgICAgICAgICRjYWxsSW1wbFBhcmFtcyAuPSAiLCAkcGFyYW1OYW1lIjsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRjYWxsSW1wbFBhcmFtcyA9ICIkcGFyYW1OYW1lIjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgkZnVuY3Rpb25TaWdUeXBlIGVxICJFdmVudCIp
IHsKKyAgICAgICAgcHVzaChAaEJvZHksICJcbi8qIFRPRE86IGV2ZW50IGZ1bmN0aW9uICR7ZnVu
Y3Rpb25OYW1lfSAqL1xuXG4iKTsKKyAgICAgICAgcHVzaChAY0JvZHksICJcbi8qIFRPRE86IGV2
ZW50IGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSAqL1xuXG4iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIgJiYgJHJldHVyblZhbHVlSXNH
RE9NVHlwZSkgeworICAgICAgICBpZiAoJGZ1bmN0aW9uU2lnVHlwZSBuZSAiRXZlbnRUYXJnZXQi
KSB7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXQvV2ViS2l0RE9NJHtmdW5jdGlv
blNpZ1R5cGV9UHJpdmF0ZS5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sid2Vi
a2l0L1dlYktpdERPTSR7ZnVuY3Rpb25TaWdUeXBlfS5oIn0gPSAxOworICAgICAgICB9CisKKyAg
ICAgICAgJGltcGxJbmNsdWRlc3siJHtmdW5jdGlvblNpZ1R5cGV9LmgifSA9IDE7CisgICAgfQor
CisgICAgIyBza2lwIGN1c3RvbSBmdW5jdGlvbnMgZm9yIG5vdworICAgICMgYnV0IHNraXAgZnJv
bSBoZXJlIHRvIGFsbG93IHNvbWUgaGVhZGVycyB0byBiZSBjcmVhdGVkCisgICAgIyBmb3IgYSBz
dWNjZXNzZnVsIGNvbXBpbGUuCisgICAgaWYgKCRpc0N1c3RvbUZ1bmN0aW9uICYmCisgICAgICAg
ICRmdW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21fbm9kZV9yZW1vdmVfY2hpbGQiICYmIAorICAg
ICAgICAkZnVuY3Rpb25OYW1lIG5lICJ3ZWJraXRfZG9tX25vZGVfaW5zZXJ0X2JlZm9yZSIgJiYK
KyAgICAgICAgJGZ1bmN0aW9uTmFtZSBuZSAid2Via2l0X2RvbV9ub2RlX3JlcGxhY2VfY2hpbGQi
ICYmCisgICAgICAgICRmdW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21fbm9kZV9hcHBlbmRfY2hp
bGQiKSB7CisgICAgICAgIHB1c2goQGhCb2R5LCAiXG4vKiBUT0RPOiBjdXN0b20gZnVuY3Rpb24g
JHtmdW5jdGlvbk5hbWV9ICovXG5cbiIpOworICAgICAgICBwdXNoKEBjQm9keSwgIlxuLyogVE9E
TzogY3VzdG9tIGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSAqL1xuXG4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgewor
ICAgICAgICAkZnVuY3Rpb25TaWcgLj0gIiwgR0Vycm9yICoqZXJyb3IiOworICAgIH0KKworICAg
IHB1c2goQGhCb2R5LCAiV0VCS0lUX0FQSSAkcmV0dXJuVHlwZVxuJGZ1bmN0aW9uTmFtZSAoJGZ1
bmN0aW9uU2lnKTtcblxuIik7CisgICAgcHVzaChAY0JvZHksICIkcmV0dXJuVHlwZVxuJGZ1bmN0
aW9uTmFtZSAoJGZ1bmN0aW9uU2lnKVxue1xuIik7CisKKyAgICBpZiAoJHJldHVyblR5cGUgbmUg
InZvaWQiKSB7CisgICAgICAgICMgVE9ETzogcmV0dXJuIHByb3BlciBkZWZhdWx0IHJlc3VsdAor
ICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VsZiwgMCk7
XG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl9p
Zl9mYWlsIChzZWxmKTtcbiIpOworICAgIH0KKworICAgICMgVGhlIFdlYktpdDo6Y29yZSBpbXBs
ZW1lbnRhdGlvbnMgY2hlY2sgZm9yIE5VTEwgYWxyZWFkeTsgbm8gbmVlZCB0bworICAgICMgZHVw
bGljYXRlIGVmZm9ydC4KKyAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke2ludGVyZmFj
ZU5hbWV9ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTtcbiIpOworCisgICAgZm9yZWFjaCBt
eSAkcGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICBteSAkcGFyYW1O
YW1lID0gZGVjYW1lbGl6ZSgkcGFyYW0tPm5hbWUpOworICAgICAgICBteSAkcGFyYW1JRExUeXBl
ID0gJHBhcmFtLT50eXBlOworICAgICAgICBteSAkcGFyYW1UeXBlSXNQcmltaXRpdmUgPSAkY29k
ZUdlbmVyYXRvci0+SXNQcmltaXRpdmVUeXBlKCRwYXJhbUlETFR5cGUpOworICAgICAgICBteSAk
cGFyYW1Jc0dET01UeXBlID0gSXNHRE9NQ2xhc3NUeXBlKCRwYXJhbUlETFR5cGUpOworICAgICAg
ICBpZiAoISRwYXJhbVR5cGVJc1ByaW1pdGl2ZSkgeworICAgICAgICAgICAgaWYgKCRyZXR1cm5U
eXBlIG5lICJ2b2lkIikgeworICAgICAgICAgICAgICAgICMgVE9ETzogcmV0dXJuIHByb3BlciBk
ZWZhdWx0IHJlc3VsdAorICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsICgkcGFyYW1OYW1lLCAwKTtcbiIpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl9pZl9mYWlsICgkcGFy
YW1OYW1lKTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgJHJl
dHVyblBhcmFtTmFtZSA9ICIiOworICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc30pIHsKKyAgICAgICAgbXkgJHBhcmFtSURMVHlwZSA9ICRwYXJhbS0+dHlwZTsK
KyAgICAgICAgbXkgJHBhcmFtTmFtZSA9IGRlY2FtZWxpemUoJHBhcmFtLT5uYW1lKTsKKworICAg
ICAgICBteSAkcGFyYW1Jc0dET01UeXBlID0gSXNHRE9NQ2xhc3NUeXBlKCRwYXJhbUlETFR5cGUp
OworICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICAg
ICAgcHVzaChAY0JvZHksICIgICAgV2ViQ29yZTo6U3RyaW5nIF9nXyR7cGFyYW1OYW1lfSA9IFdl
YkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoJHBhcmFtTmFtZSk7XG4iKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoJHBhcmFtSXNHRE9NVHlwZSkgeworICAgICAgICAgICAgcHVzaChAY0JvZHksICIg
ICAgV2ViQ29yZTo6JHtwYXJhbUlETFR5cGV9ICogX2dfJHtwYXJhbU5hbWV9ID0gV2ViS2l0Ojpj
b3JlKCRwYXJhbU5hbWUpO1xuIik7CisgICAgICAgICAgICBpZiAoJHJldHVyblR5cGUgbmUgInZv
aWQiKSB7CisgICAgICAgICAgICAgICAgIyBUT0RPOiByZXR1cm4gcHJvcGVyIGRlZmF1bHQgcmVz
dWx0CisgICAgICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwgKF9nXyR7cGFyYW1OYW1lfSwgMCk7XG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgZ19yZXR1cm5faWZfZmFpbCAoX2dfJHtwYXJh
bU5hbWV9KTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICRyZXR1cm5Q
YXJhbU5hbWUgPSAiX2dfIi4kcGFyYW1OYW1lIGlmICRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlJldHVybiJ9OworICAgIH0KKworICAgIG15ICRhc3NpZ24gPSAiIjsKKyAgICBteSAkYXNz
aWduUHJlID0gIiI7CisgICAgbXkgJGFzc2lnblBvc3QgPSAiIjsKKworICAgIGlmICgkcmV0dXJu
VHlwZSBuZSAidm9pZCIgJiYgISRpc0N1c3RvbUZ1bmN0aW9uKSB7CisgICAgICAgIGlmICgkcmV0
dXJuVmFsdWVJc0dET01UeXBlKSB7CisgICAgICAgICAgICAkYXNzaWduID0gIlBhc3NSZWZQdHI8
V2ViQ29yZTo6JHtmdW5jdGlvblNpZ1R5cGV9PiBnX3JlcyA9ICI7CisgICAgICAgICAgICAkYXNz
aWduUHJlID0gIldURjo6Z2V0UHRyKCI7CisgICAgICAgICAgICAkYXNzaWduUG9zdCA9ICIpIjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRhc3NpZ24gPSAiJHtyZXR1cm5UeXBlfSBy
ZXMgPSAiOworICAgICAgICB9CisgICAgfQorICAgIG15ICRleGNlcHRpb25zID0gIiI7CisgICAg
aWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgeworICAgICAgICBwdXNoKEBjQm9k
eSwgIiAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOworICAgICAgICBpZiAo
JHtjYWxsSW1wbFBhcmFtc30gbmUgIiIpIHsKKyAgICAgICAgICAgICRleGNlcHRpb25zID0gIiwg
ZWMiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGV4Y2VwdGlvbnMgPSAiZWMiOwor
ICAgICAgICB9CisgICAgfQorCisgICAgIyBXZSBuZWVkIHRvIHNwZWNpYWwtY2FzZSB0aGVzZSBO
b2RlIG1ldGhvZHMgYmVjYXVzZSB0aGVpciBDKysgc2lnbmF0dXJlIGlzIGRpZmZlcmVudAorICAg
ICMgZnJvbSB3aGF0IHdlJ2QgZXhwZWN0IGdpdmVuIHRoZWlyIElETCBkZXNjcmlwdGlvbjsgc2Vl
IE5vZGUuaC4KKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9ub2RlX2FwcGVu
ZF9jaGlsZCIgfHwKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9ub2RlX2lu
c2VydF9iZWZvcmUiIHx8CisgICAgICAgICRmdW5jdGlvbk5hbWUgZXEgIndlYmtpdF9kb21fbm9k
ZV9yZXBsYWNlX2NoaWxkIiB8fAorICAgICAgICAkZnVuY3Rpb25OYW1lIGVxICJ3ZWJraXRfZG9t
X25vZGVfcmVtb3ZlX2NoaWxkIikgeworICAgICAgICBteSAkY3VzdG9tTm9kZUFwcGVuZENoaWxk
ID0gPDwgIkVPRiI7CisgICAgYm9vbCBvayA9IGl0ZW0tPiR7ZnVuY3Rpb25TaWdOYW1lfSgke2Nh
bGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30pOworICAgIGlmIChvaykKKyAgICB7CisgICAgICAg
ICR7cmV0dXJuVHlwZX0gcmVzID0gc3RhdGljX2Nhc3Q8JHtyZXR1cm5UeXBlfT4oV2ViS2l0Ojpr
aXQoJHJldHVyblBhcmFtTmFtZSkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KK0VPRgor
ICAgICAgICBwdXNoKEBjQm9keSwgJGN1c3RvbU5vZGVBcHBlbmRDaGlsZCk7CisgICAgCisgICAg
ICAgIGlmKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgeworICAgICAgICAgICAgbXkg
JGV4Y2VwdGlvbkhhbmRsaW5nID0gPDwgIkVPRiI7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24gZWNkZXNjOworICAgIFdlYkNvcmU6OmdldEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbihlYywgZWNkZXNjKTsKKyAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7
CitFT0YKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAkZXhjZXB0aW9uSGFuZGxpbmcpOworICAg
ICAgICB9CisgICAgICAgIHB1c2goQGNCb2R5LCAicmV0dXJuIE5VTEw7Iik7CisgICAgICAgIHB1
c2goQGNCb2R5LCAifVxuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gZWxzaWYgKCRmdW5j
dGlvblNpZ1R5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgcHVzaChAY0JvZHksICIgICAg
JHthc3NpZ259Y29udmVydFRvVVRGOFN0cmluZyhpdGVtLT4ke2Z1bmN0aW9uU2lnTmFtZX0oJHtj
YWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9KSk7XG4iICk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHVzaChAY0JvZHksICIgICAgJHthc3NpZ259JHthc3NpZ25QcmV9aXRlbS0+JHtmdW5jdGlv
blNpZ05hbWV9KCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xu
IiApOworICAgICAgICAKKyAgICAgICAgaWYoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9
KSB7CisgICAgICAgICAgICBteSAkZXhjZXB0aW9uSGFuZGxpbmcgPSA8PCAiRU9GIjsKKyAgICBp
ZihlYykgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNj
OworICAgICAgICBXZWJDb3JlOjpnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oZWMsIGVjZGVz
Yyk7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICB9CitFT0YK
KyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAkZXhjZXB0aW9uSGFuZGxpbmcpOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIiAmJiAhJGlzQ3VzdG9tRnVu
Y3Rpb24pIHsKKyAgICAgICAgaWYgKCRmdW5jdGlvblNpZ1R5cGUgbmUgIkRPTU9iamVjdCIpIHsK
KyAgICAgICAgICAgIGlmICgkcmV0dXJuVmFsdWVJc0dET01UeXBlKSB7CisgICAgICAgICAgICAg
ICAgcHVzaChAY0JvZHksICIgICAgJHtyZXR1cm5UeXBlfSByZXMgPSBzdGF0aWNfY2FzdDwke3Jl
dHVyblR5cGV9PihXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSkpO1xuIik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRmdW5jdGlvblNpZ1R5cGUgZXEgIkRPTU9iamVjdCIp
IHsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiBOVUxMOyAvKiBUT0RPOiBy
ZXR1cm4gY2FudmFzIG9iamVjdCAqL1xuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBwdXNoKEBjQm9keSwgIiAgICByZXR1cm4gcmVzO1xuIik7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcHVzaChAY0JvZHksICJcbn1cblxuIik7Cit9CisKK3N1YiBDbGFzc0hhc0Z1bmN0aW9uIHsK
KyAgICBteSAoJGNsYXNzLCAkbmFtZSkgPSBAXzsKKworICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRjbGFzcy0+ZnVuY3Rpb25zfSkgeworICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWUgZXEgJG5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBHZW5lcmF0ZUZ1bmN0aW9ucyB7CisgICAg
bXkgKCRvYmplY3QsICRpbnRlcmZhY2VOYW1lLCAkZGF0YU5vZGUpID0gQF87CisKKyAgICBmb3Jl
YWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgJG9i
amVjdC0+R2VuZXJhdGVGdW5jdGlvbigkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uLCAiIik7Cisg
ICAgfQorCisgICAgVE9QOgorICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUt
PmF0dHJpYnV0ZXN9KSB7CisgICAgICAgIGlmIChTa2lwQXR0cmlidXRlKCRhdHRyaWJ1dGUpKSB7
CisgICAgICAgICAgICBuZXh0IFRPUDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSBlcSAidHlwZSIKKyAgICAgICAgICAgICMgVGhp
cyB3aWxsIGNvbmZsaWN0IHdpdGggdGhlIGdldF90eXBlKCkgZnVuY3Rpb24gd2UgZGVmaW5lIHRv
IHJldHVybiBhIEdUeXBlCisgICAgICAgICAgICAjIGFjY29yZGluZyB0byBHT2JqZWN0IGNvbnZl
bnRpb25zLiAgU2tpcCB0aGlzIGZvciBub3cuCisgICAgICAgICAgICB8fCAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWUgZXEgIlVSTCIgICAgICMgVE9ETzogaGFuZGxlIHRoaXMKKyAgICAgICAg
ICAgIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZl
cnRGcm9tU3RyaW5nIn0gICAgIyBUT0RPOiBoYW5kbGUgdGhpcworICAgICAgICAgICAgKSB7Cisg
ICAgICAgICAgICBuZXh0IFRPUDsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIG15
ICRhdHRyTmFtZVVwcGVyID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgbXkgJGdldG5hbWUgPSAiZ2V0JHthdHRyTmFtZVVw
cGVyfSI7CisgICAgICAgIG15ICRzZXRuYW1lID0gInNldCR7YXR0ck5hbWVVcHBlcn0iOworICAg
ICAgICBpZiAoQ2xhc3NIYXNGdW5jdGlvbigkZGF0YU5vZGUsICRnZXRuYW1lKSB8fCBDbGFzc0hh
c0Z1bmN0aW9uKCRkYXRhTm9kZSwgJHNldG5hbWUpKSB7CisgICAgICAgICAgICAjIFZlcnkgb2Nj
YXNpb25hbGx5IGFuIElETCBmaWxlIGRlZmluZXMgZ2V0dGVyL3NldHRlciBmdW5jdGlvbnMgZm9y
IG9uZSBvZiBpdHMKKyAgICAgICAgICAgICMgYXR0cmlidXRlczsgaW4gdGhpcyBjYXNlIHdlIGRv
bid0IG5lZWQgdG8gYXV0b2dlbmVyYXRlIHRoZSBnZXR0ZXIvc2V0dGVyLgorICAgICAgICAgICAg
bmV4dCBUT1A7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICMgR2VuZXJhdGUgYW4gYXR0
cmlidXRlIGdldHRlci4gIEZvciBhbiBhdHRyaWJ1dGUgImZvbyIsIHRoaXMgaXMgYSBmdW5jdGlv
biBuYW1lZAorICAgICAgICAjICJnZXRfZm9vIiB3aGljaCBjYWxscyBhIERPTSBjbGFzcyBtZXRo
b2QgbmFtZWQgZm9vKCkuCisgICAgICAgIG15ICRmdW5jdGlvbiA9IG5ldyBkb21GdW5jdGlvbigp
OworICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpOwor
ICAgICAgICAkZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnMoJGF0dHJpYnV0ZS0+Z2V0dGVyRXhj
ZXB0aW9ucyk7CisgICAgICAgICRvYmplY3QtPkdlbmVyYXRlRnVuY3Rpb24oJGludGVyZmFjZU5h
bWUsICRmdW5jdGlvbiwgImdldF8iKTsKKyAgICAgICAgCisgICAgICAgIGlmICgkYXR0cmlidXRl
LT50eXBlID1+IC9ecmVhZG9ubHkvIHx8CisgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9ICAjIGNhbid0IGhhbmRsZSB0
aGlzIHlldAorICAgICAgICAgICAgKSB7CisgICAgICAgICAgICBuZXh0IFRPUDsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgIyBHZW5lcmF0ZSBhbiBhdHRyaWJ1dGUgc2V0dGVyLiAgRm9y
IGFuIGF0dHJpYnV0ZSwgImZvbyIsIHRoaXMgaXMgYSBmdW5jdGlvbiBuYW1lZAorICAgICAgICAj
ICJzZXRfZm9vIiB3aGljaCBjYWxscyBhIERPTSBjbGFzcyBtZXRob2QgbmFtZWQgc2V0Rm9vKCku
CisgICAgICAgICRmdW5jdGlvbiA9IG5ldyBkb21GdW5jdGlvbigpOworICAgICAgICAKKyAgICAg
ICAgJGZ1bmN0aW9uLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKKyAgICAgICAgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoJHNldG5hbWUpOworICAgICAgICAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+dHlwZSgidm9pZCIpOworICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KTsKKyAgICAgICAgCisgICAgICAgIG15ICRwYXJhbSA9IG5ldyBkb21TaWduYXR1cmUoKTsKKyAg
ICAgICAgJHBhcmFtLT5uYW1lKCJ2YWx1ZSIpOworICAgICAgICAkcGFyYW0tPnR5cGUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSAoKTsKKyAg
ICAgICAgJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CisgICAgICAgIG15
ICRhcnJheVJlZiA9ICRmdW5jdGlvbi0+cGFyYW1ldGVyczsKKyAgICAgICAgcHVzaChAJGFycmF5
UmVmLCAkcGFyYW0pOworICAgICAgICAKKyAgICAgICAgJGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRp
b25zKCRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnMpOworICAgICAgICAKKyAgICAgICAgJG9i
amVjdC0+R2VuZXJhdGVGdW5jdGlvbigkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uLCAiIik7Cisg
ICAgfQorfQorCitzdWIgR2VuZXJhdGVDRmlsZSB7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZh
Y2VOYW1lLCAkcGFyZW50Q2xhc3NOYW1lLCAkcGFyZW50R09ialR5cGUsICRkYXRhTm9kZSkgPSBA
XzsKKyAgICBteSAkaW1wbENvbnRlbnQgPSAiIjsKKworICAgIG15ICRjbHNDYXBzID0gdWMoZGVj
YW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkpOworICAgIG15ICRsb3dlckNhc2VJZmFjZU5hbWUgPSAi
d2Via2l0X2RvbV8iIC4gZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSk7CisKKyAgICAkaW1wbENv
bnRlbnQgPSA8PCAiRU9GIjsKK0dfREVGSU5FX1RZUEUoJHtjbGFzc05hbWV9LCAke2xvd2VyQ2Fz
ZUlmYWNlTmFtZX0sICR7cGFyZW50R09ialR5cGV9KQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
JHtjbGFzc05hbWV9KiB3cmFwJHtpbnRlcmZhY2VOYW1lfShXZWJDb3JlOjoke2ludGVyZmFjZU5h
bWV9KiBjb3JlT2JqZWN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3Qg
IT0gMCwgMCk7CisgICAgCisgICAgJHtjbGFzc05hbWV9KiB3cmFwcGVyID0gV0VCS0lUX0RPTV8k
e2Nsc0NhcHN9KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgTlVMTCkp
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdyYXBwZXIgIT0gMCwgMCk7CisKKyAgICAvKiBX
ZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVz
ZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAgKiBpbiBhIEMtYWxsb2NhdGVkIEdP
YmplY3Qgc3RydWN0dXJlLiAgU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZQorICAgICAq
IG1hdGNoaW5nIGRlcmVmKCkuCisgICAgICovCisKKyAgICBjb3JlT2JqZWN0LT5yZWYoKTsKKyAg
ICBXRUJLSVRfRE9NX09CSkVDVCh3cmFwcGVyKS0+Y29yZU9iamVjdCA9IGNvcmVPYmplY3Q7CisK
KyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29y
ZSgke2NsYXNzTmFtZX0qIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVx
dWVzdCAhPSAwLCAwKTsKKyAgICAKKyAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBjb3Jl
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSo+KFdFQktJVF9E
T01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChjb3JlT2JqZWN0ICE9IDAsIDApOworICAgIAorICAgIHJldHVybiBjb3JlT2JqZWN0OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK0VPRgorCisgICAgcHVzaChAY0JvZHlQcml2LCAkaW1w
bENvbnRlbnQpOworICAgICRvYmplY3QtPkdlbmVyYXRlUHJvcGVydGllcygkaW50ZXJmYWNlTmFt
ZSwgJGRhdGFOb2RlKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUZ1bmN0aW9ucygkaW50ZXJmYWNl
TmFtZSwgJGRhdGFOb2RlKTsKK30KKworc3ViIEdlbmVyYXRlRW5kSGVhZGVyIHsKKyAgICBteSAo
JG9iamVjdCkgPSBAXzsKKworICAgICNIZWFkZXIgZ3VhcmQKKyAgICBteSAkZ3VhcmQgPSAkY2xh
c3NOYW1lIC4gIl9oIjsKKworICAgIHB1c2goQGhCb2R5LCAiR19FTkRfREVDTFNcblxuIik7Cisg
ICAgcHVzaChAaEJvZHksICIjZW5kaWYgLyogJGd1YXJkICovXG4iKTsKK30KKworc3ViIEdlbmVy
YXRlUHJpdmF0ZUhlYWRlciB7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRkYXRh
Tm9kZSA9IHNoaWZ0OworCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7
CisgICAgbXkgJGZpbGVuYW1lID0gIiRvdXRwdXREaXIvIiAuICRjbGFzc05hbWUgLiAiUHJpdmF0
ZS5oIjsKKyAgICBteSAkZ3VhcmQgPSB1YyhkZWNhbWVsaXplKCRjbGFzc05hbWUpKSAuICJfUFJJ
VkFURV9IIjsKKyAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gR2V0UGFyZW50Q2xhc3NOYW1lKCRk
YXRhTm9kZSk7CisgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkxlZ2FjeVBhcmVudCJ9OworICAgIG15ICRoYXNSZWFsUGFyZW50ID0gQHsk
ZGF0YU5vZGUtPnBhcmVudHN9ID4gMDsKKyAgICBteSAkaGFzUGFyZW50ID0gJGhhc0xlZ2FjeVBh
cmVudCB8fCAkaGFzUmVhbFBhcmVudDsKKyAgICAKKyAgICBvcGVuKFBSSVZIRUFERVIsICI+JGZp
bGVuYW1lIikgb3IgZGllICJDb3VsZG4ndCBvcGVuIGZpbGUgJGZpbGVuYW1lIGZvciB3cml0aW5n
IjsKKyAgICAKKyAgICBwcmludCBQUklWSEVBREVSIHNwbGl0KCJcciIsICRsaWNlbmNlVGVtcGxh
dGUpOworICAgIHByaW50IFBSSVZIRUFERVIgIlxuIjsKKyAgICAKKyAgICBteSAkdGV4dCA9IDw8
ICJFT0YiOworI2lmbmRlZiAkZ3VhcmQKKyNkZWZpbmUgJGd1YXJkCisKKyNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC8ke3BhcmVudENsYXNzTmFtZX0uaD4KKyNpbmNs
dWRlICIke2ludGVyZmFjZU5hbWV9LmgiCitFT0YKKworICAgIHByaW50IFBSSVZIRUFERVIgJHRl
eHQ7CisgICAgCisgICAgcHJpbnQgUFJJVkhFQURFUiBtYXAgeyAiI2luY2x1ZGUgXCIkX1wiXG4i
IH0gc29ydCBrZXlzKCVoZHJQcm9wSW5jbHVkZXMpOworICAgIHByaW50IFBSSVZIRUFERVIgIlxu
IiBpZiBrZXlzKCVoZHJQcm9wSW5jbHVkZXMpOworICAgIAorICAgICR0ZXh0ID0gPDwgIkVPRiI7
CituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAke2NsYXNzTmFtZX0gKgorICAgIHdyYXAke2ludGVy
ZmFjZU5hbWV9KFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0gKmNvcmVPYmplY3QpOworCisgICAg
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSAqCisgICAgY29yZSgke2NsYXNzTmFtZX0gKnJlcXVl
c3QpOworCitFT0YKKworICAgIHByaW50IFBSSVZIRUFERVIgJHRleHQ7CisKKyAgICBpZiAoJGNs
YXNzTmFtZSBuZSAiV2ViS2l0RE9NTm9kZSIpIHsKKyAgICAgICAgJHRleHQgPSA8PCAiRU9GIjsK
KyAgICBncG9pbnRlcgorICAgIGtpdChXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBub2RlKTsK
KworRU9GCisgICAgICAgIHByaW50IFBSSVZIRUFERVIgJHRleHQ7CisgICAgfQorCisgICAgJHRl
eHQgPSA8PCAiRU9GIjsKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLyogJHtndWFy
ZH0gKi8KK0VPRgorICAgIHByaW50IFBSSVZIRUFERVIgJHRleHQ7CisgICAgCisgICAgY2xvc2Uo
UFJJVkhFQURFUik7Cit9CisKK3N1YiBVc2VzTWFudWFsVG9KU0ltcGxlbWVudGF0aW9uIHsKKyAg
ICBteSAkdHlwZSA9IHNoaWZ0OworCisgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIk5vZGUiIG9y
ICR0eXBlIGVxICJEb2N1bWVudCIgb3IgJHR5cGUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvcgorICAg
ICAgJHR5cGUgZXEgIlNWR1BhdGhTZWciIG9yICR0eXBlIGVxICJTdHlsZVNoZWV0IiBvciAkdHlw
ZSBlcSAiQ1NTUnVsZSIgb3IgJHR5cGUgZXEgIkNTU1ZhbHVlIiBvcgorICAgICAgJHR5cGUgZXEg
IkV2ZW50IiBvciAkdHlwZSBlcSAiRWxlbWVudCIgb3IgJHR5cGUgZXEgIlRleHQiOworICAgIHJl
dHVybiAwOworfQorCitzdWIgR2VuZXJhdGUgeworICAgIG15ICgkb2JqZWN0LCAkZGF0YU5vZGUp
ID0gQF87CisKKyAgICBteSAkaGFzTGVnYWN5UGFyZW50ID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiTGVnYWN5UGFyZW50In07CisgICAgbXkgJGhhc1JlYWxQYXJlbnQgPSBAeyRk
YXRhTm9kZS0+cGFyZW50c30gPiAwOworICAgIG15ICRoYXNQYXJlbnQgPSAkaGFzTGVnYWN5UGFy
ZW50IHx8ICRoYXNSZWFsUGFyZW50OworICAgIG15ICRwYXJlbnRDbGFzc05hbWUgPSBHZXRQYXJl
bnRDbGFzc05hbWUoJGRhdGFOb2RlKTsKKyAgICBteSAkcGFyZW50R09ialR5cGUgPSBHZXRQYXJl
bnRHT2JqVHlwZSgkZGF0YU5vZGUpOworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2Rl
LT5uYW1lOworCisgICAgIyBBZGQgdGhlIGRlZmF1bHQgaW1wbCBoZWFkZXIgdGVtcGxhdGUKKyAg
ICBAY1ByZWZpeCA9IHNwbGl0KCJcciIsICRsaWNlbmNlVGVtcGxhdGUpOworICAgIHB1c2goQGNQ
cmVmaXgsICJcbiIpOworCisgICAgJGltcGxJbmNsdWRlc3sid2Via2l0bWFyc2hhbC5oIn0gPSAx
OworICAgICRpbXBsSW5jbHVkZXN7IndlYmtpdHByaXZhdGUuaCJ9ID0gMTsKKyAgICAkaW1wbElu
Y2x1ZGVzeyJXZWJLaXRET01CaW5kaW5nLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siZ29i
amVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3sid2Vi
a2l0LyRjbGFzc05hbWUuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXQvJHtjbGFz
c05hbWV9UHJpdmF0ZS5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7IiR7aW50ZXJmYWNlTmFt
ZX0uaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CisK
KyAgICAkaGRySW5jbHVkZXN7IndlYmtpdC8ke3BhcmVudENsYXNzTmFtZX0uaCJ9ID0gMTsKKwor
ICAgIGlmICgkY2xhc3NOYW1lIG5lICJXZWJLaXRET01Ob2RlIikgeworICAgICAgICBteSAkY29u
dmVydGVyID0gPDwgIkVPRiI7CituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK2dwb2ludGVyIGtp
dChXZWJDb3JlOjokaW50ZXJmYWNlTmFtZSogb2JqKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKG9iaiAhPSAwLCAwKTsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNo
ZTo6Z2V0KG9iaikpCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByZXR1cm4gRE9NT2JqZWN0
Q2FjaGU6OnB1dChvYmosIFdlYktpdDo6d3JhcCR7aW50ZXJmYWNlTmFtZX0ob2JqKSk7Cit9Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQgLy8KKworRU9GCisgICAgcHVzaChAY0JvZHksICRj
b252ZXJ0ZXIpOworICAgIH0KKworICAgICRvYmplY3QtPkdlbmVyYXRlSGVhZGVyKCRpbnRlcmZh
Y2VOYW1lLCAkcGFyZW50Q2xhc3NOYW1lKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUNGaWxlKCRp
bnRlcmZhY2VOYW1lLCAkcGFyZW50Q2xhc3NOYW1lLCAkcGFyZW50R09ialR5cGUsICRkYXRhTm9k
ZSk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVFbmRIZWFkZXIoKTsKKyAgICAkb2JqZWN0LT5HZW5l
cmF0ZVByaXZhdGVIZWFkZXIoJGRhdGFOb2RlKTsKK30KKworIyBJbnRlcm5hbCBoZWxwZXIKK3N1
YiBXcml0ZURhdGEgeworICAgIG15ICgkb2JqZWN0LCAkbmFtZSkgPSBAXzsKKworICAgICMgV3Jp
dGUgcHVibGljIGhlYWRlci4KKyAgICBteSAkaGRyRk5hbWUgPSAiJG91dHB1dERpci8iIC4gJG5h
bWUgLiAiLmgiOworICAgIG9wZW4oSEVBREVSLCAiPiRoZHJGTmFtZSIpIG9yIGRpZSAiQ291bGRu
J3Qgb3BlbiBmaWxlICRoZHJGTmFtZSI7CisKKyAgICBwcmludCBIRUFERVIgQGhQcmVmaXg7Cisg
ICAgcHJpbnQgSEVBREVSIEBoUHJlZml4R3VhcmQ7CisgICAgcHJpbnQgSEVBREVSICIjaW5jbHVk
ZSBcIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmhcIlxuIjsKKyAgICBwcmludCBIRUFERVIgIiNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPlxuIjsKKyAgICBwcmludCBIRUFERVIgIiNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0ZGVmaW5lcy5oPlxuIjsKKyAgICBwcmludCBIRUFERVIgbWFwIHsgIiNpbmNs
dWRlIFwiJF9cIlxuIiB9IHNvcnQga2V5cyglaGRySW5jbHVkZXMpOworICAgIHByaW50IEhFQURF
UiAiXG4iIGlmIGtleXMoJWhkckluY2x1ZGVzKTsKKyAgICBwcmludCBIRUFERVIgIlxuIjsKKyAg
ICBwcmludCBIRUFERVIgQGhCb2R5UHJlOworICAgIHByaW50IEhFQURFUiBAaEJvZHk7CisKKyAg
ICBjbG9zZShIRUFERVIpOworCisgICAgIyBXcml0ZSB0aGUgaW1wbGVtZW50YXRpb24gc291cmNl
cworICAgIG15ICRpbXBsRmlsZU5hbWUgPSAiJG91dHB1dERpci8iIC4gJG5hbWUgLiAiLmNwcCI7
CisgICAgb3BlbihJTVBMLCAiPiRpbXBsRmlsZU5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9wZW4g
ZmlsZSAkaW1wbEZpbGVOYW1lIjsKKworICAgIHByaW50IElNUEwgQGNQcmVmaXg7CisgICAgcHJp
bnQgSU1QTCAiI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG4iOworICAgIHByaW50IElNUEwgIiNp
bmNsdWRlIFwiY29uZmlnLmhcIlxuXG4iOworICAgIHByaW50IElNUEwgIiNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+XG4iOworICAgIHByaW50IElNUEwgIiNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+XG4i
OworICAgIHByaW50IElNUEwgbWFwIHsgIiNpbmNsdWRlIFwiJF9cIlxuIiB9IHNvcnQga2V5cygl
aW1wbEluY2x1ZGVzKTsKKyAgICBwcmludCBJTVBMICJcbiIgaWYga2V5cyglaW1wbEluY2x1ZGVz
KTsKKyAgICBwcmludCBJTVBMIEBjQm9keTsKKworICAgIHByaW50IElNUEwgIlxuIjsKKyAgICBw
cmludCBJTVBMIEBjQm9keVByaXY7CisKKyAgICBjbG9zZShJTVBMKTsKKworICAgICVpbXBsSW5j
bHVkZXMgPSAoKTsKKyAgICAlaGRySW5jbHVkZXMgPSAoKTsKKyAgICBAaFByZWZpeCA9ICgpOwor
ICAgIEBoQm9keSA9ICgpOworCisgICAgQGNQcmVmaXggPSAoKTsKKyAgICBAY0JvZHkgPSAoKTsK
KyAgICBAY0JvZHlQcml2ID0gKCk7Cit9CisKK3N1YiBHZW5lcmF0ZUludGVyZmFjZSB7CisgICAg
bXkgKCRvYmplY3QsICRkYXRhTm9kZSwgJGRlZmluZXMpID0gQF87CisgICAgbXkgJG5hbWUgPSAk
ZGF0YU5vZGUtPm5hbWU7CisKKyAgICAjIFNldCB1cCBzb21lIGdsb2JhbCB2YXJpYWJsZXMKKyAg
ICAkY2xhc3NOYW1lID0gR2V0Q2xhc3NOYW1lKCRkYXRhTm9kZS0+bmFtZSk7CisgICAgJG9iamVj
dC0+R2VuZXJhdGUoJGRhdGFOb2RlKTsKKworICAgICMgV3JpdGUgY2hhbmdlcworICAgIG15ICRm
bmFtZSA9ICJXZWJLaXRET01fIiAuICRuYW1lOworICAgICRmbmFtZSA9fiBzL18vL2c7CisgICAg
JG9iamVjdC0+V3JpdGVEYXRhKCRmbmFtZSk7Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVhZGVycy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xMDE3NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVhZGVycy5wbApAQCAtMCwwICsxLDc3IEBA
CisjIS91c3IvYmluL3BlcmwgLXcKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEFkYW0gRGluZ2xl
IDxhZGFtQHlvcmJhLm9yZz4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgV2ViS2l0CisjIAor
IyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjIAorIyBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyMgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisjIAorCitteSAkY2xhc3NsaXN0ID0gPFNU
RElOPjsKK2Nob21wKCRjbGFzc2xpc3QpOworbXkgQGNsYXNzZXMgPSBzcGxpdCAvIC8sICRjbGFz
c2xpc3Q7CitAY2xhc3NlcyA9IHNvcnQgQGNsYXNzZXM7CisKK3ByaW50IDw8RU9GOworLyogVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwu
ICBETyBOT1QgTU9ESUZZIQorICAgCisgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKK0VPRgorCitteSAkb3V0VHlwZSA9ICRBUkdWWzBdOworbXkgJGhlYWRlcjsK
K2lmICgkb3V0VHlwZSBlcSAiZGVmaW5lcyIpIHsKKyAgICAkaGVhZGVyID0gIndlYmtpdGRvbWRl
ZmluZXNfaCI7Cit9IGVsc2lmICgkb3V0VHlwZSBlcSAiZ2RvbSIpIHsKKyAgICAkaGVhZGVyID0g
IndlYmtpdGRvbV9oIjsKK30gZWxzZSB7CisgICAgZGllICJ1bmtub3duIG91dHB1dCB0eXBlIjsK
K30KKworcHJpbnQgIiNpZm5kZWYgJHtoZWFkZXJ9XG4iOworcHJpbnQgIiNkZWZpbmUgJHtoZWFk
ZXJ9XG4iOworcHJpbnQgIlxuIjsKKworaWYgKCRvdXRUeXBlIGVxICJkZWZpbmVzIikgeworICAg
IGZvcmVhY2ggbXkgJGNsYXNzIChAY2xhc3NlcykgeworICAgICAgICBwcmludCAidHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdERPTSR7Y2xhc3N9IFdlYktpdERPTSR7Y2xhc3N9O1xuIjsKKyAgICAgICAg
cHJpbnQgInR5cGVkZWYgc3RydWN0IF9XZWJLaXRET00ke2NsYXNzfUNsYXNzIFdlYktpdERPTSR7
Y2xhc3N9Q2xhc3M7XG4iOworICAgICAgICBwcmludCAiXG4iOworICAgIH0KK30gZWxzaWYgKCRv
dXRUeXBlIGVxICJnZG9tIikgeworICAgIGZvcmVhY2ggbXkgJGNsYXNzIChAY2xhc3Nlcykgewor
ICAgICAgICBwcmludCAiI2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET00ke2NsYXNzfS5oPlxuIjsK
KyAgICB9Cit9CisKK3ByaW50ICJcbiI7CitwcmludCAiI2VuZGlmXG4iOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vTm9kZS5pZGwgYi9XZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRleCBjNmNkNGI5
Li4xOTU0NmJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAorKysgYi9XZWJDb3Jl
L2RvbS9Ob2RlLmlkbApAQCAtNjEsNyArNjEsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIHByZXZpb3VzU2libGluZzsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgICAgbmV4dFNpYmxpbmc7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgICAgIGF0dHJpYnV0ZXM7CisjaWYg
IWRlZmluZWQoTEFOR1VBR0VfR09CSkVDVCkgfHwgIUxBTkdVQUdFX0dPQkpFQ1QKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50ICAgICAgICAgb3duZXJEb2N1bWVudDsKKyNlbmRp
ZgogCiAgICAgICAgIFtPbGRTdHlsZU9iakMsIEN1c3RvbV0gTm9kZSBpbnNlcnRCZWZvcmUoaW4g
W1JldHVybl0gTm9kZSBuZXdDaGlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBOb2RlIHJlZkNoaWxkKQpAQCAtMTMyLDYgKzEzNCw3IEBAIG1v
ZHVsZSBjb3JlIHsKICNlbmRpZiAvKiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAqLwog
CiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJ
VkVfQworI2lmICFkZWZpbmVkKExBTkdVQUdFX0dPQkpFQ1QpIHx8ICFMQU5HVUFHRV9HT0JKRUNU
CiAgICAgICAgIFtDdXN0b21dIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlw
ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7CkBAIC0xNDEsNiArMTQ0LDcgQEAgbW9kdWxlIGNvcmUgewog
ICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQpCiAgICAgICAgICAg
ICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogI2VuZGlmCisjZW5kaWYKICAgICB9OwogCiB9Ci0t
IAoxLjYuNgoK
</data>
<flag name="review"
          id="30503"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
    <flag name="commit-queue"
          id="30504"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53964</attachid>
            <date>2010-04-21 09:44:31 -0700</date>
            <delta_ts>2010-04-22 02:50:26 -0700</delta_ts>
            <desc>dombindingsdocument.diff</desc>
            <filename>dombindingsdocument.diff</filename>
            <type>text/plain</type>
            <size>55607</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiODhjYjEzNDlkZWM1ZGUwZWJjYTA0MTk1MGNhZWNhOWQ0NzcwYjYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDIxIEFwciAyMDEwIDE4OjM0OjA2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQ29yZToK
CjIwMTAtMDQtMjEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGlu
Z3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM1OTAK
CiAgICAgICAgRXh0ZW5kIHRoZSBiaW5kaW5ncyB0byBjb3ZlciBtb3N0IG9mIERvY3VtZW50Lmlk
bAoKICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAgICogYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01CaW5kaW5nLmNwcDoKICAgICAgICAoV2ViS2l0OjpjcmVhdGVXcmFwcGVyKToKICAg
ICAgICAoV2ViS2l0OjpraXQpOgogICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01C
aW5kaW5nLmg6CiAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3Jh
cHBlckZhY3RvcnkuY3BwOiBBZGRlZC4KICAgICAgICAoV2ViS2l0OjpjcmVhdGVBbmNob3JXcmFw
cGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVBcHBsZXRXcmFwcGVyKToKICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVBcmVhV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlQmFzZVdyYXBw
ZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUJhc2VGb250V3JhcHBlcik6CiAgICAgICAgKFdl
YktpdDo6Y3JlYXRlQmxvY2txdW90ZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUJv
ZHlXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVCUldyYXBwZXIpOgogICAgICAgIChX
ZWJLaXQ6OmNyZWF0ZUJ1dHRvbldyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUNhbnZh
c1dyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlQ2FwdGlvbldyYXBwZXIpOgog
ICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlQ29sV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6
Y3JlYXRlTW9kV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlRGlyZWN0b3J5V3JhcHBl
cik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlRGl2V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6
Y3JlYXRlRExpc3RXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVFbWJlZFdyYXBwZXIp
OgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUZpZWxkU2V0V3JhcHBlcik6CiAgICAgICAgKFdlYktp
dDo6Y3JlYXRlRm9udFdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUZvcm1XcmFwcGVy
KToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVGcmFtZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6
OmNyZWF0ZUZyYW1lU2V0V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlSGVhZGluZ1dy
YXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUhlYWRXcmFwcGVyKToKICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVIUldyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUh0bWxXcmFwcGVy
KToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVJRnJhbWVXcmFwcGVyKToKICAgICAgICAoV2ViS2l0
OjpjcmVhdGVJbWFnZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUlucHV0V3JhcHBl
cik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlSXNJbmRleFdyYXBwZXIpOgogICAgICAgIChXZWJL
aXQ6OmNyZWF0ZUxhYmVsV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlTGVnZW5kV3Jh
cHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlTElXcmFwcGVyKToKICAgICAgICAoV2ViS2l0
OjpjcmVhdGVMaW5rV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlTWFwV3JhcHBlcik6
CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlTWFycXVlZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6
OmNyZWF0ZU1lbnVXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVNZXRhV3JhcHBlcik6
CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlT2JqZWN0V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6
Y3JlYXRlT0xpc3RXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVPcHRHcm91cFdyYXBw
ZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZU9wdGlvbldyYXBwZXIpOgogICAgICAgIChXZWJL
aXQ6OmNyZWF0ZVBhcmFncmFwaFdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVBhcmFt
V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJlV3JhcHBlcik6CiAgICAgICAgKFdl
YktpdDo6Y3JlYXRlUXVvdGVXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVTY3JpcHRX
cmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVTZWxlY3RXcmFwcGVyKToKICAgICAgICAo
V2ViS2l0OjpjcmVhdGVTdHlsZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxl
V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlVGFibGVTZWN0aW9uV3JhcHBlcik6CiAg
ICAgICAgKFdlYktpdDo6Y3JlYXRlVGFibGVDZWxsV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6
Y3JlYXRlVGV4dEFyZWFXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVUaXRsZVdyYXBw
ZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlUm93V3JhcHBlcik6CiAgICAgICAgKFdl
YktpdDo6Y3JlYXRlVUxpc3RXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVIVE1MRWxl
bWVudFdyYXBwZXIpOgogICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5Lmg6IEFkZGVkLgogICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yR09iamVjdC5wbToKICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKCldlYktpdC9ndGs6
CgoyMDEwLTA0LTIxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRp
bmdzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkw
CgogICAgICAgIEFkZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RvY3VtZW50IHRvIHJldHJpZXZlIHRo
ZSBXZWJLaXRET01Eb2N1bWVudAogICAgICAgIGZyb20gYSBXZWJLaXRXZWJWaWV3LCBhbmQgYSB2
ZXJ5IHNpbXBsZSB0ZXN0IGZvciBpdC4KCiAgICAgICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOgog
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgogICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2RvY3VtZW50KToKICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6Ci0tLQog
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc1
ICsrKwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgMTA0ICsrKystCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5j
cHAgICAgICB8ICAgMzIgKystCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmlu
ZGluZy5oICAgICAgICB8ICAgIDIgKwogLi4uL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFw
cGVyRmFjdG9yeS5jcHAgICAgfCAgNTI4ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vZ29iamVj
dC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggICAgICB8ICAgNDIgKysKIFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAgIHwgIDE1OCArKysr
Ky0tCiBXZWJDb3JlL2RvbS9Ob2RlLmlkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDIgLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDExICsKIFdlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyAgICAgICAgICAgICAg
ICAgICAgIHwgICAzNiArKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgICAg
ICAgICAgICAgICAgfCAgIDI2ICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCAg
ICAgICAgICAgICAgICAgIHwgICAgNCArCiAxMiBmaWxlcyBjaGFuZ2VkLCA5ODEgaW5zZXJ0aW9u
cygrKSwgMzkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBl
ckZhY3RvcnkuaAoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggY2I4ZWI1ZS4uODZlZDgzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw4MCBAQAogMjAxMC0wNC0yMSAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcg
VVJMIChPT1BTISkKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmlu
ZGluZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAoV2Vi
S2l0OjpraXQpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5o
OgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFj
dG9yeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVBbmNob3JXcmFwcGVyKToK
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlQXBwbGV0V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZUFyZWFXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlQmFzZVdyYXBwZXIp
OgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVCYXNlRm9udFdyYXBwZXIpOgorICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVCbG9ja3F1b3RlV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUJv
ZHlXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlQlJXcmFwcGVyKToKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlQnV0dG9uV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUNh
bnZhc1dyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVUYWJsZUNhcHRpb25XcmFwcGVy
KToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVGFibGVDb2xXcmFwcGVyKToKKyAgICAgICAgKFdl
YktpdDo6Y3JlYXRlTW9kV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZURpcmVjdG9y
eVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVEaXZXcmFwcGVyKToKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlRExpc3RXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRW1i
ZWRXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRmllbGRTZXRXcmFwcGVyKToKKyAg
ICAgICAgKFdlYktpdDo6Y3JlYXRlRm9udFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVh
dGVGb3JtV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUZyYW1lV3JhcHBlcik6Cisg
ICAgICAgIChXZWJLaXQ6OmNyZWF0ZUZyYW1lU2V0V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZUhlYWRpbmdXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlSGVhZFdyYXBw
ZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVIUldyYXBwZXIpOgorICAgICAgICAoV2ViS2l0
OjpjcmVhdGVIdG1sV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUlGcmFtZVdyYXBw
ZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVJbWFnZVdyYXBwZXIpOgorICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVJbnB1dFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVJc0luZGV4
V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUxhYmVsV3JhcHBlcik6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZUxlZ2VuZFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVM
SVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVMaW5rV3JhcHBlcik6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZU1hcFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVNYXJx
dWVlV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZU1lbnVXcmFwcGVyKToKKyAgICAg
ICAgKFdlYktpdDo6Y3JlYXRlTWV0YVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVP
YmplY3RXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlT0xpc3RXcmFwcGVyKToKKyAg
ICAgICAgKFdlYktpdDo6Y3JlYXRlT3B0R3JvdXBXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6
Y3JlYXRlT3B0aW9uV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVBhcmFncmFwaFdy
YXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVQYXJhbVdyYXBwZXIpOgorICAgICAgICAo
V2ViS2l0OjpjcmVhdGVQcmVXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUXVvdGVX
cmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU2NyaXB0V3JhcHBlcik6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZVNlbGVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVT
dHlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVUYWJsZVdyYXBwZXIpOgorICAg
ICAgICAoV2ViS2l0OjpjcmVhdGVUYWJsZVNlY3Rpb25XcmFwcGVyKToKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlVGFibGVDZWxsV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRleHRB
cmVhV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRpdGxlV3JhcHBlcik6CisgICAg
ICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlUm93V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNy
ZWF0ZVVMaXN0V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUhUTUxFbGVtZW50V3Jh
cHBlcik6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBw
ZXJGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG06CisgICAgICAgICogZG9tL05vZGUuaWRsOgorCisyMDEwLTA0LTIxICBY
YW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KKwogICAgICAgICBUcnkgdG8gZml4IGNvbXBp
bGF0aW9uIG9uIEdUSysgZGVidWcgYm90cy4KIAogICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NQmluZGluZy5jcHA6CmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
IGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5M2I2ODVlLi5hZjFhMmZhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTMxOCw2ICszMTgsOCBAQCB3ZWJjb3JlZ3RrX2RvbV9zb3VyY2VzID0gXAogCVdlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmggXAogCVdlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTUJpbmRpbmcuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktp
dEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2dvYmpl
Y3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L1dlYktpdERPTU9iamVjdC5oCiAKQEAgLTM3OTYsMTMgKzM3OTgsMTEzIEBAIElETF9CSU5ESU5H
U19HRE9NIDo9IFwKIAlXZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbCBcCiAJV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwgXAogCVdlYkNvcmUvY3NzL0NTU1ZhbHVlLmlkbCBc
CisJV2ViQ29yZS9jc3MvTWVkaWEuaWRsIFwKIAlXZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsIFwK
IAlXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmlkbCBcCisJV2ViQ29yZS9jc3MvU3R5bGVTaGVldExp
c3QuaWRsIFwKIAlXZWJDb3JlL2RvbS9BdHRyLmlkbCBcCisJV2ViQ29yZS9kb20vQ0RBVEFTZWN0
aW9uLmlkbCBcCisJV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwgXAorCVdlYkNvcmUvZG9t
L0NvbW1lbnQuaWRsIFwKKwlXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgXAorCVdlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuaWRsIFwKKwlXZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaWRsIFwK
KwlXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwgXAogCVdlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsIFwKKwlXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaWRsIFwKKwlXZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5pZGwgXAogCVdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwgXAogCVdl
YkNvcmUvZG9tL05vZGUuaWRsIFwKLQlXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwKKwlXZWJDb3Jl
L2RvbS9Ob2RlRmlsdGVyLmlkbCBcCisJV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmlkbCBcCisJ
V2ViQ29yZS9kb20vTm9kZUxpc3QuaWRsIFwKKwlXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaWRsIFwKKwlXZWJDb3JlL2RvbS9SYW5nZS5pZGwgXAorCVdlYkNvcmUvZG9tL1RleHQu
aWRsIFwKKwlXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbCBcCisJV2ViQ29yZS9odG1sL0Jsb2Iu
aWRsIFwKKwlXZWJDb3JlL2h0bWwvRmlsZS5pZGwgXAorCVdlYkNvcmUvaHRtbC9GaWxlTGlzdC5p
ZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
aWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1s
L0hUTUxCYXNlRm9udEVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEJsb2NrcXVvdGVF
bGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwgXAorCVdlYkNv
cmUvaHRtbC9IVE1MQlJFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVt
ZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbCBcCisJV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlF
bGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmlkbCBcCisJV2ViQ29y
ZS9odG1sL0hUTUxETGlzdEVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5p
ZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRs
IFwKKwlXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRt
bC9IVE1MSGVhZEVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50
LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwv
SFRNTEh0bWxFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmlk
bCBcCisJV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQu
aWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRt
bC9IVE1MTGVnZW5kRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50Lmlk
bCBcCisJV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9I
VE1MTWFwRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaWRs
IFwKKwlXZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hU
TUxNZXRhRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5pZGwgXAor
CVdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1M
T0xpc3RFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaWRs
IFwKKwlXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhF
bGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaWRsIFwKKwlXZWJD
b3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxl
bWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5pZGwgXAorCVdlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MU3R5bGVF
bGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsIFwKKwlXZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ29sRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxl
bWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwgXAorCVdl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxU
aXRsZUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGwg
XAorCVdlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL1Zh
bGlkaXR5U3RhdGUuaWRsIFwKKwlXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmlkbCBcCisJV2ViQ29yZS9wYWdlL0JhckluZm8uaWRsIFwKKwlXZWJDb3JlL3BhZ2Uv
Q29uc29sZS5pZGwgXAorCVdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIFwKKwlXZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmlkbCBcCisJV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsIFwKKwlXZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaWRsIFwKKwlXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbCBcCisJ
V2ViQ29yZS9wYWdlL1NjcmVlbi5pZGwgXAorCVdlYkNvcmUvcGFnZS9XZWJLaXRQb2ludC5pZGwg
XAorCVdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZS5pZGwgXAorCVdlYkNvcmUvcGx1Z2lucy9NaW1l
VHlwZUFycmF5LmlkbCBcCisJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbi5pZGwgXAorCVdlYkNvcmUv
cGx1Z2lucy9QbHVnaW5BcnJheS5pZGwgXAorCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwg
XAorCVdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbCBcCisJV2ViQ29yZS94bWwvWFBhdGhFeHBy
ZXNzaW9uLmlkbCBcCisJV2ViQ29yZS94bWwvWFBhdGhOU1Jlc29sdmVyLmlkbCBcCisJV2ViQ29y
ZS94bWwvWFBhdGhSZXN1bHQuaWRsCiAKICMgQWxsIGNsYXNzZXMgYXV0b2dlbmVyYXRlZCBpbiB0
aGUgR09iamVjdCBET00gYmluZGluZ3MKIEdET01fQVVUT19DTEFTU0VTIDo9ICQoYmFzZW5hbWUg
JChub3RkaXIgJChJRExfQklORElOR1NfR0RPTSkpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwCmluZGV4IDFmOTAwYzMuLjIwNzczZjcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5jcHAKQEAgLTI3LDggKzI3
LDEwIEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIldlYktpdERPTUVsZW1lbnRQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZS5oIgogI2luY2x1ZGUgIldlYktpdERPTU5vZGVQ
cml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNjksOCArNzEsMTcgQEAgc3RhdGljIGdwb2ludGVy
IGNyZWF0ZVdyYXBwZXIoTm9kZSogbm9kZSkKIAogICAgIGdwb2ludGVyIHdyYXBwZWROb2RlID0g
MDsKIAotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpKQorICAgIHN3aXRjaCAobm9kZS0+bm9kZVR5
cGUoKSkgeworICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgorICAgICAgICBpZiAobm9kZS0+
aXNIVE1MRWxlbWVudCgpKQorICAgICAgICAgICAgd3JhcHBlZE5vZGUgPSBjcmVhdGVIVE1MRWxl
bWVudFdyYXBwZXIoc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHdyYXBwZWROb2RlID0gd3JhcE5vZGUobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CiAgICAgICAgIHdyYXBwZWROb2RlID0gd3JhcE5vZGUobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIHJldHVybiBET01PYmplY3RDYWNoZTo6cHV0
KG5vZGUsIHdyYXBwZWROb2RlKTsKIH0KQEAgLTg3LDQgKzk4LDIzIEBAIGdwb2ludGVyIGtpdChO
b2RlKiBub2RlKQogICAgIHJldHVybiBjcmVhdGVXcmFwcGVyKG5vZGUpOwogfQogCitncG9pbnRl
ciBraXQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgZ3BvaW50ZXIga2l0RWxlbWVudCA9IERPTU9iamVjdENhY2hlOjpnZXQo
ZWxlbWVudCk7CisgICAgaWYgKGtpdEVsZW1lbnQpCisgICAgICAgIHJldHVybiBraXRFbGVtZW50
OworCisgICAgZ3BvaW50ZXIgd3JhcHBlZEVsZW1lbnQ7CisKKyAgICBpZiAoZWxlbWVudC0+aXNI
VE1MRWxlbWVudCgpKQorICAgICAgICB3cmFwcGVkRWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50
V3JhcHBlcihzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGVsZW1lbnQpKTsKKyAgICBlbHNlCisg
ICAgICAgIHdyYXBwZWRFbGVtZW50ID0gd3JhcEVsZW1lbnQoZWxlbWVudCk7CisKKyAgICByZXR1
cm4gRE9NT2JqZWN0Q2FjaGU6OnB1dChlbGVtZW50LCB3cmFwcGVkRWxlbWVudCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L1dlYktpdERPTUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01C
aW5kaW5nLmgKaW5kZXggZjZlZmE0Ni4uZDI3YmRkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvV2ViS2l0RE9NQmluZGluZy5oCkBAIC0yOCwxMCArMjgsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgTm9kZTsKK2NsYXNzIEVsZW1lbnQ7CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogZ3BvaW50ZXIga2l0KFdlYkNvcmU6Ok5vZGUq
IG5vZGUpOworZ3BvaW50ZXIga2l0KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpOwogCiBjbGFz
cyBET01PYmplY3RDYWNoZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFhZWM5MgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5
LmNwcApAQCAtMCwwICsxLDUyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBMdWtlIEtlbm5ldGggQ2Fzc29uIExlaWdodG9uIDxsa2NsQGxrY2wubmV0PgorICogQ29weXJp
Z2h0IChDKSAyMDA4IE1hcnRpbiBTb3RvIDxzb3RvQGZyZWVkZXNrdG9wLm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgZmlsZSBpcyBkZXJpdmVkIGJ5
IGhhbmQgZnJvbSBhbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlLgorICogS2VlcGluZyBp
dCB1cC10by1kYXRlIGNvdWxkIHBvdGVudGlhbGx5IGJlIGRvbmUgYnkgYWRkaW5nCisgKiBhIG1h
a2VfbmFtZXMucGwgZ2VuZXJhdG9yLCBvciBieSB3cml0aW5nIGEgc2VwYXJhdGUKKyAqIGdlbmVy
YXRlciB3aGljaCB0YWtlcyBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCBhcyBpbnB1dC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJLaXRIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5LmgiCisjaW5jbHVkZSAid2Via2l0L3dlYmtpdGRvbS5oIgorCisjaW5j
bHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxBbmNob3JFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MQXBwbGV0RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRl
ICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndl
YmtpdC9XZWJLaXRET01IVE1MQmFzZUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0
L1dlYktpdERPTUhUTUxCYXNlRm9udEVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0
L1dlYktpdERPTUhUTUxCbG9ja3F1b3RlRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJr
aXQvV2ViS2l0RE9NSFRNTEJvZHlFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01IVE1MQlJFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRE
T01IVE1MQnV0dG9uRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9N
SFRNTENhbnZhc0VsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhU
TUxEaXJlY3RvcnlFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01I
VE1MRGl2RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTERM
aXN0RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEVsZW1l
bnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxFbWJlZEVsZW1lbnRQ
cml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnRQ
cml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxGb250RWxlbWVudFByaXZh
dGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MRnJhbWVFbGVtZW50UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MRnJhbWVTZXRFbGVtZW50UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MSGVhZEVsZW1lbnRQcml2YXRlLmgiCisjaW5j
bHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxIZWFkaW5nRWxlbWVudFByaXZhdGUuaCIKKyNpbmNs
dWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEhSRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3
ZWJraXQvV2ViS2l0RE9NSFRNTEh0bWxFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtp
dC9XZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NSFRNTElucHV0RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NSFRNTElzSW5kZXhFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRE
T01IVE1MTGFiZWxFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01I
VE1MTGVnZW5kRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRN
TExJRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTExpbmtF
bGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MTWFwRWxlbWVu
dFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MTWVudUVsZW1lbnRQcml2
YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxNZXRhRWxlbWVudFByaXZhdGUu
aCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTE1vZEVsZW1lbnRQcml2YXRlLmgiCisj
aW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxPYmplY3RFbGVtZW50UHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MT0xpc3RFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MT3B0R3JvdXBFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MT3B0aW9uRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRl
ICJ3ZWJraXQvV2ViS2l0RE9NSFRNTFBhcmFncmFwaEVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVk
ZSAid2Via2l0L1dlYktpdERPTUhUTUxQYXJhbUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAi
d2Via2l0L1dlYktpdERPTUhUTUxQcmVFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtp
dC9XZWJLaXRET01IVE1MUXVvdGVFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NSFRNTFNlbGVjdEVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktp
dERPTUhUTUxTdHlsZUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TUhUTUxUYWJsZUNhcHRpb25FbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJL
aXRET01IVE1MVGFibGVDZWxsRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NSFRNTFRhYmxlQ29sRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NSFRNTFRhYmxlRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NSFRNTFRhYmxlUm93RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dl
YktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dl
YktpdERPTUhUTUxUaXRsZUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktp
dERPTUhUTUxVTGlzdEVsZW1lbnRQcml2YXRlLmgiCisKKyNpbmNsdWRlICJIVE1MQW5jaG9yRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEFy
ZWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEJhc2VFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TEJhc2VGb250RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxCbG9ja3F1b3RlRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIK
KyNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTERpcmVjdG9yeUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
RGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxETGlzdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MRW1iZWRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxGb250RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEhlYWRp
bmdFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEhSRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxI
dG1sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNs
dWRlICJIVE1MSXNJbmRleEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTGFiZWxFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTElFbGVtZW50
LmgiCisjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE1hcEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MTWFycXVlZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVu
dUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWV0YUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
TW9kRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9i
amVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MT0xpc3RFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE9wdEdyb3VwRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTFBhcmFncmFwaEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUGFyYW1FbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTFByZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUXVvdGVF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
U2VsZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlQ29sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxU
YWJsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTFRpdGxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxVTGlz
dEVsZW1lbnQuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU6OkhUTUxOYW1lczsKKwordHlwZWRlZiBncG9pbnRlciAoKkNyZWF0ZUhUTUxFbGVtZW50
V3JhcHBlckZ1bmN0aW9uKShQYXNzUmVmUHRyPEhUTUxFbGVtZW50Pik7CisKK3N0YXRpYyBncG9p
bnRlciBjcmVhdGVBbmNob3JXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIHdyYXBIVE1MQW5jaG9yRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQW5j
aG9yRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0
ZUFwcGxldFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gd3JhcEhUTUxBcHBsZXRFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxBcHBsZXRFbGVtZW50
Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlQXJlYVdyYXBw
ZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhU
TUxBcmVhRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQXJlYUVsZW1lbnQqPihlbGVtZW50LmdldCgp
KSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVCYXNlV3JhcHBlcihQYXNzUmVmUHRyPEhU
TUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTEJhc2VFbGVtZW50KHN0
YXRpY19jYXN0PEhUTUxCYXNlRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGlj
IGdwb2ludGVyIGNyZWF0ZUJhc2VGb250V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBl
bGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTEJhc2VGb250RWxlbWVudChzdGF0aWNfY2Fz
dDxIVE1MQmFzZUZvbnRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3Bv
aW50ZXIgY3JlYXRlQmxvY2txdW90ZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxl
bWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxCbG9ja3F1b3RlRWxlbWVudChzdGF0aWNfY2Fz
dDxIVE1MQmxvY2txdW90ZUVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBn
cG9pbnRlciBjcmVhdGVCb2R5V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50
KQoreworICAgIHJldHVybiB3cmFwSFRNTEJvZHlFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxCb2R5
RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUJS
V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3
cmFwSFRNTEJSRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQlJFbGVtZW50Kj4oZWxlbWVudC5nZXQo
KSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlQnV0dG9uV3JhcHBlcihQYXNzUmVmUHRy
PEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTEJ1dHRvbkVsZW1l
bnQoc3RhdGljX2Nhc3Q8SFRNTEJ1dHRvbkVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisK
K3N0YXRpYyBncG9pbnRlciBjcmVhdGVDYW52YXNXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MQ2FudmFzRWxlbWVudChzdGF0aWNf
Y2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdw
b2ludGVyIGNyZWF0ZVRhYmxlQ2FwdGlvbldyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4g
ZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KHN0YXRp
Y19jYXN0PEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitz
dGF0aWMgZ3BvaW50ZXIgY3JlYXRlVGFibGVDb2xXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MVGFibGVDb2xFbGVtZW50KHN0YXRp
Y19jYXN0PEhUTUxUYWJsZUNvbEVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRp
YyBncG9pbnRlciBjcmVhdGVNb2RXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MTW9kRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MTW9k
RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZURp
cmVjdG9yeVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gd3JhcEhUTUxEaXJlY3RvcnlFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxEaXJlY3RvcnlF
bGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGl2
V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3
cmFwSFRNTERpdkVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTERpdkVsZW1lbnQqPihlbGVtZW50Lmdl
dCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVETGlzdFdyYXBwZXIoUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxETGlzdEVsZW1l
bnQoc3RhdGljX2Nhc3Q8SFRNTERMaXN0RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKwor
c3RhdGljIGdwb2ludGVyIGNyZWF0ZUVtYmVkV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTEVtYmVkRWxlbWVudChzdGF0aWNfY2Fz
dDxIVE1MRW1iZWRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50
ZXIgY3JlYXRlRmllbGRTZXRXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIHdyYXBIVE1MRmllbGRTZXRFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxG
aWVsZFNldEVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBj
cmVhdGVGb250V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAg
IHJldHVybiB3cmFwSFRNTEZvbnRFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxGb250RWxlbWVudCo+
KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUZvcm1XcmFwcGVy
KFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1M
Rm9ybUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkp
OworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRnJhbWVXcmFwcGVyKFBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MRnJhbWVFbGVtZW50KHN0
YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRp
YyBncG9pbnRlciBjcmVhdGVGcmFtZVNldFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4g
ZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxGcmFtZVNldEVsZW1lbnQoc3RhdGljX2Nh
c3Q8SFRNTEZyYW1lU2V0RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdw
b2ludGVyIGNyZWF0ZUhlYWRpbmdXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MSGVhZGluZ0VsZW1lbnQoc3RhdGljX2Nhc3Q8SFRN
TEhlYWRpbmdFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIg
Y3JlYXRlSGVhZFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAg
ICByZXR1cm4gd3JhcEhUTUxIZWFkRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MSGVhZEVsZW1lbnQq
PihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVIUldyYXBwZXIo
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxI
UkVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEhSRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30K
Kworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUh0bWxXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MSHRtbEVsZW1lbnQoc3RhdGljX2Nh
c3Q8SFRNTEh0bWxFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50
ZXIgY3JlYXRlSUZyYW1lV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQor
eworICAgIHJldHVybiB3cmFwSFRNTElGcmFtZUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTElGcmFt
ZUVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVJ
bWFnZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1
cm4gd3JhcEhUTUxJbWFnZUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KGVs
ZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUlucHV0V3JhcHBlcihQ
YXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTElu
cHV0RWxlbWVudChzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkp
OworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlSXNJbmRleFdyYXBwZXIoUGFzc1JlZlB0cjxI
VE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxJc0luZGV4RWxlbWVu
dChzdGF0aWNfY2FzdDxIVE1MSXNJbmRleEVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisK
K3N0YXRpYyBncG9pbnRlciBjcmVhdGVMYWJlbFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxMYWJlbEVsZW1lbnQoc3RhdGljX2Nh
c3Q8SFRNTExhYmVsRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2lu
dGVyIGNyZWF0ZUxlZ2VuZFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkK
K3sKKyAgICByZXR1cm4gd3JhcEhUTUxMZWdlbmRFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxMZWdl
bmRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRl
TElXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJu
IHdyYXBIVE1MTElFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxMSUVsZW1lbnQqPihlbGVtZW50Lmdl
dCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVMaW5rV3JhcHBlcihQYXNzUmVmUHRy
PEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTExpbmtFbGVtZW50
KHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3Rh
dGljIGdwb2ludGVyIGNyZWF0ZU1hcFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxl
bWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxNYXBFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxN
YXBFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRl
TWFycXVlZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gd3JhcEhUTUxNYXJxdWVlRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MTWFycXVlZUVsZW1l
bnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVNZW51V3Jh
cHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFw
SFRNTE1lbnVFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxNZW51RWxlbWVudCo+KGVsZW1lbnQuZ2V0
KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZU1ldGFXcmFwcGVyKFBhc3NSZWZQdHI8
SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MTWV0YUVsZW1lbnQo
c3RhdGljX2Nhc3Q8SFRNTE1ldGFFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0
aWMgZ3BvaW50ZXIgY3JlYXRlT2JqZWN0V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBl
bGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTE9iamVjdEVsZW1lbnQoc3RhdGljX2Nhc3Q8
SFRNTE9iamVjdEVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRl
ciBjcmVhdGVPTGlzdFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sK
KyAgICByZXR1cm4gd3JhcEhUTUxPTGlzdEVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTE9MaXN0RWxl
bWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZU9wdEdy
b3VwV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVy
biB3cmFwSFRNTE9wdEdyb3VwRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50
Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlT3B0aW9uV3Jh
cHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFw
SFRNTE9wdGlvbkVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihlbGVtZW50
LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVQYXJhZ3JhcGhXcmFwcGVyKFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MUGFy
YWdyYXBoRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MUGFyYWdyYXBoRWxlbWVudCo+KGVsZW1lbnQu
Z2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZVBhcmFtV3JhcHBlcihQYXNzUmVm
UHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTFBhcmFtRWxl
bWVudChzdGF0aWNfY2FzdDxIVE1MUGFyYW1FbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQor
CitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlUHJlV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTFByZUVsZW1lbnQoc3RhdGljX2Nhc3Q8
SFRNTFByZUVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBj
cmVhdGVRdW90ZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAg
ICByZXR1cm4gd3JhcEhUTUxRdW90ZUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTFF1b3RlRWxlbWVu
dCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZVNjcmlwdFdy
YXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3Jh
cEhUTUxTY3JpcHRFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxTY3JpcHRFbGVtZW50Kj4oZWxlbWVu
dC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlU2VsZWN0V3JhcHBlcihQYXNz
UmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTFNlbGVj
dEVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7
Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVTdHlsZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1M
RWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxTdHlsZUVsZW1lbnQoc3Rh
dGljX2Nhc3Q8SFRNTFN0eWxlRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGlj
IGdwb2ludGVyIGNyZWF0ZVRhYmxlV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVt
ZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTFRhYmxlRWxlbWVudChzdGF0aWNfY2FzdDxIVE1M
VGFibGVFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3Jl
YXRlVGFibGVTZWN0aW9uV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQor
eworICAgIHJldHVybiB3cmFwSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9p
bnRlciBjcmVhdGVUYWJsZUNlbGxXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MVGFibGVDZWxsRWxlbWVudChzdGF0aWNfY2FzdDxI
VE1MVGFibGVDZWxsRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2lu
dGVyIGNyZWF0ZVRleHRBcmVhV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50
KQoreworICAgIHJldHVybiB3cmFwSFRNTFRleHRBcmVhRWxlbWVudChzdGF0aWNfY2FzdDxIVE1M
VGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIg
Y3JlYXRlVGl0bGVXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7Cisg
ICAgcmV0dXJuIHdyYXBIVE1MVGl0bGVFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1l
bnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVUYWJsZVJv
d1dyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4g
d3JhcEhUTUxUYWJsZVJvd0VsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTFRhYmxlUm93RWxlbWVudCo+
KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZVVMaXN0V3JhcHBl
cihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRN
TFVMaXN0RWxlbWVudChzdGF0aWNfY2FzdDxIVE1MVUxpc3RFbGVtZW50Kj4oZWxlbWVudC5nZXQo
KSkpOworfQorCitncG9pbnRlciBjcmVhdGVIVE1MRWxlbWVudFdyYXBwZXIoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBzdGF0aWMgSGFzaE1hcDxXZWJD
b3JlOjpBdG9taWNTdHJpbmdJbXBsKiwgQ3JlYXRlSFRNTEVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+
IG1hcDsKKyAgICBpZiAobWFwLmlzRW1wdHkoKSkgeworICAgICAgIG1hcC5zZXQoYVRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksIGNyZWF0ZUFuY2hvcldyYXBwZXIpOworICAgICAgIG1hcC5zZXQoYXBw
bGV0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlQXBwbGV0V3JhcHBlcik7CisgICAgICAg
bWFwLnNldChhcmVhVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlQXJlYVdyYXBwZXIpOwor
ICAgICAgIG1hcC5zZXQoYmFzZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUJhc2VXcmFw
cGVyKTsKKyAgICAgICBtYXAuc2V0KGJhc2Vmb250VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3Jl
YXRlQmFzZUZvbnRXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGJsb2NrcXVvdGVUYWcubG9jYWxO
YW1lKCkuaW1wbCgpLCBjcmVhdGVCbG9ja3F1b3RlV3JhcHBlcik7CisgICAgICAgbWFwLnNldChi
b2R5VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlQm9keVdyYXBwZXIpOworICAgICAgIG1h
cC5zZXQoYnJUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVCUldyYXBwZXIpOworICAgICAg
IG1hcC5zZXQoYnV0dG9uVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlQnV0dG9uV3JhcHBl
cik7CisgICAgICAgbWFwLnNldChjYW52YXNUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVD
YW52YXNXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGNhcHRpb25UYWcubG9jYWxOYW1lKCkuaW1w
bCgpLCBjcmVhdGVUYWJsZUNhcHRpb25XcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGNvbFRhZy5s
b2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVRhYmxlQ29sV3JhcHBlcik7CisgICAgICAgbWFwLnNl
dChkZWxUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVNb2RXcmFwcGVyKTsKKyAgICAgICBt
YXAuc2V0KGRpclRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZURpcmVjdG9yeVdyYXBwZXIp
OworICAgICAgIG1hcC5zZXQoZGl2VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlRGl2V3Jh
cHBlcik7CisgICAgICAgbWFwLnNldChkbFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZURM
aXN0V3JhcHBlcik7CisgICAgICAgbWFwLnNldChlbWJlZFRhZy5sb2NhbE5hbWUoKS5pbXBsKCks
IGNyZWF0ZUVtYmVkV3JhcHBlcik7CisgICAgICAgbWFwLnNldChmaWVsZHNldFRhZy5sb2NhbE5h
bWUoKS5pbXBsKCksIGNyZWF0ZUZpZWxkU2V0V3JhcHBlcik7CisgICAgICAgbWFwLnNldChmb250
VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlRm9udFdyYXBwZXIpOworICAgICAgIG1hcC5z
ZXQoZm9ybVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUZvcm1XcmFwcGVyKTsKKyAgICAg
ICBtYXAuc2V0KGZyYW1lVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlRnJhbWVXcmFwcGVy
KTsKKyAgICAgICBtYXAuc2V0KGZyYW1lc2V0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRl
RnJhbWVTZXRXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGgxVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSwgY3JlYXRlSGVhZGluZ1dyYXBwZXIpOworICAgICAgIG1hcC5zZXQoaGVhZFRhZy5sb2NhbE5h
bWUoKS5pbXBsKCksIGNyZWF0ZUhlYWRXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGhyVGFnLmxv
Y2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlSFJXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGh0bWxU
YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVIdG1sV3JhcHBlcik7CisgICAgICAgbWFwLnNl
dChpZnJhbWVUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVJRnJhbWVXcmFwcGVyKTsKKyAg
ICAgICBtYXAuc2V0KGltZ1RhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUltYWdlV3JhcHBl
cik7CisgICAgICAgbWFwLnNldChpbnB1dFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUlu
cHV0V3JhcHBlcik7CisgICAgICAgbWFwLnNldChpc2luZGV4VGFnLmxvY2FsTmFtZSgpLmltcGwo
KSwgY3JlYXRlSXNJbmRleFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQobGFiZWxUYWcubG9jYWxO
YW1lKCkuaW1wbCgpLCBjcmVhdGVMYWJlbFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQobGVnZW5k
VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlTGVnZW5kV3JhcHBlcik7CisgICAgICAgbWFw
LnNldChsaVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUxJV3JhcHBlcik7CisgICAgICAg
bWFwLnNldChsaW5rVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlTGlua1dyYXBwZXIpOwor
ICAgICAgIG1hcC5zZXQobWFwVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlTWFwV3JhcHBl
cik7CisgICAgICAgbWFwLnNldChtYXJxdWVlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRl
TWFycXVlZVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQobWVudVRhZy5sb2NhbE5hbWUoKS5pbXBs
KCksIGNyZWF0ZU1lbnVXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KG1ldGFUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCBjcmVhdGVNZXRhV3JhcHBlcik7CisgICAgICAgbWFwLnNldChvYmplY3RUYWcu
bG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVPYmplY3RXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0
KG9sVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlT0xpc3RXcmFwcGVyKTsKKyAgICAgICBt
YXAuc2V0KG9wdGdyb3VwVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlT3B0R3JvdXBXcmFw
cGVyKTsKKyAgICAgICBtYXAuc2V0KG9wdGlvblRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0
ZU9wdGlvbldyYXBwZXIpOworICAgICAgIG1hcC5zZXQocFRhZy5sb2NhbE5hbWUoKS5pbXBsKCks
IGNyZWF0ZVBhcmFncmFwaFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQocGFyYW1UYWcubG9jYWxO
YW1lKCkuaW1wbCgpLCBjcmVhdGVQYXJhbVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQocHJlVGFn
LmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlUHJlV3JhcHBlcik7CisgICAgICAgbWFwLnNldChx
VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlUXVvdGVXcmFwcGVyKTsKKyAgICAgICBtYXAu
c2V0KHNjcmlwdFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVNjcmlwdFdyYXBwZXIpOwor
ICAgICAgIG1hcC5zZXQoc2VsZWN0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlU2VsZWN0
V3JhcHBlcik7CisgICAgICAgbWFwLnNldChzdHlsZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNy
ZWF0ZVN0eWxlV3JhcHBlcik7CisgICAgICAgbWFwLnNldCh0YWJsZVRhZy5sb2NhbE5hbWUoKS5p
bXBsKCksIGNyZWF0ZVRhYmxlV3JhcHBlcik7CisgICAgICAgbWFwLnNldCh0Ym9keVRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksIGNyZWF0ZVRhYmxlU2VjdGlvbldyYXBwZXIpOworICAgICAgIG1hcC5z
ZXQodGRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVUYWJsZUNlbGxXcmFwcGVyKTsKKyAg
ICAgICBtYXAuc2V0KHRleHRhcmVhVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlVGV4dEFy
ZWFXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KHRpdGxlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwg
Y3JlYXRlVGl0bGVXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KHRyVGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSwgY3JlYXRlVGFibGVSb3dXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KHVsVGFnLmxvY2Fs
TmFtZSgpLmltcGwoKSwgY3JlYXRlVUxpc3RXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGNvbGdy
b3VwVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlVGFibGVDb2xXcmFwcGVyKTsKKyAgICAg
ICBtYXAuc2V0KGgyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlSGVhZGluZ1dyYXBwZXIp
OworICAgICAgIG1hcC5zZXQoaDNUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVIZWFkaW5n
V3JhcHBlcik7CisgICAgICAgbWFwLnNldChoNFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0
ZUhlYWRpbmdXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGg1VGFnLmxvY2FsTmFtZSgpLmltcGwo
KSwgY3JlYXRlSGVhZGluZ1dyYXBwZXIpOworICAgICAgIG1hcC5zZXQoaDZUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCBjcmVhdGVIZWFkaW5nV3JhcHBlcik7CisgICAgICAgbWFwLnNldChpbWFnZVRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUltYWdlV3JhcHBlcik7CisgICAgICAgbWFwLnNl
dChpbnNUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVNb2RXcmFwcGVyKTsKKyAgICAgICBt
YXAuc2V0KGtleWdlblRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVNlbGVjdFdyYXBwZXIp
OworICAgICAgIG1hcC5zZXQobGlzdGluZ1RhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVBy
ZVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQodGZvb3RUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBj
cmVhdGVUYWJsZVNlY3Rpb25XcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KHRoVGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSwgY3JlYXRlVGFibGVDZWxsV3JhcHBlcik7CisgICAgICAgbWFwLnNldCh0aGVh
ZFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVRhYmxlU2VjdGlvbldyYXBwZXIpOworICAg
ICAgIG1hcC5zZXQoeG1wVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlUHJlV3JhcHBlcik7
CisgICAgfQorCisgICAgQ3JlYXRlSFRNTEVsZW1lbnRXcmFwcGVyRnVuY3Rpb24gY3JlYXRlV3Jh
cHBlckZ1bmN0aW9uID0KKyAgICAgICAgbWFwLmdldChlbGVtZW50LT5sb2NhbE5hbWUoKS5pbXBs
KCkpOworICAgIGlmIChjcmVhdGVXcmFwcGVyRnVuY3Rpb24pCisgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyRnVuY3Rpb24oZWxlbWVudCk7CisgICAgcmV0dXJuIHdyYXBIVE1MRWxlbWVudChl
bGVtZW50LmdldCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNzJiYmE0ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgKQEAgLTAs
MCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKi8KKworI2lmbmRlZiBXZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5X2gKKyNkZWZp
bmUgV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oCisKKyNpbmNsdWRlICJnbGliLW9i
amVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEhUTUxFbGVtZW50OworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKyAgICBncG9pbnRlciBjcmVhdGVIVE1MRWxlbWVudFdyYXBwZXIo
UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRWxlbWVudD4pOworfQorCisjZW5kaWYgLy8gV2ViS2l0
SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KaW5kZXggMmEzOGVmZi4uMTA2N2FiYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisr
KyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAt
MTAyLDYgKzEwMiwxMCBAQCBzdWIgQ2xhc3NOYW1lVG9HT2JqZWN0VHlwZSB7CiAgICAgIyBXZWJL
aXRET01DU1MgcmlnaHQsIHNvIHdlIGhhdmUgdG8gZml4IGl0IG1hbnVhbGx5IChhbmQgdGhlcmUK
ICAgICAjIG1pZ2h0IGJlIG1vcmUgbGlrZSB0aGlzIGluIHRoZSBmdXR1cmUpCiAgICAgJENMQVNT
X05BTUUgPX4gcy9ET01DU1MvRE9NX0NTUy87CisgICAgJENMQVNTX05BTUUgPX4gcy9ET01IVE1M
L0RPTV9IVE1MLzsKKyAgICAkQ0xBU1NfTkFNRSA9fiBzL0RPTURPTS9ET01fRE9NLzsKKyAgICAk
Q0xBU1NfTkFNRSA9fiBzL0RPTUNEQVRBL0RPTV9DREFUQS87CisgICAgJENMQVNTX05BTUUgPX4g
cy9ET01YX1BBVEgvRE9NX1hfUEFUSC87CiAgICAgcmV0dXJuICRDTEFTU19OQU1FOwogfQogCkBA
IC0xMjgsNyArMTMyLDggQEAgc3ViIFNraXBBdHRyaWJ1dGUgewogICAgIG15ICRhdHRyaWJ1dGUg
PSBzaGlmdDsKICAgICAKICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwKLSAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0pIHsKKyAgICAgICAgJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0g
fHwKKyAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
UmVwbGFjZWFibGUifSkgewogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgCkBAIC0xNDEs
NiArMTQ2LDQ5IEBAIHN1YiBTa2lwQXR0cmlidXRlIHsKICAgICAgICAgcmV0dXJuIDE7CiAgICAg
fQogCisgICAgIyBUaGlzIGlzIGZvciBET01XaW5kb3cuaWRsIGxvY2F0aW9uIGF0dHJpYnV0ZQor
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgZXEgImxvY2F0aW9uIikgeworICAg
ICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAjIFRoaXMgaXMgZm9yIEhUTUxJbnB1dC5pZGwg
dmFsdWVBc0RhdGUKKyAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIGVxICJ2YWx1
ZUFzRGF0ZSIpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgIyBUaGlzIGlzIGZv
ciBET01XaW5kb3cuaWRsIENyeXB0byBhdHRyaWJ1dGUKKyAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlIGVxICJDcnlwdG8iKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKwor
CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBTa2lwRnVuY3Rpb24geworICAgIG15ICRmdW5jdGlv
biA9IHNoaWZ0OworCisgICAgIyBTa2lwIGFsbCBjdXN0b20gbWV0aG9kczsgaXMgdGhpcyBvaz8K
KyAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b20ifSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPnR5cGUgZXEgIkV2ZW50IikgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisK
KyAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgImdldFNWR0RvY3VtZW50Iikg
eworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPnR5cGUgZXEgIkV2ZW50IikgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBp
ZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgImdldENTU0NhbnZhc0NvbnRleHQiKSB7
CisgICAgICAgIHJldHVybiAxOworICAgIH0KKwogICAgIHJldHVybiAwOwogfQogCkBAIC0xNzIs
NiArMjIwLDcgQEAgc3ViIEdldEdsaWJUeXBlTmFtZSB7CiAgICAgbXkgJG5hbWUgPSBHZXRDbGFz
c05hbWUoJHR5cGUpOwogCiAgICAgbXkgJXR5cGVzID0gKCJET01TdHJpbmciLCAiZ2NoYXIqICIs
CisgICAgICAgICAgICAgICAgICJDb21wYXJlSG93IiwgImd1c2hvcnQiLAogICAgICAgICAgICAg
ICAgICAiZmxvYXQiLCAiZ2Zsb2F0IiwKICAgICAgICAgICAgICAgICAgImRvdWJsZSIsICJnZG91
YmxlIiwKICAgICAgICAgICAgICAgICAgImJvb2xlYW4iLCAiZ2Jvb2xlYW4iLApAQCAtMTk0LDYg
KzI0Myw3IEBAIHN1YiBJc0dET01DbGFzc1R5cGUgewogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAK
ICAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nIjsKKyAgICByZXR1cm4gMCBpZiAk
dHlwZSBlcSAiQ29tcGFyZUhvdyI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImZsb2F0IjsK
ICAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiZG91YmxlIjsKICAgICByZXR1cm4gMCBpZiAkdHlw
ZSBlcSAiYm9vbGVhbiI7CkBAIC0yOTcsNiArMzQ3LDI3IEBAIEVPRgogICAgICAgICAkbG9uZyA9
ICIke2NvbnN0fSAke3R5cGV9ICR7aW50ZXJmYWNlTmFtZX0uJHtwcm9wTmFtZX0iOwogCiAgICAg
ICAgIG15ICRjb252ZXJ0RnVuY3Rpb24gPSAiIjsKKyAgICAgICAgaWYgKCRndHlwZSBlcSAic3Ry
aW5nIikgeworICAgICAgICAgICAgJGNvbnZlcnRGdW5jdGlvbiA9ICJXZWJDb3JlOjpTdHJpbmc6
OmZyb21VVEY4IjsKKyAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydEZyb21TdHJpbmcifSkgeworICAgICAgICAgICAgJGNv
bnZlcnRGdW5jdGlvbiA9ICJXZWJDb3JlOjpTdHJpbmc6Om51bWJlciI7CisgICAgICAgIH0KKwor
ICAgICAgICBteSAkc2V0dGVyQ29udGVudEhlYWQ7CisgICAgICAgIG15ICRnZXR0ZXJDb250ZW50
SGVhZDsKKyAgICAgICAgbXkgJHJlZmxlY3QgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CisgICAgICAgIG15ICRyZWZsZWN0VVJMID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdFVSTCJ9Owor
ICAgICAgICBpZiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIHsKKyAgICAgICAgICAgIG15ICRj
b250ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIGVxICIxIikg
PyAkY2FtZWxQcm9wTmFtZSA6ICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCk7CisgICAgICAgICAg
ICBteSAkbmFtZXNwYWNlID0gJGNvZGVHZW5lcmF0b3ItPk5hbWVzcGFjZUZvckF0dHJpYnV0ZU5h
bWUoJGludGVyZmFjZU5hbWUsICRjb250ZW50QXR0cmlidXRlTmFtZSk7CisgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyIke25hbWVzcGFjZX0uaCJ9ID0gMTsKKyAgICAgICAgICAgIG15ICRnZXRB
dHRyaWJ1dGVGdW5jdGlvbk5hbWUgPSAkcmVmbGVjdFVSTCA/ICJnZXRVUkxBdHRyaWJ1dGUiIDog
ImdldEF0dHJpYnV0ZSI7CisgICAgICAgICAgICAkc2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNl
bGYtPnNldEF0dHJpYnV0ZShXZWJDb3JlOjoke25hbWVzcGFjZX06OiR7Y29udGVudEF0dHJpYnV0
ZU5hbWV9QXR0ciwgJHtjb252ZXJ0RnVuY3Rpb259KGdfdmFsdWVfZ2V0XyRndHlwZSh2YWx1ZSkp
IjsKKyAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJjb3JlU2VsZi0+JHtnZXRBdHRy
aWJ1dGVGdW5jdGlvbk5hbWV9KFdlYkNvcmU6OiR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmli
dXRlTmFtZX1BdHRyIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRzZXR0ZXJDb250
ZW50SGVhZCA9ICJjb3JlU2VsZi0+c2V0JHtzZXRQcm9wTmFtZUZ1bmN0aW9ufSgke2NvbnZlcnRG
dW5jdGlvbn0oZ192YWx1ZV9nZXRfJGd0eXBlKHZhbHVlKSkiOworICAgICAgICAgICAgJGdldHRl
ckNvbnRlbnRIZWFkID0gImNvcmVTZWxmLT4ke2dldFByb3BOYW1lRnVuY3Rpb259KCI7CisgICAg
ICAgIH0KIAogICAgICAgICBpZiAoJHdyaXRlYWJsZSAmJiAoJGd0eXBlIGVxICJib29sZWFuIiB8
fCAkZ3R5cGUgZXEgImZsb2F0IiB8fCAkZ3R5cGUgZXEgImRvdWJsZSIgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRndHlwZSBlcSAidWludDY0IiB8fCAkZ3R5cGUgZXEgInVsb25nIiB8
fCAkZ3R5cGUgZXEgImxvbmciIHx8IApAQCAtMzA1LDE3ICszNzYsOSBAQCBFT0YKIAogICAgICAg
ICAgICAgcHVzaChAdHh0U2V0UHJvcHMsICIgICBjYXNlICR7cHJvcEVudW19OlxuICAgIHtcbiIp
OwogICAgICAgICAgICAgcHVzaChAdHh0U2V0UHJvcHMsICIgICAgICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsK
LQotICAgICAgICAgICAgaWYgKCRndHlwZSBlcSAic3RyaW5nIikgewotICAgICAgICAgICAgICAg
ICRjb252ZXJ0RnVuY3Rpb24gPSAiV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCI7Ci0gICAgICAg
ICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb252ZXJ0RnJvbVN0cmluZyJ9KSB7Ci0gICAgICAgICAgICAgICAgJGNvbnZlcnRGdW5jdGlv
biA9ICJXZWJDb3JlOjpTdHJpbmc6Om51bWJlciI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHB1c2goQHR4dFNldFByb3BzLCAiICAgICAgICBjb3JlU2VsZi0+c2V0JHtzZXRQcm9wTmFt
ZUZ1bmN0aW9ufSgke2NvbnZlcnRGdW5jdGlvbn0oZ192YWx1ZV9nZXRfJGd0eXBlKHZhbHVlKSki
KTsKKyAgICAgICAgICAgIHB1c2goQHR4dFNldFByb3BzLCAiICAgICAgICAke3NldHRlckNvbnRl
bnRIZWFkfSIpOwogICAgICAgICAgICAgcHVzaChAdHh0U2V0UHJvcHMsICIsIGVjIikgaWYgQHsk
YXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKICAgICAgICAgICAgIHB1c2goQHR4dFNldFBy
b3BzLCAiKTtcbiIpOwotCiAgICAgICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiAgICAgICAg
YnJlYWs7XG4gICAgfVxuIik7CiAgICAgICAgIH0KIApAQCAtMzMwLDE2ICszOTMsMTQgQEAgRU9G
CiAgICAgICAgIG15ICRwb3N0Q29udmVydEZ1bmN0aW9uID0gIiI7CiAgICAgICAgIG15ICRkb25l
ID0gMDsKICAgICAgICAgaWYgKCRndHlwZSBlcSAic3RyaW5nIikgewotICAgICAgICAgICAgcHVz
aChAdHh0R2V0UHJvcHMsICIgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZl
cnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPiR7Z2V0UHJvcE5hbWVGdW5jdGlvbn0oJHtleGNlcHRp
b259KSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiAgICAgICAgZ192
YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZygke2dldHRlckNvbnRl
bnRIZWFkfSR7ZXhjZXB0aW9ufSkpKTtcbiIpOwogICAgICAgICAgICAgJGRvbmUgPSAxOwogICAg
ICAgICB9IGVsc2lmICgkZ3R5cGUgZXEgIm9iamVjdCIpIHsKLQogICAgICAgICAgICAgJHR4dEdl
dFByb3AgPSA8PCAiRU9GIjsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OiR7cHJvcFR5cGV9PiBw
dHIgPSBjb3JlU2VsZi0+JHtnZXRQcm9wTmFtZUZ1bmN0aW9ufSgke2V4Y2VwdGlvbn0pOwogICAg
ICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOwog
RU9GCiAgICAgICAgICAgICBwdXNoKEB0eHRHZXRQcm9wcywgJHR4dEdldFByb3ApOwotCiAgICAg
ICAgICAgICAkZG9uZSA9IDE7CiAgICAgICAgIH0KIApAQCAtNTMzLDYgKzU5NCw3IEBAIHN1YiBn
ZXRJbmNsdWRlSGVhZGVyIHsKICAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgImZsb2F0IjsKICAg
ICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwogICAgIHJldHVybiAiIiBpZiAkdHlw
ZSBlcSAidm9pZCI7CisgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJDb21wYXJlSG93IjsKIAog
ICAgIHJldHVybiAiJG5hbWUuaCI7CiB9CkBAIC01NDAsNiArNjAyLDEwIEBAIHN1YiBnZXRJbmNs
dWRlSGVhZGVyIHsKIHN1YiBhZGRJbmNsdWRlSW5Cb2R5IHsKICAgICBteSAkdHlwZSA9IHNoaWZ0
OwogCisgICAgaWYgKCR0eXBlIGVxICJET01PYmplY3QiKSB7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBteSAkaGVhZGVyID0gZ2V0SW5jbHVkZUhlYWRlcigkdHlwZSk7CiAgICAgaWYg
KCRoZWFkZXIgZXEgIiIpIHsKICAgICAgICAgcmV0dXJuOwpAQCAtNTU1LDYgKzYyMSwxMCBAQCBz
dWIgYWRkSW5jbHVkZUluQm9keSB7CiBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgbXkgKCRv
YmplY3QsICRpbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb24sICRwcmVmaXgpID0gQF87CiAKKyAgICBp
ZiAoU2tpcEZ1bmN0aW9uKCRmdW5jdGlvbikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIG15ICRmdW5jdGlvblNpZ05hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAg
ICBteSAkZnVuY3Rpb25TaWdUeXBlID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGU7CiAgICAg
bXkgJGZ1bmN0aW9uTmFtZSA9ICJ3ZWJraXRfZG9tXyIgLiBkZWNhbWVsaXplKCRpbnRlcmZhY2VO
YW1lKSAuICJfIiAuICRwcmVmaXggLiBkZWNhbWVsaXplKCRmdW5jdGlvblNpZ05hbWUpOwpAQCAt
NTcxLDcgKzY0MSw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKIAogICAgIGZvcmVhY2ggbXkg
JHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJHBhcmFtSURM
VHlwZSA9ICRwYXJhbS0+dHlwZTsKLSAgICAgICAgaWYgKCRwYXJhbUlETFR5cGUgZXEgIkV2ZW50
IikgeworICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBlcSAiRXZlbnQiIHx8ICRwYXJhbUlETFR5
cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICBwdXNoKEBoQm9keSwgIlxuLyog
VE9ETzogZXZlbnQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9ICovXG5cbiIpOwogICAgICAgICAg
ICAgcHVzaChAY0JvZHksICJcbi8qIFRPRE86IGV2ZW50IGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1l
fSAqL1xuXG4iKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU4OCw3ICs2NTgsNyBAQCBzdWIg
R2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sid2Via2l0
L1dlYktpdERPTSR7cGFyYW1JRExUeXBlfVByaXZhdGUuaCJ9ID0gMTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICBpZiAoJHBhcmFtSXNHRE9NVHlwZSB8fCAoJHBhcmFtSURMVHlw
ZSBlcSAiRE9NU3RyaW5nIikpIHsKKyAgICAgICAgaWYgKCRwYXJhbUlzR0RPTVR5cGUgfHwgKCRw
YXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIpIHx8ICgkcGFyYW1JRExUeXBlIGVxICJDb21wYXJl
SG93IikpIHsKICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiX2dfIiAuICRwYXJhbU5hbWU7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCRjYWxsSW1wbFBhcmFtcykgewpAQCAtNTk4LDEzICs2Njgs
NyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
JGZ1bmN0aW9uU2lnVHlwZSBlcSAiRXZlbnQiKSB7Ci0gICAgICAgIHB1c2goQGhCb2R5LCAiXG4v
KiBUT0RPOiBldmVudCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gKi9cblxuIik7Ci0gICAgICAg
IHB1c2goQGNCb2R5LCAiXG4vKiBUT0RPOiBldmVudCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0g
Ki9cblxuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoJHJldHVyblR5cGUg
bmUgInZvaWQiICYmICRyZXR1cm5WYWx1ZUlzR0RPTVR5cGUpIHsKKyAgICBpZiAoJHJldHVyblR5
cGUgbmUgInZvaWQiICYmICRyZXR1cm5WYWx1ZUlzR0RPTVR5cGUgJiYgJGZ1bmN0aW9uU2lnVHlw
ZSBuZSAiRE9NT2JqZWN0IikgewogICAgICAgICBpZiAoJGZ1bmN0aW9uU2lnVHlwZSBuZSAiRXZl
bnRUYXJnZXQiKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXQvV2ViS2l0RE9N
JHtmdW5jdGlvblNpZ1R5cGV9UHJpdmF0ZS5oIn0gPSAxOwogICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3sid2Via2l0L1dlYktpdERPTSR7ZnVuY3Rpb25TaWdUeXBlfS5oIn0gPSAxOwpAQCAtNjY3
LDggKzczMSw5IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgbXkgJHBhcmFtSXNH
RE9NVHlwZSA9IElzR0RPTUNsYXNzVHlwZSgkcGFyYW1JRExUeXBlKTsKICAgICAgICAgaWYgKCRw
YXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAi
ICAgIFdlYkNvcmU6OlN0cmluZyBfZ18ke3BhcmFtTmFtZX0gPSBXZWJDb3JlOjpTdHJpbmc6OmZy
b21VVEY4KCRwYXJhbU5hbWUpO1xuIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRwYXJhbUlz
R0RPTVR5cGUpIHsKKyAgICAgICAgfSBlbHNpZiAoJHBhcmFtSURMVHlwZSBlcSAiQ29tcGFyZUhv
dyIpIHsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIFdlYkNvcmU6OlJhbmdlOjpDb21w
YXJlSG93IF9nXyR7cGFyYW1OYW1lfSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJhbmdlOjpDb21w
YXJlSG93PigkcGFyYW1OYW1lKTtcbiIpOworICAgICAgICB9IGVsc2lmICgkcGFyYW1Jc0dET01U
eXBlKSB7CiAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke3BhcmFtSURM
VHlwZX0gKiBfZ18ke3BhcmFtTmFtZX0gPSBXZWJLaXQ6OmNvcmUoJHBhcmFtTmFtZSk7XG4iKTsK
ICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIpIHsKICAgICAgICAgICAgICAg
ICAjIFRPRE86IHJldHVybiBwcm9wZXIgZGVmYXVsdCByZXN1bHQKQEAgLTczMiwxMyArNzk3LDQw
IEBAIEVPRgogICAgICAgICBwdXNoKEBjQm9keSwgIn1cblxuIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9IGVsc2lmICgkZnVuY3Rpb25TaWdUeXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAg
IHB1c2goQGNCb2R5LCAiICAgICR7YXNzaWdufWNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+JHtm
dW5jdGlvblNpZ05hbWV9KCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25zfSkpO1xuIiApOwor
ICAgICAgICBteSAkZ2V0dGVyQ29udGVudEhlYWQ7CisgICAgICAgIG15ICRyZWZsZWN0ID0gJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CisgICAg
ICAgIG15ICRyZWZsZWN0VVJMID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJSZWZsZWN0VVJMIn07CisgICAgICAgIGlmICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVS
TCkgeworICAgICAgICAgICAgbXkgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8
fCAkcmVmbGVjdFVSTCkgZXEgIjEiKSA/ICRmdW5jdGlvblNpZ05hbWUgOiAoJHJlZmxlY3QgfHwg
JHJlZmxlY3RVUkwpOworICAgICAgICAgICAgbXkgJG5hbWVzcGFjZSA9ICRjb2RlR2VuZXJhdG9y
LT5OYW1lc3BhY2VGb3JBdHRyaWJ1dGVOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY29udGVudEF0dHJp
YnV0ZU5hbWUpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtuYW1lc3BhY2V9LmgifSA9
IDE7CisgICAgICAgICAgICBteSAkZ2V0QXR0cmlidXRlRnVuY3Rpb25OYW1lID0gJHJlZmxlY3RV
UkwgPyAiZ2V0VVJMQXR0cmlidXRlIiA6ICJnZXRBdHRyaWJ1dGUiOworICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRIZWFkID0gIiR7YXNzaWdufWNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+JHtn
ZXRBdHRyaWJ1dGVGdW5jdGlvbk5hbWV9KFdlYkNvcmU6OiR7bmFtZXNwYWNlfTo6JHtjb250ZW50
QXR0cmlidXRlTmFtZX1BdHRyKSk7XG4iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
JGdldHRlckNvbnRlbnRIZWFkID0gIiR7YXNzaWdufWNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+
JHtmdW5jdGlvblNpZ05hbWV9KCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25zfSkpO1xuIjsK
KyAgICAgICAgfQorCisgICAgICAgIHB1c2goQGNCb2R5LCAiICAgICR7Z2V0dGVyQ29udGVudEhl
YWR9Iik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAY0JvZHksICIgICAgJHthc3NpZ259
JHthc3NpZ25QcmV9aXRlbS0+JHtmdW5jdGlvblNpZ05hbWV9KCR7Y2FsbEltcGxQYXJhbXN9JHtl
eGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIiApOworICAgICAgICBteSAkc2V0dGVyQ29udGVu
dEhlYWQ7CisgICAgICAgIG15ICRyZWZsZWN0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CisgICAgICAgIG15ICRyZWZsZWN0VVJMID0gJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0VVJMIn07Cisg
ICAgICAgIGlmICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgeworICAgICAgICAgICAgbXkgJGNv
bnRlbnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEiKSA/
ICRmdW5jdGlvblNpZ05hbWUgOiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpOworICAgICAgICAg
ICAgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID1+IHMvc2V0Ly87CisgICAgICAgICAgICAkY29udGVu
dEF0dHJpYnV0ZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY29udGVudEF0dHJp
YnV0ZU5hbWUpOworICAgICAgICAgICAgbXkgJG5hbWVzcGFjZSA9ICRjb2RlR2VuZXJhdG9yLT5O
YW1lc3BhY2VGb3JBdHRyaWJ1dGVOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY29udGVudEF0dHJpYnV0
ZU5hbWUpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtuYW1lc3BhY2V9LmgifSA9IDE7
CisgICAgICAgICAgICAkc2V0dGVyQ29udGVudEhlYWQgPSAiJHthc3NpZ259JHthc3NpZ25QcmV9
aXRlbS0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OiR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmli
dXRlTmFtZX1BdHRyLCAke2NhbGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9
KTtcbiI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkc2V0dGVyQ29udGVudEhlYWQg
PSAiJHthc3NpZ259JHthc3NpZ25QcmV9aXRlbS0+JHtmdW5jdGlvblNpZ05hbWV9KCR7Y2FsbElt
cGxQYXJhbXN9JHtleGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgfQorCisg
ICAgICAgIHB1c2goQGNCb2R5LCAiICAgICR7c2V0dGVyQ29udGVudEhlYWR9Iik7CiAgICAgICAg
IAogICAgICAgICBpZihAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKICAgICAgICAg
ICAgIG15ICRleGNlcHRpb25IYW5kbGluZyA9IDw8ICJFT0YiOwotICAgIGlmKGVjKSB7CisgICAg
aWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rl
c2M7CiAgICAgICAgIFdlYkNvcmU6OmdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihlYywgZWNk
ZXNjKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0
cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwpAQCAtODEzLDkg
KzkwNSw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9ucyB7CiAgICAgICAgICRmdW5jdGlvbi0+cmFp
c2VzRXhjZXB0aW9ucygkYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zKTsKICAgICAgICAgJG9i
amVjdC0+R2VuZXJhdGVGdW5jdGlvbigkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uLCAiZ2V0XyIp
OwogICAgICAgICAKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8g
fHwKLSAgICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlJlcGxhY2VhYmxlIn0gICMgY2FuJ3QgaGFuZGxlIHRoaXMgeWV0Ci0gICAgICAgICAgICAp
IHsKKyAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pIHsKICAgICAg
ICAgICAgIG5leHQgVE9QOwogICAgICAgICB9CiAgICAgICAgIApAQCAtOTYyLDEyICsxMDUyLDEw
IEBAIEVPRgogICAgIGNsb3NlKFBSSVZIRUFERVIpOwogfQogCi1zdWIgVXNlc01hbnVhbFRvSlNJ
bXBsZW1lbnRhdGlvbiB7CitzdWIgVXNlc01hbnVhbEtpdEltcGxlbWVudGF0aW9uIHsKICAgICBt
eSAkdHlwZSA9IHNoaWZ0OwogCi0gICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIk5vZGUiIG9yICR0
eXBlIGVxICJEb2N1bWVudCIgb3IgJHR5cGUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvcgotICAgICAg
JHR5cGUgZXEgIlNWR1BhdGhTZWciIG9yICR0eXBlIGVxICJTdHlsZVNoZWV0IiBvciAkdHlwZSBl
cSAiQ1NTUnVsZSIgb3IgJHR5cGUgZXEgIkNTU1ZhbHVlIiBvcgotICAgICAgJHR5cGUgZXEgIkV2
ZW50IiBvciAkdHlwZSBlcSAiRWxlbWVudCIgb3IgJHR5cGUgZXEgIlRleHQiOworICAgIHJldHVy
biAxIGlmICR0eXBlIGVxICJOb2RlIiBvciAkdHlwZSBlcSAiRWxlbWVudCI7CiAgICAgcmV0dXJu
IDA7CiB9CiAKQEAgLTk5Niw3ICsxMDg0LDcgQEAgc3ViIEdlbmVyYXRlIHsKIAogICAgICRoZHJJ
bmNsdWRlc3sid2Via2l0LyR7cGFyZW50Q2xhc3NOYW1lfS5oIn0gPSAxOwogCi0gICAgaWYgKCRj
bGFzc05hbWUgbmUgIldlYktpdERPTU5vZGUiKSB7CisgICAgaWYgKCFVc2VzTWFudWFsS2l0SW1w
bGVtZW50YXRpb24oJGludGVyZmFjZU5hbWUpKSB7CiAgICAgICAgIG15ICRjb252ZXJ0ZXIgPSA8
PCAiRU9GIjsKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vTm9kZS5pZGwgYi9XZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRleCBjMGYxNTljLi4zYWYyMGEw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAorKysgYi9XZWJDb3JlL2RvbS9Ob2Rl
LmlkbApAQCAtNjIsOSArNjIsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIHByZXZpb3VzU2libGluZzsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgICAgbmV4dFNpYmxpbmc7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgICAgIGF0dHJpYnV0ZXM7Ci0jaWYgIWRlZmluZWQo
TEFOR1VBR0VfR09CSkVDVCkgfHwgIUxBTkdVQUdFX0dPQkpFQ1QKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERvY3VtZW50ICAgICAgICAgb3duZXJEb2N1bWVudDsKLSNlbmRpZgogCiAgICAg
ICAgIFtPbGRTdHlsZU9iakMsIEN1c3RvbV0gTm9kZSBpbnNlcnRCZWZvcmUoaW4gW1JldHVybl0g
Tm9kZSBuZXdDaGlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBOb2RlIHJlZkNoaWxkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAwYWZmYzI1Li4yNGExNmM2IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEwLTA0LTIxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEg
c2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogdGVzdHMv
dGVzdHdlYnZpZXcuYzoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RvY3VtZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0d2Vidmlldy5oOgorCiAyMDEwLTA0LTIxICBKYWt1YiBXaWVjem9yZWsgIDxqd2llY3pvcmVr
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rl
c3R3ZWJ2aWV3LmMKaW5kZXggMzY1MTFkNy4uZDZkODY3YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0d2Vidmlldy5jCisrKyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcu
YwpAQCAtMzM2LDYgKzMzNiw0MSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfdmlld193
aW5kb3dfZmVhdHVyZXMoKQogICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOwogfSAgICAK
IAorc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZG9jdW1lbnQoKQoreworICAgIEd0
a1dpZGdldCogd2luZG93OworICAgIEd0a1dpZGdldCogd2ViX3ZpZXc7CisgICAgZ2NoYXIqIHRp
dGxlOworICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudDsKKyAgICAKKyAgICB3aW5kb3cg
PSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICB3ZWJfdmlldyA9IHdl
YmtpdF93ZWJfdmlld19uZXcoKTsKKyAgICAKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKHdpbmRvdyksIHdlYl92aWV3KTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRv
dyk7CisKKyAgICBsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOworCisgICAgZ19z
aWduYWxfY29ubmVjdCh3aW5kb3csICJtYXAtZXZlbnQiLAorICAgICAgICAgICAgICAgICAgICAg
R19DQUxMQkFDSyhtYXBfZXZlbnRfY2IpLCBsb29wKTsKKyAgICBnX21haW5fbG9vcF9ydW4obG9v
cCk7CisKKyAgICBkb2N1bWVudCA9IHdlYmtpdF93ZWJfdmlld19nZXRfZG9jdW1lbnQoV0VCS0lU
X1dFQl9WSUVXKHdlYl92aWV3KSk7CisgICAgZ19hc3NlcnQoZG9jdW1lbnQpOworICAgIHdlYmtp
dF9kb21fZG9jdW1lbnRfc2V0X3RpdGxlKGRvY3VtZW50LCAiRmlyc3QgdGl0bGUiKTsKKyAgICB0
aXRsZSA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50KTsKKyAgICBnX2Fz
c2VydCh0aXRsZSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRpdGxlLCA9PSwgIkZpcnN0IHRpdGxl
Iik7CisgICAgZ19mcmVlKHRpdGxlKTsKKyAgICB3ZWJraXRfZG9tX2RvY3VtZW50X3NldF90aXRs
ZShkb2N1bWVudCwgIlRpdGxlIGNoYW5nZWQgYnkgRE9NIGJpbmRpbmdzIik7CisgICAgdGl0bGUg
PSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF90aXRsZShkb2N1bWVudCk7CisgICAgZ19hc3NlcnQo
dGl0bGUpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0aXRsZSwgPT0sICJUaXRsZSBjaGFuZ2VkIGJ5
IERPTSBiaW5kaW5ncyIpOworICAgIGdfZnJlZSh0aXRsZSk7CisgICAgCisgICAgZ3RrX3dpZGdl
dF9kZXN0cm95KHdpbmRvdyk7Cit9ICAgIAorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiB7CiAgICAgU291cFNlcnZlciogc2VydmVyOwpAQCAtMzY0LDYgKzM5OSw3IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQv
d2Vidmlldy9kZXN0cm95IiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZGVzdHJveSk7CiAgICAgZ190
ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvZ3JhYl9mb2N1cyIsIHRlc3Rfd2Via2l0X3dl
Yl92aWV3X2dyYWJfZm9jdXMpOwogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3
L3dpbmRvdy1mZWF0dXJlcyIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X3dpbmRvd19mZWF0dXJlcyk7
CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvZG9jdW1lbnQiLCB0ZXN0X3dl
YmtpdF93ZWJfdmlld19kb2N1bWVudCk7CiAKICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMjJmNmQwNC4uODkyMjNlYSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRl
ICJ3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5
aXRlbS5oIgogCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgor
CiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5o
IgogI2luY2x1ZGUgIkNhY2hlLmgiCkBAIC00NDMxLDMgKzQ0MzMsMjcgQEAgV2ViS2l0Q2FjaGVN
b2RlbCB3ZWJraXRfZ2V0X2NhY2hlX21vZGVsKCkKICAgICB3ZWJraXRfaW5pdCgpOwogICAgIHJl
dHVybiBjYWNoZU1vZGVsOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfZG9jdW1l
bnQ6CisgKiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmlldworICogCisgKiBSZXR1cm5zOiB0aGUg
I1dlYktpdERPTURvY3VtZW50IGN1cnJlbnRseSBsb2FkZWQgaW4gdGhlIEB3ZWJWaWV3CisgKgor
ICogU2luY2U6IDEuMy4wCisgKiovCitXZWJLaXRET01Eb2N1bWVudCoKK3dlYmtpdF93ZWJfdmll
d19nZXRfZG9jdW1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOworCisgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZUZy
YW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIERvY3VtZW50KiBkb2MgPSBjb3JlRnJhbWUt
PmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2MpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTURvY3VtZW50Kj4oa2l0KGRvYykpOworfQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCmluZGV4IGU2OWRlMGEuLmQ4ODQyYTEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Jhc2UuaD4KIAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdGRvbS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9y
d2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJhbWUuaD4KICNpbmNsdWRl
IDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KQEAgLTM4MSw2ICszODIsOSBAQCB3ZWJr
aXRfc2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0Q2FjaGVN
b2RlbCAgICAgY2FjaGVfbW9kZQogV0VCS0lUX0FQSSBXZWJLaXRDYWNoZU1vZGVsCiB3ZWJraXRf
Z2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKK1dFQktJ
VF9BUEkgV2ViS2l0RE9NRG9jdW1lbnQgKgord2Via2l0X3dlYl92aWV3X2dldF9kb2N1bWVudCAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJWaWV3KTsKKwogR19F
TkRfREVDTFMKIAogI2VuZGlmCi0tIAoxLjYuNi4xCgo=
</data>
<flag name="commit-queue"
          id="37805"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54045</attachid>
            <date>2010-04-22 02:50:26 -0700</date>
            <delta_ts>2010-05-02 19:18:57 -0700</delta_ts>
            <desc>dombindingsdocument.diff</desc>
            <filename>dombindingsdocument.diff</filename>
            <type>text/plain</type>
            <size>55858</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmYzJiY2U5YTRkM2NhOTgwZTA2NGE0OGM3ZDE1ZDNmMWM5YjYwNjBkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDIxIEFwciAyMDEwIDE4OjM0OjA2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQ29yZToK
CjIwMTAtMDQtMjEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGlu
Z3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM1OTAK
CiAgICAgICAgRXh0ZW5kIHRoZSBiaW5kaW5ncyB0byBjb3ZlciBtb3N0IG9mIERvY3VtZW50Lmlk
bAoKICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAgICogYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01CaW5kaW5nLmNwcDoKICAgICAgICAoV2ViS2l0OjpjcmVhdGVXcmFwcGVyKToKICAg
ICAgICAoV2ViS2l0OjpraXQpOgogICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01C
aW5kaW5nLmg6CiAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3Jh
cHBlckZhY3RvcnkuY3BwOiBBZGRlZC4KICAgICAgICAoV2ViS2l0OjpjcmVhdGVBbmNob3JXcmFw
cGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVBcHBsZXRXcmFwcGVyKToKICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVBcmVhV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlQmFzZVdyYXBw
ZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUJhc2VGb250V3JhcHBlcik6CiAgICAgICAgKFdl
YktpdDo6Y3JlYXRlQmxvY2txdW90ZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUJv
ZHlXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVCUldyYXBwZXIpOgogICAgICAgIChX
ZWJLaXQ6OmNyZWF0ZUJ1dHRvbldyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUNhbnZh
c1dyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlQ2FwdGlvbldyYXBwZXIpOgog
ICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlQ29sV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6
Y3JlYXRlTW9kV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlRGlyZWN0b3J5V3JhcHBl
cik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlRGl2V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6
Y3JlYXRlRExpc3RXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVFbWJlZFdyYXBwZXIp
OgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUZpZWxkU2V0V3JhcHBlcik6CiAgICAgICAgKFdlYktp
dDo6Y3JlYXRlRm9udFdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUZvcm1XcmFwcGVy
KToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVGcmFtZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6
OmNyZWF0ZUZyYW1lU2V0V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlSGVhZGluZ1dy
YXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUhlYWRXcmFwcGVyKToKICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVIUldyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUh0bWxXcmFwcGVy
KToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVJRnJhbWVXcmFwcGVyKToKICAgICAgICAoV2ViS2l0
OjpjcmVhdGVJbWFnZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZUlucHV0V3JhcHBl
cik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlSXNJbmRleFdyYXBwZXIpOgogICAgICAgIChXZWJL
aXQ6OmNyZWF0ZUxhYmVsV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlTGVnZW5kV3Jh
cHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlTElXcmFwcGVyKToKICAgICAgICAoV2ViS2l0
OjpjcmVhdGVMaW5rV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlTWFwV3JhcHBlcik6
CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlTWFycXVlZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6
OmNyZWF0ZU1lbnVXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVNZXRhV3JhcHBlcik6
CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlT2JqZWN0V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6
Y3JlYXRlT0xpc3RXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVPcHRHcm91cFdyYXBw
ZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZU9wdGlvbldyYXBwZXIpOgogICAgICAgIChXZWJL
aXQ6OmNyZWF0ZVBhcmFncmFwaFdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVBhcmFt
V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJlV3JhcHBlcik6CiAgICAgICAgKFdl
YktpdDo6Y3JlYXRlUXVvdGVXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVTY3JpcHRX
cmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVTZWxlY3RXcmFwcGVyKToKICAgICAgICAo
V2ViS2l0OjpjcmVhdGVTdHlsZVdyYXBwZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxl
V3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6Y3JlYXRlVGFibGVTZWN0aW9uV3JhcHBlcik6CiAg
ICAgICAgKFdlYktpdDo6Y3JlYXRlVGFibGVDZWxsV3JhcHBlcik6CiAgICAgICAgKFdlYktpdDo6
Y3JlYXRlVGV4dEFyZWFXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVUaXRsZVdyYXBw
ZXIpOgogICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlUm93V3JhcHBlcik6CiAgICAgICAgKFdl
YktpdDo6Y3JlYXRlVUxpc3RXcmFwcGVyKToKICAgICAgICAoV2ViS2l0OjpjcmVhdGVIVE1MRWxl
bWVudFdyYXBwZXIpOgogICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5Lmg6IEFkZGVkLgogICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yR09iamVjdC5wbToKICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKCldlYktpdC9ndGs6
CgoyMDEwLTA0LTIxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRp
bmdzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkw
CgogICAgICAgIEFkZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RvY3VtZW50IHRvIHJldHJpZXZlIHRo
ZSBXZWJLaXRET01Eb2N1bWVudAogICAgICAgIGZyb20gYSBXZWJLaXRXZWJWaWV3LCBhbmQgYSB2
ZXJ5IHNpbXBsZSB0ZXN0IGZvciBpdC4KCiAgICAgICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOgog
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgogICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2RvY3VtZW50KToKICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6Ci0tLQog
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc2
ICsrKwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgMTA1ICsrKystCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5j
cHAgICAgICB8ICAgMzIgKystCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmlu
ZGluZy5oICAgICAgICB8ICAgIDIgKwogLi4uL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFw
cGVyRmFjdG9yeS5jcHAgICAgfCAgNTI2ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vZ29iamVj
dC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggICAgICB8ICAgNDMgKysKIFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAgIHwgIDE1OCArKysr
Ky0tCiBXZWJDb3JlL2RvbS9Ob2RlLmlkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDIgLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE1ICsKIFdlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyAgICAgICAgICAgICAg
ICAgICAgIHwgICAzNiArKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgICAg
ICAgICAgICAgICAgfCAgIDI1ICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCAg
ICAgICAgICAgICAgICAgIHwgICAgNCArCiAxMiBmaWxlcyBjaGFuZ2VkLCA5ODUgaW5zZXJ0aW9u
cygrKSwgMzkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBl
ckZhY3RvcnkuaAoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggY2I4ZWI1ZS4uMjBkNjk5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw4MSBAQAogMjAxMC0wNC0yMSAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAg
ICAgRXh0ZW5kIHRoZSBiaW5kaW5ncyB0byBjb3ZlciBtb3N0IG9mIERvY3VtZW50LmlkbAorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJL
aXRET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlV3JhcHBlcik6CisgICAg
ICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01C
aW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdy
YXBwZXJGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUFuY2hvcldy
YXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVBcHBsZXRXcmFwcGVyKToKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlQXJlYVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVCYXNl
V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUJhc2VGb250V3JhcHBlcik6CisgICAg
ICAgIChXZWJLaXQ6OmNyZWF0ZUJsb2NrcXVvdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6
Y3JlYXRlQm9keVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVCUldyYXBwZXIpOgor
ICAgICAgICAoV2ViS2l0OjpjcmVhdGVCdXR0b25XcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6
Y3JlYXRlQ2FudmFzV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlQ2FwdGlv
bldyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVUYWJsZUNvbFdyYXBwZXIpOgorICAg
ICAgICAoV2ViS2l0OjpjcmVhdGVNb2RXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRl
RGlyZWN0b3J5V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZURpdldyYXBwZXIpOgor
ICAgICAgICAoV2ViS2l0OjpjcmVhdGVETGlzdFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGVFbWJlZFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVGaWVsZFNldFdyYXBw
ZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVGb250V3JhcHBlcik6CisgICAgICAgIChXZWJL
aXQ6OmNyZWF0ZUZvcm1XcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRnJhbWVXcmFw
cGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRnJhbWVTZXRXcmFwcGVyKToKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlSGVhZGluZ1dyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVI
ZWFkV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUhSV3JhcHBlcik6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZUh0bWxXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlSUZy
YW1lV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUltYWdlV3JhcHBlcik6CisgICAg
ICAgIChXZWJLaXQ6OmNyZWF0ZUlucHV0V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0
ZUlzSW5kZXhXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlTGFiZWxXcmFwcGVyKToK
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlTGVnZW5kV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZUxJV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUxpbmtXcmFwcGVyKToK
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlTWFwV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNy
ZWF0ZU1hcnF1ZWVXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlTWVudVdyYXBwZXIp
OgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVNZXRhV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZU9iamVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVPTGlzdFdyYXBw
ZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVPcHRHcm91cFdyYXBwZXIpOgorICAgICAgICAo
V2ViS2l0OjpjcmVhdGVPcHRpb25XcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUGFy
YWdyYXBoV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVBhcmFtV3JhcHBlcik6Cisg
ICAgICAgIChXZWJLaXQ6OmNyZWF0ZVByZVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVh
dGVRdW90ZVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTY3JpcHRXcmFwcGVyKToK
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU2VsZWN0V3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVN0eWxlV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlV3JhcHBl
cik6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlU2VjdGlvbldyYXBwZXIpOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVUYWJsZUNlbGxXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3Jl
YXRlVGV4dEFyZWFXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVGl0bGVXcmFwcGVy
KToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVGFibGVSb3dXcmFwcGVyKToKKyAgICAgICAgKFdl
YktpdDo6Y3JlYXRlVUxpc3RXcmFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlSFRNTEVs
ZW1lbnRXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVt
ZW50V3JhcHBlckZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAgICAgICAgKiBkb20vTm9kZS5pZGw6CisKKzIwMTAt
MDQtMjEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCiAgICAgICAgIFRyeSB0byBm
aXggY29tcGlsYXRpb24gb24gR1RLKyBkZWJ1ZyBib3RzLgogCiAgICAgICAgICogYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDkzYjY4NWUuLmIzYTgxODMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtMzE4LDYgKzMxOCw4IEBAIHdlYmNvcmVndGtfZG9tX3NvdXJjZXMgPSBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaCBcCiAJV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2dvYmpl
Y3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgXAorCVdlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggXAogCVdlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmgKIApAQCAtMzc5NiwxMyArMzc5OCwxMTQgQEAgSURM
X0JJTkRJTkdTX0dET00gOj0gXAogCVdlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRs
IFwKIAlXZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbCBcCiAJV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuaWRsIFwKKwlXZWJDb3JlL2Nzcy9NZWRpYS5pZGwgXAogCVdlYkNvcmUvY3NzL01lZGlhTGlz
dC5pZGwgXAogCVdlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaWRsIFwKKwlXZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0TGlzdC5pZGwgXAogCVdlYkNvcmUvZG9tL0F0dHIuaWRsIFwKKwlXZWJDb3JlL2RvbS9D
REFUQVNlY3Rpb24uaWRsIFwKKwlXZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbCBcCisJV2Vi
Q29yZS9kb20vQ29tbWVudC5pZGwgXAorCVdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBcCisJV2Vi
Q29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwgXAorCVdlYkNvcmUvZG9tL0RvY3VtZW50VHlw
ZS5pZGwgXAorCVdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbCBcCiAJV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5pZGwgXAorCVdl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbCBcCiAJV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlk
bCBcCiAJV2ViQ29yZS9kb20vTm9kZS5pZGwgXAotCVdlYkNvcmUvZG9tL05vZGVMaXN0LmlkbAor
CVdlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaWRsIFwKKwlXZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
aWRsIFwKKwlXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwgXAorCVdlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5pZGwgXAorCVdlYkNvcmUvZG9tL1JhbmdlLmlkbCBcCisJV2ViQ29yZS9k
b20vVGV4dC5pZGwgXAorCVdlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsIFwKKwlXZWJDb3JlL2h0
bWwvQmxvYi5pZGwgXAorCVdlYkNvcmUvaHRtbC9GaWxlLmlkbCBcCisJV2ViQ29yZS9odG1sL0Zp
bGVMaXN0LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbCBcCisJV2Vi
Q29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxBcmVh
RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaWRsIFwKKwlXZWJD
b3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MQmxv
Y2txdW90ZUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbCBc
CisJV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsIFwK
KwlXZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTERp
cmVjdG9yeUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaWRsIFwK
KwlXZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsIFwKKwlXZWJDb3Jl
L2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5pZGwgXAorCVdlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbCBcCisJV2Vi
Q29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MSGVhZGlu
Z0VsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5pZGwgXAorCVdlYkNv
cmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwgXAorCVdlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4
RWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmlkbCBcCisJV2Vi
Q29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxMSUVs
ZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmlkbCBcCisJV2ViQ29y
ZS9odG1sL0hUTUxNYXBFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxl
bWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaWRsIFwKKwlXZWJDb3Jl
L2h0bWwvSFRNTE1ldGFFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50
LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9o
dG1sL0hUTUxPTGlzdEVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGwgXAorCVdlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFBh
cmFncmFwaEVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5pZGwg
XAorCVdlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1M
UXVvdGVFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmlkbCBc
CisJV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwg
XAorCVdlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5pZGwgXAorCVdlYkNvcmUv
aHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50Lmlk
bCBcCisJV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL2h0
bWwvSFRNTFRpdGxlRWxlbWVudC5pZGwgXAorCVdlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVt
ZW50LmlkbCBcCisJV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaWRsIFwKKwlXZWJDb3Jl
L2h0bWwvVmFsaWRpdHlTdGF0ZS5pZGwgXAorCVdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuaWRsIFwKKwlXZWJDb3JlL3BhZ2UvQmFySW5mby5pZGwgXAorCVdlYkNv
cmUvcGFnZS9Db25zb2xlLmlkbCBcCisJV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgXAorCVdl
YkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsIFwKKwlXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24u
aWRsIFwKKwlXZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwgXAorCVdlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5pZGwgXAorCVdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsIFwKKwlXZWJDb3JlL3BhZ2UvU2Ny
ZWVuLmlkbCBcCisJV2ViQ29yZS9wYWdlL1dlYktpdFBvaW50LmlkbCBcCisJV2ViQ29yZS9wbHVn
aW5zL01pbWVUeXBlLmlkbCBcCisJV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsIFwK
KwlXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmlkbCBcCisJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFy
cmF5LmlkbCBcCisJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmlkbCBcCisJV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2UuaWRsIFwKKwlXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsIFwKKwlX
ZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaWRsIFwKKwlXZWJDb3JlL3htbC9YUGF0aFJlc3Vs
dC5pZGwKIAogIyBBbGwgY2xhc3NlcyBhdXRvZ2VuZXJhdGVkIGluIHRoZSBHT2JqZWN0IERPTSBi
aW5kaW5ncwogR0RPTV9BVVRPX0NMQVNTRVMgOj0gJChiYXNlbmFtZSAkKG5vdGRpciAkKElETF9C
SU5ESU5HU19HRE9NKSkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmlu
ZGluZy5jcHAKaW5kZXggMWY5MDBjMy4uMjA3NzNmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcApAQCAtMjcsOCArMjcsMTAgQEAKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NRWxlbWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCkBAIC02OSw4ICs3MSwxNyBAQCBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlV3JhcHBlcihO
b2RlKiBub2RlKQogCiAgICAgZ3BvaW50ZXIgd3JhcHBlZE5vZGUgPSAwOwogCi0gICAgaWYgKG5v
ZGUtPm5vZGVUeXBlKCkpCisgICAgc3dpdGNoIChub2RlLT5ub2RlVHlwZSgpKSB7CisgICAgY2Fz
ZSBOb2RlOjpFTEVNRU5UX05PREU6CisgICAgICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkp
CisgICAgICAgICAgICB3cmFwcGVkTm9kZSA9IGNyZWF0ZUhUTUxFbGVtZW50V3JhcHBlcihzdGF0
aWNfY2FzdDxIVE1MRWxlbWVudCo+KG5vZGUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
d3JhcHBlZE5vZGUgPSB3cmFwTm9kZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKICAgICAgICAgd3JhcHBlZE5vZGUgPSB3cmFwTm9kZShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogCiAgICAgcmV0dXJuIERPTU9iamVjdENhY2hlOjpwdXQobm9kZSwgd3JhcHBlZE5v
ZGUpOwogfQpAQCAtODcsNCArOTgsMjMgQEAgZ3BvaW50ZXIga2l0KE5vZGUqIG5vZGUpCiAgICAg
cmV0dXJuIGNyZWF0ZVdyYXBwZXIobm9kZSk7CiB9CiAKK2dwb2ludGVyIGtpdChFbGVtZW50KiBl
bGVtZW50KQoreworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBn
cG9pbnRlciBraXRFbGVtZW50ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChlbGVtZW50KTsKKyAgICBp
ZiAoa2l0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGtpdEVsZW1lbnQ7CisKKyAgICBncG9pbnRl
ciB3cmFwcGVkRWxlbWVudDsKKworICAgIGlmIChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCisg
ICAgICAgIHdyYXBwZWRFbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRXcmFwcGVyKHN0YXRpY19j
YXN0PEhUTUxFbGVtZW50Kj4oZWxlbWVudCkpOworICAgIGVsc2UKKyAgICAgICAgd3JhcHBlZEVs
ZW1lbnQgPSB3cmFwRWxlbWVudChlbGVtZW50KTsKKworICAgIHJldHVybiBET01PYmplY3RDYWNo
ZTo6cHV0KGVsZW1lbnQsIHdyYXBwZWRFbGVtZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGlu
Zy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaAppbmRleCBm
NmVmYTQ2Li5kMjdiZGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01C
aW5kaW5nLmgKQEAgLTI4LDEwICsyOCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBOb2RlOworY2xhc3MgRWxlbWVudDsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiBncG9pbnRlciBraXQoV2ViQ29yZTo6Tm9kZSogbm9kZSk7CitncG9pbnRl
ciBraXQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCk7CiAKIGNsYXNzIERPTU9iamVjdENhY2hl
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRI
VE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xNTEzYjY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCkBAIC0wLDAgKzEs
NTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEx1a2UgS2VubmV0aCBD
YXNzb24gTGVpZ2h0b24gPGxrY2xAbGtjbC5uZXQ+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWFy
dGluIFNvdG8gPHNvdG9AZnJlZWRlc2t0b3Aub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwuCisgKgorICogVGhpcyBmaWxlIGlzIGRlcml2ZWQgYnkgaGFuZCBmcm9tIGFuIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGUuCisgKiBLZWVwaW5nIGl0IHVwLXRvLWRhdGUgY291
bGQgcG90ZW50aWFsbHkgYmUgZG9uZSBieSBhZGRpbmcKKyAqIGEgbWFrZV9uYW1lcy5wbCBnZW5l
cmF0b3IsIG9yIGJ5IHdyaXRpbmcgYSBzZXBhcmF0ZQorICogZ2VuZXJhdGVyIHdoaWNoIHRha2Vz
IEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIGFzIGlucHV0LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmgi
CisKKyNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxBcHBsZXRF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEJS
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxCYXNlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxC
YXNlRm9udEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQmxvY2txdW90ZUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTERMaXN0RWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxEaXJlY3RvcnlFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TERpdkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRW1iZWRFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTEZpZWxkU2V0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb250RWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIK
KyNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEhSRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxIZWFkaW5n
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJ
RnJhbWVFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSXNJbmRleEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MTElFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50
LmgiCisjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWFycXVlZUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWV0
YUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTW9kRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPTGlzdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MT2Jq
ZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MT3B0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJhZ3JhcGhFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTFBhcmFtRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQcmVFbGVtZW50
LmgiCisjaW5jbHVkZSAiSFRNTFF1b3RlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTY3JpcHRF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
U3R5bGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZUNvbEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRh
YmxlUm93RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MVUxpc3RFbGVtZW50LmgiCisKKyNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dl
YktpdERPTUhUTUxBcHBsZXRFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJL
aXRET01IVE1MQXJlYUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TUhUTUxCUkVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxC
YXNlRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEJhc2VG
b250RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEJsb2Nr
cXVvdGVFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MQm9k
eUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxCdXR0b25F
bGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MQ2FudmFzRWxl
bWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTERMaXN0RWxlbWVu
dFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTERpcmVjdG9yeUVsZW1l
bnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxEaXZFbGVtZW50UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MRWxlbWVudFByaXZhdGUuaCIK
KyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUuaCIKKyNp
bmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudFByaXZhdGUuaCIKKyNp
bmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTEZvbnRFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MRm9ybUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAi
d2Via2l0L1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Vi
a2l0L1dlYktpdERPTUhUTUxGcmFtZVNldEVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Vi
a2l0L1dlYktpdERPTUhUTUxIUkVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dl
YktpdERPTUhUTUxIZWFkRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NSFRNTEhlYWRpbmdFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRE
T01IVE1MSHRtbEVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhU
TUxJRnJhbWVFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1M
SW1hZ2VFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MSW5w
dXRFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MSXNJbmRl
eEVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxMSUVsZW1l
bnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxMYWJlbEVsZW1lbnRQ
cml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxMZWdlbmRFbGVtZW50UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MTGlua0VsZW1lbnRQcml2YXRl
LmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxNYXBFbGVtZW50UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnRQcml2YXRlLmgiCisj
aW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxNZW51RWxlbWVudFByaXZhdGUuaCIKKyNpbmNs
dWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTE1ldGFFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUg
IndlYmtpdC9XZWJLaXRET01IVE1MTW9kRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJr
aXQvV2ViS2l0RE9NSFRNTE9MaXN0RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dl
YktpdERPTUhUTUxPcHRHcm91cEVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dl
YktpdERPTUhUTUxPcHRpb25FbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJL
aXRET01IVE1MUGFyYWdyYXBoRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NSFRNTFBhcmFtRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NSFRNTFByZUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhU
TUxRdW90ZUVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxT
Y3JpcHRFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MU2Vs
ZWN0RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTFN0eWxl
RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnRQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUhUTUxUYWJs
ZUNlbGxFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MVGFi
bGVDb2xFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MVGFi
bGVFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MVGFibGVS
b3dFbGVtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTFRl
eHRBcmVhRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTFRp
dGxlRWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSFRNTFVMaXN0
RWxlbWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvd2Via2l0ZG9tLmgiCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpIVE1MTmFtZXM7CisK
K3R5cGVkZWYgZ3BvaW50ZXIgKCpDcmVhdGVIVE1MRWxlbWVudFdyYXBwZXJGdW5jdGlvbikoUGFz
c1JlZlB0cjxIVE1MRWxlbWVudD4pOworCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlQW5jaG9yV3Jh
cHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFw
SFRNTEFuY2hvckVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihlbGVtZW50
LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVBcHBsZXRXcmFwcGVyKFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MQXBwbGV0
RWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQXBwbGV0RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsK
K30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUFyZWFXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MQXJlYUVsZW1lbnQoc3RhdGlj
X2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3Bv
aW50ZXIgY3JlYXRlQmFzZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkK
K3sKKyAgICByZXR1cm4gd3JhcEhUTUxCYXNlRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQmFzZUVs
ZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVCYXNl
Rm9udFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1
cm4gd3JhcEhUTUxCYXNlRm9udEVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEJhc2VGb250RWxlbWVu
dCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUJsb2NrcXVv
dGVXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJu
IHdyYXBIVE1MQmxvY2txdW90ZUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEJsb2NrcXVvdGVFbGVt
ZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlQm9keVdy
YXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3Jh
cEhUTUxCb2R5RWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQm9keUVsZW1lbnQqPihlbGVtZW50Lmdl
dCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVCUldyYXBwZXIoUGFzc1JlZlB0cjxI
VE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxCUkVsZW1lbnQoc3Rh
dGljX2Nhc3Q8SFRNTEJSRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdw
b2ludGVyIGNyZWF0ZUJ1dHRvbldyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVu
dCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxCdXR0b25FbGVtZW50KHN0YXRpY19jYXN0PEhUTUxC
dXR0b25FbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3Jl
YXRlQ2FudmFzV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAg
IHJldHVybiB3cmFwSFRNTENhbnZhc0VsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1l
bnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVUYWJsZUNh
cHRpb25XcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0
dXJuIHdyYXBIVE1MVGFibGVDYXB0aW9uRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MVGFibGVDYXB0
aW9uRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0
ZVRhYmxlQ29sV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAg
IHJldHVybiB3cmFwSFRNTFRhYmxlQ29sRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MVGFibGVDb2xF
bGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlTW9k
V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3
cmFwSFRNTE1vZEVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTE1vZEVsZW1lbnQqPihlbGVtZW50Lmdl
dCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVEaXJlY3RvcnlXcmFwcGVyKFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MRGlyZWN0
b3J5RWxlbWVudChzdGF0aWNfY2FzdDxIVE1MRGlyZWN0b3J5RWxlbWVudCo+KGVsZW1lbnQuZ2V0
KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZURpdldyYXBwZXIoUGFzc1JlZlB0cjxI
VE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxEaXZFbGVtZW50KHN0
YXRpY19jYXN0PEhUTUxEaXZFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMg
Z3BvaW50ZXIgY3JlYXRlRExpc3RXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MRExpc3RFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxE
TGlzdEVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVh
dGVFbWJlZFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gd3JhcEhUTUxFbWJlZEVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEVtYmVkRWxlbWVudCo+
KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUZpZWxkU2V0V3Jh
cHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFw
SFRNTEZpZWxkU2V0RWxlbWVudChzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oZWxl
bWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRm9udFdyYXBwZXIoUGFz
c1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxGb250
RWxlbWVudChzdGF0aWNfY2FzdDxIVE1MRm9udEVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9
CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVGb3JtV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVt
ZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTEZvcm1FbGVtZW50KHN0YXRpY19j
YXN0PEhUTUxGb3JtRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2lu
dGVyIGNyZWF0ZUZyYW1lV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQor
eworICAgIHJldHVybiB3cmFwSFRNTEZyYW1lRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MRnJhbWVF
bGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRnJh
bWVTZXRXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0
dXJuIHdyYXBIVE1MRnJhbWVTZXRFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxGcmFtZVNldEVsZW1l
bnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVIZWFkaW5n
V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3
cmFwSFRNTEhlYWRpbmdFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxIZWFkaW5nRWxlbWVudCo+KGVs
ZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUhlYWRXcmFwcGVyKFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MSGVh
ZEVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEhlYWRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOwor
fQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlSFJXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MSFJFbGVtZW50KHN0YXRpY19jYXN0
PEhUTUxIUkVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBj
cmVhdGVIdG1sV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAg
IHJldHVybiB3cmFwSFRNTEh0bWxFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxIdG1sRWxlbWVudCo+
KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUlGcmFtZVdyYXBw
ZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhU
TUxJRnJhbWVFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4oZWxlbWVudC5n
ZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlSW1hZ2VXcmFwcGVyKFBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MSW1hZ2VFbGVt
ZW50KHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisK
K3N0YXRpYyBncG9pbnRlciBjcmVhdGVJbnB1dFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxJbnB1dEVsZW1lbnQoc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2lu
dGVyIGNyZWF0ZUlzSW5kZXhXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIHdyYXBIVE1MSXNJbmRleEVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTElz
SW5kZXhFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3Jl
YXRlTGFiZWxXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAg
cmV0dXJuIHdyYXBIVE1MTGFiZWxFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxMYWJlbEVsZW1lbnQq
PihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVMZWdlbmRXcmFw
cGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBI
VE1MTGVnZW5kRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MTGVnZW5kRWxlbWVudCo+KGVsZW1lbnQu
Z2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZUxJV3JhcHBlcihQYXNzUmVmUHRy
PEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTExJRWxlbWVudChz
dGF0aWNfY2FzdDxIVE1MTElFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMg
Z3BvaW50ZXIgY3JlYXRlTGlua1dyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVu
dCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxMaW5rRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MTGlu
a0VsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVN
YXBXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJu
IHdyYXBIVE1MTWFwRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KGVsZW1lbnQu
Z2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZU1hcnF1ZWVXcmFwcGVyKFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MTWFycXVl
ZUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTE1hcnF1ZWVFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkp
OworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlTWVudVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1M
RWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxNZW51RWxlbWVudChzdGF0
aWNfY2FzdDxIVE1MTWVudUVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBn
cG9pbnRlciBjcmVhdGVNZXRhV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50
KQoreworICAgIHJldHVybiB3cmFwSFRNTE1ldGFFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxNZXRh
RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZU9i
amVjdFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1
cm4gd3JhcEhUTUxPYmplY3RFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxPYmplY3RFbGVtZW50Kj4o
ZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlT0xpc3RXcmFwcGVy
KFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1M
T0xpc3RFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxPTGlzdEVsZW1lbnQqPihlbGVtZW50LmdldCgp
KSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVPcHRHcm91cFdyYXBwZXIoUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxPcHRHcm91cEVs
ZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsK
K30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZU9wdGlvbldyYXBwZXIoUGFzc1JlZlB0cjxIVE1M
RWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxPcHRpb25FbGVtZW50KHN0
YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0
aWMgZ3BvaW50ZXIgY3JlYXRlUGFyYWdyYXBoV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTFBhcmFncmFwaEVsZW1lbnQoc3RhdGlj
X2Nhc3Q8SFRNTFBhcmFncmFwaEVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRp
YyBncG9pbnRlciBjcmVhdGVQYXJhbVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxl
bWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxQYXJhbUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRN
TFBhcmFtRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNy
ZWF0ZVByZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gd3JhcEhUTUxQcmVFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxQcmVFbGVtZW50Kj4oZWxl
bWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlUXVvdGVXcmFwcGVyKFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MUXVv
dGVFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxRdW90ZUVsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7
Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVTY3JpcHRXcmFwcGVyKFBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MU2NyaXB0RWxlbWVudChz
dGF0aWNfY2FzdDxIVE1MU2NyaXB0RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworc3Rh
dGljIGdwb2ludGVyIGNyZWF0ZVNlbGVjdFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4g
ZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxTZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0
PEhUTUxTZWxlY3RFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50
ZXIgY3JlYXRlU3R5bGVXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7
CisgICAgcmV0dXJuIHdyYXBIVE1MU3R5bGVFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxTdHlsZUVs
ZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVUYWJs
ZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4g
d3JhcEhUTUxUYWJsZUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTFRhYmxlRWxlbWVudCo+KGVsZW1l
bnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZVRhYmxlU2VjdGlvbldyYXBw
ZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhU
TUxUYWJsZVNlY3Rpb25FbGVtZW50KHN0YXRpY19jYXN0PEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
Kj4oZWxlbWVudC5nZXQoKSkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlVGFibGVDZWxs
V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3
cmFwSFRNTFRhYmxlQ2VsbEVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQq
PihlbGVtZW50LmdldCgpKSk7Cit9CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVUZXh0QXJlYVdy
YXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3Jh
cEhUTUxUZXh0QXJlYUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVs
ZW1lbnQuZ2V0KCkpKTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZVRpdGxlV3JhcHBlcihQ
YXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQoreworICAgIHJldHVybiB3cmFwSFRNTFRp
dGxlRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MVGl0bGVFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkp
OworfQorCitzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlVGFibGVSb3dXcmFwcGVyKFBhc3NSZWZQdHI8
SFRNTEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdyYXBIVE1MVGFibGVSb3dFbGVt
ZW50KHN0YXRpY19jYXN0PEhUTUxUYWJsZVJvd0VsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7Cit9
CisKK3N0YXRpYyBncG9pbnRlciBjcmVhdGVVTGlzdFdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxl
bWVudD4gZWxlbWVudCkKK3sKKyAgICByZXR1cm4gd3JhcEhUTUxVTGlzdEVsZW1lbnQoc3RhdGlj
X2Nhc3Q8SFRNTFVMaXN0RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKworZ3BvaW50ZXIg
Y3JlYXRlSFRNTEVsZW1lbnRXcmFwcGVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+
IGVsZW1lbnQpCit7CisgICAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6QXRvbWljU3RyaW5nSW1w
bCosIENyZWF0ZUhUTUxFbGVtZW50V3JhcHBlckZ1bmN0aW9uPiBtYXA7CisgICAgaWYgKG1hcC5p
c0VtcHR5KCkpIHsKKyAgICAgICBtYXAuc2V0KGFUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVh
dGVBbmNob3JXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGFwcGxldFRhZy5sb2NhbE5hbWUoKS5p
bXBsKCksIGNyZWF0ZUFwcGxldFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQoYXJlYVRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksIGNyZWF0ZUFyZWFXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGJhc2VU
YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVCYXNlV3JhcHBlcik7CisgICAgICAgbWFwLnNl
dChiYXNlZm9udFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUJhc2VGb250V3JhcHBlcik7
CisgICAgICAgbWFwLnNldChibG9ja3F1b3RlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRl
QmxvY2txdW90ZVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQoYm9keVRhZy5sb2NhbE5hbWUoKS5p
bXBsKCksIGNyZWF0ZUJvZHlXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGJyVGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSwgY3JlYXRlQlJXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGJ1dHRvblRhZy5s
b2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUJ1dHRvbldyYXBwZXIpOworICAgICAgIG1hcC5zZXQo
Y2FudmFzVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlQ2FudmFzV3JhcHBlcik7CisgICAg
ICAgbWFwLnNldChjYXB0aW9uVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlVGFibGVDYXB0
aW9uV3JhcHBlcik7CisgICAgICAgbWFwLnNldChjb2xUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBj
cmVhdGVUYWJsZUNvbFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQoZGVsVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSwgY3JlYXRlTW9kV3JhcHBlcik7CisgICAgICAgbWFwLnNldChkaXJUYWcubG9jYWxO
YW1lKCkuaW1wbCgpLCBjcmVhdGVEaXJlY3RvcnlXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGRp
dlRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZURpdldyYXBwZXIpOworICAgICAgIG1hcC5z
ZXQoZGxUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVETGlzdFdyYXBwZXIpOworICAgICAg
IG1hcC5zZXQoZW1iZWRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVFbWJlZFdyYXBwZXIp
OworICAgICAgIG1hcC5zZXQoZmllbGRzZXRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVG
aWVsZFNldFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQoZm9udFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCksIGNyZWF0ZUZvbnRXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGZvcm1UYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCBjcmVhdGVGb3JtV3JhcHBlcik7CisgICAgICAgbWFwLnNldChmcmFtZVRhZy5s
b2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUZyYW1lV3JhcHBlcik7CisgICAgICAgbWFwLnNldChm
cmFtZXNldFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUZyYW1lU2V0V3JhcHBlcik7Cisg
ICAgICAgbWFwLnNldChoMVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUhlYWRpbmdXcmFw
cGVyKTsKKyAgICAgICBtYXAuc2V0KGhlYWRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVI
ZWFkV3JhcHBlcik7CisgICAgICAgbWFwLnNldChoclRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNy
ZWF0ZUhSV3JhcHBlcik7CisgICAgICAgbWFwLnNldChodG1sVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSwgY3JlYXRlSHRtbFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQoaWZyYW1lVGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSwgY3JlYXRlSUZyYW1lV3JhcHBlcik7CisgICAgICAgbWFwLnNldChpbWdUYWcu
bG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVJbWFnZVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQo
aW5wdXRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVJbnB1dFdyYXBwZXIpOworICAgICAg
IG1hcC5zZXQoaXNpbmRleFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUlzSW5kZXhXcmFw
cGVyKTsKKyAgICAgICBtYXAuc2V0KGxhYmVsVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRl
TGFiZWxXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGxlZ2VuZFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCksIGNyZWF0ZUxlZ2VuZFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQobGlUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCBjcmVhdGVMSVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQobGlua1RhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksIGNyZWF0ZUxpbmtXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KG1hcFRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZU1hcFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQo
bWFycXVlZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZU1hcnF1ZWVXcmFwcGVyKTsKKyAg
ICAgICBtYXAuc2V0KG1lbnVUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVNZW51V3JhcHBl
cik7CisgICAgICAgbWFwLnNldChtZXRhVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlTWV0
YVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQob2JqZWN0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwg
Y3JlYXRlT2JqZWN0V3JhcHBlcik7CisgICAgICAgbWFwLnNldChvbFRhZy5sb2NhbE5hbWUoKS5p
bXBsKCksIGNyZWF0ZU9MaXN0V3JhcHBlcik7CisgICAgICAgbWFwLnNldChvcHRncm91cFRhZy5s
b2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZU9wdEdyb3VwV3JhcHBlcik7CisgICAgICAgbWFwLnNl
dChvcHRpb25UYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVPcHRpb25XcmFwcGVyKTsKKyAg
ICAgICBtYXAuc2V0KHBUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVQYXJhZ3JhcGhXcmFw
cGVyKTsKKyAgICAgICBtYXAuc2V0KHBhcmFtVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRl
UGFyYW1XcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KHByZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCks
IGNyZWF0ZVByZVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQocVRhZy5sb2NhbE5hbWUoKS5pbXBs
KCksIGNyZWF0ZVF1b3RlV3JhcHBlcik7CisgICAgICAgbWFwLnNldChzY3JpcHRUYWcubG9jYWxO
YW1lKCkuaW1wbCgpLCBjcmVhdGVTY3JpcHRXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KHNlbGVj
dFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVNlbGVjdFdyYXBwZXIpOworICAgICAgIG1h
cC5zZXQoc3R5bGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVTdHlsZVdyYXBwZXIpOwor
ICAgICAgIG1hcC5zZXQodGFibGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVUYWJsZVdy
YXBwZXIpOworICAgICAgIG1hcC5zZXQodGJvZHlUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVh
dGVUYWJsZVNlY3Rpb25XcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KHRkVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSwgY3JlYXRlVGFibGVDZWxsV3JhcHBlcik7CisgICAgICAgbWFwLnNldCh0ZXh0YXJl
YVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVRleHRBcmVhV3JhcHBlcik7CisgICAgICAg
bWFwLnNldCh0aXRsZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVRpdGxlV3JhcHBlcik7
CisgICAgICAgbWFwLnNldCh0clRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVRhYmxlUm93
V3JhcHBlcik7CisgICAgICAgbWFwLnNldCh1bFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0
ZVVMaXN0V3JhcHBlcik7CisgICAgICAgbWFwLnNldChjb2xncm91cFRhZy5sb2NhbE5hbWUoKS5p
bXBsKCksIGNyZWF0ZVRhYmxlQ29sV3JhcHBlcik7CisgICAgICAgbWFwLnNldChoMlRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksIGNyZWF0ZUhlYWRpbmdXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGgz
VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlSGVhZGluZ1dyYXBwZXIpOworICAgICAgIG1h
cC5zZXQoaDRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVIZWFkaW5nV3JhcHBlcik7Cisg
ICAgICAgbWFwLnNldChoNVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZUhlYWRpbmdXcmFw
cGVyKTsKKyAgICAgICBtYXAuc2V0KGg2VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlSGVh
ZGluZ1dyYXBwZXIpOworICAgICAgIG1hcC5zZXQoaW1hZ2VUYWcubG9jYWxOYW1lKCkuaW1wbCgp
LCBjcmVhdGVJbWFnZVdyYXBwZXIpOworICAgICAgIG1hcC5zZXQoaW5zVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSwgY3JlYXRlTW9kV3JhcHBlcik7CisgICAgICAgbWFwLnNldChrZXlnZW5UYWcubG9j
YWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVTZWxlY3RXcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KGxp
c3RpbmdUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVQcmVXcmFwcGVyKTsKKyAgICAgICBt
YXAuc2V0KHRmb290VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlVGFibGVTZWN0aW9uV3Jh
cHBlcik7CisgICAgICAgbWFwLnNldCh0aFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVRh
YmxlQ2VsbFdyYXBwZXIpOworICAgICAgIG1hcC5zZXQodGhlYWRUYWcubG9jYWxOYW1lKCkuaW1w
bCgpLCBjcmVhdGVUYWJsZVNlY3Rpb25XcmFwcGVyKTsKKyAgICAgICBtYXAuc2V0KHhtcFRhZy5s
b2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVByZVdyYXBwZXIpOworICAgIH0KKworICAgIENyZWF0
ZUhUTUxFbGVtZW50V3JhcHBlckZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbiA9CisgICAg
ICAgIG1hcC5nZXQoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICBpZiAoY3JlYXRl
V3JhcHBlckZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGVs
ZW1lbnQpOworICAgIHJldHVybiB3cmFwSFRNTEVsZW1lbnQoZWxlbWVudC5nZXQoKSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5LmggYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVs
ZW1lbnRXcmFwcGVyRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjI2Nzc4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgV2Vi
S2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oCisjZGVmaW5lIFdlYktpdEhUTUxFbGVtZW50
V3JhcHBlckZhY3RvcnlfaAorCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJn
bGliLW9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgSFRNTEVsZW1lbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworZ3Bv
aW50ZXIgY3JlYXRlSFRNTEVsZW1lbnRXcmFwcGVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEVs
ZW1lbnQ+KTsKK30KKworI2VuZGlmIC8vIFdlYktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3Rvcnlf
aApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBt
CmluZGV4IDJhMzhlZmYuLjEwNjdhYmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTEwMiw2ICsxMDIsMTAgQEAgc3ViIENsYXNz
TmFtZVRvR09iamVjdFR5cGUgewogICAgICMgV2ViS2l0RE9NQ1NTIHJpZ2h0LCBzbyB3ZSBoYXZl
IHRvIGZpeCBpdCBtYW51YWxseSAoYW5kIHRoZXJlCiAgICAgIyBtaWdodCBiZSBtb3JlIGxpa2Ug
dGhpcyBpbiB0aGUgZnV0dXJlKQogICAgICRDTEFTU19OQU1FID1+IHMvRE9NQ1NTL0RPTV9DU1Mv
OworICAgICRDTEFTU19OQU1FID1+IHMvRE9NSFRNTC9ET01fSFRNTC87CisgICAgJENMQVNTX05B
TUUgPX4gcy9ET01ET00vRE9NX0RPTS87CisgICAgJENMQVNTX05BTUUgPX4gcy9ET01DREFUQS9E
T01fQ0RBVEEvOworICAgICRDTEFTU19OQU1FID1+IHMvRE9NWF9QQVRIL0RPTV9YX1BBVEgvOwog
ICAgIHJldHVybiAkQ0xBU1NfTkFNRTsKIH0KIApAQCAtMTI4LDcgKzEzMiw4IEBAIHN1YiBTa2lw
QXR0cmlidXRlIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgCiAgICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9
IHx8Ci0gICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbVNldHRlciJ9KSB7CisgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlIn0pIHsKICAgICAgICAg
cmV0dXJuIDE7CiAgICAgfQogICAgIApAQCAtMTQxLDYgKzE0Niw0OSBAQCBzdWIgU2tpcEF0dHJp
YnV0ZSB7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAorICAgICMgVGhpcyBpcyBmb3IgRE9N
V2luZG93LmlkbCBsb2NhdGlvbiBhdHRyaWJ1dGUKKyAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lIGVxICJsb2NhdGlvbiIpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisg
ICAgIyBUaGlzIGlzIGZvciBIVE1MSW5wdXQuaWRsIHZhbHVlQXNEYXRlCisgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSBlcSAidmFsdWVBc0RhdGUiKSB7CisgICAgICAgIHJldHVy
biAxOworICAgIH0KKworICAgICMgVGhpcyBpcyBmb3IgRE9NV2luZG93LmlkbCBDcnlwdG8gYXR0
cmlidXRlCisgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiQ3J5cHRvIikg
eworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKworICAgIHJldHVybiAwOworfQorCitzdWIg
U2tpcEZ1bmN0aW9uIHsKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKworICAgICMgU2tpcCBh
bGwgY3VzdG9tIG1ldGhvZHM7IGlzIHRoaXMgb2s/CisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0pIHsKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgfQorCisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudCIp
IHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lIGVxICJnZXRTVkdEb2N1bWVudCIpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
fQorCisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudCIpIHsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lIGVxICJnZXRDU1NDYW52YXNDb250ZXh0IikgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9
CisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTcyLDYgKzIyMCw3IEBAIHN1YiBHZXRHbGliVHlw
ZU5hbWUgewogICAgIG15ICRuYW1lID0gR2V0Q2xhc3NOYW1lKCR0eXBlKTsKIAogICAgIG15ICV0
eXBlcyA9ICgiRE9NU3RyaW5nIiwgImdjaGFyKiAiLAorICAgICAgICAgICAgICAgICAiQ29tcGFy
ZUhvdyIsICJndXNob3J0IiwKICAgICAgICAgICAgICAgICAgImZsb2F0IiwgImdmbG9hdCIsCiAg
ICAgICAgICAgICAgICAgICJkb3VibGUiLCAiZ2RvdWJsZSIsCiAgICAgICAgICAgICAgICAgICJi
b29sZWFuIiwgImdib29sZWFuIiwKQEAgLTE5NCw2ICsyNDMsNyBAQCBzdWIgSXNHRE9NQ2xhc3NU
eXBlIHsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwogCiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEg
IkRPTVN0cmluZyI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ciOwogICAg
IHJldHVybiAwIGlmICR0eXBlIGVxICJmbG9hdCI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEg
ImRvdWJsZSI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwpAQCAtMjk3LDYg
KzM0NywyNyBAQCBFT0YKICAgICAgICAgJGxvbmcgPSAiJHtjb25zdH0gJHt0eXBlfSAke2ludGVy
ZmFjZU5hbWV9LiR7cHJvcE5hbWV9IjsKIAogICAgICAgICBteSAkY29udmVydEZ1bmN0aW9uID0g
IiI7CisgICAgICAgIGlmICgkZ3R5cGUgZXEgInN0cmluZyIpIHsKKyAgICAgICAgICAgICRjb252
ZXJ0RnVuY3Rpb24gPSAiV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCI7CisgICAgICAgIH0gZWxz
aWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnRG
cm9tU3RyaW5nIn0pIHsKKyAgICAgICAgICAgICRjb252ZXJ0RnVuY3Rpb24gPSAiV2ViQ29yZTo6
U3RyaW5nOjpudW1iZXIiOworICAgICAgICB9CisKKyAgICAgICAgbXkgJHNldHRlckNvbnRlbnRI
ZWFkOworICAgICAgICBteSAkZ2V0dGVyQ29udGVudEhlYWQ7CisgICAgICAgIG15ICRyZWZsZWN0
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdCJ9
OworICAgICAgICBteSAkcmVmbGVjdFVSTCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RVUkwifTsKKyAgICAgICAgaWYgKCRyZWZsZWN0IHx8ICRy
ZWZsZWN0VVJMKSB7CisgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0ZU5hbWUgPSAoKCRy
ZWZsZWN0IHx8ICRyZWZsZWN0VVJMKSBlcSAiMSIpID8gJGNhbWVsUHJvcE5hbWUgOiAoJHJlZmxl
Y3QgfHwgJHJlZmxlY3RVUkwpOworICAgICAgICAgICAgbXkgJG5hbWVzcGFjZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5OYW1lc3BhY2VGb3JBdHRyaWJ1dGVOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY29udGVu
dEF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtuYW1lc3BhY2V9
LmgifSA9IDE7CisgICAgICAgICAgICBteSAkZ2V0QXR0cmlidXRlRnVuY3Rpb25OYW1lID0gJHJl
ZmxlY3RVUkwgPyAiZ2V0VVJMQXR0cmlidXRlIiA6ICJnZXRBdHRyaWJ1dGUiOworICAgICAgICAg
ICAgJHNldHRlckNvbnRlbnRIZWFkID0gImNvcmVTZWxmLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6
JHtuYW1lc3BhY2V9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIsICR7Y29udmVydEZ1bmN0
aW9ufShnX3ZhbHVlX2dldF8kZ3R5cGUodmFsdWUpKSI7CisgICAgICAgICAgICAkZ2V0dGVyQ29u
dGVudEhlYWQgPSAiY29yZVNlbGYtPiR7Z2V0QXR0cmlidXRlRnVuY3Rpb25OYW1lfShXZWJDb3Jl
Ojoke25hbWVzcGFjZX06OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0ciI7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAkc2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNlbGYtPnNldCR7
c2V0UHJvcE5hbWVGdW5jdGlvbn0oJHtjb252ZXJ0RnVuY3Rpb259KGdfdmFsdWVfZ2V0XyRndHlw
ZSh2YWx1ZSkpIjsKKyAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJjb3JlU2VsZi0+
JHtnZXRQcm9wTmFtZUZ1bmN0aW9ufSgiOworICAgICAgICB9CiAKICAgICAgICAgaWYgKCR3cml0
ZWFibGUgJiYgKCRndHlwZSBlcSAiYm9vbGVhbiIgfHwgJGd0eXBlIGVxICJmbG9hdCIgfHwgJGd0
eXBlIGVxICJkb3VibGUiIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEg
InVpbnQ2NCIgfHwgJGd0eXBlIGVxICJ1bG9uZyIgfHwgJGd0eXBlIGVxICJsb25nIiB8fCAKQEAg
LTMwNSwxNyArMzc2LDkgQEAgRU9GCiAKICAgICAgICAgICAgIHB1c2goQHR4dFNldFByb3BzLCAi
ICAgY2FzZSAke3Byb3BFbnVtfTpcbiAgICB7XG4iKTsKICAgICAgICAgICAgIHB1c2goQHR4dFNl
dFByb3BzLCAiICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7
JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307Ci0KLSAgICAgICAgICAgIGlmICgkZ3R5cGUg
ZXEgInN0cmluZyIpIHsKLSAgICAgICAgICAgICAgICAkY29udmVydEZ1bmN0aW9uID0gIldlYkNv
cmU6OlN0cmluZzo6ZnJvbVVURjgiOwotICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydEZyb21TdHJpbmcifSkgewot
ICAgICAgICAgICAgICAgICRjb252ZXJ0RnVuY3Rpb24gPSAiV2ViQ29yZTo6U3RyaW5nOjpudW1i
ZXIiOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiAg
ICAgICAgY29yZVNlbGYtPnNldCR7c2V0UHJvcE5hbWVGdW5jdGlvbn0oJHtjb252ZXJ0RnVuY3Rp
b259KGdfdmFsdWVfZ2V0XyRndHlwZSh2YWx1ZSkpIik7CisgICAgICAgICAgICBwdXNoKEB0eHRT
ZXRQcm9wcywgIiAgICAgICAgJHtzZXR0ZXJDb250ZW50SGVhZH0iKTsKICAgICAgICAgICAgIHB1
c2goQHR4dFNldFByb3BzLCAiLCBlYyIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9u
c307CiAgICAgICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIik7XG4iKTsKLQogICAgICAgICAg
ICAgcHVzaChAdHh0U2V0UHJvcHMsICIgICAgICAgIGJyZWFrO1xuICAgIH1cbiIpOwogICAgICAg
ICB9CiAKQEAgLTMzMCwxNiArMzkzLDE0IEBAIEVPRgogICAgICAgICBteSAkcG9zdENvbnZlcnRG
dW5jdGlvbiA9ICIiOwogICAgICAgICBteSAkZG9uZSA9IDA7CiAgICAgICAgIGlmICgkZ3R5cGUg
ZXEgInN0cmluZyIpIHsKLSAgICAgICAgICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBn
X3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT4k
e2dldFByb3BOYW1lRnVuY3Rpb259KCR7ZXhjZXB0aW9ufSkpKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAdHh0R2V0UHJvcHMsICIgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNv
bnZlcnRUb1VURjhTdHJpbmcoJHtnZXR0ZXJDb250ZW50SGVhZH0ke2V4Y2VwdGlvbn0pKSk7XG4i
KTsKICAgICAgICAgICAgICRkb25lID0gMTsKICAgICAgICAgfSBlbHNpZiAoJGd0eXBlIGVxICJv
YmplY3QiKSB7Ci0KICAgICAgICAgICAgICR0eHRHZXRQcm9wID0gPDwgIkVPRiI7CiAgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjoke3Byb3BUeXBlfT4gcHRyID0gY29yZVNlbGYtPiR7Z2V0UHJvcE5h
bWVGdW5jdGlvbn0oJHtleGNlcHRpb259KTsKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZh
bHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkpKTsKIEVPRgogICAgICAgICAgICAgcHVzaChAdHh0
R2V0UHJvcHMsICR0eHRHZXRQcm9wKTsKLQogICAgICAgICAgICAgJGRvbmUgPSAxOwogICAgICAg
ICB9CiAKQEAgLTUzMyw2ICs1OTQsNyBAQCBzdWIgZ2V0SW5jbHVkZUhlYWRlciB7CiAgICAgcmV0
dXJuICIiIGlmICR0eXBlIGVxICJmbG9hdCI7CiAgICAgcmV0dXJuICIiIGlmICR0eXBlIGVxICJi
b29sZWFuIjsKICAgICByZXR1cm4gIiIgaWYgJHR5cGUgZXEgInZvaWQiOworICAgIHJldHVybiAi
IiBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7CiAKICAgICByZXR1cm4gIiRuYW1lLmgiOwogfQpA
QCAtNTQwLDYgKzYwMiwxMCBAQCBzdWIgZ2V0SW5jbHVkZUhlYWRlciB7CiBzdWIgYWRkSW5jbHVk
ZUluQm9keSB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAorICAgIGlmICgkdHlwZSBlcSAiRE9N
T2JqZWN0IikgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbXkgJGhlYWRlciA9IGdl
dEluY2x1ZGVIZWFkZXIoJHR5cGUpOwogICAgIGlmICgkaGVhZGVyIGVxICIiKSB7CiAgICAgICAg
IHJldHVybjsKQEAgLTU1NSw2ICs2MjEsMTAgQEAgc3ViIGFkZEluY2x1ZGVJbkJvZHkgewogc3Vi
IEdlbmVyYXRlRnVuY3Rpb24gewogICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlTmFtZSwgJGZ1
bmN0aW9uLCAkcHJlZml4KSA9IEBfOwogCisgICAgaWYgKFNraXBGdW5jdGlvbigkZnVuY3Rpb24p
KSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBteSAkZnVuY3Rpb25TaWdOYW1lID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgbXkgJGZ1bmN0aW9uU2lnVHlwZSA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlOwogICAgIG15ICRmdW5jdGlvbk5hbWUgPSAid2Via2l0
X2RvbV8iIC4gZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkgLiAiXyIgLiAkcHJlZml4IC4gZGVj
YW1lbGl6ZSgkZnVuY3Rpb25TaWdOYW1lKTsKQEAgLTU3MSw3ICs2NDEsNyBAQCBzdWIgR2VuZXJh
dGVGdW5jdGlvbiB7CiAKICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9KSB7CiAgICAgICAgIG15ICRwYXJhbUlETFR5cGUgPSAkcGFyYW0tPnR5cGU7Ci0gICAg
ICAgIGlmICgkcGFyYW1JRExUeXBlIGVxICJFdmVudCIpIHsKKyAgICAgICAgaWYgKCRwYXJhbUlE
TFR5cGUgZXEgIkV2ZW50IiB8fCAkcGFyYW1JRExUeXBlIGVxICJFdmVudExpc3RlbmVyIikgewog
ICAgICAgICAgICAgcHVzaChAaEJvZHksICJcbi8qIFRPRE86IGV2ZW50IGZ1bmN0aW9uICR7ZnVu
Y3Rpb25OYW1lfSAqL1xuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiXG4vKiBUT0RP
OiBldmVudCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gKi9cblxuIik7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC01ODgsNyArNjU4LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IndlYmtpdC9XZWJLaXRET00ke3BhcmFtSURMVHlwZX1Q
cml2YXRlLmgifSA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCRw
YXJhbUlzR0RPTVR5cGUgfHwgKCRwYXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIpKSB7CisgICAg
ICAgIGlmICgkcGFyYW1Jc0dET01UeXBlIHx8ICgkcGFyYW1JRExUeXBlIGVxICJET01TdHJpbmci
KSB8fCAoJHBhcmFtSURMVHlwZSBlcSAiQ29tcGFyZUhvdyIpKSB7CiAgICAgICAgICAgICAkcGFy
YW1OYW1lID0gIl9nXyIgLiAkcGFyYW1OYW1lOwogICAgICAgICB9CiAgICAgICAgIGlmICgkY2Fs
bEltcGxQYXJhbXMpIHsKQEAgLTU5OCwxMyArNjY4LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24g
ewogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCRmdW5jdGlvblNpZ1R5cGUgZXEgIkV2ZW50
IikgewotICAgICAgICBwdXNoKEBoQm9keSwgIlxuLyogVE9ETzogZXZlbnQgZnVuY3Rpb24gJHtm
dW5jdGlvbk5hbWV9ICovXG5cbiIpOwotICAgICAgICBwdXNoKEBjQm9keSwgIlxuLyogVE9ETzog
ZXZlbnQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9ICovXG5cbiIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIiAmJiAkcmV0dXJuVmFsdWVJ
c0dET01UeXBlKSB7CisgICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIiAmJiAkcmV0dXJuVmFs
dWVJc0dET01UeXBlICYmICRmdW5jdGlvblNpZ1R5cGUgbmUgIkRPTU9iamVjdCIpIHsKICAgICAg
ICAgaWYgKCRmdW5jdGlvblNpZ1R5cGUgbmUgIkV2ZW50VGFyZ2V0IikgewogICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3sid2Via2l0L1dlYktpdERPTSR7ZnVuY3Rpb25TaWdUeXBlfVByaXZhdGUu
aCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IndlYmtpdC9XZWJLaXRET00ke2Z1
bmN0aW9uU2lnVHlwZX0uaCJ9ID0gMTsKQEAgLTY2Nyw4ICs3MzEsOSBAQCBzdWIgR2VuZXJhdGVG
dW5jdGlvbiB7CiAgICAgICAgIG15ICRwYXJhbUlzR0RPTVR5cGUgPSBJc0dET01DbGFzc1R5cGUo
JHBhcmFtSURMVHlwZSk7CiAgICAgICAgIGlmICgkcGFyYW1JRExUeXBlIGVxICJET01TdHJpbmci
KSB7CiAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjpTdHJpbmcgX2dfJHtw
YXJhbU5hbWV9ID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCgkcGFyYW1OYW1lKTtcbiIpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICgkcGFyYW1Jc0dET01UeXBlKSB7CisgICAgICAgIH0gZWxz
aWYgKCRwYXJhbUlETFR5cGUgZXEgIkNvbXBhcmVIb3ciKSB7CisgICAgICAgICAgICBwdXNoKEBj
Qm9keSwgIiAgICBXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdyBfZ18ke3BhcmFtTmFtZX0gPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdz4oJHBhcmFtTmFtZSk7XG4iKTsK
KyAgICAgICAgfSBlbHNpZiAoJHBhcmFtSXNHRE9NVHlwZSkgewogICAgICAgICAgICAgcHVzaChA
Y0JvZHksICIgICAgV2ViQ29yZTo6JHtwYXJhbUlETFR5cGV9ICogX2dfJHtwYXJhbU5hbWV9ID0g
V2ViS2l0Ojpjb3JlKCRwYXJhbU5hbWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoJHJldHVyblR5
cGUgbmUgInZvaWQiKSB7CiAgICAgICAgICAgICAgICAgIyBUT0RPOiByZXR1cm4gcHJvcGVyIGRl
ZmF1bHQgcmVzdWx0CkBAIC03MzIsMTMgKzc5Nyw0MCBAQCBFT0YKICAgICAgICAgcHVzaChAY0Jv
ZHksICJ9XG5cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uU2ln
VHlwZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgICBwdXNoKEBjQm9keSwgIiAgICAke2Fzc2ln
bn1jb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPiR7ZnVuY3Rpb25TaWdOYW1lfSgke2NhbGxJbXBs
UGFyYW1zfSR7ZXhjZXB0aW9uc30pKTtcbiIgKTsKKyAgICAgICAgbXkgJGdldHRlckNvbnRlbnRI
ZWFkOworICAgICAgICBteSAkcmVmbGVjdCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdCJ9OworICAgICAgICBteSAkcmVmbGVjdFVSTCA9ICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OworICAg
ICAgICBpZiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIHsKKyAgICAgICAgICAgIG15ICRjb250
ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIGVxICIxIikgPyAk
ZnVuY3Rpb25TaWdOYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKKyAgICAgICAgICAg
IG15ICRuYW1lc3BhY2UgPSAkY29kZUdlbmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFt
ZSgkaW50ZXJmYWNlTmFtZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR7bmFtZXNwYWNlfS5oIn0gPSAxOworICAgICAgICAgICAgbXkgJGdldEF0
dHJpYnV0ZUZ1bmN0aW9uTmFtZSA9ICRyZWZsZWN0VVJMID8gImdldFVSTEF0dHJpYnV0ZSIgOiAi
Z2V0QXR0cmlidXRlIjsKKyAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fzc2ln
bn1jb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPiR7Z2V0QXR0cmlidXRlRnVuY3Rpb25OYW1lfShX
ZWJDb3JlOjoke25hbWVzcGFjZX06OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0cikpO1xuIjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fz
c2lnbn1jb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPiR7ZnVuY3Rpb25TaWdOYW1lfSgke2NhbGxJ
bXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30pKTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBwdXNo
KEBjQm9keSwgIiAgICAke2dldHRlckNvbnRlbnRIZWFkfSIpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHB1c2goQGNCb2R5LCAiICAgICR7YXNzaWdufSR7YXNzaWduUHJlfWl0ZW0tPiR7ZnVuY3Rp
b25TaWdOYW1lfSgke2NhbGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtc
biIgKTsKKyAgICAgICAgbXkgJHNldHRlckNvbnRlbnRIZWFkOworICAgICAgICBteSAkcmVmbGVj
dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdCJ9
OworICAgICAgICBteSAkcmVmbGVjdFVSTCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OworICAgICAgICBpZiAoJHJlZmxlY3QgfHwgJHJl
ZmxlY3RVUkwpIHsKKyAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJl
ZmxlY3QgfHwgJHJlZmxlY3RVUkwpIGVxICIxIikgPyAkZnVuY3Rpb25TaWdOYW1lIDogKCRyZWZs
ZWN0IHx8ICRyZWZsZWN0VVJMKTsKKyAgICAgICAgICAgICRjb250ZW50QXR0cmlidXRlTmFtZSA9
fiBzL3NldC8vOworICAgICAgICAgICAgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gJGNvZGVHZW5l
cmF0b3ItPldLX2xjZmlyc3QoJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgIG15
ICRuYW1lc3BhY2UgPSAkY29kZUdlbmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgk
aW50ZXJmYWNlTmFtZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IiR7bmFtZXNwYWNlfS5oIn0gPSAxOworICAgICAgICAgICAgJHNldHRlckNvbnRl
bnRIZWFkID0gIiR7YXNzaWdufSR7YXNzaWduUHJlfWl0ZW0tPnNldEF0dHJpYnV0ZShXZWJDb3Jl
Ojoke25hbWVzcGFjZX06OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0ciwgJHtjYWxsSW1wbFBh
cmFtc30ke2V4Y2VwdGlvbnN9JHthc3NpZ25Qb3N0fSk7XG4iOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgJHNldHRlckNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7YXNzaWduUHJlfWl0
ZW0tPiR7ZnVuY3Rpb25TaWdOYW1lfSgke2NhbGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30ke2Fz
c2lnblBvc3R9KTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBwdXNoKEBjQm9keSwgIiAgICAk
e3NldHRlckNvbnRlbnRIZWFkfSIpOwogICAgICAgICAKICAgICAgICAgaWYoQHskZnVuY3Rpb24t
PnJhaXNlc0V4Y2VwdGlvbnN9KSB7CiAgICAgICAgICAgICBteSAkZXhjZXB0aW9uSGFuZGxpbmcg
PSA8PCAiRU9GIjsKLSAgICBpZihlYykgeworICAgIGlmIChlYykgewogICAgICAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjOwogICAgICAgICBXZWJDb3JlOjpnZXRF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24oZWMsIGVjZGVzYyk7CiAgICAgICAgIGdfc2V0X2Vycm9y
X2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNj
LmNvZGUsIGVjZGVzYy5uYW1lKTsKQEAgLTgxMyw5ICs5MDUsNyBAQCBzdWIgR2VuZXJhdGVGdW5j
dGlvbnMgewogICAgICAgICAkZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnMoJGF0dHJpYnV0ZS0+
Z2V0dGVyRXhjZXB0aW9ucyk7CiAgICAgICAgICRvYmplY3QtPkdlbmVyYXRlRnVuY3Rpb24oJGlu
dGVyZmFjZU5hbWUsICRmdW5jdGlvbiwgImdldF8iKTsKICAgICAgICAgCi0gICAgICAgIGlmICgk
YXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvIHx8Ci0gICAgICAgICAgICAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9ICAjIGNhbid0
IGhhbmRsZSB0aGlzIHlldAotICAgICAgICAgICAgKSB7CisgICAgICAgIGlmICgkYXR0cmlidXRl
LT50eXBlID1+IC9ecmVhZG9ubHkvKSB7CiAgICAgICAgICAgICBuZXh0IFRPUDsKICAgICAgICAg
fQogICAgICAgICAKQEAgLTk2MiwxMiArMTA1MiwxMCBAQCBFT0YKICAgICBjbG9zZShQUklWSEVB
REVSKTsKIH0KIAotc3ViIFVzZXNNYW51YWxUb0pTSW1wbGVtZW50YXRpb24geworc3ViIFVzZXNN
YW51YWxLaXRJbXBsZW1lbnRhdGlvbiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJl
dHVybiAxIGlmICR0eXBlIGVxICJOb2RlIiBvciAkdHlwZSBlcSAiRG9jdW1lbnQiIG9yICR0eXBl
IGVxICJIVE1MQ29sbGVjdGlvbiIgb3IKLSAgICAgICR0eXBlIGVxICJTVkdQYXRoU2VnIiBvciAk
dHlwZSBlcSAiU3R5bGVTaGVldCIgb3IgJHR5cGUgZXEgIkNTU1J1bGUiIG9yICR0eXBlIGVxICJD
U1NWYWx1ZSIgb3IKLSAgICAgICR0eXBlIGVxICJFdmVudCIgb3IgJHR5cGUgZXEgIkVsZW1lbnQi
IG9yICR0eXBlIGVxICJUZXh0IjsKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiTm9kZSIgb3Ig
JHR5cGUgZXEgIkVsZW1lbnQiOwogICAgIHJldHVybiAwOwogfQogCkBAIC05OTYsNyArMTA4NCw3
IEBAIHN1YiBHZW5lcmF0ZSB7CiAKICAgICAkaGRySW5jbHVkZXN7IndlYmtpdC8ke3BhcmVudENs
YXNzTmFtZX0uaCJ9ID0gMTsKIAotICAgIGlmICgkY2xhc3NOYW1lIG5lICJXZWJLaXRET01Ob2Rl
IikgeworICAgIGlmICghVXNlc01hbnVhbEtpdEltcGxlbWVudGF0aW9uKCRpbnRlcmZhY2VOYW1l
KSkgewogICAgICAgICBteSAkY29udmVydGVyID0gPDwgIkVPRiI7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuaWRsIGIvV2ViQ29yZS9kb20v
Tm9kZS5pZGwKaW5kZXggYzBmMTU5Yy4uM2FmMjBhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
Tm9kZS5pZGwKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5pZGwKQEAgLTYyLDkgKzYyLDcgQEAgbW9k
dWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBw
cmV2aW91c1NpYmxpbmc7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAg
ICAgIG5leHRTaWJsaW5nOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFw
ICAgICBhdHRyaWJ1dGVzOwotI2lmICFkZWZpbmVkKExBTkdVQUdFX0dPQkpFQ1QpIHx8ICFMQU5H
VUFHRV9HT0JKRUNUCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCAgICAgICAg
IG93bmVyRG9jdW1lbnQ7Ci0jZW5kaWYKIAogICAgICAgICBbT2xkU3R5bGVPYmpDLCBDdXN0b21d
IE5vZGUgaW5zZXJ0QmVmb3JlKGluIFtSZXR1cm5dIE5vZGUgbmV3Q2hpbGQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gTm9kZSByZWZDaGlsZCkK
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggMGFmZmMyNS4uYWJmYTYwNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNC0yMSAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAg
ICAgQWRkIHdlYmtpdF93ZWJfdmlld19nZXRfZG9jdW1lbnQgdG8gcmV0cmlldmUgdGhlIFdlYktp
dERPTURvY3VtZW50CisgICAgICAgIGZyb20gYSBXZWJLaXRXZWJWaWV3LCBhbmQgYSB2ZXJ5IHNp
bXBsZSB0ZXN0IGZvciBpdC4KKyAKKyAgICAgICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19nZXRfZG9jdW1lbnQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisKIDIw
MTAtMDQtMjEgIEpha3ViIFdpZWN6b3JlayAgPGp3aWVjem9yZWtAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvdGVz
dHMvdGVzdHdlYnZpZXcuYyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYwppbmRleCAz
NjUxMWQ3Li5kNmQ4NjdiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3
LmMKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0zMzYsNiArMzM2LDQx
IEBAIHN0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X3dpbmRvd19mZWF0dXJlcygpCiAg
ICAgZ3RrX3dpZGdldF9kZXN0cm95KHdpbmRvdyk7CiB9ICAgIAogCitzdGF0aWMgdm9pZCB0ZXN0
X3dlYmtpdF93ZWJfdmlld19kb2N1bWVudCgpCit7CisgICAgR3RrV2lkZ2V0KiB3aW5kb3c7Cisg
ICAgR3RrV2lkZ2V0KiB3ZWJfdmlldzsKKyAgICBnY2hhciogdGl0bGU7CisgICAgV2ViS2l0RE9N
RG9jdW1lbnQqIGRvY3VtZW50OworICAgIAorICAgIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdU
S19XSU5ET1dfVE9QTEVWRUwpOworICAgIHdlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X25ldygp
OworICAgIAorICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgd2Vi
X3ZpZXcpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKKworICAgIGxvb3AgPSBn
X21haW5fbG9vcF9uZXcoTlVMTCwgVFJVRSk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRv
dywgIm1hcC1ldmVudCIsCisgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKG1hcF9ldmVu
dF9jYiksIGxvb3ApOworICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKKworICAgIGRvY3VtZW50
ID0gd2Via2l0X3dlYl92aWV3X2dldF9kb2N1bWVudChXRUJLSVRfV0VCX1ZJRVcod2ViX3ZpZXcp
KTsKKyAgICBnX2Fzc2VydChkb2N1bWVudCk7CisgICAgd2Via2l0X2RvbV9kb2N1bWVudF9zZXRf
dGl0bGUoZG9jdW1lbnQsICJGaXJzdCB0aXRsZSIpOworICAgIHRpdGxlID0gd2Via2l0X2RvbV9k
b2N1bWVudF9nZXRfdGl0bGUoZG9jdW1lbnQpOworICAgIGdfYXNzZXJ0KHRpdGxlKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodGl0bGUsID09LCAiRmlyc3QgdGl0bGUiKTsKKyAgICBnX2ZyZWUodGl0
bGUpOworICAgIHdlYmtpdF9kb21fZG9jdW1lbnRfc2V0X3RpdGxlKGRvY3VtZW50LCAiVGl0bGUg
Y2hhbmdlZCBieSBET00gYmluZGluZ3MiKTsKKyAgICB0aXRsZSA9IHdlYmtpdF9kb21fZG9jdW1l
bnRfZ2V0X3RpdGxlKGRvY3VtZW50KTsKKyAgICBnX2Fzc2VydCh0aXRsZSk7CisgICAgZ19hc3Nl
cnRfY21wc3RyKHRpdGxlLCA9PSwgIlRpdGxlIGNoYW5nZWQgYnkgRE9NIGJpbmRpbmdzIik7Cisg
ICAgZ19mcmVlKHRpdGxlKTsKKyAgICAKKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kod2luZG93KTsK
K30gICAgCisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBTb3VwU2Vy
dmVyKiBzZXJ2ZXI7CkBAIC0zNjQsNiArMzk5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Rlc3Ryb3kiLCB0
ZXN0X3dlYmtpdF93ZWJfdmlld19kZXN0cm95KTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJr
aXQvd2Vidmlldy9ncmFiX2ZvY3VzIiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZ3JhYl9mb2N1cyk7
CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvd2luZG93LWZlYXR1cmVzIiwg
dGVzdF93ZWJraXRfd2ViX3ZpZXdfd2luZG93X2ZlYXR1cmVzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1
bmMoIi93ZWJraXQvd2Vidmlldy9kb2N1bWVudCIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X2RvY3Vt
ZW50KTsKIAogICAgIHJldHVybiBnX3Rlc3RfcnVuICgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAppbmRleCAyMmY2ZDA0Li43MWY5MWRhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcApAQCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKKyNpbmNs
dWRlICJ3ZWJraXQvV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KQEAgLTQ0MzEsMyAr
NDQzMiwyNyBAQCBXZWJLaXRDYWNoZU1vZGVsIHdlYmtpdF9nZXRfY2FjaGVfbW9kZWwoKQogICAg
IHdlYmtpdF9pbml0KCk7CiAgICAgcmV0dXJuIGNhY2hlTW9kZWw7CiB9CisKKy8qKgorICogd2Vi
a2l0X3dlYl92aWV3X2dldF9kb2N1bWVudDoKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3
CisgKiAKKyAqIFJldHVybnM6IHRoZSAjV2ViS2l0RE9NRG9jdW1lbnQgY3VycmVudGx5IGxvYWRl
ZCBpbiB0aGUgQHdlYlZpZXcKKyAqCisgKiBTaW5jZTogMS4zLjAKKyAqKi8KK1dlYktpdERPTURv
Y3VtZW50Kgord2Via2l0X3dlYl92aWV3X2dldF9kb2N1bWVudChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSwgMCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZy
YW1lKCk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgRG9j
dW1lbnQqIGRvYyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NRG9jdW1lbnQq
PihraXQoZG9jKSk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggZTY5ZGUwYS4u
ZDg4NDJhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisr
KyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogCiAjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tLmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgpA
QCAtMzgxLDYgKzM4Miw5IEBAIHdlYmtpdF9zZXRfY2FjaGVfbW9kZWwgICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRDYWNoZU1vZGVsICAgICBjYWNoZV9tb2RlCiBXRUJLSVRfQVBJIFdl
YktpdENhY2hlTW9kZWwKIHdlYmtpdF9nZXRfY2FjaGVfbW9kZWwgICAgICAgICAgICAgICAgICAg
ICAgICAgICh2b2lkKTsKIAorV0VCS0lUX0FQSSBXZWJLaXRET01Eb2N1bWVudCAqCit3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2RvY3VtZW50ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgKndlYlZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKLS0gCjEuNi42LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54166</attachid>
            <date>2010-04-23 09:15:02 -0700</date>
            <delta_ts>2010-05-02 19:19:10 -0700</delta_ts>
            <desc>headerfix.diff</desc>
            <filename>headerfix.diff</filename>
            <type>text/plain</type>
            <size>1521</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA1YTZmYThmZGM2ZGNjODFmNmUzMjY2MmNiNDJhM2Y0ZDM4OTc4NTdkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBG
cmksIDIzIEFwciAyMDEwIDE4OjEyOjUwICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNC0y
MyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBJ
bmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tLmg+IGluIHRoZSBtYWluIHdlYmtpdC5oIGhlYWRlci4K
CiAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6Ci0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAg
ICAgfCAgIDExICsrKysrKysrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCB8ICAgIDEg
KwogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggOTAzOWY2Zi4uNzlmYjMxNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNC0yMyAgWGFu
IExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAg
SW5jbHVkZSA8d2Via2l0L3dlYmtpdGRvbS5oPiBpbiB0aGUgbWFpbiB3ZWJraXQuaCBoZWFkZXIu
CisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisKIDIwMTAtMDQtMjIgIERhdmUgTW9vcmUg
IDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkg
R2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggMTdiMTk3Yi4uZmM3MWMyYyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR2ZXJzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0ZG9tLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRvd25sb2FkLmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdGdlb2xvY2F0aW9ucG9saWN5ZGVjaXNpb24uaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0aGl0dGVzdHJlc3VsdC5oPgotLSAKMS42LjYuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54206</attachid>
            <date>2010-04-23 18:14:47 -0700</date>
            <delta_ts>2010-05-02 19:19:26 -0700</delta_ts>
            <desc>propertywarnings.diff</desc>
            <filename>propertywarnings.diff</filename>
            <type>text/plain</type>
            <size>5483</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA4MjgzY2Y5ZTY0NWQyNDk0MWM4ZTU5MzA1Y2MwM2YxNTg2OWJlYjI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBT
YXQsIDI0IEFwciAyMDEwIDAyOjU3OjEyICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNC0y
MyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBE
byBub3QgZ2VuZXJhdGUgdW5uZWVkZWQgYm9pbGVycGxhdGUgaW4ge2dldCxzZXR9X3Byb3BlcnR5
IG1ldGhvZHMKICAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBwcm9wZXJ0aWVzIHRvIGdlbmVyYXRl
IGNvZGUgZm9yLiBUaGlzIGdldHMgcmlkCiAgICAgICAgb2YgbG90cyBvZiBjb21waWxlciB3YXJu
aW5ncy4KCiAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBt
OgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTMgKysrKwogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0
LnBtIHwgICA2NSArKysrKysrKysrKysrKysrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgNjggaW5z
ZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMThiNjE4Li40ZjliNDZjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4
IEBACiAyMDEwLTA0LTIzICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAorICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBHT2JqZWN0IERP
TSBiaW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM1OTAKKworICAgICAgICBEbyBub3QgZ2VuZXJhdGUgdW5uZWVkZWQgYm9pbGVycGxhdGUg
aW4ge2dldCxzZXR9X3Byb3BlcnR5IG1ldGhvZHMKKyAgICAgICAgd2hlbiB0aGVyZSBhcmUgbm8g
cHJvcGVydGllcyB0byBnZW5lcmF0ZSBjb2RlIGZvci4gVGhpcyBnZXRzIHJpZAorICAgICAgICBv
ZiBsb3RzIG9mIGNvbXBpbGVyIHdhcm5pbmdzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKworMjAxMC0wNC0yMyAgWGFuIExvcGV6ICA8eGxv
cGV6QGlnYWxpYS5jb20+CisKICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgR1RLKyBib3RzLgogCiAg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckdPYmplY3QucG0KaW5kZXggM2FmN2Q5ZC4uNWYyN2I5MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBi
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAtMjY4
LDYgKzI2OCwzOSBAQCBzdWIgSXNHRE9NQ2xhc3NUeXBlIHsKICAgICByZXR1cm4gMTsKIH0KIAor
c3ViIEdldFJlYWRhYmxlUHJvcGVydGllcyB7CisgICAgbXkgJHByb3BlcnRpZXMgPSBzaGlmdDsK
KworICAgIG15IEByZXN1bHQgPSAoKTsKKworICAgIGZvcmVhY2ggbXkgJHByb3BlcnR5IChAeyRw
cm9wZXJ0aWVzfSkgeworICAgICAgICBpZiAoIVNraXBBdHRyaWJ1dGUoJHByb3BlcnR5KSkgewor
ICAgICAgICAgICAgcHVzaChAcmVzdWx0LCAkcHJvcGVydHkpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIEByZXN1bHQ7Cit9CisKK3N1YiBHZXRXcml0ZWFibGVQcm9wZXJ0aWVzIHsK
KyAgICBteSAkcHJvcGVydGllcyA9IHNoaWZ0OworICAgIG15IEByZXN1bHQgPSAoKTsKKworICAg
IGZvcmVhY2ggbXkgJHByb3BlcnR5IChAeyRwcm9wZXJ0aWVzfSkgeworICAgICAgICBteSAkd3Jp
dGVhYmxlID0gJHByb3BlcnR5LT50eXBlICF+IC9ecmVhZG9ubHkvOworICAgICAgICBteSAkZ3R5
cGUgPSBHZXRHVmFsdWVUeXBlTmFtZSgkcHJvcGVydHktPnNpZ25hdHVyZS0+dHlwZSk7CisgICAg
ICAgIG15ICRoYXNHdHlwZVNpZ25hdHVyZSA9ICgkZ3R5cGUgZXEgImJvb2xlYW4iIHx8ICRndHlw
ZSBlcSAiZmxvYXQiIHx8ICRndHlwZSBlcSAiZG91YmxlIiB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGd0eXBlIGVxICJ1aW50NjQiIHx8ICRndHlwZSBlcSAidWxvbmciIHx8
ICRndHlwZSBlcSAibG9uZyIgfHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
Z3R5cGUgZXEgInVpbnQiIHx8ICRndHlwZSBlcSAidXNob3J0IiB8fCAkZ3R5cGUgZXEgInVjaGFy
IiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBlIGVxICJjaGFyIiB8
fCAkZ3R5cGUgZXEgInN0cmluZyIpOworICAgICAgICBpZiAoJHdyaXRlYWJsZSAmJiAkaGFzR3R5
cGVTaWduYXR1cmUpIHsKKyAgICAgICAgICAgIHB1c2goQHJlc3VsdCwgJHByb3BlcnR5KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBAcmVzdWx0OworfQorCiBzdWIgR2VuZXJhdGVQ
cm9wZXJ0aWVzIHsKICAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUsICRkYXRhTm9kZSkg
PSBAXzsKIApAQCAtMjg4LDI0ICszMjEsNDQgQEAgRU9GCiAgICAgbXkgQHR4dFNldFByb3BzID0g
KCk7CiAgICAgbXkgQHR4dEdldFByb3BzID0gKCk7CiAKKyAgICBteSBAcmVhZGFibGVQcm9wZXJ0
aWVzID0gR2V0UmVhZGFibGVQcm9wZXJ0aWVzKCRkYXRhTm9kZS0+YXR0cmlidXRlcyk7CisKICAg
ICBteSAkcHJpdkZ1bmN0aW9uID0gR2V0Q29yZU9iamVjdCgkaW50ZXJmYWNlTmFtZSwgImNvcmVT
ZWxmIiwgInNlbGYiKTsKIAogICAgIG15ICR0eHRHZXRQcm9wID0gPDwgIkVPRiI7CiBzdGF0aWMg
dm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CitFT0YK
KyAgICBwdXNoKEB0eHRHZXRQcm9wcywgJHR4dEdldFByb3ApOworICAgIGlmIChzY2FsYXIgQHJl
YWRhYmxlUHJvcGVydGllcyA+IDApIHsKKyAgICAgICAgJHR4dEdldFByb3AgPSA8PCAiRU9GIjsK
ICAgICAke2NsYXNzTmFtZX0qIHNlbGYgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30ob2JqZWN0KTsK
ICAgICAkcHJpdkZ1bmN0aW9uCitFT0YKKyAgICBwdXNoKEB0eHRHZXRQcm9wcywgJHR4dEdldFBy
b3ApOworICAgIH0KIAorICAgICR0eHRHZXRQcm9wID0gPDwgIkVPRiI7CiAgICAgc3dpdGNoIChw
cm9wX2lkKSB7CiBFT0YKICAgICBwdXNoKEB0eHRHZXRQcm9wcywgJHR4dEdldFByb3ApOwogCisg
ICAgbXkgQHdyaXRlYWJsZVByb3BlcnRpZXMgPSBHZXRXcml0ZWFibGVQcm9wZXJ0aWVzKFxAcmVh
ZGFibGVQcm9wZXJ0aWVzKTsKKwogICAgIG15ICR0eHRTZXRQcm9wcyA9IDw8ICJFT0YiOwogc3Rh
dGljIHZvaWQgJHtsb3dlckNhc2VJZmFjZU5hbWV9X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVj
KQogeworRU9GCitwdXNoKEB0eHRTZXRQcm9wcywgJHR4dFNldFByb3BzKTsKKyAgICBpZiAoc2Nh
bGFyIEB3cml0ZWFibGVQcm9wZXJ0aWVzID4gMCkgeworICAgICAgICAkdHh0U2V0UHJvcHMgPSA8
PCAiRU9GIjsKICAgICAke2NsYXNzTmFtZX0gKnNlbGYgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30o
b2JqZWN0KTsKICAgICAkcHJpdkZ1bmN0aW9uCitFT0YKK3B1c2goQHR4dFNldFByb3BzLCAkdHh0
U2V0UHJvcHMpOworICAgIH0KIAorICAgICR0eHRTZXRQcm9wcyA9IDw8ICJFT0YiOwogICAgIHN3
aXRjaCAocHJvcF9pZCkgewogRU9GCiAgICAgcHVzaChAdHh0U2V0UHJvcHMsICR0eHRTZXRQcm9w
cyk7CkBAIC0zMTMsMTEgKzM2Niw3IEBAIEVPRgogICAgICMgSXRlcmF0ZSBvdmVyIHRoZSBpbnRl
cmZhY2UgYXR0cmlidXRlcyBhbmQgZ2VuZXJhdGUgYSBwcm9wZXJ0eSBmb3IKICAgICAjIGVhY2gg
b25lIG9mIHRoZW0uCiAgIFNLSVBFTlVNOgotICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHsk
ZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgIGlmIChTa2lwQXR0cmlidXRlKCRhdHRy
aWJ1dGUpKSB7Ci0gICAgICAgICAgICBuZXh0IFNLSVBFTlVNOwotICAgICAgICB9Ci0KKyAgICBm
b3JlYWNoIG15ICRhdHRyaWJ1dGUgKEByZWFkYWJsZVByb3BlcnRpZXMpIHsKICAgICAgICAgbXkg
JGNhbWVsUHJvcE5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIG15
ICRzZXRQcm9wTmFtZUZ1bmN0aW9uID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNhbWVs
UHJvcE5hbWUpOwogICAgICAgICBteSAkZ2V0UHJvcE5hbWVGdW5jdGlvbiA9ICRjb2RlR2VuZXJh
dG9yLT5XS19sY2ZpcnN0KCRjYW1lbFByb3BOYW1lKTsKQEAgLTM3NSwxMSArNDI0LDcgQEAgRU9G
CiAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNlbGYtPiR7Z2V0UHJvcE5h
bWVGdW5jdGlvbn0oIjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgkd3JpdGVhYmxlICYmICgk
Z3R5cGUgZXEgImJvb2xlYW4iIHx8ICRndHlwZSBlcSAiZmxvYXQiIHx8ICRndHlwZSBlcSAiZG91
YmxlIiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBlIGVxICJ1aW50NjQiIHx8
ICRndHlwZSBlcSAidWxvbmciIHx8ICRndHlwZSBlcSAibG9uZyIgfHwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQiIHx8ICRndHlwZSBlcSAidXNob3J0IiB8fCAk
Z3R5cGUgZXEgInVjaGFyIiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBlIGVx
ICJjaGFyIiB8fCAkZ3R5cGUgZXEgInN0cmluZyIpKSB7Ci0KKyAgICAgICAgaWYgKGdyZXAgeyRf
IGVxICRhdHRyaWJ1dGV9IEB3cml0ZWFibGVQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICBwdXNo
KEB0eHRTZXRQcm9wcywgIiAgIGNhc2UgJHtwcm9wRW51bX06XG4gICAge1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7XG4iKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAg
ICAgcHVzaChAdHh0U2V0UHJvcHMsICIgICAgICAgICR7c2V0dGVyQ29udGVudEhlYWR9Iik7Ci0t
IAoxLjYuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54309</attachid>
            <date>2010-04-26 09:54:47 -0700</date>
            <delta_ts>2010-05-02 19:19:40 -0700</delta_ts>
            <desc>testdomdocument.diff</desc>
            <filename>testdomdocument.diff</filename>
            <type>text/plain</type>
            <size>9068</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiOWEyMzI4Y2ExODUzNmMxNGI0YjYyZGRiN2ZjODM4YTdiMTNlNjJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBN
b24sIDI2IEFwciAyMDEwIDE0OjIzOjAxICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNC0y
NiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBB
ZGQgV2ViS2l0RE9NRG9jdW1lbnQgdGVzdHMgdG8gdGhlIGJ1aWxkLgoKICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgoKV2ViS2l0L2d0azoKCjIwMTAtMDQtMjYgIFhhbiBMb3BleiAgPHhsb3BlekBp
Z2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAg
W0dUS10gR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM1OTAKCiAgICAgICAgTW92ZSBXZWJLaXRET01Eb2N1bWVudCB1
bml0IHRlc3RzIHRvIHRoZWlyIG93biBmaWxlLgoKICAgICAgICAqIHRlc3RzL3Rlc3Rkb21kb2N1
bWVudC5jOiBBZGRlZC4KICAgICAgICAoZmluaXNoX2xvYWRpbmcpOgogICAgICAgIChkb21fZG9j
dW1lbnRfZml4dHVyZV9zZXR1cCk6CiAgICAgICAgKGRvbV9kb2N1bWVudF9maXh0dXJlX3RlYXJk
b3duKToKICAgICAgICAodGVzdF9kb21fZG9jdW1lbnRfdGl0bGUpOgogICAgICAgIChtYWluKToK
ICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJ2aWV3LmM6Ci0tLQogQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTEgKysrKwogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg
ICAgICB8ICAgIDkgKysrLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAg
MTcgKysrKysrCiBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb2N1bWVudC5jIHwgIDEwNiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9ndGsvdGVzdHMvdGVzdHdl
YnZpZXcuYyAgICAgfCAgIDM2IC0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxNDIgaW5z
ZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0
ay90ZXN0cy90ZXN0ZG9tZG9jdW1lbnQuYwoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBlZDJlMmU1Li4yZDFiNmNkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQtMjYgIFhhbiBMb3BleiAgPHhsb3Bl
ekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAorCisgICAgICAgIEFkZCBXZWJLaXRET01E
b2N1bWVudCB0ZXN0cyB0byB0aGUgYnVpbGQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KwogMjAxMC0wNC0yMSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05V
bWFrZWZpbGUuYW0KaW5kZXggMzY4MjIwZC4uNjk5YTVmZiAxMDA2NDQKLS0tIGEvR05VbWFrZWZp
bGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTYyMiw3ICs2MjIsOSBAQCB3ZWJraXRfdGVz
dHNfbGRmbGFncyA9IFwKIAktbm8taW5zdGFsbCBcCiAJLW5vLWZhc3QtaW5zdGFsbAogCi1URVNU
X1BST0dTICs9IFByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0aHR0cGJhY2tlbmQgXAorVEVTVF9QUk9H
UyArPSBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3Rkb21kb2N1bWVudCBcCisJUHJvZ3JhbXMv
dW5pdHRlc3RzL3Rlc3RodHRwYmFja2VuZCBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3Rsb2Fk
aW5nIFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdGdsb2JhbHMgXAogCVByb2dyYW1zL3VuaXR0
ZXN0cy90ZXN0bWltZWhhbmRsaW5nIFwKQEAgLTY0Myw2ICs2NDUsMTEgQEAgVEVTVF9QUk9HUyAr
PSBQcm9ncmFtcy91bml0dGVzdHMvdGVzdGh0dHBiYWNrZW5kIFwKIAlQcm9ncmFtcy91bml0dGVz
dHMvdGVzdGtleWV2ZW50cwogCiAjIEFkZCBhZGRpdGlvbmFsIHRlc3RzIGhlcmUKK1Byb2dyYW1z
X3VuaXR0ZXN0c190ZXN0ZG9tZG9jdW1lbnRfU09VUkNFUyA9IFdlYktpdC9ndGsvdGVzdHMvdGVz
dGRvbWRvY3VtZW50LmMKK1Byb2dyYW1zX3VuaXR0ZXN0c190ZXN0ZG9tZG9jdW1lbnRfQ0ZMQUdT
ID0gJCh3ZWJraXRfdGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3Rkb21kb2N1
bWVudF9MREFERCA9ICQod2Via2l0X3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rl
c3Rkb21kb2N1bWVudF9MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRmbGFncykKKwogUHJvZ3Jh
bXNfdW5pdHRlc3RzX3Rlc3RodHRwYmFja2VuZF9TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0cy90
ZXN0aHR0cGJhY2tlbmQuYwogUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3RodHRwYmFja2VuZF9DRkxB
R1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVzdHNfdGVzdGh0dHBi
YWNrZW5kX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDc5ZmIzMTcuLmNlY2Q5
Y2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDQtMjYgIFhhbiBMb3BleiAgPHhsb3BlekBp
Z2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAorCisgICAgICAgIE1vdmUgV2ViS2l0RE9NRG9j
dW1lbnQgdW5pdCB0ZXN0cyB0byB0aGVpciBvd24gZmlsZS4KKworICAgICAgICAqIHRlc3RzL3Rl
c3Rkb21kb2N1bWVudC5jOiBBZGRlZC4KKyAgICAgICAgKGZpbmlzaF9sb2FkaW5nKToKKyAgICAg
ICAgKGRvbV9kb2N1bWVudF9maXh0dXJlX3NldHVwKToKKyAgICAgICAgKGRvbV9kb2N1bWVudF9m
aXh0dXJlX3RlYXJkb3duKToKKyAgICAgICAgKHRlc3RfZG9tX2RvY3VtZW50X3RpdGxlKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJ2aWV3LmM6CisKIDIwMTAtMDQt
MjMgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0ZG9tZG9j
dW1lbnQuYyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdGRvbWRvY3VtZW50LmMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQxMGJhZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9ndGsvdGVzdHMvdGVzdGRvbWRvY3VtZW50LmMKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMuaCIKKwor
I2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2luY2x1ZGUgPGd0
ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisKKyNpZiBHTElCX0NIRUNLX1ZF
UlNJT04oMiwgMTYsIDApICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE0LCAwKQorCisjZGVmaW5l
IEhUTUxfRE9DVU1FTlRfVElUTEUgIjxodG1sPjxoZWFkPjx0aXRsZT5UaGlzIGlzIHRoZSB0aXRs
ZTwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IgorCit0eXBlZGVmIHN0cnVjdCB7
CisgICAgR3RrV2lkZ2V0KiB3ZWJWaWV3OworICAgIEdNYWluTG9vcCogbG9vcDsKK30gRG9tRG9j
dW1lbnRGaXh0dXJlOworCitzdGF0aWMgZ2Jvb2xlYW4gZmluaXNoX2xvYWRpbmcoRG9tRG9jdW1l
bnRGaXh0dXJlKiBmaXh0dXJlKQoreworICAgIGlmIChnX21haW5fbG9vcF9pc19ydW5uaW5nKGZp
eHR1cmUtPmxvb3ApKQorICAgICAgICBnX21haW5fbG9vcF9xdWl0KGZpeHR1cmUtPmxvb3ApOwor
CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZCBkb21fZG9jdW1lbnRfZml4dHVy
ZV9zZXR1cChEb21Eb2N1bWVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkK
K3sKKyAgICBmaXh0dXJlLT5sb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOworICAg
IGZpeHR1cmUtPndlYlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7CisgICAgZ19vYmplY3Rf
cmVmX3NpbmsoZml4dHVyZS0+d2ViVmlldyk7CisKKyAgICBpZiAoZGF0YSAhPSBOVUxMKQorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcoV0VCS0lUX1dFQl9WSUVXIChmaXh0dXJl
LT53ZWJWaWV3KSwgKGNvbnN0IGNoYXIqKSBkYXRhLCBOVUxMLCBOVUxMLCBOVUxMKTsKKworICAg
IGdfaWRsZV9hZGQoKEdTb3VyY2VGdW5jKWZpbmlzaF9sb2FkaW5nLCBmaXh0dXJlKTsKKyAgICBn
X21haW5fbG9vcF9ydW4oZml4dHVyZS0+bG9vcCk7Cit9CisKK3N0YXRpYyB2b2lkIGRvbV9kb2N1
bWVudF9maXh0dXJlX3RlYXJkb3duKERvbURvY3VtZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0
cG9pbnRlciBkYXRhKQoreworICAgIGdfb2JqZWN0X3VucmVmKGZpeHR1cmUtPndlYlZpZXcpOwor
ICAgIGdfbWFpbl9sb29wX3VucmVmKGZpeHR1cmUtPmxvb3ApOworfQorCitzdGF0aWMgdm9pZCB0
ZXN0X2RvbV9kb2N1bWVudF90aXRsZShEb21Eb2N1bWVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25z
dHBvaW50ZXIgZGF0YSkKK3sKKyAgICBnX2Fzc2VydChmaXh0dXJlKTsKKyAgICBXZWJLaXRXZWJW
aWV3KiB2aWV3ID0gKFdlYktpdFdlYlZpZXcqKWZpeHR1cmUtPndlYlZpZXc7CisgICAgZ19hc3Nl
cnQodmlldyk7CisgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl92
aWV3X2dldF9kb21fZG9jdW1lbnQodmlldyk7CisgICAgZ19hc3NlcnQoZG9jdW1lbnQpOworICAg
IGdjaGFyKiB0aXRsZSA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50KTsK
KyAgICBnX2Fzc2VydCh0aXRsZSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRpdGxlLCA9PSwgIlRo
aXMgaXMgdGhlIHRpdGxlIik7CisgICAgZ19mcmVlKHRpdGxlKTsKKyAgICB3ZWJraXRfZG9tX2Rv
Y3VtZW50X3NldF90aXRsZShkb2N1bWVudCwgKGdjaGFyKikiVGhpcyBpcyB0aGUgc2Vjb25kIHRp
dGxlIik7CisgICAgdGl0bGUgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF90aXRsZShkb2N1bWVu
dCk7CisgICAgZ19hc3NlcnQodGl0bGUpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0aXRsZSwgPT0s
ICJUaGlzIGlzIHRoZSBzZWNvbmQgdGl0bGUiKTsKKyAgICBnX2ZyZWUodGl0bGUpOworfQorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgaWYgKCFnX3RocmVhZF9zdXBw
b3J0ZWQoKSkKKyAgICAgICAgZ190aHJlYWRfaW5pdChOVUxMKTsKKworICAgIGd0a190ZXN0X2lu
aXQoJmFyZ2MsICZhcmd2LCBOVUxMKTsKKworICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvIik7CisKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2RvbWRvY3VtZW50
L3Rlc3RfdGl0bGUiLAorICAgICAgICAgICAgICAgRG9tRG9jdW1lbnRGaXh0dXJlLCBIVE1MX0RP
Q1VNRU5UX1RJVExFLAorICAgICAgICAgICAgICAgZG9tX2RvY3VtZW50X2ZpeHR1cmVfc2V0dXAs
CisgICAgICAgICAgICAgICB0ZXN0X2RvbV9kb2N1bWVudF90aXRsZSwKKyAgICAgICAgICAgICAg
IGRvbV9kb2N1bWVudF9maXh0dXJlX3RlYXJkb3duKTsKKworICAgIHJldHVybiBnX3Rlc3RfcnVu
KCk7Cit9CisKKyNlbHNlCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
Z19jcml0aWNhbCgiWW91IHdpbGwgbmVlZCBhdCBsZWFzdCBnbGliLTIuMTYuMCBhbmQgZ3RrLTIu
MTQuMCB0byBydW4gdGhlIHVuaXQgdGVzdHMuIERvaW5nIG5vdGhpbmcgbm93LiIpOworICAgIHJl
dHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdl
YnZpZXcuYyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYwppbmRleCA3MWJjOGJlLi4z
NjUxMWQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKKysrIGIv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0zMzYsNDEgKzMzNiw2IEBAIHN0YXRp
YyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X3dpbmRvd19mZWF0dXJlcygpCiAgICAgZ3RrX3dp
ZGdldF9kZXN0cm95KHdpbmRvdyk7CiB9ICAgIAogCi1zdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93
ZWJfdmlld19kb2N1bWVudCgpCi17Ci0gICAgR3RrV2lkZ2V0KiB3aW5kb3c7Ci0gICAgR3RrV2lk
Z2V0KiB3ZWJfdmlldzsKLSAgICBnY2hhciogdGl0bGU7Ci0gICAgV2ViS2l0RE9NRG9jdW1lbnQq
IGRvY3VtZW50OwotICAgIAotICAgIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1df
VE9QTEVWRUwpOwotICAgIHdlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X25ldygpOwotICAgIAot
ICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgd2ViX3ZpZXcpOwot
ICAgIGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKLQotICAgIGxvb3AgPSBnX21haW5fbG9v
cF9uZXcoTlVMTCwgVFJVRSk7Ci0KLSAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgIm1hcC1l
dmVudCIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKG1hcF9ldmVudF9jYiksIGxv
b3ApOwotICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKLQotICAgIGRvY3VtZW50ID0gd2Via2l0
X3dlYl92aWV3X2dldF9kb21fZG9jdW1lbnQoV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSk7Ci0g
ICAgZ19hc3NlcnQoZG9jdW1lbnQpOwotICAgIHdlYmtpdF9kb21fZG9jdW1lbnRfc2V0X3RpdGxl
KGRvY3VtZW50LCAoZ2NoYXIqKSJGaXJzdCB0aXRsZSIpOwotICAgIHRpdGxlID0gd2Via2l0X2Rv
bV9kb2N1bWVudF9nZXRfdGl0bGUoZG9jdW1lbnQpOwotICAgIGdfYXNzZXJ0KHRpdGxlKTsKLSAg
ICBnX2Fzc2VydF9jbXBzdHIodGl0bGUsID09LCAiRmlyc3QgdGl0bGUiKTsKLSAgICBnX2ZyZWUo
dGl0bGUpOwotICAgIHdlYmtpdF9kb21fZG9jdW1lbnRfc2V0X3RpdGxlKGRvY3VtZW50LCAoZ2No
YXIqKSJUaXRsZSBjaGFuZ2VkIGJ5IERPTSBiaW5kaW5ncyIpOwotICAgIHRpdGxlID0gd2Via2l0
X2RvbV9kb2N1bWVudF9nZXRfdGl0bGUoZG9jdW1lbnQpOwotICAgIGdfYXNzZXJ0KHRpdGxlKTsK
LSAgICBnX2Fzc2VydF9jbXBzdHIodGl0bGUsID09LCAiVGl0bGUgY2hhbmdlZCBieSBET00gYmlu
ZGluZ3MiKTsKLSAgICBnX2ZyZWUodGl0bGUpOwotICAgIAotICAgIGd0a193aWRnZXRfZGVzdHJv
eSh3aW5kb3cpOwotfSAgICAKLQogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewog
ICAgIFNvdXBTZXJ2ZXIqIHNlcnZlcjsKQEAgLTM5OSw3ICszNjQsNiBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcv
ZGVzdHJveSIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X2Rlc3Ryb3kpOwogICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2dyYWJfZm9jdXMiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19n
cmFiX2ZvY3VzKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy93aW5kb3ct
ZmVhdHVyZXMiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld193aW5kb3dfZmVhdHVyZXMpOwotICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2RvY3VtZW50IiwgdGVzdF93ZWJraXRfd2Vi
X3ZpZXdfZG9jdW1lbnQpOwogCiAgICAgcmV0dXJuIGdfdGVzdF9ydW4gKCk7CiB9Ci0tIAoxLjYu
Ni4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54310</attachid>
            <date>2010-04-26 09:55:38 -0700</date>
            <delta_ts>2010-05-02 19:19:54 -0700</delta_ts>
            <desc>testelementsbytagname.diff</desc>
            <filename>testelementsbytagname.diff</filename>
            <type>text/plain</type>
            <size>3679</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBkMDkwMTY1MWZhYjBjNmRmODZhOTljNWUxNGVjZjU0MjQyNGMwM2EwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBN
b24sIDI2IEFwciAyMDEwIDE1OjQ4OjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNC0y
NiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBU
ZXN0IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5X3RhZ19uYW1lLgoKICAgICAg
ICAqIHRlc3RzL3Rlc3Rkb21kb2N1bWVudC5jOgogICAgICAgICh0ZXN0X2RvbV9kb2N1bWVudF9n
ZXRfZWxlbWVudHNfYnlfdGFnX25hbWUpOgogICAgICAgIChtYWluKToKLS0tCiBXZWJLaXQvZ3Rr
L0NoYW5nZUxvZyAgICAgICAgICAgICAgIHwgICAxMyArKysrKysrKysrKysrCiBXZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3Rkb21kb2N1bWVudC5jIHwgICAzNCArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCBjZWNkOWNhLi5mMjQyNTRiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDE5IEBACiAgICAgICAg
IFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAogCisgICAgICAgIFRlc3Qgd2Via2l0X2RvbV9kb2N1
bWVudF9nZXRfZWxlbWVudHNfYnlfdGFnX25hbWUuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0ZG9t
ZG9jdW1lbnQuYzoKKyAgICAgICAgKHRlc3RfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50c19ieV90
YWdfbmFtZSk6CisgICAgICAgIChtYWluKToKKworMjAxMC0wNC0yNiAgWGFuIExvcGV6ICA8eGxv
cGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKICAgICAgICAgTW92ZSBXZWJLaXRE
T01Eb2N1bWVudCB1bml0IHRlc3RzIHRvIHRoZWlyIG93biBmaWxlLgogCiAgICAgICAgICogdGVz
dHMvdGVzdGRvbWRvY3VtZW50LmM6IEFkZGVkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0
cy90ZXN0ZG9tZG9jdW1lbnQuYyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdGRvbWRvY3VtZW50LmMK
aW5kZXggNWQxMGJhZC4uNzE2MmM5YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0
ZG9tZG9jdW1lbnQuYworKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb2N1bWVudC5jCkBA
IC0yNyw2ICsyNyw3IEBACiAjaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsIDE2LCAwKSAmJiBHVEtf
Q0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKIAogI2RlZmluZSBIVE1MX0RPQ1VNRU5UX1RJVExFICI8
aHRtbD48aGVhZD48dGl0bGU+VGhpcyBpcyB0aGUgdGl0bGU8L3RpdGxlPjwvaGVhZD48Ym9keT48
L2JvZHk+PC9odG1sPiIKKyNkZWZpbmUgSFRNTF9ET0NVTUVOVF9FTEVNRU5UUyAiPGh0bWw+PGJv
ZHk+PHVsPjxsaT4xPC9saT48bGk+MjwvbGk+PGxpPjM8L2xpPjwvdWw+PC9ib2R5PjwvaHRtbD4i
CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBHdGtXaWRnZXQqIHdlYlZpZXc7CkBAIC03OCw2ICs3
OSwzMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2RvbV9kb2N1bWVudF90aXRsZShEb21Eb2N1bWVudEZp
eHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZAogICAgIGdfZnJlZSh0aXRsZSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHRlc3RfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50c19ieV90YWdfbmFtZShE
b21Eb2N1bWVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKK3sKKyAgICBn
X2Fzc2VydChmaXh0dXJlKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gKFdlYktpdFdlYlZp
ZXcqKWZpeHR1cmUtPndlYlZpZXc7CisgICAgZ19hc3NlcnQodmlldyk7CisgICAgV2ViS2l0RE9N
RG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl92aWV3X2dldF9kb21fZG9jdW1lbnQodmll
dyk7CisgICAgZ19hc3NlcnQoZG9jdW1lbnQpOworICAgIFdlYktpdERPTU5vZGVMaXN0KiBsaXN0
ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlfdGFnX25hbWUoZG9jdW1lbnQs
IChnY2hhciopImxpIik7CisgICAgZ19hc3NlcnQobGlzdCk7CisgICAgZ3Vsb25nIGxlbmd0aCA9
IHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdCk7CisgICAgZ19hc3NlcnRfY21w
aW50KGxlbmd0aCwgPT0sIDMpOworCisgICAgZ3VpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykgeworICAgICAgICBXZWJLaXRET01Ob2RlKiBpdGVtID0gd2Via2l0X2Rv
bV9ub2RlX2xpc3RfaXRlbShsaXN0LCBpKTsKKyAgICAgICAgZ19hc3NlcnQoaXRlbSk7CisgICAg
ICAgIFdlYktpdERPTUVsZW1lbnQqIGVsZW1lbnQgPSAoV2ViS2l0RE9NRWxlbWVudCopaXRlbTsK
KyAgICAgICAgZ19hc3NlcnQoZWxlbWVudCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJr
aXRfZG9tX2VsZW1lbnRfZ2V0X3RhZ19uYW1lKGVsZW1lbnQpLCA9PSwgIkxJIik7CisgICAgICAg
IFdlYktpdERPTUhUTUxFbGVtZW50KiBodG1sRWxlbWVudCA9IChXZWJLaXRET01IVE1MRWxlbWVu
dCopZWxlbWVudDsKKyAgICAgICAgY2hhciogbiA9IGdfc3RyZHVwX3ByaW50ZigiJWQiLCBpKzEp
OworICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2lu
bmVyX3RleHQoaHRtbEVsZW1lbnQpLCA9PSwgbik7CisgICAgICAgIGdfZnJlZShuKTsKKyAgICB9
Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBpZiAoIWdfdGhy
ZWFkX3N1cHBvcnRlZCgpKQpAQCAtOTMsNiArMTIxLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKICAgICAgICAgICAgICAgIHRlc3RfZG9tX2RvY3VtZW50X3RpdGxlLAogICAg
ICAgICAgICAgICAgZG9tX2RvY3VtZW50X2ZpeHR1cmVfdGVhcmRvd24pOwogCisgICAgZ190ZXN0
X2FkZCgiL3dlYmtpdC9kb21kb2N1bWVudC90ZXN0X2dldF9lbGVtZW50c19ieV90YWdfbmFtZSIs
CisgICAgICAgICAgICAgICBEb21Eb2N1bWVudEZpeHR1cmUsIEhUTUxfRE9DVU1FTlRfRUxFTUVO
VFMsCisgICAgICAgICAgICAgICBkb21fZG9jdW1lbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAg
ICAgICAgIHRlc3RfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50c19ieV90YWdfbmFtZSwKKyAgICAg
ICAgICAgICAgIGRvbV9kb2N1bWVudF9maXh0dXJlX3RlYXJkb3duKTsKKwogICAgIHJldHVybiBn
X3Rlc3RfcnVuKCk7CiB9CiAKLS0gCjEuNi42LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54311</attachid>
            <date>2010-04-26 09:56:29 -0700</date>
            <delta_ts>2010-05-02 19:20:09 -0700</delta_ts>
            <desc>testgetelementsbyclassname.diff</desc>
            <filename>testgetelementsbyclassname.diff</filename>
            <type>text/plain</type>
            <size>3553</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAyMTc0MjIyOTZmMGNkY2NmMmM1ZDg3YWNhYmU5NDE5YWJlZWNjNWI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBN
b24sIDI2IEFwciAyMDEwIDE1OjU0OjAzICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNC0y
NiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBU
ZXN0IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5X2NsYXNzX25hbWUuCgogICAg
ICAgICogdGVzdHMvdGVzdGRvbWRvY3VtZW50LmM6CiAgICAgICAgKHRlc3RfZG9tX2RvY3VtZW50
X2dldF9lbGVtZW50c19ieV9jbGFzc19uYW1lKToKICAgICAgICAobWFpbik6Ci0tLQogV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrKwogV2ViS2l0
L2d0ay90ZXN0cy90ZXN0ZG9tZG9jdW1lbnQuYyB8ICAgMzAgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCBmMjQyNTRiLi4yMDliOTM0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDE5IEBACiAgICAgICAg
IFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAogCisgICAgICAgIFRlc3Qgd2Via2l0X2RvbV9kb2N1
bWVudF9nZXRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZS4KKworICAgICAgICAqIHRlc3RzL3Rlc3Rk
b21kb2N1bWVudC5jOgorICAgICAgICAodGVzdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5
X2NsYXNzX25hbWUpOgorICAgICAgICAobWFpbik6CisKKzIwMTAtMDQtMjYgIFhhbiBMb3BleiAg
PHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAorCiAgICAgICAgIFRlc3Qgd2Vi
a2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlfdGFnX25hbWUuCiAKICAgICAgICAgKiB0
ZXN0cy90ZXN0ZG9tZG9jdW1lbnQuYzoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvdGVz
dGRvbWRvY3VtZW50LmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb2N1bWVudC5jCmluZGV4
IDcxNjJjOWEuLmUyOTU3ZTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdGRvbWRv
Y3VtZW50LmMKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0ZG9tZG9jdW1lbnQuYwpAQCAtMjgs
NiArMjgsNyBAQAogCiAjZGVmaW5lIEhUTUxfRE9DVU1FTlRfVElUTEUgIjxodG1sPjxoZWFkPjx0
aXRsZT5UaGlzIGlzIHRoZSB0aXRsZTwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+
IgogI2RlZmluZSBIVE1MX0RPQ1VNRU5UX0VMRU1FTlRTICI8aHRtbD48Ym9keT48dWw+PGxpPjE8
L2xpPjxsaT4yPC9saT48bGk+MzwvbGk+PC91bD48L2JvZHk+PC9odG1sPiIKKyNkZWZpbmUgSFRN
TF9ET0NVTUVOVF9FTEVNRU5UU19DTEFTUyAiPGh0bWw+PGJvZHk+PGRpdiBjbGFzcz1cInRlc3Rc
Ij48L2Rpdj48ZGl2IGNsYXNzPVwic3RyYW5nZVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXN0XCI+
PC9kaXY+PC9ib2R5PjwvaHRtbD4iCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBHdGtXaWRnZXQq
IHdlYlZpZXc7CkBAIC0xMDYsNiArMTA3LDI5IEBAIHN0YXRpYyB2b2lkIHRlc3RfZG9tX2RvY3Vt
ZW50X2dldF9lbGVtZW50c19ieV90YWdfbmFtZShEb21Eb2N1bWVudEZpeHR1cmUqIGZpeHR1CiAg
ICAgfQogfQogCitzdGF0aWMgdm9pZCB0ZXN0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlf
Y2xhc3NfbmFtZShEb21Eb2N1bWVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0
YSkKK3sKKyAgICBnX2Fzc2VydChmaXh0dXJlKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0g
KFdlYktpdFdlYlZpZXcqKWZpeHR1cmUtPndlYlZpZXc7CisgICAgZ19hc3NlcnQodmlldyk7Cisg
ICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl92aWV3X2dldF9kb21f
ZG9jdW1lbnQodmlldyk7CisgICAgZ19hc3NlcnQoZG9jdW1lbnQpOworICAgIFdlYktpdERPTU5v
ZGVMaXN0KiBsaXN0ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlfY2xhc3Nf
bmFtZShkb2N1bWVudCwgKGdjaGFyKikidGVzdCIpOworICAgIGdfYXNzZXJ0KGxpc3QpOworICAg
IGd1bG9uZyBsZW5ndGggPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVuZ3RoKGxpc3QpOwor
ICAgIGdfYXNzZXJ0X2NtcGludChsZW5ndGgsID09LCAyKTsKKworICAgIGd1aW50IGk7CisKKyAg
ICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgV2ViS2l0RE9NTm9kZSog
aXRlbSA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdCwgaSk7CisgICAgICAgIGdfYXNz
ZXJ0KGl0ZW0pOworICAgICAgICBXZWJLaXRET01FbGVtZW50KiBlbGVtZW50ID0gKFdlYktpdERP
TUVsZW1lbnQqKWl0ZW07CisgICAgICAgIGdfYXNzZXJ0KGVsZW1lbnQpOworICAgICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X2RvbV9lbGVtZW50X2dldF90YWdfbmFtZShlbGVtZW50KSwgPT0s
ICJESVYiKTsKKyAgICB9Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsK
ICAgICBpZiAoIWdfdGhyZWFkX3N1cHBvcnRlZCgpKQpAQCAtMTI3LDYgKzE1MSwxMiBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICB0ZXN0X2RvbV9kb2N1
bWVudF9nZXRfZWxlbWVudHNfYnlfdGFnX25hbWUsCiAgICAgICAgICAgICAgICBkb21fZG9jdW1l
bnRfZml4dHVyZV90ZWFyZG93bik7CiAKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2RvbWRvY3Vt
ZW50L3Rlc3RfZ2V0X2VsZW1lbnRzX2J5X2NsYXNzX25hbWUiLAorICAgICAgICAgICAgICAgRG9t
RG9jdW1lbnRGaXh0dXJlLCBIVE1MX0RPQ1VNRU5UX0VMRU1FTlRTX0NMQVNTLAorICAgICAgICAg
ICAgICAgZG9tX2RvY3VtZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X2Rv
bV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSwKKyAgICAgICAgICAgICAgIGRv
bV9kb2N1bWVudF9maXh0dXJlX3RlYXJkb3duKTsKKwogICAgIHJldHVybiBnX3Rlc3RfcnVuKCk7
CiB9CiAKLS0gCjEuNi42LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54312</attachid>
            <date>2010-04-26 09:57:13 -0700</date>
            <delta_ts>2010-05-02 19:20:25 -0700</delta_ts>
            <desc>testgetelementbyid.diff</desc>
            <filename>testgetelementbyid.diff</filename>
            <type>text/plain</type>
            <size>3791</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBjMzEzMWYyNjAxYzIxODQ3ZDNkMGNkZjg0N2U4Mjk3NGQ2MDU5NDhmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBN
b24sIDI2IEFwciAyMDEwIDE2OjA1OjExICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNC0y
NiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBU
ZXN0IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQ7CgogICAgICAgICogdGVz
dHMvdGVzdGRvbWRvY3VtZW50LmM6CiAgICAgICAgKHRlc3RfZG9tX2RvY3VtZW50X2dldF9lbGVt
ZW50X2J5X2lkKToKICAgICAgICAobWFpbik6Ci0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrKwogV2ViS2l0L2d0ay90ZXN0cy90ZXN0ZG9t
ZG9jdW1lbnQuYyB8ICAgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo
YW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyMDliOTM0Li5h
NGQ4Y2Q4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwpAQCAtNSw2ICs1LDE5IEBACiAgICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJp
bmRpbmdzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MzU5MAogCisgICAgICAgIFRlc3Qgd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9p
ZDsKKworICAgICAgICAqIHRlc3RzL3Rlc3Rkb21kb2N1bWVudC5jOgorICAgICAgICAodGVzdF9k
b21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQpOgorICAgICAgICAobWFpbik6CisKKzIwMTAt
MDQtMjYgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAor
CiAgICAgICAgIFRlc3Qgd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlfY2xhc3Nf
bmFtZS4KIAogICAgICAgICAqIHRlc3RzL3Rlc3Rkb21kb2N1bWVudC5jOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0ZG9tZG9jdW1lbnQuYyBiL1dlYktpdC9ndGsvdGVzdHMvdGVz
dGRvbWRvY3VtZW50LmMKaW5kZXggZTI5NTdlMS4uM2U2MjA3NCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay90ZXN0cy90ZXN0ZG9tZG9jdW1lbnQuYworKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rk
b21kb2N1bWVudC5jCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVmaW5lIEhUTUxfRE9DVU1FTlRfVElU
TEUgIjxodG1sPjxoZWFkPjx0aXRsZT5UaGlzIGlzIHRoZSB0aXRsZTwvdGl0bGU+PC9oZWFkPjxi
b2R5PjwvYm9keT48L2h0bWw+IgogI2RlZmluZSBIVE1MX0RPQ1VNRU5UX0VMRU1FTlRTICI8aHRt
bD48Ym9keT48dWw+PGxpPjE8L2xpPjxsaT4yPC9saT48bGk+MzwvbGk+PC91bD48L2JvZHk+PC9o
dG1sPiIKICNkZWZpbmUgSFRNTF9ET0NVTUVOVF9FTEVNRU5UU19DTEFTUyAiPGh0bWw+PGJvZHk+
PGRpdiBjbGFzcz1cInRlc3RcIj48L2Rpdj48ZGl2IGNsYXNzPVwic3RyYW5nZVwiPjwvZGl2Pjxk
aXYgY2xhc3M9XCJ0ZXN0XCI+PC9kaXY+PC9ib2R5PjwvaHRtbD4iCisjZGVmaW5lIEhUTUxfRE9D
VU1FTlRfRUxFTUVOVFNfSUQgIjxodG1sPjxib2R5PjxkaXYgaWQ9XCJ0ZXN0b2tcIj48L2Rpdj48
ZGl2IGlkPVwidGVzdGJhZFwiPmZpcnN0PC9kaXY+PGRpdiBpZD1cInRlc3RiYWRcIj5zZWNvbmQ8
L2Rpdj48L2JvZHk+PC9odG1sPiIKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIEd0a1dpZGdldCog
d2ViVmlldzsKQEAgLTEzMCw2ICsxMzEsMjYgQEAgc3RhdGljIHZvaWQgdGVzdF9kb21fZG9jdW1l
bnRfZ2V0X2VsZW1lbnRzX2J5X2NsYXNzX25hbWUoRG9tRG9jdW1lbnRGaXh0dXJlKiBmaXgKICAg
ICB9CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lk
KERvbURvY3VtZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKQoreworICAg
IGdfYXNzZXJ0KGZpeHR1cmUpOworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSAoV2ViS2l0V2Vi
VmlldyopZml4dHVyZS0+d2ViVmlldzsKKyAgICBnX2Fzc2VydCh2aWV3KTsKKyAgICBXZWJLaXRE
T01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RvbV9kb2N1bWVudCh2
aWV3KTsKKyAgICBnX2Fzc2VydChkb2N1bWVudCk7CisgICAgV2ViS2l0RE9NRWxlbWVudCogZWxl
bWVudCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQsIChn
Y2hhciopInRlc3RvayIpOworICAgIGdfYXNzZXJ0KGVsZW1lbnQpOworICAgIGVsZW1lbnQgPSB3
ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAoZ2NoYXIqKSJ0
aGlzLWlkLWRvZXMtbm90LWV4aXN0Iik7CisgICAgZ19hc3NlcnQoZWxlbWVudCA9PSAwKTsKKyAg
ICAvKiBUaGUgRE9NIHNwZWMgc2F5cyB0aGUgcmV0dXJuIHZhbHVlIGlzIHVuZGVmaW5lZCB3aGVu
IHRoZXJlJ3MKKyAgICAgKiBtb3JlIHRoYW4gb25lIGVsZW1lbnQgd2l0aCB0aGUgc2FtZSBpZDsg
aW4gb3VyIGNhc2UgdGhlIGZpcnN0CisgICAgICogb25lIHdpbGwgYmUgcmV0dXJuZWQgKi8KKyAg
ICBlbGVtZW50ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVu
dCwgKGdjaGFyKikidGVzdGJhZCIpOworICAgIGdfYXNzZXJ0KGVsZW1lbnQpOworICAgIFdlYktp
dERPTUhUTUxFbGVtZW50KiBodG1sRWxlbWVudCA9IChXZWJLaXRET01IVE1MRWxlbWVudCopZWxl
bWVudDsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2lu
bmVyX3RleHQoaHRtbEVsZW1lbnQpLCA9PSwgKGdjaGFyKikiZmlyc3QiKTsKK30KKwogaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAgIGlmICghZ190aHJlYWRfc3VwcG9ydGVk
KCkpCkBAIC0xNTcsNiArMTc4LDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
ICAgICAgICAgICAgICAgIHRlc3RfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50c19ieV9jbGFzc19u
YW1lLAogICAgICAgICAgICAgICAgZG9tX2RvY3VtZW50X2ZpeHR1cmVfdGVhcmRvd24pOwogCisg
ICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9kb21kb2N1bWVudC90ZXN0X2dldF9lbGVtZW50X2J5X2lk
IiwKKyAgICAgICAgICAgICAgIERvbURvY3VtZW50Rml4dHVyZSwgSFRNTF9ET0NVTUVOVF9FTEVN
RU5UU19JRCwKKyAgICAgICAgICAgICAgIGRvbV9kb2N1bWVudF9maXh0dXJlX3NldHVwLAorICAg
ICAgICAgICAgICAgdGVzdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQsCisgICAgICAg
ICAgICAgICBkb21fZG9jdW1lbnRfZml4dHVyZV90ZWFyZG93bik7CisKICAgICByZXR1cm4gZ190
ZXN0X3J1bigpOwogfQogCi0tIAoxLjYuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54697</attachid>
            <date>2010-04-29 06:56:54 -0700</date>
            <delta_ts>2010-05-02 19:20:41 -0700</delta_ts>
            <desc>skipfunctioncleanup.diff</desc>
            <filename>skipfunctioncleanup.diff</filename>
            <type>text/plain</type>
            <size>5891</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBlNjA5MWQ2ZWU5MjRlNDFhMjE1NzNhY2M0MmEzMWMyYTAxODMwNjkwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDI4IEFwciAyMDEwIDE1OjQyOjIxICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNC0y
OCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBV
bmlmeSBtb3JlIGxvZ2ljIHRvIHNraXAgZnVuY3Rpb25zIGludG8gU2tpcEZ1bmN0aW9uLCBhbmQK
ICAgICAgICB3aGl0ZWxpc3QgdGhlIHR3byBbQ3VzdG9tXSBtZXRob2RzIGluIEhUTUxDb2xsZWN0
aW9uLmlkbC4KCiAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0
LnBtOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTIgKysrKysKIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09i
amVjdC5wbSB8ICAgNTIgKysrKysrKysrKystLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDM5
IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZlOTk2Ny4uOWRkYWU4ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMC0wNC0yOCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gR09iamVj
dCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzNTkwCisKKyAgICAgICAgVW5pZnkgbW9yZSBsb2dpYyB0byBza2lwIGZ1bmN0aW9u
cyBpbnRvIFNraXBGdW5jdGlvbiwgYW5kCisgICAgICAgIHdoaXRlbGlzdCB0aGUgdHdvIFtDdXN0
b21dIG1ldGhvZHMgaW4gSFRNTENvbGxlY3Rpb24uaWRsLgorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKwogMjAxMC0wNC0yNyAgVGhvbWFzIFph
bmRlciA8dC56YW5kZXJAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtCmluZGV4IDVmMjdiOTIuLmM0ODlhZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTE3Nyw5ICsxNzcsMjAgQEAgc3Vi
IFNraXBBdHRyaWJ1dGUgewogCiBzdWIgU2tpcEZ1bmN0aW9uIHsKICAgICBteSAkZnVuY3Rpb24g
PSBzaGlmdDsKKyAgICBteSAkZGVjYW1lbGl6ZSA9IHNoaWZ0OworICAgIG15ICRwcmVmaXggPSBz
aGlmdDsKIAotICAgICMgRklYTUU6IHNraXAgYWxsIGN1c3RvbSBtZXRob2RzOyBpcyB0aGlzIG9r
PwotICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbSJ9KSB7CisgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICJ3ZWJraXRfZG9tXyIgLiAkZGVjYW1l
bGl6ZSAuICJfIiAuICRwcmVmaXggLiBkZWNhbWVsaXplKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lKTsKKyAgICBteSAkaXNDdXN0b21GdW5jdGlvbiA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0gfHwKKyAgICAgICAgJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn07CisK
KyAgICBpZiAoJGlzQ3VzdG9tRnVuY3Rpb24gJiYKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBuZSAi
d2Via2l0X2RvbV9ub2RlX3JlcGxhY2VfY2hpbGQiICYmIAorICAgICAgICAkZnVuY3Rpb25OYW1l
IG5lICJ3ZWJraXRfZG9tX25vZGVfaW5zZXJ0X2JlZm9yZSIgJiYKKyAgICAgICAgJGZ1bmN0aW9u
TmFtZSBuZSAid2Via2l0X2RvbV9ub2RlX3JlcGxhY2VfY2hpbGQiICYmCisgICAgICAgICRmdW5j
dGlvbk5hbWUgbmUgIndlYmtpdF9kb21fbm9kZV9hcHBlbmRfY2hpbGQiICYmCisgICAgICAgICRm
dW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21faHRtbF9jb2xsZWN0aW9uX2l0ZW0iICYmCisgICAg
ICAgICRmdW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21faHRtbF9jb2xsZWN0aW9uX25hbWVkX2l0
ZW0iKSB7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIApAQCAtNjcyLDEzICs2ODMsMTQgQEAg
c3ViIGFkZEluY2x1ZGVJbkJvZHkgewogc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAgIG15ICgk
b2JqZWN0LCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uLCAkcHJlZml4KSA9IEBfOwogCi0gICAg
aWYgKFNraXBGdW5jdGlvbigkZnVuY3Rpb24pKSB7CisgICAgbXkgJGRlY2FtZWxpemUgPSBGaXhV
cERlY2FtZWxpemVkTmFtZShkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKSk7CisKKyAgICBpZiAo
U2tpcEZ1bmN0aW9uKCRmdW5jdGlvbiwgJGRlY2FtZWxpemUsICRwcmVmaXgpKSB7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBteSAkZnVuY3Rpb25TaWdOYW1lID0gJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPm5hbWU7CiAgICAgbXkgJGZ1bmN0aW9uU2lnVHlwZSA9ICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT50eXBlOwotICAgIG15ICRkZWNhbWVsaXplID0gRml4VXBEZWNhbWVsaXplZE5hbWUo
ZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkpOwogICAgIG15ICRmdW5jdGlvbk5hbWUgPSAid2Vi
a2l0X2RvbV8iIC4gJGRlY2FtZWxpemUgLiAiXyIgLiAkcHJlZml4IC4gZGVjYW1lbGl6ZSgkZnVu
Y3Rpb25TaWdOYW1lKTsKICAgICBteSAkcmV0dXJuVHlwZSA9IEdldEdsaWJUeXBlTmFtZSgkZnVu
Y3Rpb25TaWdUeXBlKTsKICAgICBteSAkcmV0dXJuVmFsdWVJc0dET01UeXBlID0gSXNHRE9NQ2xh
c3NUeXBlKCRmdW5jdGlvblNpZ1R5cGUpOwpAQCAtNzI5LDE5ICs3NDEsNiBAQCBzdWIgR2VuZXJh
dGVGdW5jdGlvbiB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7ZnVuY3Rpb25TaWdUeXBlfS5o
In0gPSAxOwogICAgIH0KIAotICAgICMgc2tpcCBjdXN0b20gZnVuY3Rpb25zIGZvciBub3cKLSAg
ICAjIGJ1dCBza2lwIGZyb20gaGVyZSB0byBhbGxvdyBzb21lIGhlYWRlcnMgdG8gYmUgY3JlYXRl
ZAotICAgICMgZm9yIGEgc3VjY2Vzc2Z1bCBjb21waWxlLgotICAgIGlmICgkaXNDdXN0b21GdW5j
dGlvbiAmJgotICAgICAgICAkZnVuY3Rpb25OYW1lIG5lICJ3ZWJraXRfZG9tX25vZGVfcmVtb3Zl
X2NoaWxkIiAmJiAKLSAgICAgICAgJGZ1bmN0aW9uTmFtZSBuZSAid2Via2l0X2RvbV9ub2RlX2lu
c2VydF9iZWZvcmUiICYmCi0gICAgICAgICRmdW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21fbm9k
ZV9yZXBsYWNlX2NoaWxkIiAmJgotICAgICAgICAkZnVuY3Rpb25OYW1lIG5lICJ3ZWJraXRfZG9t
X25vZGVfYXBwZW5kX2NoaWxkIikgewotICAgICAgICBwdXNoKEBoQm9keSwgIlxuLyogVE9ETzog
Y3VzdG9tIGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSAqL1xuXG4iKTsKLSAgICAgICAgcHVzaChA
Y0JvZHksICJcbi8qIFRPRE86IGN1c3RvbSBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gKi9cblxu
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZihAeyRmdW5jdGlvbi0+cmFpc2Vz
RXhjZXB0aW9uc30pIHsKICAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICIsIEdFcnJvciAqKmVycm9y
IjsKICAgICB9CkBAIC04MDEsNyArODAwLDE1IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAg
ICBteSAkYXNzaWduUHJlID0gIiI7CiAgICAgbXkgJGFzc2lnblBvc3QgPSAiIjsKIAotICAgIGlm
ICgkcmV0dXJuVHlwZSBuZSAidm9pZCIgJiYgISRpc0N1c3RvbUZ1bmN0aW9uKSB7CisgICAgIyBX
ZSBuZWVkIHRvIHNwZWNpYWwtY2FzZSB0aGVzZSBOb2RlIG1ldGhvZHMgYmVjYXVzZSB0aGVpciBD
KysKKyAgICAjIHNpZ25hdHVyZSBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IHdlJ2QgZXhwZWN0IGdp
dmVuIHRoZWlyIElETAorICAgICMgZGVzY3JpcHRpb247IHNlZSBOb2RlLmguCisgICAgbXkgJGZ1
bmN0aW9uSGFzQ3VzdG9tUmV0dXJuID0gJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9ub2Rl
X2FwcGVuZF9jaGlsZCIgfHwKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9u
b2RlX2luc2VydF9iZWZvcmUiIHx8CisgICAgICAgICRmdW5jdGlvbk5hbWUgZXEgIndlYmtpdF9k
b21fbm9kZV9yZXBsYWNlX2NoaWxkIiB8fAorICAgICAgICAkZnVuY3Rpb25OYW1lIGVxICJ3ZWJr
aXRfZG9tX25vZGVfcmVtb3ZlX2NoaWxkIjsKKyAgICAgICAgCisgICAgaWYgKCRyZXR1cm5UeXBl
IG5lICJ2b2lkIiAmJiAhJGZ1bmN0aW9uSGFzQ3VzdG9tUmV0dXJuKSB7CiAgICAgICAgIGlmICgk
cmV0dXJuVmFsdWVJc0dET01UeXBlKSB7CiAgICAgICAgICAgICAkYXNzaWduID0gIlBhc3NSZWZQ
dHI8V2ViQ29yZTo6JHtmdW5jdGlvblNpZ1R5cGV9PiBnX3JlcyA9ICI7CiAgICAgICAgICAgICAk
YXNzaWduUHJlID0gIldURjo6Z2V0UHRyKCI7CkBAIC04MjAsMTIgKzgyNyw3IEBAIHN1YiBHZW5l
cmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgfQogICAgIH0KIAotICAgICMgV2UgbmVlZCB0byBzcGVj
aWFsLWNhc2UgdGhlc2UgTm9kZSBtZXRob2RzIGJlY2F1c2UgdGhlaXIgQysrIHNpZ25hdHVyZSBp
cyBkaWZmZXJlbnQKLSAgICAjIGZyb20gd2hhdCB3ZSdkIGV4cGVjdCBnaXZlbiB0aGVpciBJREwg
ZGVzY3JpcHRpb247IHNlZSBOb2RlLmguCi0gICAgaWYgKCRmdW5jdGlvbk5hbWUgZXEgIndlYmtp
dF9kb21fbm9kZV9hcHBlbmRfY2hpbGQiIHx8Ci0gICAgICAgICRmdW5jdGlvbk5hbWUgZXEgIndl
YmtpdF9kb21fbm9kZV9pbnNlcnRfYmVmb3JlIiB8fAotICAgICAgICAkZnVuY3Rpb25OYW1lIGVx
ICJ3ZWJraXRfZG9tX25vZGVfcmVwbGFjZV9jaGlsZCIgfHwKLSAgICAgICAgJGZ1bmN0aW9uTmFt
ZSBlcSAid2Via2l0X2RvbV9ub2RlX3JlbW92ZV9jaGlsZCIpIHsKKyAgICBpZiAoJGZ1bmN0aW9u
SGFzQ3VzdG9tUmV0dXJuKSB7CiAgICAgICAgIG15ICRjdXN0b21Ob2RlQXBwZW5kQ2hpbGQgPSA8
PCAiRU9GIjsKICAgICBib29sIG9rID0gaXRlbS0+JHtmdW5jdGlvblNpZ05hbWV9KCR7Y2FsbElt
cGxQYXJhbXN9JHtleGNlcHRpb25zfSk7CiAgICAgaWYgKG9rKQpAQCAtODkyLDcgKzg5NCw3IEBA
IEVPRgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIiAm
JiAhJGlzQ3VzdG9tRnVuY3Rpb24pIHsKKyAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQiICYm
ICEkZnVuY3Rpb25IYXNDdXN0b21SZXR1cm4pIHsKICAgICAgICAgaWYgKCRmdW5jdGlvblNpZ1R5
cGUgbmUgIkRPTU9iamVjdCIpIHsKICAgICAgICAgICAgIGlmICgkcmV0dXJuVmFsdWVJc0dET01U
eXBlKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgJHtyZXR1cm5UeXBlfSBy
ZXMgPSBzdGF0aWNfY2FzdDwke3JldHVyblR5cGV9PihXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSkp
O1xuIik7Ci0tIAoxLjYuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54698</attachid>
            <date>2010-04-29 06:57:37 -0700</date>
            <delta_ts>2010-05-02 19:20:58 -0700</delta_ts>
            <desc>getlinks.diff</desc>
            <filename>getlinks.diff</filename>
            <type>text/plain</type>
            <size>4130</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiN2Y3ODRmNTAxZmE3NjNiZWQ5ZjI5MTM4MzRmOWY4YTJiMDczM2U5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDI4IEFwciAyMDEwIDE1OjQzOjQyICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNC0y
OCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAoKICAgICAgICBU
ZXN0IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2xpbmtzLgoKICAgICAgICAqIHRlc3RzL3Rlc3Rk
b21kb2N1bWVudC5jOgogICAgICAgICh0ZXN0X2RvbV9kb2N1bWVudF9nZXRfbGlua3MpOgogICAg
ICAgIChtYWluKToKLS0tCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgIHwgICAx
MyArKysrKysrKysrKysrCiBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb2N1bWVudC5jIHwgICAz
NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0
OCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
Q2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNGIwNjE1Ni4uODZiNGM4MiAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0yOCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgVGVzdCB3ZWJraXRfZG9tX2RvY3Vt
ZW50X2dldF9saW5rcy4KKworICAgICAgICAqIHRlc3RzL3Rlc3Rkb21kb2N1bWVudC5jOgorICAg
ICAgICAodGVzdF9kb21fZG9jdW1lbnRfZ2V0X2xpbmtzKToKKyAgICAgICAgKG1haW4pOgorCiAy
MDEwLTA0LTI2ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvdGVz
dGRvbWRvY3VtZW50LmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb2N1bWVudC5jCmluZGV4
IDNlNjIwNzQuLjRjNjc3ZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdGRvbWRv
Y3VtZW50LmMKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0ZG9tZG9jdW1lbnQuYwpAQCAtMzAs
NiArMzAsNyBAQAogI2RlZmluZSBIVE1MX0RPQ1VNRU5UX0VMRU1FTlRTICI8aHRtbD48Ym9keT48
dWw+PGxpPjE8L2xpPjxsaT4yPC9saT48bGk+MzwvbGk+PC91bD48L2JvZHk+PC9odG1sPiIKICNk
ZWZpbmUgSFRNTF9ET0NVTUVOVF9FTEVNRU5UU19DTEFTUyAiPGh0bWw+PGJvZHk+PGRpdiBjbGFz
cz1cInRlc3RcIj48L2Rpdj48ZGl2IGNsYXNzPVwic3RyYW5nZVwiPjwvZGl2PjxkaXYgY2xhc3M9
XCJ0ZXN0XCI+PC9kaXY+PC9ib2R5PjwvaHRtbD4iCiAjZGVmaW5lIEhUTUxfRE9DVU1FTlRfRUxF
TUVOVFNfSUQgIjxodG1sPjxib2R5PjxkaXYgaWQ9XCJ0ZXN0b2tcIj48L2Rpdj48ZGl2IGlkPVwi
dGVzdGJhZFwiPmZpcnN0PC9kaXY+PGRpdiBpZD1cInRlc3RiYWRcIj5zZWNvbmQ8L2Rpdj48L2Jv
ZHk+PC9odG1sPiIKKyNkZWZpbmUgSFRNTF9ET0NVTUVOVF9MSU5LUyAiPGh0bWw+PGJvZHk+PGEg
aHJlZj1cImFib3V0OmJsYW5rXCI+Ymxhbms8L2E+PGEgaHJlZj1cImh0dHA6Ly93d3cuZ29vZ2xl
LmNvbVwiPmdvb2dsZTwvYT48YSBocmVmPVwiaHR0cDovL3d3dy53ZWJraXQub3JnXCI+d2Via2l0
PC9hPjwvYm9keT48L2h0bWw+IgogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgR3RrV2lkZ2V0KiB3
ZWJWaWV3OwpAQCAtMTUxLDYgKzE1MiwzNCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2RvbV9kb2N1bWVu
dF9nZXRfZWxlbWVudF9ieV9pZChEb21Eb2N1bWVudEZpeHR1cmUqIGZpeHR1cmUsIGdjbwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaW5uZXJfdGV4dCho
dG1sRWxlbWVudCksID09LCAoZ2NoYXIqKSJmaXJzdCIpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0
X2RvbV9kb2N1bWVudF9nZXRfbGlua3MoRG9tRG9jdW1lbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29u
c3Rwb2ludGVyIGRhdGEpCit7CisgICAgZ19hc3NlcnQoZml4dHVyZSk7CisgICAgV2ViS2l0V2Vi
VmlldyogdmlldyA9IChXZWJLaXRXZWJWaWV3KilmaXh0dXJlLT53ZWJWaWV3OworICAgIGdfYXNz
ZXJ0KHZpZXcpOworICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJf
dmlld19nZXRfZG9tX2RvY3VtZW50KHZpZXcpOworICAgIGdfYXNzZXJ0KGRvY3VtZW50KTsKKyAg
ICBXZWJLaXRET01IVE1MQ29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IHdlYmtpdF9kb21fZG9jdW1l
bnRfZ2V0X2xpbmtzKGRvY3VtZW50KTsKKyAgICBnX2Fzc2VydChjb2xsZWN0aW9uKTsKKyAgICBn
dWxvbmcgbGVuZ3RoID0gd2Via2l0X2RvbV9odG1sX2NvbGxlY3Rpb25fZ2V0X2xlbmd0aChjb2xs
ZWN0aW9uKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQobGVuZ3RoLCA9PSwgMyk7CisKKyAgICBndWlu
dCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBuYW1lc1tdID0geyAiYmxhbmsiLCAiZ29vZ2xlIiwgIndlYmtpdCIgfTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVyaXNbXSA9IHsgImFib3V0OmJsYW5rIiwgImh0
dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiaHR0cDovL3d3dy53ZWJraXQub3JnLyIgfTsKKyAgICAg
ICAgV2ViS2l0RE9NTm9kZSAqbm9kZSA9IHdlYmtpdF9kb21faHRtbF9jb2xsZWN0aW9uX2l0ZW0o
Y29sbGVjdGlvbiwgaSk7CisgICAgICAgIGdfYXNzZXJ0KG5vZGUpOworICAgICAgICBXZWJLaXRE
T01FbGVtZW50KiBlbGVtZW50ID0gKFdlYktpdERPTUVsZW1lbnQqKW5vZGU7CisgICAgICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3RhZ19uYW1lKGVsZW1lbnQpLCA9
PSwgIkEiKTsKKyAgICAgICAgV2ViS2l0RE9NSFRNTEVsZW1lbnQgKmh0bWxFbGVtZW50ID0gKFdl
YktpdERPTUhUTUxFbGVtZW50KillbGVtZW50OworICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2lubmVyX3RleHQoaHRtbEVsZW1lbnQpLCA9PSwgbmFt
ZXNbaV0pOworICAgICAgICBXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCAqYW5jaG9yID0gKFdl
YktpdERPTUhUTUxBbmNob3JFbGVtZW50KillbGVtZW50OworICAgICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9ocmVmKGFuY2hvciksID09LCB1
cmlzW2ldKTsKKyAgICB9Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsK
ICAgICBpZiAoIWdfdGhyZWFkX3N1cHBvcnRlZCgpKQpAQCAtMTg0LDYgKzIxMywxMiBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICB0ZXN0X2RvbV9kb2N1
bWVudF9nZXRfZWxlbWVudF9ieV9pZCwKICAgICAgICAgICAgICAgIGRvbV9kb2N1bWVudF9maXh0
dXJlX3RlYXJkb3duKTsKIAorICAgIGdfdGVzdF9hZGQoIi93ZWJraXQvZG9tZG9jdW1lbnQvdGVz
dF9nZXRfbGlua3MiLAorICAgICAgICAgICAgICAgRG9tRG9jdW1lbnRGaXh0dXJlLCBIVE1MX0RP
Q1VNRU5UX0xJTktTLAorICAgICAgICAgICAgICAgZG9tX2RvY3VtZW50X2ZpeHR1cmVfc2V0dXAs
CisgICAgICAgICAgICAgICB0ZXN0X2RvbV9kb2N1bWVudF9nZXRfbGlua3MsCisgICAgICAgICAg
ICAgICBkb21fZG9jdW1lbnRfZml4dHVyZV90ZWFyZG93bik7CisKICAgICByZXR1cm4gZ190ZXN0
X3J1bigpOwogfQogCi0tIAoxLjYuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54850</attachid>
            <date>2010-05-01 04:20:05 -0700</date>
            <delta_ts>2010-05-04 04:16:39 -0700</delta_ts>
            <desc>isgdomclass.diff</desc>
            <filename>isgdomclass.diff</filename>
            <type>text/plain</type>
            <size>2608</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAxMTcxNjdiYWEyNGIzZjcwMmY1YWRmZWE3ZDFjMDAxZTk3OWU0YzYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBT
YXQsIDEgTWF5IDIwMTAgMTM6MDc6NTkgKzAyMDAKU3ViamVjdDogW1BBVENIXSAyMDEwLTA1LTAx
ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzCiAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCgogICAgICAgIFVz
ZSBoZWxwZXIgZnVuY3Rpb25zIGZyb20gQ29kZUdlbmVyYXRvci5wbSB0byBmaWd1cmUgb3V0IHdo
ZXRoZXIgYQogICAgICAgIHR5cGUgaXMgImZ1bmRhbWVudGFsIiBvciBub3QgKGJhc2ljYWxseSB3
aGV0aGVyIGl0J3MgYW55dGhpbmcKICAgICAgICBvdGhlciB0aGFuIGEgc3RyaW5nIG9yIGEgbm9u
LXBvaW50ZXIgdHlwZSkuCgogICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
R09iamVjdC5wbToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDEzICsrKysrKysrKysrKysKIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yR09iamVjdC5wbSB8ICAgMTkgKy0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxl
cyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEwMTQ4NjIuLmU4
MDRhMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTAtMDUtMDEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2Fs
aWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU5MAorCisgICAgICAgIFVzZSBoZWxwZXIgZnVuY3Rpb25z
IGZyb20gQ29kZUdlbmVyYXRvci5wbSB0byBmaWd1cmUgb3V0IHdoZXRoZXIgYQorICAgICAgICB0
eXBlIGlzICJmdW5kYW1lbnRhbCIgb3Igbm90IChiYXNpY2FsbHkgd2hldGhlciBpdCdzIGFueXRo
aW5nCisgICAgICAgIG90aGVyIHRoYW4gYSBzdHJpbmcgb3IgYSBub24tcG9pbnRlciB0eXBlKS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisK
KzIwMTAtMDUtMDEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgogCiAgICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRp
bmdzCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdP
YmplY3QucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3Qu
cG0KaW5kZXggY2ViNjU2Mi4uZTQzMmRlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAtMjYxLDI0ICsyNjEsNyBAQCBzdWIgR2V0
R2xpYlR5cGVOYW1lIHsKIHN1YiBJc0dET01DbGFzc1R5cGUgewogICAgIG15ICR0eXBlID0gc2hp
ZnQ7CiAKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nIjsKLSAgICByZXR1cm4g
MCBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImZs
b2F0IjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiZG91YmxlIjsKLSAgICByZXR1cm4gMCBp
ZiAkdHlwZSBlcSAiYm9vbGVhbiI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImNoYXIiOwot
ICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJsb25nIjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBl
cSAibG9uZyBsb25nIjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAic2hvcnQiOwotICAgIHJl
dHVybiAwIGlmICR0eXBlIGVxICJ1Y2hhciI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVu
c2lnbmVkIjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiaW50IjsKLSAgICByZXR1cm4gMCBp
ZiAkdHlwZSBlcSAidW5zaWduZWQgaW50IjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidW5z
aWduZWQgbG9uZyI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmcgbG9u
ZyI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIHNob3J0IjsKLSAgICByZXR1
cm4gMCBpZiAkdHlwZSBlcSAidm9pZCI7Ci0KKyAgICByZXR1cm4gMCBpZiAkY29kZUdlbmVyYXRv
ci0+SXNOb25Qb2ludGVyVHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlw
ZSgkdHlwZSk7CiAgICAgcmV0dXJuIDE7CiB9CiAKLS0gCjEuNi42LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54930</attachid>
            <date>2010-05-03 09:07:11 -0700</date>
            <delta_ts>2010-05-26 02:20:11 -0700</delta_ts>
            <desc>geolocationdom.diff</desc>
            <filename>geolocationdom.diff</filename>
            <type>text/plain</type>
            <size>2730</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiNDFlODE5MGMwMGFmMTAzNjU3MTY1OTBhM2U5MTJhNDc1YTAwZTAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBN
b24sIDMgTWF5IDIwMTAgMTg6MDQ6MDggKzAyMDAKU3ViamVjdDogW1BBVENIXSAyMDEwLTA1LTAz
ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIEdPYmplY3QgRE9NIGJpbmRpbmdzCiAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCgogICAgICAgIFdl
IG5lZWQgdG8gcHJvdGVjdCB0aGUgYm9keSBvZiBzb21lIG1ldGhvZHMgd2l0aCAjaWZkZWZzLCBz
aW5jZQogICAgICAgIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIGNvZGUgdGhleSBjYWxsIGludG8g
aXMgZGVjaWRlZCBhdCBjb21waWxlCiAgICAgICAgdGltZS4KCiAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrKwogV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtIHwgICAxNCArKysrKysr
KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMjA5OWZlNC4uNmFjYmRhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNS0wMyAgWGFuIExvcGV6
ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW0dUS10gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTkwCisKKyAgICAgICAgV2UgbmVl
ZCB0byBwcm90ZWN0IHRoZSBib2R5IG9mIHNvbWUgbWV0aG9kcyB3aXRoICNpZmRlZnMsIHNpbmNl
CisgICAgICAgIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIGNvZGUgdGhleSBjYWxsIGludG8gaXMg
ZGVjaWRlZCBhdCBjb21waWxlCisgICAgICAgIHRpbWUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorCiAyMDEwLTA1LTAxICBYYW4gTG9wZXog
IDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09i
amVjdC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5w
bQppbmRleCBlNDMyZGU5Li44NWM4NTI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC02NjksNiArNjY5LDExIEBAIHN1YiBhZGRJ
bmNsdWRlSW5Cb2R5IHsKICAgICB9CiB9CiAKKyMgU29tZSBtZXRob2RzJyBib2R5IChvbmx5IHRo
ZSBib2R5LCBzaW5jZSB0aGUgcHVibGljIEFQSSBjYW4ndCBiZQorIyBjb25kaXRpb25hbCkgc2hv
dWxkIGJlIGd1YXJkZWQgYnkgI2lmZGVmcyBkZXBlbmRpbmcgb24gd2hldGhlcgorIyBjZXJ0YWlu
IGZlYXR1cmVzIGluIFdlYktpdCBhcmUgZW5hYmxlZC4KK215ICVjb25kaXRpb25hbE1ldGhvZHMg
PSAoIndlYmtpdF9kb21fZ2VvbG9jYXRpb25fY2xlYXJfd2F0Y2giID0+ICJHRU9MT0NBVElPTiIp
OworCiBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2VO
YW1lLCAkZnVuY3Rpb24sICRwcmVmaXgpID0gQF87CiAKQEAgLTczNyw2ICs3NDIsMTAgQEAgc3Vi
IEdlbmVyYXRlRnVuY3Rpb24gewogICAgIHB1c2goQGhCb2R5LCAiV0VCS0lUX0FQSSAkcmV0dXJu
VHlwZVxuJGZ1bmN0aW9uTmFtZSAoJGZ1bmN0aW9uU2lnKTtcblxuIik7CiAgICAgcHVzaChAY0Jv
ZHksICIkcmV0dXJuVHlwZVxuJGZ1bmN0aW9uTmFtZSAoJGZ1bmN0aW9uU2lnKVxue1xuIik7CiAK
KyAgICBpZiAoJGNvbmRpdGlvbmFsTWV0aG9kc3skZnVuY3Rpb25OYW1lfSkgeworICAgICAgICBw
dXNoKEBjQm9keSwgIiNpZiBFTkFCTEUoJGNvbmRpdGlvbmFsTWV0aG9kc3skZnVuY3Rpb25OYW1l
fSlcbiIpOworICAgIH0KKwogICAgIGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIpIHsKICAgICAg
ICAgIyBUT0RPOiByZXR1cm4gcHJvcGVyIGRlZmF1bHQgcmVzdWx0CiAgICAgICAgIHB1c2goQGNC
b2R5LCAiICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWxmLCAwKTtcbiIpOwpAQCAtODk1LDYg
KzkwNCwxMSBAQCBFT0YKICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiByZXM7
XG4iKTsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmICgkY29uZGl0aW9uYWxNZXRob2RzeyRm
dW5jdGlvbk5hbWV9KSB7CisgICAgICAgIHB1c2goQGNCb2R5LCAiI2VuZGlmXG4iKTsKKyAgICB9
CisKICAgICBwdXNoKEBjQm9keSwgIlxufVxuXG4iKTsKIH0KIAotLSAKMS42LjYuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>