<?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>166624</bug_id>
          
          <creation_ts>2016-12-30 12:21:33 -0800</creation_ts>
          <short_desc>SecurityOrigin::create triplet constructor does not canonicalize port</short_desc>
          <delta_ts>2016-12-31 16:49:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>166632</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1263167</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-30 12:21:33 -0800</bug_when>
    <thetext>WebCore::SecurityOrigin has four public create functions:

    WEBCORE_EXPORT static Ref&lt;SecurityOrigin&gt; create(const URL&amp;);
    static Ref&lt;SecurityOrigin&gt; createUnique();

    WEBCORE_EXPORT static Ref&lt;SecurityOrigin&gt; createFromString(const String&amp;);
    WEBCORE_EXPORT static Ref&lt;SecurityOrigin&gt; create(const String&amp; protocol, const String&amp; host, std::optional&lt;uint16_t&gt; port);

When a WebCore::SecurityOrigin is created using the first function, the port is canonicalized by unsetting it if it matches the default port for a protocol. That is handled by this code in the constructor:

    if (m_port &amp;&amp; isDefaultPortForProtocol(m_port.value(), m_protocol))
        m_port = std::nullopt;

The second create function is not relevant to this bug.

The third function, createFromString, converts a String to a URL and then uses this path. So, for example, the expression SecurityOrigin::createFromString(&quot;http://example.com:80&quot;).port() would return nullopt, as it would if the port was omitted from the URL string. This is correct as per RFC 6454 because http://example.com and http://example.com:80 have the same security origin.

The issue lies with the fourth constructor. It does not perform this canonicalization, allowing two different nonequal SecurityOrigin objects to be created that represent the same security origin. That is, this constructor could be used to create a SecurityOrigin with protocol http, port 80, even though the other constructors would always canonicalize port 80 to nullopt.

I noticed this when working on exposing WebKitSecurityOrigin in the GTK+ API. I&apos;m performing the canonicalization at the GTK+ API level for now, but I think it makes sense to do it in WebCore instead. I wonder if changing this in WebCore would expose unexpected side effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263170</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-30 12:28:49 -0800</bug_when>
    <thetext>(In reply to comment #0) 
&gt; The third function, createFromString, converts a String to a URL and then
&gt; uses this path.

I meant: &quot;and then uses the first create function&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263172</commentid>
    <comment_count>2</comment_count>
      <attachid>297862</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-30 12:38:34 -0800</bug_when>
    <thetext>Created attachment 297862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263173</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-30 12:43:52 -0800</bug_when>
    <thetext>Patch largely just to see whether it survives EWS.

It does pass the GTK+ API tests I added in bug #163366 with my GTK-layer workaround removed from that patch, but it looks easy to add a cross-platform test so should probably do that....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263185</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-30 19:34:23 -0800</bug_when>
    <thetext>EWS seems happy. Anyone know if this would be a bad idea?

I wrote a little cross-platform test. It needs to be added to XCode build system. Shame to see that WebCore tests are listed separately for each port and so most are never built at all on most ports. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263186</commentid>
    <comment_count>5</comment_count>
      <attachid>297868</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-30 19:40:11 -0800</bug_when>
    <thetext>Created attachment 297868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263187</commentid>
    <comment_count>6</comment_count>
      <attachid>297868</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-30 21:38:08 -0800</bug_when>
    <thetext>Comment on attachment 297868
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:47
&gt; +    Ref&lt;SecurityOrigin&gt; o1 = SecurityOrigin::create(&quot;http&quot;, &quot;example.com&quot;, std::optional&lt;uint16_t&gt;(80));
&gt; +    Ref&lt;SecurityOrigin&gt; o2 = SecurityOrigin::create(&quot;http&quot;, &quot;example.com&quot;, std::optional&lt;uint16_t&gt;());

Can we use std::make_optional()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263188</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-30 21:44:12 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; EWS seems happy. Anyone know if this would be a bad idea?
&gt; 
&gt; I wrote a little cross-platform test. It needs to be added to XCode build
&gt; system. 

Yes, we need to add it. I do not have a clean working copy at the moment. I will look to do this tomorrow morning unless someone else beats me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263204</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-31 09:15:30 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 297868 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297868&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:47
&gt; &gt; +    Ref&lt;SecurityOrigin&gt; o1 = SecurityOrigin::create(&quot;http&quot;, &quot;example.com&quot;, std::optional&lt;uint16_t&gt;(80));
&gt; &gt; +    Ref&lt;SecurityOrigin&gt; o2 = SecurityOrigin::create(&quot;http&quot;, &quot;example.com&quot;, std::optional&lt;uint16_t&gt;());
&gt; 
&gt; Can we use std::make_optional()?

Yeah, but I don&apos;t know if there&apos;s any advantage to doing so. At least it&apos;s more typing:

Ref&lt;SecurityOrigin&gt; o1 = SecurityOrigin::create(&quot;http&quot;, &quot;example.com&quot;, std::make_optional&lt;uint16_t&gt;(80));
Ref&lt;SecurityOrigin&gt; o2 = SecurityOrigin::create(&quot;http&quot;, &quot;example.com&quot;, std::optional&lt;uint16_t&gt;(std::nullopt));

I guess make_optional is more obviously useful when you don&apos;t need to explicitly specify the type, but here we do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263205</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-31 09:17:03 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Yeah, but I don&apos;t know if there&apos;s any advantage to doing so. At least it&apos;s
&gt; more typing:
&gt; 
&gt; Ref&lt;SecurityOrigin&gt; o1 = SecurityOrigin::create(&quot;http&quot;, &quot;example.com&quot;,
&gt; std::make_optional&lt;uint16_t&gt;(80));
&gt; Ref&lt;SecurityOrigin&gt; o2 = SecurityOrigin::create(&quot;http&quot;, &quot;example.com&quot;,
&gt; std::optional&lt;uint16_t&gt;(std::nullopt));

Um, I forgot to add the &quot;make_&quot; in the second call and didn&apos;t notice until I posted it on Bugzilla. I don&apos;t think there&apos;s a way to use make_optional to create an uninitialized optional, so I think only for the first one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263213</commentid>
    <comment_count>10</comment_count>
      <attachid>297870</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-31 13:05:16 -0800</bug_when>
    <thetext>Created attachment 297870
Patch

Added file Tools/TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp to TestWebKitAPI Xcode project. Also substituted word &quot;unequal&quot; for &quot;nonequal&quot; (sic) in WebCore ChangeLog description so that it reads well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263216</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-31 14:09:05 -0800</bug_when>
    <thetext>Looks like we need to add WEBCORE_EXPORT to the declaration of isSameOriginAs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263220</commentid>
    <comment_count>12</comment_count>
      <attachid>297872</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-31 14:31:19 -0800</bug_when>
    <thetext>Created attachment 297872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263221</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-31 14:32:08 -0800</bug_when>
    <thetext>(Also declared SetUp() as final instead of virtual.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263222</commentid>
    <comment_count>14</comment_count>
      <attachid>297872</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-31 16:49:12 -0800</bug_when>
    <thetext>Comment on attachment 297872
Patch

Clearing flags on attachment: 297872

Committed r210218: &lt;http://trac.webkit.org/changeset/210218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263223</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-31 16:49:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297862</attachid>
            <date>2016-12-30 12:38:34 -0800</date>
            <delta_ts>2016-12-30 19:40:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166624-20161230143717.patch</filename>
            <type>text/plain</type>
            <size>1730</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZlNTlmNWI5NWVkZjU3
MDc3MTFmY2I1ZDA1ZDhiNzZkMzQzYjNiZS4uMzNjODk5ZTRlMjg3YzQ3MDY2MzNmMzI3ZTQxYzA2
OTYxOTg5YWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEyLTMwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlIHRyaXBsZXQgY29uc3RydWN0b3IgZG9lcyBub3QgY2Fub25pY2FsaXpl
IHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NjYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0
IGlzIGN1cnJlbnRseSBwb3NzaWJsZSB0byBjcmVhdGUgdHdvIGRpZmZlcmVudCBub25lcXVhbCBT
ZWN1cml0eU9yaWdpbiBvYmplY3RzIHRoYXQKKyAgICAgICAgcmVwcmVzZW50IHRoZSBzYW1lIHNl
Y3VyaXR5IG9yaWdpbi4gTW9zdCBvZiB0aGUgY29uc3RydWN0b3JzIGNvbnZlcnQgdGhlIHBvcnQg
dG8gbnVsbG9wdCBpZgorICAgICAgICBpdCBpcyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgcHJv
dG9jb2wsIGJ1dCB0aGlzIG9uZSBkb2Vzbid0LiBDaGFuZ2UgaXQgdG8gcGFyYWxsZWwgdGhlCisg
ICAgICAgIG90aGVyIGNvbnN0cnVjdG9ycy4KKworICAgICAgICBJdCB3b3VsZCBtYWtlIHNlbnNl
IHRvIGFkZCBhIFdlYkNvcmUgQVBJIHRlc3QgZm9yIHRoaXMuCisKKyAgICAgICAgKiBwYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUpOgorCiAyMDE2LTEyLTMwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjEwMjA2LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBjMzYxNzkyZjJmYjkzOGM2ZmZmMDE3ZWJh
NjhkOWIyZjU2YjRmNzY1Li4yMTk5YzE4ZTZlNmIxNjJiMTNhYjZhYjU0ZjM0NjY5ZTYwYWUyOWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDkwLDcgKzQ5MCw4
IEBAIFJlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJp
bmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmCiB7CiAgICAgU3RyaW5nIGRlY29kZWRIb3N0ID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGhvc3QpOwogICAgIGF1dG8gb3JpZ2luID0gY3JlYXRl
KFVSTChVUkwoKSwgcHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiLyIpKTsKLSAgICBvcmlnaW4t
Pm1fcG9ydCA9IHBvcnQ7CisgICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCgqcG9ydCwgcHJvdG9jb2wpKQorICAgICAgICBvcmlnaW4tPm1fcG9ydCA9IHBvcnQ7CiAgICAg
cmV0dXJuIG9yaWdpbjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297868</attachid>
            <date>2016-12-30 19:40:11 -0800</date>
            <delta_ts>2016-12-31 13:05:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166624-20161230213853.patch</filename>
            <type>text/plain</type>
            <size>8123</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmIyOGMwOGQwM2EyMDgz
YzMwNTJkZDEwNmJlZWFjZmY4YWM3MWYyMC4uZmJiZDRiYTdhZDUyMTQ2NmMzMzExMDc1ZjIyMjBi
YzllZDYxNGViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEyLTMwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlIHRyaXBsZXQgY29uc3RydWN0b3IgZG9lcyBub3QgY2Fub25pY2FsaXpl
IHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NjYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0
IGlzIGN1cnJlbnRseSBwb3NzaWJsZSB0byBjcmVhdGUgdHdvIGRpZmZlcmVudCBub25lcXVhbCBT
ZWN1cml0eU9yaWdpbiBvYmplY3RzIHRoYXQKKyAgICAgICAgcmVwcmVzZW50IHRoZSBzYW1lIHNl
Y3VyaXR5IG9yaWdpbi4gVGhlIFNlY3VyaXR5T3JpZ2luIGNyZWF0ZSBmdW5jdGlvbnMgdGhhdCB0
YWtlIFVSTCBhbmQKKyAgICAgICAgU3RyaW5nIHBhcmFtZXRlcnMgY29udmVydCB0aGUgcG9ydCB0
byBudWxsb3B0IGlmIGl0IGlzIHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoZSBwcm90b2NvbCwKKyAg
ICAgICAgYnV0IHRoZSBzZXBhcmF0ZSBwcm90b2NvbC9ob3N0L3BvcnQgY29uc3RydWN0b3IgZG9l
c24ndC4gQ2hhbmdlIGl0IHRvIHBhcmFsbGVsIHRoZSBvdGhlcgorICAgICAgICBjb25zdHJ1Y3Rv
cnMuCisKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorCiAyMDE2LTEyLTMwICBPbGl2aWVyIEJsaW4g
IDxvbGl2aWVyLmJsaW5Ac29mdGF0aG9tZS5jb20+CiAKICAgICAgICAgW0VGTF0gZml4IGJ1ZmZl
ciBvdmVyLXJlYWQgaW4gUmVuZGVyVGhlbWVFZmw6Om1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYzM2MTc5MmYyZmI5Mzhj
NmZmZjAxN2ViYTY4ZDliMmY1NmI0Zjc2NS4uMjE5OWMxOGU2ZTZiMTYyYjEzYWI2YWI1NGYzNDY2
OWU2MGFlMjljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTQ5
MCw3ICs0OTAsOCBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJgogewogICAgIFN0cmluZyBkZWNv
ZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdp
biA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7Ci0g
ICAgb3JpZ2luLT5tX3BvcnQgPSBwb3J0OworICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woKnBvcnQsIHByb3RvY29sKSkKKyAgICAgICAgb3JpZ2luLT5tX3BvcnQgPSBw
b3J0OwogICAgIHJldHVybiBvcmlnaW47CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZjAwNzk3OGNhZTE3YjAyM2I5MmIyZDI4NTE3YTg2
MDQ0NTYxMGVhLi5iZmYzZGUwMDBkMmQwZWRlOWVhMDRjZWVkYjM0MzJiZmQ2YWZhMjg5IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MTggQEAKIDIwMTYtMTItMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEu
Y29tPgogCisgICAgICAgIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUgdHJpcGxldCBjb25zdHJ1Y3Rv
ciBkb2VzIG5vdCBjYW5vbmljYWxpemUgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpTZWN1cml0eU9yaWdpblRlc3Q6OlNldFVwKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIwMTYtMTItMzAgIE1pY2hhZWwgQ2F0YW56YXJv
ICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIEltcHJvdmUgdXNlciBh
Z2VudCBjb25zdHJ1Y3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MjA3NAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRl
eCA2MzlkMTk3YzA3MDdlYmZhYTY5ZTc4MmZjM2UzZWZhMTA2NWZjZGE5Li4yMzY5OTE0YTg0MjBm
NDdhNmUwMTZlNjMzYzNhZWZjYzU0MWM5MGQ5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1H
VEsuY21ha2UKQEAgLTEzMyw2ICsxMzMsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9QdWJsaWNTdWZmaXguY3Bw
CisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDUzZTU0NTRmNGUzZTgzN2E3ZDMzNjExMjc5
MjlhMWNkMmVkNDEwOGMuLjQ4OWJhZjEzZWZmMDA1NWQzMzVlNDU1MWE1OTYzZGNlMTYzYmVmMGEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNTYsNiArNTYsNyBAQCBz
ZXQoVGVzdFdlYkNvcmVMaWJfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dlYkNvcmUvSW50U2l6ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0xheW91dFVuaXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29y
ZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XZWJDb3JlL1RpbWVSYW5nZXMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2ODFi
MWQyM2MyMWYzOGU1YjM4ZWFkMDkzNzliNzI4NGE1YTg5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0w
LDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFNlY3VyaXR5T3Jp
Z2luVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwor
ICAgIH0KK307CisKK1RFU1RfRihTZWN1cml0eU9yaWdpblRlc3QsIFNlY3VyaXR5T3JpZ2luQ29u
c3RydWN0b3JzKQoreworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbzEgPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKCJodHRwIiwgImV4YW1wbGUuY29tIiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4o
ODApKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG8yID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSgiaHR0cCIsICJleGFtcGxlLmNvbSIsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+KCkpOworICAg
IFJlZjxTZWN1cml0eU9yaWdpbj4gbzMgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZygiaHR0cDovL2V4YW1wbGUuY29tIik7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvNCA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKCJodHRwOi8vZXhhbXBsZS5jb206ODAiKTsK
KyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG81ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwo
VVJMKCksICJodHRwOi8vZXhhbXBsZS5jb20iKSk7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBv
NiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCAiaHR0cDovL2V4YW1wbGUuY29t
OjgwIikpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiaHR0cCIpLCBvMS0+cHJvdG9jb2woKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiaHR0cCIpLCBvMi0+cHJvdG9jb2woKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiaHR0cCIpLCBvMy0+cHJvdG9jb2woKSk7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiaHR0cCIpLCBvNC0+cHJvdG9jb2woKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaHR0
cCIpLCBvNS0+cHJvdG9jb2woKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaHR0cCIpLCBvNi0+
cHJvdG9jb2woKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJleGFtcGxlLmNvbSIpLCBvMS0+
aG9zdCgpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJleGFtcGxlLmNvbSIpLCBvMi0+aG9zdCgp
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJleGFtcGxlLmNvbSIpLCBvMy0+aG9zdCgpKTsKKyAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCJleGFtcGxlLmNvbSIpLCBvNC0+aG9zdCgpKTsKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCJleGFtcGxlLmNvbSIpLCBvNS0+aG9zdCgpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJleGFtcGxlLmNvbSIpLCBvNi0+aG9zdCgpKTsKKworICAgIEVYUEVDVF9GQUxTRShv
MS0+cG9ydCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobzItPnBvcnQoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKG8zLT5wb3J0KCkpOworICAgIEVYUEVDVF9GQUxTRShvNC0+cG9ydCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UobzUtPnBvcnQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKG82LT5wb3J0KCkpOworCisg
ICAgRVhQRUNUX0VRKCJodHRwOi8vZXhhbXBsZS5jb20iLCBvMS0+dG9TdHJpbmcoKSk7CisgICAg
RVhQRUNUX0VRKCJodHRwOi8vZXhhbXBsZS5jb20iLCBvMi0+dG9TdHJpbmcoKSk7CisgICAgRVhQ
RUNUX0VRKCJodHRwOi8vZXhhbXBsZS5jb20iLCBvMy0+dG9TdHJpbmcoKSk7CisgICAgRVhQRUNU
X0VRKCJodHRwOi8vZXhhbXBsZS5jb20iLCBvNC0+dG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VR
KCJodHRwOi8vZXhhbXBsZS5jb20iLCBvNS0+dG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKCJo
dHRwOi8vZXhhbXBsZS5jb20iLCBvNi0+dG9TdHJpbmcoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShv
MS0+aXNTYW1lT3JpZ2luQXMobzIucHRyKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvMS0+aXNTYW1l
T3JpZ2luQXMobzMucHRyKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvMS0+aXNTYW1lT3JpZ2luQXMo
bzQucHRyKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvMS0+aXNTYW1lT3JpZ2luQXMobzUucHRyKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShvMS0+aXNTYW1lT3JpZ2luQXMobzYucHRyKCkpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="320142"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297870</attachid>
            <date>2016-12-31 13:05:16 -0800</date>
            <delta_ts>2016-12-31 14:27:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug166624-AddFileToXcode.patch</filename>
            <type>text/plain</type>
            <size>11778</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDIxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEyLTMxICBNaWNoYWVs
IENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlIHRyaXBsZXQgY29uc3RydWN0b3IgZG9lcyBub3QgY2Fub25pY2FsaXplIHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjYy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICBJdCBpcyBj
dXJyZW50bHkgcG9zc2libGUgdG8gY3JlYXRlIHR3byBkaWZmZXJlbnQgdW5lcXVhbCBTZWN1cml0
eU9yaWdpbiBvYmplY3RzIHRoYXQKKyAgICAgICAgcmVwcmVzZW50IHRoZSBzYW1lIHNlY3VyaXR5
IG9yaWdpbi4gVGhlIFNlY3VyaXR5T3JpZ2luIGNyZWF0ZSBmdW5jdGlvbnMgdGhhdCB0YWtlIFVS
TCBhbmQKKyAgICAgICAgU3RyaW5nIHBhcmFtZXRlcnMgY29udmVydCB0aGUgcG9ydCB0byBudWxs
b3B0IGlmIGl0IGlzIHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoZSBwcm90b2NvbCwKKyAgICAgICAg
YnV0IHRoZSBzZXBhcmF0ZSBwcm90b2NvbC9ob3N0L3BvcnQgY29uc3RydWN0b3IgZG9lc24ndC4g
Q2hhbmdlIGl0IHRvIHBhcmFsbGVsIHRoZSBvdGhlcgorICAgICAgICBjb25zdHJ1Y3RvcnMuCisK
KyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorCiAyMDE2LTEyLTI1ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc2V0RE9NRXhjZXB0aW9uIGFuZCBhIGZldyBj
dXN0b20gYmluZGluZ3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CShyZXZpc2lvbiAyMTAyMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkwLDcgKzQ5MCw4IEBAIFJlZjxTZWN1cml0eU9yaWdp
bj4gU2VjdXJpdHlPcmlnaW46OmNyZWEKIHsKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUoVVJM
KFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikpOwotICAgIG9yaWdpbi0+bV9w
b3J0ID0gcG9ydDsKKyAgICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpw
b3J0LCBwcm90b2NvbCkpCisgICAgICAgIG9yaWdpbi0+bV9wb3J0ID0gcG9ydDsKICAgICByZXR1
cm4gb3JpZ2luOwogfQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTAyMTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMi0zMSAgTWljaGFlbCBDYXRhbnphcm8g
IDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSB0cmlwbGV0IGNvbnN0cnVjdG9yIGRvZXMgbm90IGNhbm9uaWNhbGl6ZSBwb3J0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY2MjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21h
a2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpTZWN1cml0eU9y
aWdpblRlc3Q6OlNldFVwKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIw
MTYtMTItMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEltcHJvdmUgdXNlciBhZ2VudCBjb25zdHJ1Y3Rpb24KSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNpb24gMjEwMjE3KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYg
KzEzMyw3IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL1B1YmxpY1N1ZmZpeC5jcHAKKyAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVVJMLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtV2luLmNtYWtlCShyZXZpc2lvbiAyMTAyMTcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHNldChUZXN0
V2ViQ29yZUxpYl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29y
ZS9JbnRTaXplLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvTGF5
b3V0VW5pdC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1BhcnNl
ZENvbnRlbnRSYW5nZS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvVGltZVJhbmdlcy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3Jl
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIxMDIxNykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsNiArNTE0LDcgQEAK
IAkJQ0RDOEU0OTYxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM4
RTQ4QjFCQzVDOTYyMDA1OTRGRUMgLyogdmlkZW8td2l0aG91dC1hdWRpby5odG1sICovOyB9Owog
CQlDREM4RTQ5NzFCQzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0aG91dC1hdWRpby5tcDQgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDOEU0
OEMxQkM1Qzk2MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8ubXA0ICovOyB9OwogCQlD
REUxOTVCNTFDRkUwQjg4MDA1M0QyNTYgLyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RTE5NUIyMUNGRTBBREUwMDUzRDI1NiAvKiBGdWxsc2NyZWVuVG9wQ29udGVudEluc2V0Lmh0bWwg
Ki87IH07CisJCUNFMDZERjlCMUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1cml0eU9yaWdpbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA2REY5QTFF
MTg1MUYyMDBFNTcwQzkgLyogU2VjdXJpdHlPcmlnaW4uY3BwICovOyB9OwogCQlDRTE0RjFBNDE4
MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTE0RjFBMjE4MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJM
Q3Jhc2guaHRtbCAqLzsgfTsKIAkJQ0UzNTI0RjgxQjE0MzFGNjAwMjhBN0M1IC8qIFRleHRGaWVs
ZERpZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UzNTI0RjIxQjE0MkI4RDAwMjhBN0M1IC8qIFRleHRG
aWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUuY3BwICovOyB9OwogCQlDRTM1MjRGOTFC
MTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEYxMUIxNDJC
OEQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwICovOyB9OwpA
QCAtMTI3NCw2ICsxMjc1LDcgQEAKIAkJQ0RDOEU0OEMxQkM1Qzk2MjAwNTk0RkVDIC8qIHZpZGVv
LXdpdGhvdXQtYXVkaW8ubXA0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJ2aWRlby13aXRob3V0LWF1ZGlvLm1wNCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERTE5NUIyMUNGRTBBREUwMDUzRDI1NiAvKiBGdWxs
c2NyZWVuVG9wQ29udGVudEluc2V0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBG
dWxsc2NyZWVuVG9wQ29udGVudEluc2V0Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNERTE5NUIzMUNGRTBBREUwMDUzRDI1NiAvKiBGdWxsc2NyZWVuVG9wQ29udGVudEluc2V0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnVsbHNjcmVlblRv
cENvbnRlbnRJbnNldC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UwNkRGOUEx
RTE4NTFGMjAwRTU3MEM5IC8qIFNlY3VyaXR5T3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNlY3VyaXR5T3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0UxNEYxQTIxODE4NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3RUb1VSTENyYXNoLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBXaWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0VG9VUkxDcmFzaC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTMyQzdD
NzE4MTg0QzQ5MDBDRDhDMjggLyogV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2gu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0VG9VUkxDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0UzNTI0RjExQjE0MkI4RDAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0RmllbGREaWRC
ZWdpbkFuZEVuZEVkaXRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU1
NSw2ICsxNTU3LDcgQEAKIAkJCQk4M0I4OEEzMzFDODAwNTZEMDBCQjI0MTggLyogSFRNTFBhcnNl
cklkaW9tcy5jcHAgKi8sCiAJCQkJMTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVu
aXQuY3BwICovLAogCQkJCUNEMjI1QzA3MUM0NUE2OTIwMDE0MDc2MSAvKiBQYXJzZWRDb250ZW50
UmFuZ2UuY3BwICovLAorCQkJCUNFMDZERjlBMUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1cml0eU9y
aWdpbi5jcHAgKi8sCiAJCQkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZl
ci5jcHAgKi8sCiAJCQkJQ0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8qIFRpbWVSYW5nZXMuY3Bw
ICovLAogCQkJCTdBRDNGRThEMUQ3NUZCOEQwMEIxNjlBNCAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5jcHAgKi8sCkBAIC0yNjExLDYgKzI2MTQsNyBAQAogCQkJCTgzNUNGOTY3MUQyNUZDRDYwMDFB
NjVENCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0E5MDlBN0YxRDg3NzQ4MDAwN0UxMEY4IC8qIEZsb2F0UmVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0YxMjFBNDExQUU2MDA0NDdDNEMgLyogU2Nyb2xsUGlubmlu
Z0JlaGF2aW9ycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRTA2REY5QjFFMTg1MUYyMDBFNTcw
QzkgLyogU2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQ0IxQTQx
MUE3RTAwNDQ3QzRDIC8qIFNldEFuZFVwZGF0ZUNhY2hlTW9kZWwubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VDQzFBNDExQTdFMDA0NDdDNEMgLyogU2V0RG9jdW1lbnRVUkkubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzRTA1MjFEMEE2NDE4MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXVEZTdHJpbmdVdGls
aXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBTZWN1
cml0eU9yaWdpblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJl
YWQoKTsKKyAgICB9Cit9OworCitURVNUX0YoU2VjdXJpdHlPcmlnaW5UZXN0LCBTZWN1cml0eU9y
aWdpbkNvbnN0cnVjdG9ycykKK3sKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG8xID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJleGFtcGxlLmNvbSIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+KDgwKSk7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvMiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoImh0dHAiLCAiZXhhbXBsZS5jb20iLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90Pigp
KTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG8zID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoImh0dHA6Ly9leGFtcGxlLmNvbSIpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4g
bzQgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZygiaHR0cDovL2V4YW1wbGUuY29t
OjgwIik7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvNSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoVVJMKFVSTCgpLCAiaHR0cDovL2V4YW1wbGUuY29tIikpOworICAgIFJlZjxTZWN1cml0eU9y
aWdpbj4gbzYgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwgImh0dHA6Ly9leGFt
cGxlLmNvbTo4MCIpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoImh0dHAiKSwgbzEtPnByb3Rv
Y29sKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImh0dHAiKSwgbzItPnByb3RvY29sKCkpOwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoImh0dHAiKSwgbzMtPnByb3RvY29sKCkpOworICAgIEVYUEVD
VF9FUShTdHJpbmcoImh0dHAiKSwgbzQtPnByb3RvY29sKCkpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoImh0dHAiKSwgbzUtPnByb3RvY29sKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImh0dHAi
KSwgbzYtPnByb3RvY29sKCkpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiZXhhbXBsZS5jb20i
KSwgbzEtPmhvc3QoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiZXhhbXBsZS5jb20iKSwgbzIt
Pmhvc3QoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiZXhhbXBsZS5jb20iKSwgbzMtPmhvc3Qo
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiZXhhbXBsZS5jb20iKSwgbzQtPmhvc3QoKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiZXhhbXBsZS5jb20iKSwgbzUtPmhvc3QoKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiZXhhbXBsZS5jb20iKSwgbzYtPmhvc3QoKSk7CisKKyAgICBFWFBFQ1Rf
RkFMU0UobzEtPnBvcnQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKG8yLT5wb3J0KCkpOworICAgIEVY
UEVDVF9GQUxTRShvMy0+cG9ydCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobzQtPnBvcnQoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG81LT5wb3J0KCkpOworICAgIEVYUEVDVF9GQUxTRShvNi0+cG9ydCgp
KTsKKworICAgIEVYUEVDVF9FUSgiaHR0cDovL2V4YW1wbGUuY29tIiwgbzEtPnRvU3RyaW5nKCkp
OworICAgIEVYUEVDVF9FUSgiaHR0cDovL2V4YW1wbGUuY29tIiwgbzItPnRvU3RyaW5nKCkpOwor
ICAgIEVYUEVDVF9FUSgiaHR0cDovL2V4YW1wbGUuY29tIiwgbzMtPnRvU3RyaW5nKCkpOworICAg
IEVYUEVDVF9FUSgiaHR0cDovL2V4YW1wbGUuY29tIiwgbzQtPnRvU3RyaW5nKCkpOworICAgIEVY
UEVDVF9FUSgiaHR0cDovL2V4YW1wbGUuY29tIiwgbzUtPnRvU3RyaW5nKCkpOworICAgIEVYUEVD
VF9FUSgiaHR0cDovL2V4YW1wbGUuY29tIiwgbzYtPnRvU3RyaW5nKCkpOworCisgICAgRVhQRUNU
X1RSVUUobzEtPmlzU2FtZU9yaWdpbkFzKG8yLnB0cigpKSk7CisgICAgRVhQRUNUX1RSVUUobzEt
PmlzU2FtZU9yaWdpbkFzKG8zLnB0cigpKSk7CisgICAgRVhQRUNUX1RSVUUobzEtPmlzU2FtZU9y
aWdpbkFzKG80LnB0cigpKSk7CisgICAgRVhQRUNUX1RSVUUobzEtPmlzU2FtZU9yaWdpbkFzKG81
LnB0cigpKSk7CisgICAgRVhQRUNUX1RSVUUobzEtPmlzU2FtZU9yaWdpbkFzKG82LnB0cigpKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297872</attachid>
            <date>2016-12-31 14:31:19 -0800</date>
            <delta_ts>2016-12-31 16:49:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166624-20161231162959.patch</filename>
            <type>text/plain</type>
            <size>12838</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNkM2ZhNWI0MDg4N2Mz
ZWU1MWMzYjc2NDM3NjgwMGVlOThhYjhjYS4uZDA4ZDU1ZjhmOWRiYjFjMDEzZjBkYTI0NGM5Mjg1
NWQ0ODdiMGU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEyLTMxICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlIHRyaXBsZXQgY29uc3RydWN0b3IgZG9lcyBub3QgY2Fub25pY2FsaXpl
IHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NjYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICBJdCBp
cyBjdXJyZW50bHkgcG9zc2libGUgdG8gY3JlYXRlIHR3byBkaWZmZXJlbnQgdW5lcXVhbCBTZWN1
cml0eU9yaWdpbiBvYmplY3RzIHRoYXQKKyAgICAgICAgcmVwcmVzZW50IHRoZSBzYW1lIHNlY3Vy
aXR5IG9yaWdpbi4gVGhlIFNlY3VyaXR5T3JpZ2luIGNyZWF0ZSBmdW5jdGlvbnMgdGhhdCB0YWtl
IFVSTCBhbmQKKyAgICAgICAgU3RyaW5nIHBhcmFtZXRlcnMgY29udmVydCB0aGUgcG9ydCB0byBu
dWxsb3B0IGlmIGl0IGlzIHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoZSBwcm90b2NvbCwKKyAgICAg
ICAgYnV0IHRoZSBzZXBhcmF0ZSBwcm90b2NvbC9ob3N0L3BvcnQgY29uc3RydWN0b3IgZG9lc24n
dC4gQ2hhbmdlIGl0IHRvIHBhcmFsbGVsIHRoZSBvdGhlcgorICAgICAgICBjb25zdHJ1Y3RvcnMu
CisKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4u
aDogRXhwb3J0IGlzU2FtZU9yaWdpbkFzIGZvciB1c2UgYnkgdGVzdHMuCisKIDIwMTYtMTItMjUg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzZXRET01F
eGNlcHRpb24gYW5kIGEgZmV3IGN1c3RvbSBiaW5kaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcAppbmRleCBjMzYxNzkyZjJmYjkzOGM2ZmZmMDE3ZWJhNjhkOWIyZjU2YjRm
NzY1Li4yMTk5YzE4ZTZlNmIxNjJiMTNhYjZhYjU0ZjM0NjY5ZTYwYWUyOWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDkwLDcgKzQ5MCw4IEBAIFJlZjxTZWN1
cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29s
LCBjb25zdCBTdHJpbmcmCiB7CiAgICAgU3RyaW5nIGRlY29kZWRIb3N0ID0gZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzKGhvc3QpOwogICAgIGF1dG8gb3JpZ2luID0gY3JlYXRlKFVSTChVUkwoKSwg
cHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiLyIpKTsKLSAgICBvcmlnaW4tPm1fcG9ydCA9IHBv
cnQ7CisgICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJv
dG9jb2wpKQorICAgICAgICBvcmlnaW4tPm1fcG9ydCA9IHBvcnQ7CiAgICAgcmV0dXJuIG9yaWdp
bjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IGU2OTliZDk2ODUz
MzljZjBhOTc1YjZkZDZmZTg4NGQzYWUxMTY3NDQuLjNmZmE2ZDRmODY4NDRmMTI0MTBhNGRkZmNj
NDAzNmFmYTM0M2EwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTE5
OCw3ICsxOTgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRo
ZSAic2FtZSBvcmlnaW4iIGFsZ29yaXRobSBmcm9tIHRoZSBIVE1MIFN0YW5kYXJkOgogICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJzLmh0bWwjc2Ft
ZS1vcmlnaW4KLSAgICBib29sIGlzU2FtZU9yaWdpbkFzKGNvbnN0IFNlY3VyaXR5T3JpZ2luKikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1NhbWVPcmlnaW5Bcyhjb25zdCBTZWN1
cml0eU9yaWdpbiopIGNvbnN0OwogCiAgICAgc3RhdGljIFVSTCB1cmxXaXRoVW5pcXVlU2VjdXJp
dHlPcmlnaW4oKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDJmMDA3OTc4Y2FlMTdiMDIzYjkyYjJkMjg1MTdhODYwNDQ1NjEwZWEuLmM2NzE5
ZmI1NDdmNmJiOTVhOTFhNmFiY2ZhYjI5NDlmNTFjZTY1YTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMi0z
MSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAg
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSB0cmlwbGV0IGNvbnN0cnVjdG9yIGRvZXMgbm90IGNhbm9u
aWNhbGl6ZSBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY2MjQKKworICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpTZWN1cml0eU9yaWdpblRlc3Q6OlNldFVwKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisKIDIwMTYtMTItMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFu
emFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEltcHJvdmUgdXNlciBhZ2VudCBjb25z
dHJ1Y3Rpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21h
a2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDYzOWQxOTdj
MDcwN2ViZmFhNjllNzgyZmMzZTNlZmExMDY1ZmNkYTkuLjIzNjk5MTRhODQyMGY0N2E2ZTAxNmU2
MzNjM2FlZmNjNTQxYzkwZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpA
QCAtMTMzLDYgKzEzMyw3IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1B1YmxpY1N1ZmZpeC5jcHAKKyAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVVJMLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1XaW4uY21ha2UKaW5kZXggNTNlNTQ1NGY0ZTNlODM3YTdkMzM2MTEyNzkyOWExY2QyZWQ0
MTA4Yy4uNDg5YmFmMTNlZmYwMDU1ZDMzNWU0NTUxYTU5NjNkY2UxNjNiZWYwYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCkBAIC01Niw2ICs1Niw3IEBAIHNldChUZXN0V2Vi
Q29yZUxpYl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9J
bnRTaXplLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvTGF5b3V0
VW5pdC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1BhcnNlZENv
bnRlbnRSYW5nZS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUv
VGltZVJhbmdlcy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MTkyNGRj
NjU5MmRmZjAyOWUyMzQ4MTQ0NjZmZGFjZmI2ZjZmZTRjLi5jMTNiZGZiMzc1NjJiNzc3NTQ4NDZj
YWI0YzkzNmIzNTFiMWQwMTE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTE0LDYgKzUx
NCw3IEBACiAJCUNEQzhFNDk2MUJDNkYxMDgwMDU5NEZFQyAvKiB2aWRlby13aXRob3V0LWF1ZGlv
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDOEU0OEIxQkM1Qzk2MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8uaHRtbCAq
LzsgfTsKIAkJQ0RDOEU0OTcxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8u
bXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQzhFNDhDMUJDNUM5NjIwMDU5NEZFQyAvKiB2aWRlby13aXRob3V0LWF1ZGlvLm1wNCAqLzsg
fTsKIAkJQ0RFMTk1QjUxQ0ZFMEI4ODAwNTNEMjU2IC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5z
ZXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREUxOTVCMjFDRkUwQURFMDA1M0QyNTYgLyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNl
dC5odG1sICovOyB9OworCQlDRTA2REY5QjFFMTg1MUYyMDBFNTcwQzkgLyogU2VjdXJpdHlPcmln
aW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Uw
NkRGOUExRTE4NTFGMjAwRTU3MEM5IC8qIFNlY3VyaXR5T3JpZ2luLmNwcCAqLzsgfTsKIAkJQ0Ux
NEYxQTQxODE4NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTENy
YXNoLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UxNEYxQTIxODE4NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RUb1VSTENyYXNoLmh0bWwgKi87IH07CiAJCUNFMzUyNEY4MUIxNDMxRjYwMDI4QTdDNSAvKiBU
ZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEYyMUIxNDJCOEQwMDI4QTdDNSAv
KiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQ0Uz
NTI0RjkxQjE0NDFDNDAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTM1MjRG
MTFCMTQyQjhEMDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCAq
LzsgfTsKQEAgLTEyNzQsNiArMTI3NSw3IEBACiAJCUNEQzhFNDhDMUJDNUM5NjIwMDU5NEZFQyAv
KiB2aWRlby13aXRob3V0LWF1ZGlvLm1wNCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAidmlkZW8td2l0aG91dC1hdWRpby5tcDQi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREUxOTVCMjFDRkUwQURFMDA1M0QyNTYg
LyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREUxOTVCMzFDRkUwQURFMDA1M0QyNTYgLyogRnVsbHNjcmVlblRvcENvbnRl
bnRJbnNldC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxz
Y3JlZW5Ub3BDb250ZW50SW5zZXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNF
MDZERjlBMUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWN1cml0eU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNFMTRGMUEyMTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0UzMkM3QzcxODE4NEM0OTAwQ0Q4QzI4IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TENyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFMzUyNEYxMUIxNDJCOEQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVu
ZEVkaXRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEZp
ZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1NTUsNiArMTU1Nyw3IEBACiAJCQkJODNCODhBMzMxQzgwMDU2RDAwQkIyNDE4IC8qIEhU
TUxQYXJzZXJJZGlvbXMuY3BwICovLAogCQkJCTE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBM
YXlvdXRVbml0LmNwcCAqLywKIAkJCQlDRDIyNUMwNzFDNDVBNjkyMDAxNDA3NjEgLyogUGFyc2Vk
Q29udGVudFJhbmdlLmNwcCAqLywKKwkJCQlDRTA2REY5QTFFMTg1MUYyMDBFNTcwQzkgLyogU2Vj
dXJpdHlPcmlnaW4uY3BwICovLAogCQkJCTQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBTaGFy
ZWRCdWZmZXIuY3BwICovLAogCQkJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdGQiAvKiBUaW1lUmFu
Z2VzLmNwcCAqLywKIAkJCQk3QUQzRkU4RDFENzVGQjhEMDBCMTY5QTQgLyogVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwICovLApAQCAtMjYxMSw2ICsyNjE0LDcgQEAKIAkJCQk4MzVDRjk2NzFEMjVG
Q0Q2MDAxQTY1RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdBOTA5QTdGMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFJlY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTIxQTQxMUFFNjAwNDQ3QzRDIC8qIFNjcm9s
bFBpbm5pbmdCZWhhdmlvcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0UwNkRGOUIxRTE4NTFG
MjAwRTU3MEM5IC8qIFNlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUNCMUE0MTFBN0UwMDQ0N0M0QyAvKiBTZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFQ0MxQTQxMUE3RTAwNDQ3QzRDIC8qIFNldERvY3VtZW50VVJJLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNTIxRDBBNjQxODAwRkVCQ0YzIC8qIFNoYXJlZEJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDczZDQxMGE4Mjk1
NTZmODg3OTRiMzQwYWJhYTk4N2JkMGM4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFNlY3VyaXR5T3JpZ2luVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgZmluYWwg
eworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgfQorfTsKKworVEVT
VF9GKFNlY3VyaXR5T3JpZ2luVGVzdCwgU2VjdXJpdHlPcmlnaW5Db25zdHJ1Y3RvcnMpCit7Cisg
ICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvMSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAi
LCAiZXhhbXBsZS5jb20iLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90Pig4MCkpOworICAgIFJlZjxT
ZWN1cml0eU9yaWdpbj4gbzIgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImV4YW1w
bGUuY29tIiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4oKSk7CisgICAgUmVmPFNlY3VyaXR5T3Jp
Z2luPiBvMyA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKCJodHRwOi8vZXhhbXBs
ZS5jb20iKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG80ID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoImh0dHA6Ly9leGFtcGxlLmNvbTo4MCIpOworICAgIFJlZjxTZWN1cml0
eU9yaWdpbj4gbzUgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwgImh0dHA6Ly9l
eGFtcGxlLmNvbSIpKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG82ID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShVUkwoVVJMKCksICJodHRwOi8vZXhhbXBsZS5jb206ODAiKSk7CisKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCJodHRwIiksIG8xLT5wcm90b2NvbCgpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJodHRwIiksIG8yLT5wcm90b2NvbCgpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJo
dHRwIiksIG8zLT5wcm90b2NvbCgpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJodHRwIiksIG80
LT5wcm90b2NvbCgpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJodHRwIiksIG81LT5wcm90b2Nv
bCgpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJodHRwIiksIG82LT5wcm90b2NvbCgpKTsKKwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoImV4YW1wbGUuY29tIiksIG8xLT5ob3N0KCkpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoImV4YW1wbGUuY29tIiksIG8yLT5ob3N0KCkpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoImV4YW1wbGUuY29tIiksIG8zLT5ob3N0KCkpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoImV4YW1wbGUuY29tIiksIG80LT5ob3N0KCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImV4
YW1wbGUuY29tIiksIG81LT5ob3N0KCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImV4YW1wbGUu
Y29tIiksIG82LT5ob3N0KCkpOworCisgICAgRVhQRUNUX0ZBTFNFKG8xLT5wb3J0KCkpOworICAg
IEVYUEVDVF9GQUxTRShvMi0+cG9ydCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobzMtPnBvcnQoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKG80LT5wb3J0KCkpOworICAgIEVYUEVDVF9GQUxTRShvNS0+cG9y
dCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobzYtPnBvcnQoKSk7CisKKyAgICBFWFBFQ1RfRVEoImh0
dHA6Ly9leGFtcGxlLmNvbSIsIG8xLT50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoImh0dHA6
Ly9leGFtcGxlLmNvbSIsIG8yLT50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoImh0dHA6Ly9l
eGFtcGxlLmNvbSIsIG8zLT50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoImh0dHA6Ly9leGFt
cGxlLmNvbSIsIG80LT50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoImh0dHA6Ly9leGFtcGxl
LmNvbSIsIG81LT50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoImh0dHA6Ly9leGFtcGxlLmNv
bSIsIG82LT50b1N0cmluZygpKTsKKworICAgIEVYUEVDVF9UUlVFKG8xLT5pc1NhbWVPcmlnaW5B
cyhvMi5wdHIoKSkpOworICAgIEVYUEVDVF9UUlVFKG8xLT5pc1NhbWVPcmlnaW5BcyhvMy5wdHIo
KSkpOworICAgIEVYUEVDVF9UUlVFKG8xLT5pc1NhbWVPcmlnaW5BcyhvNC5wdHIoKSkpOworICAg
IEVYUEVDVF9UUlVFKG8xLT5pc1NhbWVPcmlnaW5BcyhvNS5wdHIoKSkpOworICAgIEVYUEVDVF9U
UlVFKG8xLT5pc1NhbWVPcmlnaW5BcyhvNi5wdHIoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>