<?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>62414</bug_id>
          
          <creation_ts>2011-06-09 16:47:47 -0700</creation_ts>
          <short_desc>IndexedDB: createObjectStore() name argument is required</short_desc>
          <delta_ts>2011-06-27 02:15:12 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>63140</dup_id>
          
          <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>0</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>hans</cc>
    
    <cc>haraken</cc>
    
    <cc>morrita</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>418389</commentid>
    <comment_count>0</comment_count>
      <attachid>96662</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-06-09 16:47:47 -0700</bug_when>
    <thetext>Created attachment 96662
test case

http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-createObjectStore-IDBObjectStore-DOMString-name-Object-optionalParameters states that the name argument is required and can not be null. This test calls createObjectStore with no name argument.

Expected behavior: throw IDBDatabaseException.NON_TRANSIENT_ERR
Actual behavior: does not throw, creates an object store with the 9-character name &quot;undefined&quot;

Test case attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423095</commentid>
    <comment_count>1</comment_count>
      <attachid>97696</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-06-18 04:12:02 -0700</bug_when>
    <thetext>Created attachment 97696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423096</commentid>
    <comment_count>2</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-06-18 04:13:21 -0700</bug_when>
    <thetext>This patch includes the fix for bug 62415 also:
https://bugs.webkit.org/show_bug.cgi?id=62415</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423453</commentid>
    <comment_count>3</comment_count>
      <attachid>97696</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-06-19 20:55:54 -0700</bug_when>
    <thetext>Comment on attachment 97696
Patch

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

&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:18
&gt; +function test()

Do these tests need to use the moz- prefixed names? This is a WebKit test. Or is this how other tests in this suite do it?

&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:20
&gt; +    indexedDB = evalAndLog(&quot;indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;&quot;);

I think you need less evalAndLog here. Just log results that are pertinent to the test.

&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:58
&gt; +    debug(&quot;objectStore.name.length is &quot; + store.name.length);

This feels redundant. You could just use shouldBe and test that the string has the right value and length in one go.

&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:76
&gt; +    evalAndExpectException(&quot;db.deleteObjectStore()&quot;, &quot;IDBDatabaseException.NON_TRANSIENT_ERR&quot;);

How is this different to what you’re testing on the previous line?

&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:94
&gt; +    store = evalAndLog(&quot;store = db.createObjectStore(&apos;undefined&apos;)&quot;);

I think this test would be more readable if you did something like:

var validNames = [&apos;null&apos;, &apos;undefined&apos;, &apos;valid_name&apos;];
validNames.forEach(function (name) {
  // same assertions in here
}, this);

to emphasize that these should behave the same. It will make the test shorter, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423545</commentid>
    <comment_count>4</comment_count>
      <attachid>97696</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-06-20 01:37:22 -0700</bug_when>
    <thetext>Comment on attachment 97696
Patch

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

&gt;&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:18
&gt;&gt; +function test()
&gt; 
&gt; Do these tests need to use the moz- prefixed names? This is a WebKit test. Or is this how other tests in this suite do it?

This is how other indexeddb tests do it too.  I started asking for this after trying to use our layout tests to see how mozilla interpreted parts of the spec.  Though it&apos;s only really useful if all the type assignments do it, not just this first one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424231</commentid>
    <comment_count>5</comment_count>
      <attachid>97922</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-06-20 20:38:26 -0700</bug_when>
    <thetext>Created attachment 97922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424233</commentid>
    <comment_count>6</comment_count>
      <attachid>97696</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-06-20 20:40:40 -0700</bug_when>
    <thetext>Comment on attachment 97696
Patch

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

&gt;&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:20
&gt;&gt; +    indexedDB = evalAndLog(&quot;indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;&quot;);
&gt; 
&gt; I think you need less evalAndLog here. Just log results that are pertinent to the test.

This is how other indexeddb tests do it too. I would like to wait other reviewers&apos; opinions.

&gt;&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:58
&gt;&gt; +    debug(&quot;objectStore.name.length is &quot; + store.name.length);
&gt; 
&gt; This feels redundant. You could just use shouldBe and test that the string has the right value and length in one go.

Done.

&gt;&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:76
&gt;&gt; +    evalAndExpectException(&quot;db.deleteObjectStore()&quot;, &quot;IDBDatabaseException.NON_TRANSIENT_ERR&quot;);
&gt; 
&gt; How is this different to what you’re testing on the previous line?

Done. Removed this line.

&gt;&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:94
&gt;&gt; +    store = evalAndLog(&quot;store = db.createObjectStore(&apos;undefined&apos;)&quot;);
&gt; 
&gt; I think this test would be more readable if you did something like:
&gt; 
&gt; var validNames = [&apos;null&apos;, &apos;undefined&apos;, &apos;valid_name&apos;];
&gt; validNames.forEach(function (name) {
&gt;   // same assertions in here
&gt; }, this);
&gt; 
&gt; to emphasize that these should behave the same. It will make the test shorter, too.

Done.

&gt; Source/WebCore/storage/IDBDatabase.cpp:82
&gt; +    if (name.isNull() || name.isEmpty()) {

I removed name.isEmpty() in the latest patch, since an empty string is a valid keypath according to the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424234</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-06-20 20:43:24 -0700</bug_when>
    <thetext>This patch includes the fix of |name| argument check for createObjectStore() (bug 62414), deleteObjectStore() (bug 62415), createIndex(), deleteIndex() and index().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424237</commentid>
    <comment_count>8</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-06-20 20:55:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 97696 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97696&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/storage/indexeddb/create-and-delete-object-store.html:20
&gt; &gt;&gt; +    indexedDB = evalAndLog(&quot;indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;&quot;);
&gt; &gt; 
&gt; &gt; I think you need less evalAndLog here. Just log results that are pertinent to the test.
&gt; 
&gt; This is how other indexeddb tests do it too. I would like to wait other reviewers&apos; opinions.

Most of our recent tests have that stuff.  It doesn&apos;t really matter though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424253</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-06-20 21:50:30 -0700</bug_when>
    <thetext>Terribly sorry to throw a wrench in the works, but my original bug report was mistaken. As per WebIDL, the expected behavior here is to throw a TypeError, not a database exception. The proper place to fix it is the IDL file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424409</commentid>
    <comment_count>10</comment_count>
      <attachid>97974</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-06-21 05:56:40 -0700</bug_when>
    <thetext>Created attachment 97974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425035</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-06-21 22:41:38 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=97974&amp;action=review

&gt; LayoutTests/storage/indexeddb/setVersion-undefined-expected.txt:17
&gt; +PASS db.setVersion(null); threw exception Error: NON_TRANSIENT_ERR: DOM IDBDatabase Exception 2.

Is it correct to throw NON_TRANSIENT_ERR instead of TypeError when the argument is null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425160</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-06-22 05:34:27 -0700</bug_when>
    <thetext>Aargh, no. Too many overlapping patches.

I&apos;m going to make a consolidated patch that fixes everything in IDBDatabase.idl once and for all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425240</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-06-22 08:13:00 -0700</bug_when>
    <thetext>Consolidating several bugs.

*** This bug has been marked as a duplicate of bug 63140 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426681</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-06-23 18:15:49 -0700</bug_when>
    <thetext>&gt; I&apos;m going to make a consolidated patch that fixes everything in IDBDatabase.idl once and for all.

OK. I will stop to upload a patch for this bug. 

&gt;&gt; Is it correct to throw NON_TRANSIENT_ERR instead of TypeError when the argument is null?
&gt;
&gt; Aargh, no. 

[1] Do you have any idea about how to throw TypeError when &apos;Nullable&apos; name is passed to createObjectStore()? As far as I know, there seems to be no convenient IDL option (like [ConvertUndefinedOrNullToNullString] or [StrictTypeChecking]...) that helps us throw TypeError for a &apos;Nullable&apos; argument. Another possible way is to throw TypeError at the head of IDBDatabase::createObjectStore(), like this:

PassRefPtr&lt;IDBObjectStore&gt; IDBDatabase::createObjectStore(String&amp; name, ...) {
    ...;
    if (name.isNull()) {
        ec = TypeErrorExceptionCode;
        return 0;
    }
}

However, I could not find the exception code for TypeError anywhere in xxxxxxException.h. Maybe do we have to write a code for throwing TypeError for each JavaScript engine???

[2] According to the spec (http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-createObjectStore-IDBObjectStore-DOMString-name-Object-optionalParameters), it just says name must not be &apos;Nullable&apos;, and seems not to say which exception should be thrown. Why did you think we should throw TypeError in this case? (TypeError makes sense to me, but I would like to confirm the spec that supports our implementation.)

I am asking this since I am encountering the same problem at the patch for bug 62288.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427803</commentid>
    <comment_count>15</comment_count>
      <attachid>97922</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-27 02:14:53 -0700</bug_when>
    <thetext>Comment on attachment 97922
Patch

Marking obsolete as the bug closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427804</commentid>
    <comment_count>16</comment_count>
      <attachid>97974</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-27 02:15:12 -0700</bug_when>
    <thetext>Comment on attachment 97974
Patch

Marking obsolete as the bug closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>96662</attachid>
            <date>2011-06-09 16:47:47 -0700</date>
            <delta_ts>2011-06-09 16:47:47 -0700</delta_ts>
            <desc>test case</desc>
            <filename>objectstore-name-undefined.html</filename>
            <type>text/html</type>
            <size>1957</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CjxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CjxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMi
Pjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cjwv
aGVhZD4KPGJvZHk+CjxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgo8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KPHNjcmlwdD4KCmRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMg
cmVjb3JkIHZhbHVlIik7CmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CgpmdW5jdGlvbiB0ZXN0KCkKewogICAg
aW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3
aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CiAgICBzaG91
bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwogICAgSURCRGF0YWJhc2VFeGNlcHRpb24g
PSBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5JREJEYXRhYmFzZUV4
Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247Iik7CiAgICBzaG91
bGRCZUZhbHNlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIik7CiAgICBJREJDdXJzb3Ig
PSBldmFsQW5kTG9nKCJJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJr
aXRJREJDdXJzb3I7Iik7CiAgICBzaG91bGRCZUZhbHNlKCJJREJDdXJzb3IgPT0gbnVsbCIpOwog
ICAgSURCS2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlS
YW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7Iik7CiAgICBzaG91bGRCZUZhbHNlKCJJ
REJLZXlSYW5nZSA9PSBudWxsIik7CgogICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFt
ZTsKICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwogICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwogICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwp9CgpmdW5jdGlvbiBvcGVuU3VjY2VzcygpCnsKICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CgogICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwp9CgpmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlKCkKewogICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKCiAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCk7Iiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CiAgICBkZWJ1Zygib2Jq
ZWN0U3RvcmUubmFtZSBpcyAiICsgb2JqZWN0U3RvcmUubmFtZSk7CiAgICBkZWJ1Zygib2JqZWN0
U3RvcmUubmFtZS5sZW5ndGggaXMgIiArIG9iamVjdFN0b3JlLm5hbWUubGVuZ3RoKTsKICAgIGRv
bmUoKTsKfQoKdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cgp0ZXN0KCk7Cgo8L3Njcmlw
dD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97696</attachid>
            <date>2011-06-18 04:12:02 -0700</date>
            <delta_ts>2011-06-20 20:40:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62414-20110618201200.patch</filename>
            <type>text/plain</type>
            <size>13714</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg4NzMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYjgwMzY2MDMxYTg5MzFkOWZkY2Yy
Mzk2NzljOTNjMjg5OGJiMDNkLi5jNWM3YmRmZTc3OGMyZjZhNjExM2VmYWRiOTk0MmQyMDg3N2M0
NzA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMTggIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaHJvdyBOT05fVFJBTlNJRU5UX0VSUiB3aGVuIG5hbWUgYXJndW1lbnQgb2Yg
Y3JlYXRlT2JqZWN0U3RvcmUoKSBhbmQgZGVsZXRlT2JqZWN0U3RvcmUoKSBpcyBpbnZhbGlkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjQxNAorCisg
ICAgICAgIEFkZGVkIHRlc3RzIGZvciBjaGVja2luZyB0aGUgYmVoYXZpb3Igd2hlbiBuYW1lIGFy
Z3VtZW50IG9mIGNyZWF0ZU9iamVjdFN0b3JlKCkKKyAgICAgICAgYW5kIGRlbGV0ZU9iamVjdFN0
b3JlKCkgaXMgbnVsbCwgdW5kZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcsICdudWxsJyAoYXMgYSBz
dHJpbmcpLAorICAgICAgICAndW5kZWZpbmVkJyAoYXMgYSBzdHJpbmcpLCBhIG5vcm1hbCBzdHJp
bmcuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtYW5kLWRlbGV0ZS1vYmpl
Y3Qtc3RvcmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9jcmVhdGUtYW5kLWRlbGV0ZS1vYmplY3Qtc3RvcmUuaHRtbDogQWRkZWQuCisKIDIwMTEtMDYt
MTQgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Q2hyb21pdW1dIFR1cm5zIG91dCwgaW5zcGVjdG9yL2Nvb2tpZS1wYXJzZXIuaHRtbCBjYW4gdGlt
ZW91dCBvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVh
dGUtYW5kLWRlbGV0ZS1vYmplY3Qtc3RvcmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1kZWxldGUtb2JqZWN0LXN0b3JlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43M2U0MjZhY2YwZGJjODMyYWJlYzc3YWU5YjA2YzU5ODEwODJkODA1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFu
ZC1kZWxldGUtb2JqZWN0LXN0b3JlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk4IEBACitUZXN0
IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgT2JqZWN0U3RvcmUgd2l0aCB2YWxpZCBhbmQgaW52
YWxpZCBhcmd1bWVudHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWRE
QiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cu
bW96SW5kZXhlZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQorSURCRGF0YWJh
c2VFeGNlcHRpb24gPSB3aW5kb3cuSURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93LndlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uOworUEFTUyBJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxs
IGlzIGZhbHNlCitJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJ
REJDdXJzb3I7CitQQVNTIElEQkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCitJREJLZXlSYW5nZSA9
IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7CitQQVNTIElE
QktleVJhbmdlID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
dmVyc2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitFeHBlY3RpbmcgZXhjZXB0
aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgor
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKHVuZGVmaW5lZCkK
K1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVh
dGVPYmplY3RTdG9yZShudWxsKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29k
ZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgorRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCcnKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5U
X0VSUgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndW5kZWZpbmVkJykKK29iamVjdFN0
b3JlLm5hbWUgaXMgdW5kZWZpbmVkCitvYmplY3RTdG9yZS5uYW1lLmxlbmd0aCBpcyA5CitkYi5k
ZWxldGVPYmplY3RTdG9yZSgndW5kZWZpbmVkJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMu
CitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdudWxsJykKK29iamVjdFN0b3JlLm5hbWUg
aXMgbnVsbAorb2JqZWN0U3RvcmUubmFtZS5sZW5ndGggaXMgNAorZGIuZGVsZXRlT2JqZWN0U3Rv
cmUoJ251bGwnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3ZhbGlkX25hbWUnKQorb2JqZWN0U3RvcmUubmFtZSBpcyB2YWxpZF9uYW1l
CitvYmplY3RTdG9yZS5uYW1lLmxlbmd0aCBpcyAxMAorZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3Zh
bGlkX25hbWUnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3VuZGVmaW5lZCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuZGVs
ZXRlT2JqZWN0U3RvcmUoKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIK
K0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCd1bmRlZmluZWQnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmRlbGV0ZU9iamVjdFN0
b3JlKHVuZGVmaW5lZCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMg
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKK0V4cGVjdGluZyBleGNlcHRp
b24gZnJvbSBkYi5kZWxldGVPYmplY3RTdG9yZSh1bmRlZmluZWQpCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lF
TlRfRVJSCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnbnVsbCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuZGVsZXRlT2JqZWN0
U3RvcmUobnVsbCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBkYi5kZWxldGVPYmplY3RTdG9yZShudWxsKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgor
RGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3VuZGVmaW5lZCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuZGVsZXRlT2JqZWN0U3Rv
cmUoJycpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
ZGIuZGVsZXRlT2JqZWN0U3RvcmUoJycpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitEZWxldGVk
IGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndW5kZWZp
bmVkJykKK2RiLmRlbGV0ZU9iamVjdFN0b3JlKCd1bmRlZmluZWQnKQorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCd1bmRlZmluZWQnKQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9V
TkRfRVJSCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnbnVsbCcpCitkYi5kZWxldGVPYmplY3RTdG9yZSgnbnVsbCcpCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ251bGwnKQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9V
TkRfRVJSCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgndmFsaWRfbmFtZScpCitkYi5kZWxldGVPYmplY3RTdG9yZSgndmFsaWRfbmFtZScp
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3ZhbGlkX25h
bWUnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQtZGVsZXRlLW9iamVj
dC1zdG9yZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1k
ZWxldGUtb2JqZWN0LXN0b3JlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI2MzJmMjYwM2U0MmFhMzAxNzVj
ODFlNjllNzRmMTAyZWJjNzhhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQtZGVsZXRlLW9iamVjdC1zdG9yZS5odG1sCkBAIC0wLDAg
KzEsMTE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgT2JqZWN0U3RvcmUgd2l0aCB2YWxpZCBhbmQgaW52
YWxpZCBhcmd1bWVudHMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhl
ZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworICAgIElEQkRhdGFiYXNl
RXhjZXB0aW9uID0gZXZhbEFuZExvZygiSURCRGF0YWJhc2VFeGNlcHRpb24gPSB3aW5kb3cuSURC
RGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93LndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uOyIp
OworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFiYXNlRXhjZXB0aW9uID09IG51bGwiKTsKKyAg
ICBJREJDdXJzb3IgPSBldmFsQW5kTG9nKCJJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8
IHdpbmRvdy53ZWJraXRJREJDdXJzb3I7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCQ3Vyc29y
ID09IG51bGwiKTsKKyAgICBJREJLZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlID0g
d2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJJREJLZXlSYW5nZSA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
J3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0T2JqZWN0U3RvcmU7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHRlc3RPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKKworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKHVuZGVmaW5lZCkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKKworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKG51bGwpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RS
QU5TSUVOVF9FUlIiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgndW5kZWZpbmVkJykiKTsKKyAgICBkZWJ1Zygib2JqZWN0U3RvcmUubmFt
ZSBpcyAiICsgc3RvcmUubmFtZSk7CisgICAgZGVidWcoIm9iamVjdFN0b3JlLm5hbWUubGVuZ3Ro
IGlzICIgKyBzdG9yZS5uYW1lLmxlbmd0aCk7CisgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2Jq
ZWN0U3RvcmUoJ3VuZGVmaW5lZCcpIik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
bnVsbCcpIik7CisgICAgZGVidWcoIm9iamVjdFN0b3JlLm5hbWUgaXMgIiArIHN0b3JlLm5hbWUp
OworICAgIGRlYnVnKCJvYmplY3RTdG9yZS5uYW1lLmxlbmd0aCBpcyAiICsgc3RvcmUubmFtZS5s
ZW5ndGgpOworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdudWxsJykiKTsK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd2YWxpZF9uYW1lJykiKTsKKyAgICBkZWJ1
Zygib2JqZWN0U3RvcmUubmFtZSBpcyAiICsgc3RvcmUubmFtZSk7CisgICAgZGVidWcoIm9iamVj
dFN0b3JlLm5hbWUubGVuZ3RoIGlzICIgKyBzdG9yZS5uYW1lLmxlbmd0aCk7CisgICAgZXZhbEFu
ZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3ZhbGlkX25hbWUnKSIpOworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3VuZGVmaW5lZCcpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05f
VFJBTlNJRU5UX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmRlbGV0ZU9i
amVjdFN0b3JlKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd1bmRlZmluZWQnKSIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLmRlbGV0ZU9iamVjdFN0b3JlKHVuZGVmaW5lZCkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJkYi5kZWxldGVPYmplY3RTdG9yZSh1bmRlZmluZWQpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnbnVsbCcpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2Jq
ZWN0U3RvcmUobnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIi
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5kZWxldGVPYmplY3RTdG9yZShudWxs
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3VuZGVmaW5lZCcpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVs
ZXRlT2JqZWN0U3RvcmUoJycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRf
RVJSIik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndW5kZWZpbmVkJykiKTsKKyAg
ICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgndW5kZWZpbmVkJykiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5kZWxldGVPYmplY3RTdG9yZSgndW5kZWZpbmVkJyki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ251bGwnKSIpOworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVj
dFN0b3JlKCdudWxsJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5kZWxldGVP
YmplY3RTdG9yZSgnbnVsbCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIi
KTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd2YWxpZF9uYW1lJykiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgndmFsaWRfbmFtZScpIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3ZhbGlkX25hbWUnKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNDU3NjNmMmI5NTI5MjViZmQ0MGU5ZjFmNWFmMzMwN2I1ZDZmZGMwYy4uYzc4NmY2
MTIxZThhYTY3Y2QxODU1NGJhMmViNWZjZjcwNTVhZjYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDExLTA2LTE4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhyb3cgTk9O
X1RSQU5TSUVOVF9FUlIgd2hlbiBuYW1lIGFyZ3VtZW50IG9mIGNyZWF0ZU9iamVjdFN0b3JlKCkg
YW5kIGRlbGV0ZU9iamVjdFN0b3JlKCkgaXMgaW52YWxpZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI0MTQKKworICAgICAgICBBdCB0aGUgaGVhZCBv
ZiBjcmVhdGVPYmplY3RTdG9yZSgpIGFuZCBkZWxldGVPYmplY3RTdG9yZSgpLCB3ZSBjaGVjayBh
bmQgcmV0dXJuCisgICAgICAgIE5PTl9UUkFOU0lFTlRfRVJSIGlmIG5hbWUgYXJndW1lbnQgb2Yg
dGhvc2UgbWV0aG9kcyBpcyBudWxsIG9yIHVuZGVmaW5lZCBvciBlbXB0eS4KKworICAgICAgICBU
ZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtYW5kLWRlbGV0ZS1vYmplY3Qtc3RvcmUuaHRt
bAorCisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFi
YXNlLmlkbDoKKwogMjAxMS0wNi0xNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDc3ODI3M2E1NjIzMzM2MmU1N2I2MTlmY2NkZTAw
ZmY3OTM0ODIxNWIuLjc2ODcxNjA5YmM0ZTJjYmRmZmRlNmM4M2U0ZGJmMDJjOGQxZjFkYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC03OSw2ICs3OSwxMSBAQCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBp
ZiAobmFtZS5pc051bGwoKSB8fCBuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgU3RyaW5nIGtleVBhdGg7CiAgICAgb3B0aW9ucy5nZXRLZXlTdHJpbmcoImtl
eVBhdGgiLCBrZXlQYXRoKTsKICAgICBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKQEAgLTEw
MCw2ICsxMDUsMTEgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8IG5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCBtX3Nl
dFZlcnNpb25UcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZS5pZGwKaW5kZXggNzNhNGExOGE0ODQ1YzRiZTEwZjM4OTkyYmVmNzM0
MDQzYjVlNzc3MC4uMDM1OWY1ZWRhNTY2ZWIwMDkxNzE4NDU1MGEyNDk1YWFmMWQ5ZTE3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKQEAgLTM5LDkgKzM5LDkgQEAgbW9k
dWxlIHN0b3JhZ2UgewogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwog
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnZlcnNpb25jaGFuZ2U7CiAKLSAgICAg
ICAgSURCT2JqZWN0U3RvcmUgY3JlYXRlT2JqZWN0U3RvcmUoaW4gW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsXSBPcHRpb25zT2JqZWN0IG9wdGlv
bnMpCisgICAgICAgIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKGluIFtDb252ZXJ0
VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFs
XSBPcHRpb25zT2JqZWN0IG9wdGlvbnMpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNl
RXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcg
bmFtZSkKKyAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbiBbQ29udmVydFVuZGVmaW5l
ZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUpCiAgICAgICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IHNldFZlcnNpb24oaW4gW0NvbnZlcnRV
bmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB2ZXJzaW9uKQogICAgICAgICAg
ICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97922</attachid>
            <date>2011-06-20 20:38:26 -0700</date>
            <delta_ts>2011-06-27 02:14:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62414-20110621123824.patch</filename>
            <type>text/plain</type>
            <size>21901</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg4NzMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYjgwMzY2MDMxYTg5MzFkOWZkY2Yy
Mzk2NzljOTNjMjg5OGJiMDNkLi5iNjhmM2JlZjMzYzQyMzhhZGZlNjM4YTRiM2Y4MjJjNzhlZmM1
NGViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMjAgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaHJvdyBOT05fVFJBTlNJRU5UX0VSUiB3aGVuIHxuYW1lfCBhcmd1bWVudCBv
ZiBjcmVhdGVPYmplY3RTdG9yZSgpLCBkZWxldGVPYmplY3RTdG9yZSgpLCBjcmVhdGVJbmRleCgp
LCBkZWxldGVJbmRleCgpIGFuZCBpbmRleCgpIGlzIGludmFsaWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNDE0CisKKyAgICAgICAgQWRkZWQgdGVz
dHMgZm9yIGNoZWNraW5nIHRoZSBiZWhhdmlvciB3aGVuIHxuYW1lfCBhcmd1bWVudCBvZiBjcmVh
dGVPYmplY3RTdG9yZSgpLAorICAgICAgICBkZWxldGVPYmplY3RTdG9yZSgpLCBjcmVhdGVJbmRl
eCgpLCBkZWxldGVJbmRleCgpIGFuZCBpbmRleCgpIGlzIG51bGwsIHVuZGVmaW5lZCwKKyAgICAg
ICAgYW4gZW1wdHkgc3RyaW5nLCAnbnVsbCcgKGFzIGEgc3RyaW5nKSwgJ3VuZGVmaW5lZCcgKGFz
IGEgc3RyaW5nKSBhbmQgYSBub3JtYWwgc3RyaW5nLgorCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbmFtZS1iYXNpY3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9uYW1lLWJhc2ljcy5odG1sOiBBZGRlZC4KKwogMjAxMS0wNi0xNCAgRGltaXRy
aSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
VHVybnMgb3V0LCBpbnNwZWN0b3IvY29va2llLXBhcnNlci5odG1sIGNhbiB0aW1lb3V0IG91dC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25hbWUtYmFzaWNzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25hbWUtYmFzaWNzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTJhYzg4MTczNWJjMDIzZjI1MmViZjViODdiZTJhYjVj
ZTgyYTk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bmFtZS1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTc4IEBACitUZXN0IGZvciB2YWxp
ZCBhbmQgaW52YWxpZCBuYW1lIGFyZ3VtZW50cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhl
ZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZh
bHNlCitJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8
fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247CitQQVNTIElEQkRhdGFiYXNlRXhj
ZXB0aW9uID09IG51bGwgaXMgZmFsc2UKK0lEQkN1cnNvciA9IHdpbmRvdy5JREJDdXJzb3IgfHwg
d2luZG93LndlYmtpdElEQkN1cnNvcjsKK1BBU1MgSURCQ3Vyc29yID09IG51bGwgaXMgZmFsc2UK
K0lEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlS
YW5nZTsKK1BBU1MgSURCS2V5UmFuZ2UgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIHN0b3JlLm5hbWUgPT0gZ2xvYmFs
TmFtZSBpcyB0cnVlCitkYi5kZWxldGVPYmplY3RTdG9yZShnbG9iYWxOYW1lKQorRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIGRiLmRlbGV0ZU9iamVjdFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIEV4
Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5P
VF9GT1VORF9FUlIKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIHN0b3JlLm5hbWUgPT0gZ2xvYmFsTmFtZSBp
cyB0cnVlCitkYi5kZWxldGVPYmplY3RTdG9yZShnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGRiLmRlbGV0ZU9iamVjdFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIHN0b3JlLm5hbWUgPT0gZ2xvYmFsTmFtZSBpcyB0cnVl
CitkYi5kZWxldGVPYmplY3RTdG9yZShnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIGRiLmRlbGV0ZU9iamVjdFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIK
K0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KGdsb2JhbE5hbWUpCitQQVNTIHN0b3JlLm5hbWUgPT0gZ2xvYmFsTmFtZSBpcyB0cnVlCitkYi5k
ZWxldGVPYmplY3RTdG9yZShnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRi
LmRlbGV0ZU9iamVjdFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIKK0RlbGV0
ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGdsb2Jh
bE5hbWUpCitQQVNTIHN0b3JlLm5hbWUgPT0gZ2xvYmFsTmFtZSBpcyB0cnVlCitkYi5kZWxldGVP
YmplY3RTdG9yZShnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmRlbGV0
ZU9iamVjdFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleChnbG9iYWxOYW1lLCAna2V5UGF0aCcpCitQQVNT
IGluZGV4Lm5hbWUgPT0gc3RvcmUuaW5kZXgoZ2xvYmFsTmFtZSkubmFtZSBpcyB0cnVlCitzdG9y
ZS5kZWxldGVJbmRleChnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LmRlbGV0ZUluZGV4KGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleChnbG9iYWxOYW1lLCAna2V5UGF0aCcpCitQQVNT
IGluZGV4Lm5hbWUgPT0gc3RvcmUuaW5kZXgoZ2xvYmFsTmFtZSkubmFtZSBpcyB0cnVlCitzdG9y
ZS5kZWxldGVJbmRleChnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LmRlbGV0ZUluZGV4KGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleChnbG9iYWxOYW1lLCAna2V5UGF0aCcpCitQQVNT
IGluZGV4Lm5hbWUgPT0gc3RvcmUuaW5kZXgoZ2xvYmFsTmFtZSkubmFtZSBpcyB0cnVlCitzdG9y
ZS5kZWxldGVJbmRleChnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LmRlbGV0ZUluZGV4KGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleChnbG9iYWxOYW1lLCAna2V5UGF0aCcpCitQQVNT
IGluZGV4Lm5hbWUgPT0gc3RvcmUuaW5kZXgoZ2xvYmFsTmFtZSkubmFtZSBpcyB0cnVlCitzdG9y
ZS5kZWxldGVJbmRleChnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LmRlbGV0ZUluZGV4KGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleChnbG9iYWxOYW1lLCAna2V5UGF0aCcpCitQQVNT
IGluZGV4Lm5hbWUgPT0gc3RvcmUuaW5kZXgoZ2xvYmFsTmFtZSkubmFtZSBpcyB0cnVlCitzdG9y
ZS5kZWxldGVJbmRleChnbG9iYWxOYW1lKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LmRlbGV0ZUluZGV4KGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0
aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9F
UlIKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoZ2xvYmFsTmFtZSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIK
K0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoZ2xvYmFsTmFtZSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKK0Rl
bGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd1
bmRlZmluZWQnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmRlbGV0ZU9iamVjdFN0b3Jl
KCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd1bmRlZmluZWQnKQorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGRiLmRlbGV0ZU9iamVjdFN0b3JlKGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFO
U0lFTlRfRVJSCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnbnVsbCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuZGVsZXRlT2Jq
ZWN0U3RvcmUoZ2xvYmFsTmFtZSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNyZWF0ZUluZGV4KCkKK1BBU1MgRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9O
X1RSQU5TSUVOVF9FUlIKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0
b3JlLmNyZWF0ZUluZGV4KGdsb2JhbE5hbWUsICdrZXlQYXRoJykKK1BBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVO
VF9FUlIKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNyZWF0
ZUluZGV4KGdsb2JhbE5hbWUsICdrZXlQYXRoJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKK0Rl
bGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgndW5kZWZpbmVkJywgJ2tleVBh
dGgnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmluZGV4KCkKK1BBU1MgRXhjZXB0
aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RS
QU5TSUVOVF9FUlIKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgndW5k
ZWZpbmVkJywgJ2tleVBhdGgnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmluZGV4
KGdsb2JhbE5hbWUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitEZWxldGVkIGFsbCBvYmplY3Qg
c3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK2luZGV4
ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ251bGwnLCAna2V5UGF0aCcpCitFeHBlY3RpbmcgZXhjZXB0
aW9uIGZyb20gc3RvcmUuaW5kZXgoZ2xvYmFsTmFtZSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIK
K0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgndW5kZWZpbmVkJywgJ2tl
eVBhdGgnKQorUEFTUyBpbmRleC5uYW1lID09IHN0b3JlLmluZGV4KCd1bmRlZmluZWQnKS5uYW1l
IGlzIHRydWUKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5kZWxldGVJbmRleCgpCitQ
QVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK2luZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ3VuZGVmaW5lZCcsICdrZXlQYXRoJykKK1BBU1MgaW5kZXgubmFtZSA9PSBzdG9yZS5p
bmRleCgndW5kZWZpbmVkJykubmFtZSBpcyB0cnVlCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
c3RvcmUuZGVsZXRlSW5kZXgoZ2xvYmFsTmFtZSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKK0Rl
bGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbnVsbCcsICdrZXlQYXRoJykK
K1BBU1MgaW5kZXgubmFtZSA9PSBzdG9yZS5pbmRleCgnbnVsbCcpLm5hbWUgaXMgdHJ1ZQorRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmRlbGV0ZUluZGV4KGdsb2JhbE5hbWUpCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PTl9UUkFOU0lFTlRfRVJSCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25hbWUtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9uYW1lLWJhc2ljcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjM2Q5NWFh
YTI1N2UxNjcyMWMyZjJiZTQ2NDQ5NDBiMTIyYzI4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9uYW1lLWJhc2ljcy5odG1sCkBAIC0wLDAgKzEsMTQ1
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1
bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciB2
YWxpZCBhbmQgaW52YWxpZCBuYW1lIGFyZ3VtZW50cyIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWRE
QiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cu
bW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7
CisgICAgSURCRGF0YWJhc2VFeGNlcHRpb24gPSBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2Vw
dGlvbiA9IHdpbmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0
YWJhc2VFeGNlcHRpb247Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRp
b24gPT0gbnVsbCIpOworICAgIElEQkN1cnNvciA9IGV2YWxBbmRMb2coIklEQkN1cnNvciA9IHdp
bmRvdy5JREJDdXJzb3IgfHwgd2luZG93LndlYmtpdElEQkN1cnNvcjsiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJJREJDdXJzb3IgPT0gbnVsbCIpOworICAgIElEQktleVJhbmdlID0gZXZhbEFuZExv
ZygiSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktl
eVJhbmdlOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQktleVJhbmdlID09IG51bGwiKTsKKwor
ICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RW
YWxpZE5hbWVzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiB0ZXN0VmFsaWROYW1lcygpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKworICAgIHRlc3ROYW1lcyA9IFsnJywgJyAnLCAndW5kZWZpbmVkJywgJ251
bGwnLCAndmFsaWRfbmFtZSddOworICAgIHRlc3ROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1l
KSB7CisgICAgICAgIGdsb2JhbE5hbWUgPSBuYW1lOworICAgICAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoZ2xvYmFsTmFtZSkiKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCJzdG9yZS5uYW1lID09IGdsb2JhbE5hbWUiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoZ2xvYmFsTmFtZSkiKTsKKyAgICAgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoZ2xvYmFsTmFtZSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgICAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgdGVzdE5hbWVzID0gWycnLCAnICcsICd1bmRl
ZmluZWQnLCAnbnVsbCcsICd2YWxpZF9uYW1lJ107CisgICAgdGVzdE5hbWVzLmZvckVhY2goZnVu
Y3Rpb24gKG5hbWUpIHsKKyAgICAgICAgZ2xvYmFsTmFtZSA9IG5hbWU7CisgICAgICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKKyAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4
KGdsb2JhbE5hbWUsICdrZXlQYXRoJykiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleC5u
YW1lID09IHN0b3JlLmluZGV4KGdsb2JhbE5hbWUpLm5hbWUiKTsKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUuZGVsZXRlSW5kZXgoZ2xvYmFsTmFtZSkiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlSW5kZXgoZ2xvYmFsTmFtZSkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworICAgIH0pOworCisgICAgdGVzdEludmFsaWROYW1lcygpOworfQorCitmdW5jdGlvbiB0
ZXN0SW52YWxpZE5hbWVzKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisgICAgdGVzdE5hbWVzID0gW3VuZGVmaW5lZCwgbnVsbF07CisgICAgdGVz
dE5hbWVzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgZ2xvYmFsTmFtZSA9IG5h
bWU7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KGdsb2JhbE5hbWUpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7
CisgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3VuZGVmaW5lZCcp
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisgICAgdGVzdE5hbWVzID0gW3VuZGVmaW5lZCwgbnVsbF07Cisg
ICAgdGVzdE5hbWVzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgZ2xvYmFsTmFt
ZSA9IG5hbWU7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnIiArIGdsb2JhbE5hbWUgKyAiJykiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoZ2xvYmFsTmFtZSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKyAgICB9KTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5jcmVhdGVJbmRleCgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9U
UkFOU0lFTlRfRVJSIik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB0ZXN0
TmFtZXMgPSBbdW5kZWZpbmVkLCBudWxsXTsKKyAgICB0ZXN0TmFtZXMuZm9yRWFjaChmdW5jdGlv
biAobmFtZSkgeworICAgICAgICBnbG9iYWxOYW1lID0gbmFtZTsKKyAgICAgICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwor
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jcmVhdGVJbmRleChnbG9iYWxO
YW1lLCAna2V5UGF0aCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJS
Iik7CisgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4
KCd1bmRlZmluZWQnLCAna2V5UGF0aCcpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuaW5kZXgoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIp
OworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgdGVzdE5hbWVzID0gW3VuZGVm
aW5lZCwgbnVsbF07CisgICAgdGVzdE5hbWVzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAg
ICAgICAgZ2xvYmFsTmFtZSA9IG5hbWU7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCciICsgZ2xvYmFsTmFtZSAr
ICInLCAna2V5UGF0aCcpIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LmluZGV4KGdsb2JhbE5hbWUpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRf
RVJSIik7CisgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUlu
ZGV4KCd1bmRlZmluZWQnLCAna2V5UGF0aCcpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleC5u
YW1lID09IHN0b3JlLmluZGV4KCd1bmRlZmluZWQnKS5uYW1lIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlSW5kZXgoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T05fVFJBTlNJRU5UX0VSUiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAg
dGVzdE5hbWVzID0gW3VuZGVmaW5lZCwgbnVsbF07CisgICAgdGVzdE5hbWVzLmZvckVhY2goZnVu
Y3Rpb24gKG5hbWUpIHsKKyAgICAgICAgZ2xvYmFsTmFtZSA9IG5hbWU7CisgICAgICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKKyAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4
KCciICsgZ2xvYmFsTmFtZSArICInLCAna2V5UGF0aCcpIik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiaW5kZXgubmFtZSA9PSBzdG9yZS5pbmRleCgnIiArIGdsb2JhbE5hbWUgKyAiJykubmFtZSIp
OworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5kZWxldGVJbmRleChnbG9i
YWxOYW1lKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAg
ICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgZG9uZSgpOwor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NTc2M2YyYjk1MjkyNWJmZDQwZTlm
MWY1YWYzMzA3YjVkNmZkYzBjLi41NTlmOGMwY2M1ZDU1ZTIzYmE5YWY0ZDdhMWRiZGRkN2UwZDVj
OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDYtMjAgIEtlbnRhcm8gSGFy
YSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaHJvdyBOT05fVFJBTlNJRU5UX0VSUiB3aGVuIHxuYW1lfCBhcmd1
bWVudCBvZiBjcmVhdGVPYmplY3RTdG9yZSgpLCBkZWxldGVPYmplY3RTdG9yZSgpLCBjcmVhdGVJ
bmRleCgpLCBkZWxldGVJbmRleCgpIGFuZCBpbmRleCgpIGlzIGludmFsaWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNDE0CisKKyAgICAgICAgQXQg
dGhlIGhlYWQgb2YgY3JlYXRlT2JqZWN0U3RvcmUoKSwgZGVsZXRlT2JqZWN0U3RvcmUoKSwgY3Jl
YXRlSW5kZXgoKSwgZGVsZXRlSW5kZXgoKQorICAgICAgICBhbmQgaW5kZXgoKSwgd2UgY2hlY2sg
fG5hbWV8IGFyZ3VtZW50IGFuZCB0aHJvdyBOT05fVFJBTlNJRU5UX0VSUiBpZiB8bmFtZXwgYXJn
dW1lbnQKKyAgICAgICAgaXMgbnVsbCBvciB1bmRlZmluZWQuCisKKyAgICAgICAgVGVzdDogc3Rv
cmFnZS9pbmRleGVkZGIvbmFtZS1iYXNpY3MuaHRtbAorCisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsOgorCiAyMDExLTA2LTE0ICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFy
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggNzc4MjczYTU2MjMz
MzYyZTU3YjYxOWZjY2RlMDBmZjc5MzQ4MjE1Yi4uMWYyYjRlZWE1MDYyM2M2ZDY0YjU1YmFmYjEz
ODdiNzg4ZDc0Mzg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAg
LTc5LDYgKzc5LDExIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvCiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAorICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKICAgICBTdHJpbmcga2V5UGF0aDsKICAgICBvcHRpb25zLmdldEtleVN0cmluZygia2V5
UGF0aCIsIGtleVBhdGgpOwogICAgIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNlOwpAQCAtMTAw
LDYgKzEwNSwxMSBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBt
X2JhY2tlbmQtPmRlbGV0ZU9iamVjdFN0b3JlKG5hbWUsIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9u
LT5iYWNrZW5kKCksIGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlk
bAppbmRleCA3M2E0YTE4YTQ4NDVjNGJlMTBmMzg5OTJiZWY3MzQwNDNiNWU3NzcwLi4wMzU5ZjVl
ZGE1NjZlYjAwOTE3MTg0NTUwYTI0OTVhYWYxZDllMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlLmlkbApAQCAtMzksOSArMzksOSBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CiAgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9udmVyc2lvbmNoYW5nZTsKIAotICAgICAgICBJREJPYmplY3RTdG9yZSBj
cmVhdGVPYmplY3RTdG9yZShpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBu
YW1lLCBpbiBbT3B0aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0aW9ucykKKyAgICAgICAgSURCT2Jq
ZWN0U3RvcmUgY3JlYXRlT2JqZWN0U3RvcmUoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051
bGxTdHJpbmddIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0
aW9ucykKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwotICAgICAg
ICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lKQorICAgICAgICB2b2lk
IGRlbGV0ZU9iamVjdFN0b3JlKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihpbiBbQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nIHZlcnNpb24pCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFi
YXNlRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCmluZGV4IDE3OGIyN2ZhOGUxOWRmMWFmMTU2MDFlY2UwZTlkNDQ1ZDU4
NDYwZTkuLjhmZTk3MWEyN2M5MTEyNDc1OWNmZjMyMDNkZThkY2Q4NTQ1ZjY4NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAt
MTAxLDEwICsxMDEsNiBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0UwogewogICAgIEFTU0VSVCh0
cmFuc2FjdGlvblB0ci0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7
CiAKLSAgICBpZiAobmFtZS5pc051bGwoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAg
IGlmIChtX29iamVjdFN0b3Jlcy5jb250YWlucyhuYW1lKSkgewogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDFhM2U3NDE0YjI5ZWY1
NzczYzZhZDg2YTY5NTg4ZDliYTYwYWFmZDMuLmI4NTU2ZTNkMmNkNTZhNWY5MGQyYTNkMDkxMGY1
OGI5ZTM5OGRmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3Bw
CkBAIC0xMjQsNiArMTI0LDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4CiAKIFBhc3NSZWZQ
dHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgY29uc3QgT3B0aW9uc09iamVjdCYgb3B0aW9ucywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKwogICAgIGJvb2wgdW5pcXVlID0gZmFsc2U7CiAgICAgb3B0aW9ucy5n
ZXRLZXlCb29sKCJ1bmlxdWUiLCB1bmlxdWUpOwogCkBAIC0xMzYsNiArMTQxLDExIEBAIFBhc3NS
ZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluCiAKIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3Jl
OjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlm
IChuYW1lLmlzTnVsbCgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
Tl9UUkFOU0lFTlRfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmluZGV4KG5h
bWUsIGVjKTsKICAgICBBU1NFUlQoIWluZGV4ICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQg
YW4gaW5kZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZp
Y2UgdmVyc2EuCiAgICAgaWYgKCFpbmRleCkKQEAgLTE0NSw2ICsxNTUsMTEgQEAgUGFzc1JlZlB0
cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMKIAogdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobmFtZS5pc051bGwo
KSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fb2JqZWN0U3RvcmUtPmRlbGV0ZUlu
ZGV4KG5hbWUsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IDlkOTJmMDc1YWZlZWQ1YzEwOGUx
ZjdjMDQwNWFmY2RiMzlkNWRkMjMuLjcyOTIzNGQ5NTYyOWMyM2QyYTMxYzQxN2I1YWI0NjhjMjBl
ODRlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCkBAIC00
NCwxMSArNDQsMTEgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAgICAgcmFpc2VzIChJREJE
YXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5n
ZSwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCiAgICAgICAgICAgICBy
YWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKLSAgICAgICAgSURCSW5kZXggY3JlYXRlSW5k
ZXgoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBPcHRp
b25zT2JqZWN0IG9wdGlvbnMpCisgICAgICAgIElEQkluZGV4IGNyZWF0ZUluZGV4KGluIFtDb252
ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBPcHRp
b25zT2JqZWN0IG9wdGlvbnMpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0
aW9uKTsKLSAgICAgICAgSURCSW5kZXggaW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAg
IElEQkluZGV4IGluZGV4KGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24p
OwotICAgICAgICB2b2lkIGRlbGV0ZUluZGV4KGluIERPTVN0cmluZyBuYW1lKQorICAgICAgICB2
b2lkIGRlbGV0ZUluZGV4KGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24p
OwogICAgIH07CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97974</attachid>
            <date>2011-06-21 05:56:40 -0700</date>
            <delta_ts>2011-06-27 02:15:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62414-20110621085642.patch</filename>
            <type>text/plain</type>
            <size>7558</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MzQ4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDYtMjEgIE1hcmsgUGls
Z3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQjogY3JlYXRlT2JqZWN0U3RvcmUoKSBuYW1l
IGFyZ3VtZW50IGlzIHJlcXVpcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MjQxNAorCisgICAgICAgIFJlbW92ZXMgTGVnYWN5RGVmYXVsdE9wdGlv
bmFsQXJndW1lbnRzIGZsYWcgd2hpY2ggd2lsbCB0cmlnZ2VyIGEKKyAgICAgICAgVHlwZUVycm9y
IGNhbGxpbmcgZnVuY3Rpb25zIHdpdGggbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudHMsIGFzCisg
ICAgICAgIHBlciBXZWJJREwgc3BlYy4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRk
Yi9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKKworICAgICAg
ICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaWRsOgorCiAyMDExLTA2LTIxICBBbGV4YW5kZXIgUGF2
bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCShyZXZp
c2lvbiA4OTMyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBAIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgIGlu
dGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UsCi0gICAgICAg
IExlZ2FjeURlZmF1bHRPcHRpb25hbEFyZ3VtZW50cywKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0
LAogICAgICAgICBFdmVudFRhcmdldAogICAgIF0gSURCRGF0YWJhc2UgewpAQCAtNDQsNyArNDMs
NyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhj
ZXB0aW9uKTsKICAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFt
ZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwotICAgICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qg
c2V0VmVyc2lvbihpbiBbQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3Ry
aW5nIHZlcnNpb24pCisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBzZXRWZXJzaW9uKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZ10gRE9NU3RyaW5nIHZlcnNpb24pCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNl
RXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElE
QlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKGluIFtPcHRpb25hbF0gRE9NU3RyaW5nTGlzdCBzdG9y
ZU5hbWVzLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IG1vZGUpCiAgICAgICAgICAgICBy
YWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKQEAgLTUzLDEwICs1MiwxMCBAQCBtb2R1bGUg
c3RvcmFnZSB7CiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKICAgICAgICAgdm9p
ZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7
CiAgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCiAgICAgICAgICAg
ICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogICAgIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4OTM0
OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDExLTA2LTIxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6
IGNyZWF0ZU9iamVjdFN0b3JlKCkgbmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI0MTQKKworICAgICAgICBh
bHNvIGZpeCBzZXRWZXJzaW9uIHRlc3Qgd2hpY2ggaXMgYnJva2VuIGJ5IHRoZSBJREwgaW50ZXJm
YWNlLWxldmVsIGNoYW5nZQorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2Jq
ZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQt
cmVxdWlyZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVy
c2lvbi11bmRlZmluZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3NldFZlcnNpb24tdW5kZWZpbmVkLmh0bWw6CisKIDIwMTEtMDYtMjAgIEpvc2VwaCBQZWNvcmFy
byAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxk
bWFuLgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3Rv
cmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVu
dC1yZXF1aXJlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorVGVzdCBJbmRleGVkREIn
cyBjcmVhdGVPYmplY3RTdG9yZSBuYW1lIGlzIHJlcXVpcmVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTICd3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyBpcyB0cnVlCitQ
QVNTIHdlYmtpdEluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCit3ZWJraXRJbmRleGVkREIub3Bl
bignY3JlYXRlLW9iamVjdC1zdG9yZS1yZXF1aXJlZCcsICdkZXNjcmlwdGlvbicpCitkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQor
RGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK1BBU1MgZGIuY3JlYXRlT2JqZWN0U3RvcmUoKTsg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1y
ZXF1aXJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW5h
bWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRlT2JqZWN0U3Rv
cmUgbmFtZSBpcyByZXF1aXJlZCIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93Iik7
CisgICAgc2hvdWxkQmVGYWxzZSgid2Via2l0SW5kZXhlZERCID09IG51bGwiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbignY3JlYXRlLW9iamVjdC1z
dG9yZS1yZXF1aXJlZCcsICdkZXNjcmlwdGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSB0ZXN0Q3JlYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RDcmVhdGVPYmplY3RT
dG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNob3VsZFRo
cm93KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgpOyIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9u
LXVuZGVmaW5lZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4
OTMyMSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tdW5kZWZp
bmVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsMTIgKzEzLDggQEAgSURCS2V5
UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2luZAogUEFTUyBJREJLZXlSYW5nZSA9PSBu
dWxsIGlzIGZhbHNlCiBpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKIGRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdAotRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnNldFZlcnNpb24o
KTsKLVBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5z
ZXRWZXJzaW9uKG51bGwpOwotUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBp
cyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgorUEFTUyBkYi5zZXRWZXJz
aW9uKCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgor
UEFTUyBkYi5zZXRWZXJzaW9uKG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PTl9UUkFO
U0lFTlRfRVJSOiBET00gSURCRGF0YWJhc2UgRXhjZXB0aW9uIDIuCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3NldFZlcnNpb24tdW5kZWZpbmVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbAkocmV2
aXNpb24gODkzMjEpCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9u
LXVuZGVmaW5lZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIGZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKIHsKICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwogIAotICAgIHJlcXVlc3QgPSBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5z
ZXRWZXJzaW9uKCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnNldFZlcnNpb24obnVs
bCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgc2hv
dWxkVGhyb3coImRiLnNldFZlcnNpb24oKTsiKTsKKyAgICBzaG91bGRUaHJvdygiZGIuc2V0VmVy
c2lvbihudWxsKTsiKTsKICAgICBkb25lKCk7CiB9CiAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>