<?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>111459</bug_id>
          
          <creation_ts>2013-03-05 11:12:26 -0800</creation_ts>
          <short_desc>IndexedDB: Use WeakPtr for Factory-to-BackingStore reference</short_desc>
          <delta_ts>2013-03-11 13:29:30 -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>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>
          <dependson>111819</dependson>
          <blocked>110820</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>847839</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-05 11:12:26 -0800</bug_when>
    <thetext>IndexedDB: Use WeakPtr for Factory-to-BackingStore reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847849</commentid>
    <comment_count>1</comment_count>
      <attachid>191519</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-05 11:18:28 -0800</bug_when>
    <thetext>Created attachment 191519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847858</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-05 11:29:25 -0800</bug_when>
    <thetext>This is an exploratory change. We should probably not use it as-is.

...

As currently implemented, the factory maintains a map of origin-&gt;backing store (raw ptr) so that each database opened within the same origin uses the same backing store. To maintain this map, the backing store holds a RefPtr to the factory and when it is destructed it calls into the factory to remove the map entry.

This patch changes the map&apos;s pointer type to a WeakRef, so that backing store no longer needs an explicit reference to the factory.

The impetus is https://bugs.webkit.org/show_bug.cgi?id=110820 - for in-memory backing stores, we want the IDBFactoryBackendImpl lifetime to dictate the IDBBackingStore lifetime - so, the factory should maintain a RefPtr to the backing store. If the backing store had a RefPtr to the factory that would introduce a reference cycle.

...

As written the HashMap&lt;String, WeakPtr&lt;&gt;&gt; entries will never be cleared out. That will cost some memory for each origin encountered, which is not ideal. We may need to introduce a WeakPtrHashMap&lt;&gt; that cleans up HashMap entries when the ref goes away.

...

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847992</commentid>
    <comment_count>3</comment_count>
      <attachid>191519</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-05 13:17:12 -0800</bug_when>
    <thetext>Comment on attachment 191519
Patch

Sounds like a reasonable idea.  We&apos;re trying to be careful about where we use WeakPtr so that we gain experience with it slowly, but this sounds like a good use case.  (I haven&apos;t reviewed the details of this patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849147</commentid>
    <comment_count>4</comment_count>
      <attachid>191803</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-06 11:45:41 -0800</bug_when>
    <thetext>Created attachment 191803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849150</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-06 11:49:24 -0800</bug_when>
    <thetext>Rebased on other IDBBackingStore changes.

This prevents the HashMap&lt;K,WeakPtr&lt;M&gt;&gt; from growing unbounded by introducing an explicit &quot;cleanWeakMap&quot; call at the point of insertion that scrubs the map of nulled WeakPtrs. Not an ideal approach, but plausible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849317</commentid>
    <comment_count>6</comment_count>
      <attachid>191803</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-06 14:42:12 -0800</bug_when>
    <thetext>Comment on attachment 191803
Patch

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

We could also let you register a callback with WeakPtr to be notified when it gets cleared, but we probably don&apos;t need to tech to that level yet.

&gt; Source/WebCore/Modules/indexeddb/IDBFactoryBackendImpl.cpp:45
&gt; +template&lt;typename K, typename M&gt;
&gt; +static void cleanWeakMap(HashMap&lt;K, WeakPtr&lt;M&gt; &gt;&amp; map)

This seems like a pretty general-purpose function for this file.  I wonder if we should move it to WTF somewhere...  Maybe this pattern is obscure enough that it&apos;s fine to keep it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850497</commentid>
    <comment_count>7</comment_count>
      <attachid>192086</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-07 14:43:59 -0800</bug_when>
    <thetext>Created attachment 192086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850500</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-07 14:45:20 -0800</bug_when>
    <thetext>alecflett@ - can you look this over before landing since the merge with your backing store changes/tests involved deleting some assertions? I may have missed the intent of something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850576</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-07 15:54:52 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; This seems like a pretty general-purpose function for this file.  I wonder if we should move it to WTF somewhere...  Maybe this pattern is obscure enough that it&apos;s fine to keep it here.

Yeah, I coded it in a generic fashion anticipating re-use. It could be re-used in the following other places in IDB to the need for custom &quot;lifetime awareness&quot; tracking:

IDBTransaction - replace register/unregisterOpenCursor/HashSet&lt;IDBCursor*&gt;
IDBTransactionBackendImpl - same thing, but the back end objects
IDBFactoryBackendImpl - currently manages lifetime of IDBDatabaseBackendImpls but could be made weak

Given that it bridges HashSet and WeakPtr I didn&apos;t spot a good place in WTF to wedge it, but will keep pondering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850577</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-07 15:56:15 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; It could be re-used

&quot;it&quot; = WeakPtr + HashMap

&gt; ...to the need for...

...to replace...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850707</commentid>
    <comment_count>11</comment_count>
      <attachid>192086</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 17:44:22 -0800</bug_when>
    <thetext>Comment on attachment 192086
Patch

Clearing flags on attachment: 192086

Committed r145166: &lt;http://trac.webkit.org/changeset/145166&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850708</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 17:44:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850858</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 21:44:08 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 111819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851254</commentid>
    <comment_count>14</comment_count>
      <attachid>192239</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-08 09:34:28 -0800</bug_when>
    <thetext>Created attachment 192239
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851258</commentid>
    <comment_count>15</comment_count>
      <attachid>192239</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 09:41:12 -0800</bug_when>
    <thetext>Comment on attachment 192239
Patch for landing

Rejecting attachment 192239 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--non-interactive&apos;, 192239, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

/mnt/git/webkit-commit-queue/Source/WebKit/chromium/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-commit-queue.appspot.com/results/17109112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851261</commentid>
    <comment_count>16</comment_count>
      <attachid>192241</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-08 09:44:43 -0800</bug_when>
    <thetext>Created attachment 192241
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851263</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-08 09:45:53 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; /mnt/git/webkit-commit-queue/Source/WebKit/chromium/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Apparently my &quot;update changelogs with newly added files&quot; script has some glitches. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851285</commentid>
    <comment_count>18</comment_count>
      <attachid>192241</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 10:08:30 -0800</bug_when>
    <thetext>Comment on attachment 192241
Patch for landing

Clearing flags on attachment: 192241

Committed r145238: &lt;http://trac.webkit.org/changeset/145238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851286</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 10:08:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191519</attachid>
            <date>2013-03-05 11:18:28 -0800</date>
            <delta_ts>2013-03-06 11:45:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111459-20130305111434.patch</filename>
            <type>text/plain</type>
            <size>12446</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIzMzM1MGMxOTIxZjgz
NTZiNWJmY2M0ZjRjNWVjYTRmZGM5ZmQ4MC4uOTliYmUyYmI2NWVkMWYzNDFhYWNiMDllM2Y1Mzdj
NWUwMTk0MTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAzLTA1ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBVc2Ug
V2Vha1B0ciBmb3IgRmFjdG9yeS10by1CYWNraW5nU3RvcmUgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE0NTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJREJGYWN0b3J5QmFja2VuZElt
cGwgbWFpbnRhaW5zIGEgbWFwIG9mIGJhY2tpbmcgc3RvcmVzIC0gaWYgYW5vdGhlciBkYXRhYmFz
ZSBpbiB0aGUgc2FtZQorICAgICAgICBvcmlnaW4gaXMgb3BlbmVkLCB0aGUgYmFja2luZyBzdG9y
ZSBpbnN0YW5jZSBtdXN0IGJlIHJlLXVzZWQpLiBUaGlzIHdhcyBhIG1hcCB0byByYXcKKyAgICAg
ICAgcG9pbnRlcnMgc28gdGhhdCB0aGUgYmFja2luZyBzdG9yZSBjYW4gYmUgY29sbGVjdGVkIHdo
ZW4gYWxsIGRhdGFiYXNlIHJlZmVyZW5jZXMgYXJlCisgICAgICAgIGRyb3BwZWQuIFRoZSBtYXAg
d2FzIG1haW50YWluZWQgbWFudWFsbHkgYnkgcGFzc2luZyB0aGUgZmFjdG9yeSB0byB0aGUgSURC
QmFja2luZ1N0b3JlIHdoaWNoCisgICAgICAgIHdvdWxkIGFkZC9yZW1vdmUgaXRzZWxmIG9uIGNy
ZWF0aW9uL2Rlc3RydWN0aW9uLgorCisgICAgICAgIFJlcGxhY2UgdGhpcyB3aXRoIGEgSGFzaE1h
cDxXZWFrUHRyPD4+LiBUaGlzIHNpbXBsaWZpZXMgdGhlIHBsdW1iaW5nLCBidXQgbGVha3MgbWFw
IGVudHJpZXMKKyAgICAgICAgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgSURCRmFjdG9yeUJhY2tl
bmRJbXBsIGluc3RhbmNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIGp1c3QgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OklEQkJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6On5JREJCYWNraW5nU3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
SURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlV2Vha1B0cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Bl
bkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmg6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEltcGwpOgorCiAyMDEzLTAz
LTA0ICBVZGF5IEtpcmFuICA8dWRheWtpcmFuQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBnZXRQ
cm9wZXJ0eVZhbHVlIGZvciAtd2Via2l0LXRleHQtc3Ryb2tlIHJldHVybnMgbnVsbCwgc2hvdWxk
IGNvbXB1dGUgdGhlIHNob3J0aGFuZCB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAwZTVhNmQ2Zjc2N2MxNzliZTVmNThmZWFhZDI1MWU2NDBhZTE5Y2Y3Li5jZjllNDgwM2M5ZTQz
MmEzZjkwZDg4MTM4MTcyM2U0YzkwYTg3NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTA1ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBVc2UgV2Vha1B0ciBmb3IgRmFjdG9yeS10by1C
YWNraW5nU3RvcmUgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTE0NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHRlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNwcDogUmVtb3Zl
IGRlbGV0ZWQgYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMy0wMy0w
NCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBj
ZWxsRm9yQ29sdW1uQW5kUm93IGZhaWxzIGZvciB0YWJsZXMgd2l0aCBoaWRkZW4gdGFibGUgY2Vs
bHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDkwOWVlYWU2NjdhMGY3NmY0NDk1NmM1ZTIzMzFmOGJiOTFmM2EyMWMu
LjJjYmMwNDE0Zjk2NDdkNjIyMmFkYmVkMTE2ZWY4ZWQxZDE0OTYyMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhpc3Rv
Z3JhbVN1cHBvcnQuaCIKLSNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNs
dWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5
UmFuZ2UuaCIKQEAgLTMzNiwyNCArMzM1LDIwIEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1JREJC
YWNraW5nU3RvcmU6OklEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIElE
QkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+
IGRiKQorSURCQmFja2luZ1N0b3JlOjpJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGIpCiAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKLSAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV9kYihkYikK
KyAgICAsIG1fd2Vha0ZhY3RvcnkodGhpcykKIHsKLSAgICBtX2ZhY3RvcnktPmFkZElEQkJhY2tp
bmdTdG9yZShpZGVudGlmaWVyLCB0aGlzKTsKIH0KIAogSURCQmFja2luZ1N0b3JlOjpJREJCYWNr
aW5nU3RvcmUoKQorICAgIDogbV93ZWFrRmFjdG9yeSh0aGlzKQogewogfQogCiBJREJCYWNraW5n
U3RvcmU6On5JREJCYWNraW5nU3RvcmUoKQogewotICAgIC8vIE9ubHkgbnVsbCBpbiB0ZXN0cy4K
LSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICBtX2ZhY3RvcnktPnJlbW92ZUlEQkJhY2tpbmdT
dG9yZShtX2lkZW50aWZpZXIpOwotCiAgICAgLy8gbV9kYidzIGRlc3RydWN0b3IgdXNlcyBtX2Nv
bXBhcmF0b3IuIFRoZSBvcmRlciBvZiBkZXN0cnVjdGlvbiBpcyBpbXBvcnRhbnQuCiAgICAgbV9k
Yi5jbGVhcigpOwogICAgIG1fY29tcGFyYXRvci5jbGVhcigpOwpAQCAtMzczLDEzICszNjgsMTMg
QEAgZW51bSBJREJMZXZlbERCQmFja2luZ1N0b3JlT3BlblJlc3VsdCB7CiAgICAgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZU9wZW5NYXgsCiB9OwogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
SURCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwYXRoQmFzZUFyZywgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURC
RmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5KQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+
IElEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpCiB7
CiAgICAgRGVmYXVsdExldmVsREJGYWN0b3J5IGxldmVsREJGYWN0b3J5OwotICAgIHJldHVybiBJ
REJCYWNraW5nU3RvcmU6Om9wZW4oc2VjdXJpdHlPcmlnaW4sIHBhdGhCYXNlQXJnLCBmaWxlSWRl
bnRpZmllciwgZmFjdG9yeSwgJmxldmVsREJGYWN0b3J5KTsKKyAgICByZXR1cm4gSURCQmFja2lu
Z1N0b3JlOjpvcGVuKHNlY3VyaXR5T3JpZ2luLCBwYXRoQmFzZUFyZywgZmlsZUlkZW50aWZpZXIs
ICZsZXZlbERCRmFjdG9yeSk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJC
YWNraW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBT
dHJpbmcmIHBhdGhCYXNlQXJnLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJGYWN0
b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIExldmVsREJGYWN0b3J5KiBsZXZlbERCRmFjdG9yeSkK
K1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJCYWNraW5nU3RvcmU6Om9wZW4oU2VjdXJp
dHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBjb25z
dCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSogbGV2ZWxEQkZhY3Rvcnkp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW4iKTsKICAgICBTdHJpbmcg
cGF0aEJhc2UgPSBwYXRoQmFzZUFyZzsKQEAgLTQ0OSw3ICs0NDQsNyBAQCBQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gSURCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1
cml0eU9yaWdpbgogCiAgICAgLy8gRklYTUU6IEhhbmRsZSBjb21wYXJhdG9yIG5hbWUgY2hhbmdl
cy4KIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihu
ZXcgSURCQmFja2luZ1N0b3JlKGZpbGVJZGVudGlmaWVyLCBmYWN0b3J5LCBkYi5yZWxlYXNlKCkp
KSk7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKGFkb3B0UmVmKG5l
dyBJREJCYWNraW5nU3RvcmUoZmlsZUlkZW50aWZpZXIsIGRiLnJlbGVhc2UoKSkpKTsKICAgICBi
YWNraW5nU3RvcmUtPm1fY29tcGFyYXRvciA9IGNvbXBhcmF0b3IucmVsZWFzZSgpOwogCiAgICAg
aWYgKCFzZXRVcE1ldGFkYXRhKGJhY2tpbmdTdG9yZS0+bV9kYi5nZXQoKSwgZmlsZUlkZW50aWZp
ZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaAppbmRleCA5MjNkN2RjYTY4MDUwYjU0MTc3NzllNmI4ZDE4NWM5NGM4MDA2ODA1Li5j
MjZhYjRmMTdhMzk3Zjk1NzI3ZTE2MDE3MTRlZjYxOTAyMGM1OWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtMzMsMTMg
KzMzLDEzIEBACiAjaW5jbHVkZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMZXZlbERCQ29tcGFyYXRv
cjsKIGNsYXNzIExldmVsREJEYXRhYmFzZTsKIGNsYXNzIExldmVsREJUcmFuc2FjdGlvbjsKLWNs
YXNzIElEQkZhY3RvcnlCYWNrZW5kSW1wbDsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleVJh
bmdlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CkBAIC01Niw4ICs1Niw5IEBAIHB1YmxpYzoKICAg
ICBjbGFzcyBUcmFuc2FjdGlvbjsKIAogICAgIHZpcnR1YWwgfklEQkJhY2tpbmdTdG9yZSgpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbihTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIs
IElEQkZhY3RvcnlCYWNrZW5kSW1wbCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tp
bmdTdG9yZT4gb3BlbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGNv
bnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIExldmVs
REJGYWN0b3J5Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVu
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBm
aWxlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBv
cGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5n
JiBmaWxlSWRlbnRpZmllciwgTGV2ZWxEQkZhY3RvcnkqKTsKKyAgICBXZWFrUHRyPElEQkJhY2tp
bmdTdG9yZT4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigpOyB9CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGdldERhdGFiYXNlTmFtZXMo
KTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqLCBib29sJiBzdWNjZXNzKSBXQVJOX1VOVVNFRF9S
RVRVUk47CkBAIC0xNjksNyArMTcwLDcgQEAgcHVibGljOgogICAgIH07CiAKIHByb3RlY3RlZDoK
LSAgICBJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBJREJGYWN0b3J5
QmFja2VuZEltcGwqLCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4pOworICAgIElEQkJhY2tp
bmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFi
YXNlPik7CiAKICAgICAvLyBTaG91bGQgb25seSB1c2VkIGZvciBtb2NraW5nLgogICAgIElEQkJh
Y2tpbmdTdG9yZSgpOwpAQCAtMTc5LDEwICsxODAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIElEQk9i
amVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwKik7CiAKICAgICBTdHJpbmcgbV9pZGVudGlmaWVy
OwotICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IG1fZmFjdG9yeTsKKwogICAgIE93
blB0cjxMZXZlbERCRGF0YWJhc2U+IG1fZGI7CiAgICAgT3duUHRyPExldmVsREJDb21wYXJhdG9y
PiBtX2NvbXBhcmF0b3I7Ci0KKyAgICBXZWFrUHRyRmFjdG9yeTxJREJCYWNraW5nU3RvcmU+IG1f
d2Vha0ZhY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcAppbmRleCAyM2M2MTZlYTc1Njk0NDg0YjZhMjNjOGZkYmIzMDQ2MzM1MTlmZDhiLi4yOWZm
MDM3NTliMTk4NDVjMjBiYTdmMjZhMjc4MWI3NWZmODViYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHAKQEAgLTY2LDE4ICs2Niw2IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJ
REJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmCiAgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAucmVtb3ZlKHVuaXF1ZUlkZW50aWZpZXIpOwogfQogCi12b2lkIElEQkZh
Y3RvcnlCYWNrZW5kSW1wbDo6YWRkSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlk
ZW50aWZpZXIsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlKQotewotICAgIEFTU0VSVCgh
bV9iYWNraW5nU3RvcmVNYXAuY29udGFpbnMoZmlsZUlkZW50aWZpZXIpKTsKLSAgICBtX2JhY2tp
bmdTdG9yZU1hcC5zZXQoZmlsZUlkZW50aWZpZXIsIGJhY2tpbmdTdG9yZSk7Ci19Ci0KLXZvaWQg
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5n
JiBmaWxlSWRlbnRpZmllcikKLXsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmVNYXAuY29udGFp
bnMoZmlsZUlkZW50aWZpZXIpKTsKLSAgICBtX2JhY2tpbmdTdG9yZU1hcC5yZW1vdmUoZmlsZUlk
ZW50aWZpZXIpOwotfQotCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Z2V0RGF0YWJhc2VO
YW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKIHsKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBi
YWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0
b3J5KTsKQEAgLTEyNywxNiArMTE1LDE3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJ
REJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTCiB7CiAg
ICAgY29uc3QgU3RyaW5nIGZpbGVJZGVudGlmaWVyID0gY29tcHV0ZUZpbGVJZGVudGlmaWVyKHNl
Y3VyaXR5T3JpZ2luLmdldCgpKTsKIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tp
bmdTdG9yZTsKICAgICBJREJCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0MiA9IG1fYmFja2lu
Z1N0b3JlTWFwLmZpbmQoZmlsZUlkZW50aWZpZXIpOwotICAgIGlmIChpdDIgIT0gbV9iYWNraW5n
U3RvcmVNYXAuZW5kKCkpCi0gICAgICAgIGJhY2tpbmdTdG9yZSA9IGl0Mi0+dmFsdWU7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1
cml0eU9yaWdpbi5nZXQoKSwgZGF0YURpcmVjdG9yeSwgZmlsZUlkZW50aWZpZXIsIHRoaXMpOwor
ICAgIGlmIChpdDIgIT0gbV9iYWNraW5nU3RvcmVNYXAuZW5kKCkpIHsKKyAgICAgICAgaWYgKGl0
Mi0+dmFsdWUuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gaXQyLT52YWx1ZS5nZXQoKTsKICAg
ICB9CiAKLSAgICBpZiAoYmFja2luZ1N0b3JlKQorICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1cml0eU9yaWdpbi5nZXQo
KSwgZGF0YURpcmVjdG9yeSwgZmlsZUlkZW50aWZpZXIpOworICAgIGlmIChiYWNraW5nU3RvcmUp
IHsKKyAgICAgICAgbV9iYWNraW5nU3RvcmVNYXAuc2V0KGZpbGVJZGVudGlmaWVyLCBiYWNraW5n
U3RvcmUtPmNyZWF0ZVdlYWtQdHIoKSk7CiAgICAgICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVs
ZWFzZSgpOworICAgIH0KIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAppbmRleCAy
NGY3M2FlZjg4OTdhMDIwYzY0NDI1MjdmMjk5YWNhMzU5ZTZmYTA4Li44YzhhODZhOWVmZTBlZmMw
NTlhYmMxZDg5Zjk0NjBhNGZkZjQ0M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaApAQCAtMzMsNiArMzMs
OCBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTU0
LDggKzU2LDYgQEAgcHVibGljOgogCiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9tIHdlYWsgcG9p
bnRlcnMuCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBT
dHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIHZvaWQgYWRkSURCQmFja2luZ1N0b3JlKGNv
bnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkJhY2tpbmdTdG9yZSopOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmll
cik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZGF0YURpcik7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+ID4gSURC
RGF0YWJhc2VCYWNrZW5kTWFwOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcCBtX2RhdGFiYXNl
QmFja2VuZE1hcDsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQkJhY2tpbmdTdG9y
ZSo+IElEQkJhY2tpbmdTdG9yZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBXZWFr
UHRyPElEQkJhY2tpbmdTdG9yZT4gPiBJREJCYWNraW5nU3RvcmVNYXA7CiAgICAgSURCQmFja2lu
Z1N0b3JlTWFwIG1fYmFja2luZ1N0b3JlTWFwOwogCiAgICAgLy8gT25seSBvbmUgaW5zdGFuY2Ug
b2YgdGhlIGZhY3Rvcnkgc2hvdWxkIGV4aXN0IGF0IGFueSBnaXZlbiB0aW1lLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJDbGVhbnVwT25JT0Vycm9yVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0
LmNwcAppbmRleCA5MGRjY2Q2YjExOWY1MmQ5ODhmNzM0ZjM5MWU5ZjZjZjMzNGU1OTFmLi43NDNl
NWM4MjBlZDAxOTkxZTE3ZDhkYzEwZWI3NTAzNjcxZGFmMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNwcApA
QCAtNzcsOSArNzcsOCBAQCBURVNUKElEQklPRXJyb3JUZXN0LCBDbGVhblVwVGVzdCkKICAgICB0
ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CiAgICAgY29uc3QgU3RyaW5nIHBh
dGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0cigpKTsKICAg
ICBTdHJpbmcgZHVtbXlGaWxlSWRlbnRpZmllcjsKLSAgICBJREJGYWN0b3J5QmFja2VuZEltcGwq
IGR1bW15SURCRmFjdG9yeSA9IDA7CiAgICAgTW9ja0xldmVsREJGYWN0b3J5IG1vY2tMZXZlbERC
RmFjdG9yeTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBJREJC
YWNraW5nU3RvcmU6Om9wZW4ob3JpZ2luLmdldCgpLCBwYXRoLCBkdW1teUZpbGVJZGVudGlmaWVy
LCBkdW1teUlEQkZhY3RvcnksICZtb2NrTGV2ZWxEQkZhY3RvcnkpOworICAgIFJlZlB0cjxJREJC
YWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6b3BlbihvcmlnaW4u
Z2V0KCksIHBhdGgsIGR1bW15RmlsZUlkZW50aWZpZXIsICZtb2NrTGV2ZWxEQkZhY3RvcnkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191803</attachid>
            <date>2013-03-06 11:45:41 -0800</date>
            <delta_ts>2013-03-07 14:43:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111459-20130306114146.patch</filename>
            <type>text/plain</type>
            <size>14444</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGYzZTA0NzcyYzM0NDVh
YmFlYmIxYzQxYThiNjkyNDFhZjFkZTczMS4uODYzMjVjZjFkOWM4MmQxMGNlM2U2NjUwNThhOWEw
ODFhZTNkODY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAzLTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBVc2Ug
V2Vha1B0ciBmb3IgRmFjdG9yeS10by1CYWNraW5nU3RvcmUgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE0NTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJREJGYWN0b3J5QmFja2VuZElt
cGwgbWFpbnRhaW5zIGEgbWFwIG9mIGJhY2tpbmcgc3RvcmVzIC0gaWYgYW5vdGhlciBkYXRhYmFz
ZSBpbiB0aGUgc2FtZQorICAgICAgICBvcmlnaW4gaXMgb3BlbmVkLCB0aGUgYmFja2luZyBzdG9y
ZSBpbnN0YW5jZSBtdXN0IGJlIHJlLXVzZWQpLiBUaGlzIHdhcyBhIG1hcCB0byByYXcKKyAgICAg
ICAgcG9pbnRlcnMgc28gdGhhdCB0aGUgYmFja2luZyBzdG9yZSBjYW4gYmUgY29sbGVjdGVkIHdo
ZW4gYWxsIGRhdGFiYXNlIHJlZmVyZW5jZXMgYXJlCisgICAgICAgIGRyb3BwZWQuIFRoZSBtYXAg
d2FzIG1haW50YWluZWQgbWFudWFsbHkgYnkgcGFzc2luZyB0aGUgZmFjdG9yeSB0byB0aGUgSURC
QmFja2luZ1N0b3JlIHdoaWNoCisgICAgICAgIHdvdWxkIGFkZC9yZW1vdmUgaXRzZWxmIG9uIGNy
ZWF0aW9uL2Rlc3RydWN0aW9uLgorCisgICAgICAgIFJlcGxhY2UgdGhpcyB3aXRoIGEgSGFzaE1h
cDxXZWFrUHRyPD4+LiBUaGlzIHNpbXBsaWZpZXMgdGhlIHBsdW1iaW5nOyBtYXAgZW50cmllcwor
ICAgICAgICAibGVhayIgYnV0IGFyZSBwdXJnZWQgb24gc3Vic2VxdWVudCBvcGVucy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFj
a2luZ1N0b3JlOjpJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjp+SURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdT
dG9yZTo6b3Blbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmNyZWF0ZVdlYWtQdHIpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFuV2Vha01hcCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURC
RmFjdG9yeUJhY2tlbmRJbXBsKToKKwogMjAxMy0wMy0wNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRmaXggYWZ0ZXIgcjE0
NDc4Ny4gQWRkIG1pc3NpbmcgVVNFKEdSQVBISUNTX1NVUkZBQ0UpIGd1YXJkcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZDg4ZTA0MzA5MTM1NDU1MDQyMjIzNjI5MmU3NmU5MWU0YmYx
OGI0Yi4uMzIwYjU4ZGEyOWEzOTA5YmM5YWVjMjY2YjUxZTM2YzEwNDA3Y2JlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0wNiAgSm9zaHVhIEJl
bGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogVXNlIFdlYWtQ
dHIgZm9yIEZhY3RvcnktdG8tQmFja2luZ1N0b3JlIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNDU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9JREJCYWNraW5nU3RvcmVU
ZXN0LmNwcDogTm8gbmVlZCBmb3IgYmFja2luZyBzdG9yZSB0byBmYWN0b3J5IHBvaW50ZXIuCisg
ICAgICAgICogdGVzdHMvSURCQ2xlYW51cE9uSU9FcnJvclRlc3QuY3BwOiBEaXR0by4KKwogMjAx
My0wMy0wNSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFNjcm9sbCBkZWx0YXMgc2hvdWxkIGJlIGZsb2F0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
ZTM3ZDdhNjAzNGQyNWMwNDdiM2U5OTExOTFkYTM5YmJkN2NlMWYxMi4uMGFiY2ZlZDg2Yzc0YTcx
NWZmNjY1NjMwZTgyM2VmN2Q0Yjc3NGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAK
ICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSGlzdG9ncmFtU3VwcG9ydC5oIgot
I2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQktleS5oIgog
I2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAtNDQs
OSArNDMsNiBAQAogI2luY2x1ZGUgIkxldmVsREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaWYgUExBVEZPUk0o
Q0hST01JVU0pCi0jaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+Ci0jZW5kaWYKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMzksMjggKzMz
NSwyMCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotSURCQmFja2luZ1N0b3JlOjpJREJCYWNraW5n
U3RvcmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZh
Y3RvcnksIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBkYikKK0lEQkJhY2tpbmdTdG9yZTo6
SURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc093blB0cjxMZXZl
bERCRGF0YWJhc2U+IGRiKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBt
X2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fZGIoZGIpCisgICAgLCBtX3dlYWtGYWN0b3J5KHRo
aXMpCiB7Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgQVNTRVJUKG1fZmFjdG9yeSB8fCBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpKTsKLSNlbmRpZgot
ICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIG1fZmFjdG9yeS0+YWRkSURCQmFja2luZ1N0b3Jl
KGlkZW50aWZpZXIsIHRoaXMpOwogfQogCiBJREJCYWNraW5nU3RvcmU6OklEQkJhY2tpbmdTdG9y
ZSgpCisgICAgOiBtX3dlYWtGYWN0b3J5KHRoaXMpCiB7CiB9CiAKIElEQkJhY2tpbmdTdG9yZTo6
fklEQkJhY2tpbmdTdG9yZSgpCiB7Ci0gICAgLy8gT25seSBudWxsIGluIHRlc3RzLgotICAgIGlm
IChtX2ZhY3RvcnkpCi0gICAgICAgIG1fZmFjdG9yeS0+cmVtb3ZlSURCQmFja2luZ1N0b3JlKG1f
aWRlbnRpZmllcik7Ci0KICAgICAvLyBtX2RiJ3MgZGVzdHJ1Y3RvciB1c2VzIG1fY29tcGFyYXRv
ci4gVGhlIG9yZGVyIG9mIGRlc3RydWN0aW9uIGlzIGltcG9ydGFudC4KICAgICBtX2RiLmNsZWFy
KCk7CiAgICAgbV9jb21wYXJhdG9yLmNsZWFyKCk7CkBAIC0zODAsMTMgKzM2OCwxMyBAQCBlbnVt
IElEQkxldmVsREJCYWNraW5nU3RvcmVPcGVuUmVzdWx0IHsKICAgICBJREJMZXZlbERCQmFja2lu
Z1N0b3JlT3Blbk1heCwKIH07CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJCYWNr
aW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJp
bmcmIHBhdGhCYXNlQXJnLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJGYWN0b3J5
QmFja2VuZEltcGwqIGZhY3RvcnkpCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCQmFj
a2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBwYXRoQmFzZUFyZywgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcikKIHsKICAgICBE
ZWZhdWx0TGV2ZWxEQkZhY3RvcnkgbGV2ZWxEQkZhY3Rvcnk7Ci0gICAgcmV0dXJuIElEQkJhY2tp
bmdTdG9yZTo6b3BlbihzZWN1cml0eU9yaWdpbiwgcGF0aEJhc2VBcmcsIGZpbGVJZGVudGlmaWVy
LCBmYWN0b3J5LCAmbGV2ZWxEQkZhY3RvcnkpOworICAgIHJldHVybiBJREJCYWNraW5nU3RvcmU6
Om9wZW4oc2VjdXJpdHlPcmlnaW4sIHBhdGhCYXNlQXJnLCBmaWxlSWRlbnRpZmllciwgJmxldmVs
REJGYWN0b3J5KTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkJhY2tpbmdT
dG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYg
cGF0aEJhc2VBcmcsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbCogZmFjdG9yeSwgTGV2ZWxEQkZhY3RvcnkqIGxldmVsREJGYWN0b3J5KQorUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0IFN0cmlu
ZyYgZmlsZUlkZW50aWZpZXIsIExldmVsREJGYWN0b3J5KiBsZXZlbERCRmFjdG9yeSkKIHsKICAg
ICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3BlbiIpOwogICAgIFN0cmluZyBwYXRoQmFz
ZSA9IHBhdGhCYXNlQXJnOwpAQCAtNDU2LDcgKzQ0NCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBJREJCYWNraW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luCiAKICAgICAvLyBGSVhNRTogSGFuZGxlIGNvbXBhcmF0b3IgbmFtZSBjaGFuZ2VzLgogCi0g
ICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKGFkb3B0UmVmKG5ldyBJREJC
YWNraW5nU3RvcmUoZmlsZUlkZW50aWZpZXIsIGZhY3RvcnksIGRiLnJlbGVhc2UoKSkpKTsKKyAg
ICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoYWRvcHRSZWYobmV3IElEQkJh
Y2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZGIucmVsZWFzZSgpKSkpOwogICAgIGJhY2tpbmdT
dG9yZS0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvci5yZWxlYXNlKCk7CiAKICAgICBpZiAoIXNl
dFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpLCBmaWxlSWRlbnRpZmllcikpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5o
CmluZGV4IGZjZmUyZGFlOTBjMGM0YWYwYjUwMjM1ZTVhMTE4MmEyNzkxOTZkNjAuLmU4ZWU2YjZj
ODgwYzYyNTg1ODk1NjA2MTY0OWUzMjU3Y2E2YjYyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0zNCwxMyArMzQsMTMg
QEAKICNpbmNsdWRlICJMZXZlbERCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExldmVsREJDb21wYXJhdG9yOwogY2xh
c3MgTGV2ZWxEQkRhdGFiYXNlOwogY2xhc3MgTGV2ZWxEQlRyYW5zYWN0aW9uOwotY2xhc3MgSURC
RmFjdG9yeUJhY2tlbmRJbXBsOwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCS2V5UmFuZ2U7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTU3LDggKzU3LDkgQEAgcHVibGljOgogICAgIGNsYXNz
IFRyYW5zYWN0aW9uOwogCiAgICAgdmlydHVhbCB+SURCQmFja2luZ1N0b3JlKCk7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCRmFj
dG9yeUJhY2tlbmRJbXBsKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3Ry
aW5nJiBmaWxlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgTGV2ZWxEQkZhY3Rv
cnkqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW4oU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVu
dGlmaWVyKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW4oU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlLCBjb25zdCBTdHJpbmcmIGZpbGVJ
ZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSopOworICAgIFdlYWtQdHI8SURCQmFja2luZ1N0b3Jl
PiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7
IH0KIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZ2V0RGF0YWJhc2VOYW1lcygpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCRGF0YWJhc2VNZXRhZGF0YSosIGJvb2wmIHN1Y2Nlc3MpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
QEAgLTE3MCw3ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJvdGVjdGVkOgotICAgIElE
QkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5k
SW1wbCosIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPik7CisgICAgSURCQmFja2luZ1N0b3Jl
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+KTsK
IAogICAgIC8vIFNob3VsZCBvbmx5IHVzZWQgZm9yIG1vY2tpbmcuCiAgICAgSURCQmFja2luZ1N0
b3JlKCk7CkBAIC0xODAsMTAgKzE4MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0SW5kZXhl
cyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YTo6SW5kZXhNYXAqKTsKIAogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7Ci0gICAg
UmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gbV9mYWN0b3J5OworCiAgICAgT3duUHRyPExl
dmVsREJEYXRhYmFzZT4gbV9kYjsKICAgICBPd25QdHI8TGV2ZWxEQkNvbXBhcmF0b3I+IG1fY29t
cGFyYXRvcjsKLQorICAgIFdlYWtQdHJGYWN0b3J5PElEQkJhY2tpbmdTdG9yZT4gbV93ZWFrRmFj
dG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmlu
ZGV4IDIzYzYxNmVhNzU2OTQ0ODRiNmEyM2M4ZmRiYjMwNDYzMzUxOWZkOGIuLjQ2ZGFiNzY0NWRi
ZjZhNzc4NDQ3MmQzOTAzYmNmNWQ5YTY0MzZmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAt
NDEsNiArNDEsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBLLCB0eXBlbmFtZSBNPgorc3RhdGljIHZvaWQgY2xlYW5XZWFrTWFwKEhhc2hNYXA8SywgV2Vh
a1B0cjxNPiA+JiBtYXApCit7CisgICAgSGFzaE1hcDxLLCBXZWFrUHRyPE0+ID4gb3RoZXI7Cisg
ICAgb3RoZXIuc3dhcChtYXApOworCisgICAgdHlwZW5hbWUgSGFzaE1hcDxLLCBXZWFrUHRyPE0+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBvdGhlci5iZWdpbigpOworICAgIHdoaWxlIChpdGVy
ICE9IG90aGVyLmVuZCgpKSB7CisgICAgICAgIGlmIChpdGVyLT52YWx1ZS5nZXQoKSkKKyAgICAg
ICAgICAgIG1hcC5zZXQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7CisgICAgfQorfQorCiBzdGF0
aWMgU3RyaW5nIGNvbXB1dGVGaWxlSWRlbnRpZmllcihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4pCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgbGV2ZWxEQkZpbGVTdWZmaXhbXSA9ICJA
MSI7CkBAIC02NiwxOCArNzksNiBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6cmVtb3Zl
SURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZgogICAgIG1fZGF0
YWJhc2VCYWNrZW5kTWFwLnJlbW92ZSh1bmlxdWVJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJREJG
YWN0b3J5QmFja2VuZEltcGw6OmFkZElEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJ
ZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSkKLXsKLSAgICBBU1NFUlQo
IW1fYmFja2luZ1N0b3JlTWFwLmNvbnRhaW5zKGZpbGVJZGVudGlmaWVyKSk7Ci0gICAgbV9iYWNr
aW5nU3RvcmVNYXAuc2V0KGZpbGVJZGVudGlmaWVyLCBiYWNraW5nU3RvcmUpOwotfQotCi12b2lk
IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6cmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmlu
ZyYgZmlsZUlkZW50aWZpZXIpCi17Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlTWFwLmNvbnRh
aW5zKGZpbGVJZGVudGlmaWVyKSk7Ci0gICAgbV9iYWNraW5nU3RvcmVNYXAucmVtb3ZlKGZpbGVJ
ZGVudGlmaWVyKTsKLX0KLQogdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OmdldERhdGFiYXNl
TmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
YmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVj
dG9yeSk7CkBAIC0xMjcsMTYgKzEyOCwxOCBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8Uwogewog
ICAgIGNvbnN0IFN0cmluZyBmaWxlSWRlbnRpZmllciA9IGNvbXB1dGVGaWxlSWRlbnRpZmllcihz
ZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNr
aW5nU3RvcmU7CiAgICAgSURCQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdDIgPSBtX2JhY2tp
bmdTdG9yZU1hcC5maW5kKGZpbGVJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQyICE9IG1fYmFja2lu
Z1N0b3JlTWFwLmVuZCgpKQotICAgICAgICBiYWNraW5nU3RvcmUgPSBpdDItPnZhbHVlOwotICAg
IGVsc2UgewotICAgICAgICBiYWNraW5nU3RvcmUgPSBJREJCYWNraW5nU3RvcmU6Om9wZW4oc2Vj
dXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFEaXJlY3RvcnksIGZpbGVJZGVudGlmaWVyLCB0aGlzKTsK
KyAgICBpZiAoaXQyICE9IG1fYmFja2luZ1N0b3JlTWFwLmVuZCgpKSB7CisgICAgICAgIGlmIChp
dDItPnZhbHVlLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0Mi0+dmFsdWUuZ2V0KCk7CiAg
ICAgfQogCi0gICAgaWYgKGJhY2tpbmdTdG9yZSkKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBiYWNraW5nU3RvcmUgPSBJREJCYWNraW5nU3RvcmU6Om9wZW4oc2VjdXJpdHlPcmlnaW4uZ2V0
KCksIGRhdGFEaXJlY3RvcnksIGZpbGVJZGVudGlmaWVyKTsKKyAgICBpZiAoYmFja2luZ1N0b3Jl
KSB7CisgICAgICAgIGNsZWFuV2Vha01hcChtX2JhY2tpbmdTdG9yZU1hcCk7CisgICAgICAgIG1f
YmFja2luZ1N0b3JlTWFwLnNldChmaWxlSWRlbnRpZmllciwgYmFja2luZ1N0b3JlLT5jcmVhdGVX
ZWFrUHRyKCkpOwogICAgICAgICByZXR1cm4gYmFja2luZ1N0b3JlLnJlbGVhc2UoKTsKKyAgICB9
CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggMjRmNzNhZWY4ODk3YTAy
MGM2NDQyNTI3ZjI5OWFjYTM1OWU2ZmEwOC4uOGM4YTg2YTllZmUwZWZjMDU5YWJjMWQ4OWY5NDYw
YTRmZGY0NDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRl
ICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC01NCw4ICs1Niw2IEBAIHB1
YmxpYzoKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgZnJvbSB3ZWFrIHBvaW50ZXJzLgogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIGFkZElEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZp
bGVJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
SURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpOwogCiAgICAgdmly
dHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1l
LCBpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpOwpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiA+IElEQkRhdGFiYXNlQmFja2Vu
ZE1hcDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXAgbV9kYXRhYmFzZUJhY2tlbmRNYXA7CiAK
LSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJCYWNraW5nU3RvcmUqPiBJREJCYWNraW5n
U3RvcmVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgV2Vha1B0cjxJREJCYWNraW5n
U3RvcmU+ID4gSURCQmFja2luZ1N0b3JlTWFwOwogICAgIElEQkJhY2tpbmdTdG9yZU1hcCBtX2Jh
Y2tpbmdTdG9yZU1hcDsKIAogICAgIC8vIE9ubHkgb25lIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5
IHNob3VsZCBleGlzdCBhdCBhbnkgZ2l2ZW4gdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCQmFja2luZ1N0b3JlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkJhY2tpbmdTdG9yZVRlc3QuY3BwCmluZGV4IGFhNGNkYzlmYTgz
NDdkNDBlZWZmMGY3NjczNTcxNDczN2Y3NjQ5MTcuLjJkZDlhNTQ3YTFlNzk5M2UyOTRlYzQ0YWNk
Y2JiMDE1NzBhODM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQmFja2luZ1N0b3JlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcApAQCAtNDMsMTEgKzQzLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbiA9IDA7Ci0gICAgICAgIG1fZmFjdG9yeSA9IDA7CiAgICAgICAgIC8vIEVtcHR5IHBhdGhC
YXNlIG1lYW5zIGFuIGluLW1lbW9yeSBkYXRhYmFzZS4KICAgICAgICAgU3RyaW5nIHBhdGhCYXNl
OwogICAgICAgICBTdHJpbmcgZmlsZUlkZW50aWZpZXI7Ci0gICAgICAgIG1fYmFja2luZ1N0b3Jl
ID0gSURCQmFja2luZ1N0b3JlOjpvcGVuKHNlY3VyaXR5T3JpZ2luLCBwYXRoQmFzZSwgZmlsZUlk
ZW50aWZpZXIsIG1fZmFjdG9yeSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gSURCQmFja2lu
Z1N0b3JlOjpvcGVuKHNlY3VyaXR5T3JpZ2luLCBwYXRoQmFzZSwgZmlsZUlkZW50aWZpZXIpOwog
CiAgICAgICAgIC8vIHVzZWZ1bCBrZXlzIGFuZCB2YWx1ZXMgZHVyaW5nIHRlc3RzCiAgICAgICAg
IGNvbnN0IGNoYXIgcmF3VmFsdWUxW10gPSAidmFsdWUxIjsKQEAgLTU5LDcgKzU4LDYgQEAgcHVi
bGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogbV9m
YWN0b3J5OwogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwogCiAg
ICAgLy8gU2FtcGxlIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFyZSBjb25zaXN0ZW50LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJDbGVhbnVwT25JT0Vycm9yVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JU
ZXN0LmNwcAppbmRleCA5MGRjY2Q2YjExOWY1MmQ5ODhmNzM0ZjM5MWU5ZjZjZjMzNGU1OTFmLi43
NDNlNWM4MjBlZDAxOTkxZTE3ZDhkYzEwZWI3NTAzNjcxZGFmMTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNw
cApAQCAtNzcsOSArNzcsOCBAQCBURVNUKElEQklPRXJyb3JUZXN0LCBDbGVhblVwVGVzdCkKICAg
ICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CiAgICAgY29uc3QgU3RyaW5n
IHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0cigpKTsK
ICAgICBTdHJpbmcgZHVtbXlGaWxlSWRlbnRpZmllcjsKLSAgICBJREJGYWN0b3J5QmFja2VuZElt
cGwqIGR1bW15SURCRmFjdG9yeSA9IDA7CiAgICAgTW9ja0xldmVsREJGYWN0b3J5IG1vY2tMZXZl
bERCRmFjdG9yeTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBJ
REJCYWNraW5nU3RvcmU6Om9wZW4ob3JpZ2luLmdldCgpLCBwYXRoLCBkdW1teUZpbGVJZGVudGlm
aWVyLCBkdW1teUlEQkZhY3RvcnksICZtb2NrTGV2ZWxEQkZhY3RvcnkpOworICAgIFJlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6b3Blbihvcmln
aW4uZ2V0KCksIHBhdGgsIGR1bW15RmlsZUlkZW50aWZpZXIsICZtb2NrTGV2ZWxEQkZhY3Rvcnkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192086</attachid>
            <date>2013-03-07 14:43:59 -0800</date>
            <delta_ts>2013-03-08 09:34:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111459-20130307144003.patch</filename>
            <type>text/plain</type>
            <size>16832</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM4NGRlMzMwYjJhYTMy
YTY3ZmI1ZjZiM2M2YTE5YjAzMzNiZDZkNi4uNTA0NGY5NTRhOWRlMzYyYzBiYjY5NDhjNGE4MzNl
ZTQ2MDA3ZjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAzLTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBVc2Ug
V2Vha1B0ciBmb3IgRmFjdG9yeS10by1CYWNraW5nU3RvcmUgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE0NTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCBt
YWludGFpbnMgYSBtYXAgb2YgYmFja2luZyBzdG9yZXMgLSBpZiBhbm90aGVyIGRhdGFiYXNlIGlu
IHRoZSBzYW1lCisgICAgICAgIG9yaWdpbiBpcyBvcGVuZWQsIHRoZSBiYWNraW5nIHN0b3JlIGlu
c3RhbmNlIG11c3QgYmUgcmUtdXNlZCkuIFRoaXMgd2FzIGEgbWFwIHRvIHJhdworICAgICAgICBw
b2ludGVycyBzbyB0aGF0IHRoZSBiYWNraW5nIHN0b3JlIGNhbiBiZSBjb2xsZWN0ZWQgd2hlbiBh
bGwgZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUKKyAgICAgICAgZHJvcHBlZC4gVGhlIG1hcCB3YXMg
bWFpbnRhaW5lZCBtYW51YWxseSBieSBwYXNzaW5nIHRoZSBmYWN0b3J5IHRvIHRoZSBJREJCYWNr
aW5nU3RvcmUgd2hpY2gKKyAgICAgICAgd291bGQgYWRkL3JlbW92ZSBpdHNlbGYgb24gY3JlYXRp
b24vZGVzdHJ1Y3Rpb24uCisKKyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggYSBIYXNoTWFwPFdl
YWtQdHI8Pj4uIFRoaXMgc2ltcGxpZmllcyB0aGUgcGx1bWJpbmc7IG1hcCBlbnRyaWVzCisgICAg
ICAgICJsZWFrIiBidXQgYXJlIHB1cmdlZCBvbiBzdWJzZXF1ZW50IG9wZW5zLgorCisgICAgICAg
IEFkZGVkIHdlYmtpdF91bml0X3Rlc3QgKENocm9taXVtIHBvcnQpIHRvIHZlcmlmeSByZWZjb3Vu
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpJREJCYWNraW5nU3RvcmUpOiBObyBu
ZWVkIHRvIG5vdGlmeSBmYWN0b3J5IG9mIGxpZmV0aW1lLgorICAgICAgICAoV2ViQ29yZTo6SURC
QmFja2luZ1N0b3JlOjp+SURCQmFja2luZ1N0b3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpJREJCYWNraW5nU3RvcmU6Om9wZW4pOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuaDogTm8gcmVmZXJlbmNlIHRvIHRoZSBmYWN0b3J5LCBidXQu
Li4KKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlV2Vha1B0cik6IERv
IG5lZWQgdG8gZXhwb3NlIHdlYWsgcG9pbnRlcnMgZm9yIHRoZSBmYWN0b3J5IHRvIGhvbGQuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNsZWFuV2Vha01hcCk6IEhlbHBlciBmdW5jdGlvbiB0byBzY3J1YiBh
IEhhc2hNYXA8V2Vha1B0cjxUPj4gb2YgZW1wdHkgcG9pbnRlcnMuCisgICAgICAgIE1heSBtb3Zl
IHRvIFdURiB3aGVuIHdlJ3ZlIGxlYXJuZWQgaG93IGdlbmVyYWwgaXQgaXMsIG9yIGNvbWUgdXAg
d2l0aCBhIGRlZGljYXRlZCBXZWFrUHRySGFzaE1hcCB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKTogV2Vha1B0ciBmdS4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoKKyAgICAg
ICAgKElEQkZhY3RvcnlCYWNrZW5kSW1wbCk6IFJlbW92ZSBwbHVtYmluZyBtZXRob2RzLgorCiAy
MDEzLTAzLTA2ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gSW1wcm92ZSB3YXJuaW5nIG1lc3NhZ2VzIHdoZW4gaW5wdXQgdmFsdWUgaXMg
b3V0IG9mIHJhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1NzdlNTY5MmIyMTVm
MzFlZWE5MjZjMjc1MDExMWM3MzRlYTc1MDhjLi5lNjk2YTlmZmZiMmY4ZTk1MDNmYzVjNDEyYmNj
NWQ1NTcyODFlZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDEzLTAzLTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgSW5kZXhlZERCOiBVc2UgV2Vha1B0ciBmb3IgRmFjdG9yeS10by1CYWNraW5nU3RvcmUgcmVm
ZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTE0NTkKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZGVk
IHRlc3RzIHRvIHZlcmlmeSByZWZjb3VudHMgb24gYmFja2luZyBzdG9yZXMsIHVwZGF0ZSBtZXRo
b2Qgc2lnbmF0dXJlcy4KKworICAgICAgICAqIHRlc3RzL0lEQkJhY2tpbmdTdG9yZVRlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlVGVzdDo6U2V0VXApOiBObyBkdW1t
eSBmYWN0b3J5IG5lZWRlZC4KKyAgICAgICAgKE1vY2tJREJGYWN0b3J5QmFja2VuZCk6IEV4cG9z
ZSBwcm90ZWN0ZWQgbWV0aG9kIHRvIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6IEFk
ZGVkIEJhY2tpbmdTdG9yZUxpZmV0aW1lIHRlc3QuCisgICAgICAgICogdGVzdHMvSURCQ2xlYW51
cE9uSU9FcnJvclRlc3QuY3BwOiBObyBkdW1teSBmYWN0b3J5IG5lZWRlZC4KKwogMjAxMy0wMy0w
NiAgQW5rdXIgVGFseSAgPGF0YWx5QGdvb2dsZS5jb20+CiAKICAgICAgICAgTW9kaWZ5IGxvZyBt
ZXRob2QgaW4gV2ViRE9NQWN0aXZpdHlMb2dnZXIgc28gdGhhdCB0aGUgYXBpTmFtZSBhbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IGUzN2Q3YTYwMzRkMjVjMDQ3YjNlOTkxMTkxZGEzOWJiZDdjZTFmMTIuLjBhYmNm
ZWQ4NmM3NGE3MTVmZjY2NTYzMGU4MjNlZjdkNGI3NzRlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMzAsNyAr
MzAsNiBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhpc3RvZ3JhbVN1
cHBvcnQuaCIKLSNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJ
REJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2Uu
aCIKQEAgLTQ0LDkgKzQzLDYgQEAKICNpbmNsdWRlICJMZXZlbERCVHJhbnNhY3Rpb24uaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2lm
IFBMQVRGT1JNKENIUk9NSVVNKQotI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgotI2VuZGlm
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzM5LDI4ICszMzUsMjAgQEAgcHVibGljOgogICAgIH0KIH07CiAKLUlEQkJhY2tpbmdTdG9yZTo6
SURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tl
bmRJbXBsKiBmYWN0b3J5LCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGIpCitJREJCYWNr
aW5nU3RvcmU6OklEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NP
d25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBkYikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQotICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiAgICAgLCBtX2RiKGRiKQorICAgICwgbV93ZWFr
RmFjdG9yeSh0aGlzKQogewotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIEFTU0VSVChtX2Zh
Y3RvcnkgfHwgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKSk7
Ci0jZW5kaWYKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICBtX2ZhY3RvcnktPmFkZElEQkJh
Y2tpbmdTdG9yZShpZGVudGlmaWVyLCB0aGlzKTsKIH0KIAogSURCQmFja2luZ1N0b3JlOjpJREJC
YWNraW5nU3RvcmUoKQorICAgIDogbV93ZWFrRmFjdG9yeSh0aGlzKQogewogfQogCiBJREJCYWNr
aW5nU3RvcmU6On5JREJCYWNraW5nU3RvcmUoKQogewotICAgIC8vIE9ubHkgbnVsbCBpbiB0ZXN0
cy4KLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICBtX2ZhY3RvcnktPnJlbW92ZUlEQkJhY2tp
bmdTdG9yZShtX2lkZW50aWZpZXIpOwotCiAgICAgLy8gbV9kYidzIGRlc3RydWN0b3IgdXNlcyBt
X2NvbXBhcmF0b3IuIFRoZSBvcmRlciBvZiBkZXN0cnVjdGlvbiBpcyBpbXBvcnRhbnQuCiAgICAg
bV9kYi5jbGVhcigpOwogICAgIG1fY29tcGFyYXRvci5jbGVhcigpOwpAQCAtMzgwLDEzICszNjgs
MTMgQEAgZW51bSBJREJMZXZlbERCQmFja2luZ1N0b3JlT3BlblJlc3VsdCB7CiAgICAgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZU9wZW5NYXgsCiB9OwogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gSURCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBwYXRoQmFzZUFyZywgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwg
SURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5KQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU+IElEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIp
CiB7CiAgICAgRGVmYXVsdExldmVsREJGYWN0b3J5IGxldmVsREJGYWN0b3J5OwotICAgIHJldHVy
biBJREJCYWNraW5nU3RvcmU6Om9wZW4oc2VjdXJpdHlPcmlnaW4sIHBhdGhCYXNlQXJnLCBmaWxl
SWRlbnRpZmllciwgZmFjdG9yeSwgJmxldmVsREJGYWN0b3J5KTsKKyAgICByZXR1cm4gSURCQmFj
a2luZ1N0b3JlOjpvcGVuKHNlY3VyaXR5T3JpZ2luLCBwYXRoQmFzZUFyZywgZmlsZUlkZW50aWZp
ZXIsICZsZXZlbERCRmFjdG9yeSk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJ
REJCYWNraW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJG
YWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIExldmVsREJGYWN0b3J5KiBsZXZlbERCRmFjdG9y
eSkKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJCYWNraW5nU3RvcmU6Om9wZW4oU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBj
b25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSogbGV2ZWxEQkZhY3Rv
cnkpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW4iKTsKICAgICBTdHJp
bmcgcGF0aEJhc2UgPSBwYXRoQmFzZUFyZzsKQEAgLTQ1Niw3ICs0NDQsNyBAQCBQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4gSURCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbgogCiAgICAgLy8gRklYTUU6IEhhbmRsZSBjb21wYXJhdG9yIG5hbWUgY2hh
bmdlcy4KIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJl
ZihuZXcgSURCQmFja2luZ1N0b3JlKGZpbGVJZGVudGlmaWVyLCBmYWN0b3J5LCBkYi5yZWxlYXNl
KCkpKSk7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKGFkb3B0UmVm
KG5ldyBJREJCYWNraW5nU3RvcmUoZmlsZUlkZW50aWZpZXIsIGRiLnJlbGVhc2UoKSkpKTsKICAg
ICBiYWNraW5nU3RvcmUtPm1fY29tcGFyYXRvciA9IGNvbXBhcmF0b3IucmVsZWFzZSgpOwogCiAg
ICAgaWYgKCFzZXRVcE1ldGFkYXRhKGJhY2tpbmdTdG9yZS0+bV9kYi5nZXQoKSwgZmlsZUlkZW50
aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuaAppbmRleCBmY2ZlMmRhZTkwYzBjNGFmMGI1MDIzNWU1YTExODJhMjc5MTk2ZDYw
Li5lOGVlNmI2Yzg4MGM2MjU4NTg5NTYwNjE2NDllMzI1N2NhNmI2MmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtMzQs
MTMgKzM0LDEzIEBACiAjaW5jbHVkZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMZXZlbERCQ29tcGFy
YXRvcjsKIGNsYXNzIExldmVsREJEYXRhYmFzZTsKIGNsYXNzIExldmVsREJUcmFuc2FjdGlvbjsK
LWNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW1wbDsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktl
eVJhbmdlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CkBAIC01Nyw4ICs1Nyw5IEBAIHB1YmxpYzoK
ICAgICBjbGFzcyBUcmFuc2FjdGlvbjsKIAogICAgIHZpcnR1YWwgfklEQkJhY2tpbmdTdG9yZSgp
OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbihTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZp
ZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZT4gb3BlbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2Us
IGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIExl
dmVsREJGYWN0b3J5Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBv
cGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5n
JiBmaWxlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3Ry
aW5nJiBmaWxlSWRlbnRpZmllciwgTGV2ZWxEQkZhY3RvcnkqKTsKKyAgICBXZWFrUHRyPElEQkJh
Y2tpbmdTdG9yZT4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3RvcnkuY3JlYXRl
V2Vha1B0cigpOyB9CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGdldERhdGFiYXNlTmFt
ZXMoKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqLCBib29sJiBzdWNjZXNzKSBXQVJOX1VOVVNF
RF9SRVRVUk47CkBAIC0xNzAsNyArMTcxLDcgQEAgcHVibGljOgogICAgIH07CiAKIHByb3RlY3Rl
ZDoKLSAgICBJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBJREJGYWN0
b3J5QmFja2VuZEltcGwqLCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4pOworICAgIElEQkJh
Y2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8TGV2ZWxEQkRh
dGFiYXNlPik7CiAKICAgICAvLyBTaG91bGQgb25seSB1c2VkIGZvciBtb2NraW5nLgogICAgIElE
QkJhY2tpbmdTdG9yZSgpOwpAQCAtMTgwLDEwICsxODEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIElE
Qk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwKik7CiAKICAgICBTdHJpbmcgbV9pZGVudGlm
aWVyOwotICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IG1fZmFjdG9yeTsKKwogICAg
IE93blB0cjxMZXZlbERCRGF0YWJhc2U+IG1fZGI7CiAgICAgT3duUHRyPExldmVsREJDb21wYXJh
dG9yPiBtX2NvbXBhcmF0b3I7Ci0KKyAgICBXZWFrUHRyRmFjdG9yeTxJREJCYWNraW5nU3RvcmU+
IG1fd2Vha0ZhY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcAppbmRleCAyM2M2MTZlYTc1Njk0NDg0YjZhMjNjOGZkYmIzMDQ2MzM1MTlmZDhiLi40
MTkxNzUwMGIzYTgwMTk0MWY0OGIyMjExODI2YTkxMTcwMGMyZjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5jcHAKQEAgLTQxLDYgKzQxLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxh
dGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgTT4KK3N0YXRpYyB2b2lkIGNsZWFuV2Vha01hcChIYXNo
TWFwPEssIFdlYWtQdHI8TT4gPiYgbWFwKQoreworICAgIEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+
IG90aGVyOworICAgIG90aGVyLnN3YXAobWFwKTsKKworICAgIHR5cGVuYW1lIEhhc2hNYXA8Sywg
V2Vha1B0cjxNPiA+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gb3RoZXIuYmVnaW4oKTsKKyAgICB3
aGlsZSAoaXRlciAhPSBvdGhlci5lbmQoKSkgeworICAgICAgICBpZiAoaXRlci0+dmFsdWUuZ2V0
KCkpCisgICAgICAgICAgICBtYXAuc2V0KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOworICAgICAg
ICArK2l0ZXI7CisgICAgfQorfQorCiBzdGF0aWMgU3RyaW5nIGNvbXB1dGVGaWxlSWRlbnRpZmll
cihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIgbGV2ZWxEQkZpbGVTdWZmaXhbXSA9ICJAMSI7CkBAIC02NiwxOCArODAsNiBAQCB2b2lkIElE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmlu
ZyYgdW5pcXVlSWRlbnRpZgogICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnJlbW92ZSh1bmlxdWVJ
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OmFkZElEQkJhY2tp
bmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUqIGJh
Y2tpbmdTdG9yZSkKLXsKLSAgICBBU1NFUlQoIW1fYmFja2luZ1N0b3JlTWFwLmNvbnRhaW5zKGZp
bGVJZGVudGlmaWVyKSk7Ci0gICAgbV9iYWNraW5nU3RvcmVNYXAuc2V0KGZpbGVJZGVudGlmaWVy
LCBiYWNraW5nU3RvcmUpOwotfQotCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6cmVtb3Zl
SURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpCi17Ci0gICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlTWFwLmNvbnRhaW5zKGZpbGVJZGVudGlmaWVyKSk7Ci0gICAgbV9i
YWNraW5nU3RvcmVNYXAucmVtb3ZlKGZpbGVJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBJREJGYWN0
b3J5QmFja2VuZEltcGw6OmdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCiB7CiAg
ICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9y
ZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CkBAIC0xMjcsMTYgKzEyOSwxOCBAQCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFj
a2luZ1N0b3JlKFBhc3NSZWZQdHI8UwogewogICAgIGNvbnN0IFN0cmluZyBmaWxlSWRlbnRpZmll
ciA9IGNvbXB1dGVGaWxlSWRlbnRpZmllcihzZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAKLSAgICBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmU7CiAgICAgSURCQmFja2luZ1N0b3Jl
TWFwOjppdGVyYXRvciBpdDIgPSBtX2JhY2tpbmdTdG9yZU1hcC5maW5kKGZpbGVJZGVudGlmaWVy
KTsKLSAgICBpZiAoaXQyICE9IG1fYmFja2luZ1N0b3JlTWFwLmVuZCgpKQotICAgICAgICBiYWNr
aW5nU3RvcmUgPSBpdDItPnZhbHVlOwotICAgIGVsc2UgewotICAgICAgICBiYWNraW5nU3RvcmUg
PSBJREJCYWNraW5nU3RvcmU6Om9wZW4oc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFEaXJlY3Rv
cnksIGZpbGVJZGVudGlmaWVyLCB0aGlzKTsKKyAgICBpZiAoaXQyICE9IG1fYmFja2luZ1N0b3Jl
TWFwLmVuZCgpKSB7CisgICAgICAgIGlmIChpdDItPnZhbHVlLmdldCgpKQorICAgICAgICAgICAg
cmV0dXJuIGl0Mi0+dmFsdWUuZ2V0KCk7CiAgICAgfQogCi0gICAgaWYgKGJhY2tpbmdTdG9yZSkK
KyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBJREJCYWNraW5nU3Rv
cmU6Om9wZW4oc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFEaXJlY3RvcnksIGZpbGVJZGVudGlm
aWVyKTsKKyAgICBpZiAoYmFja2luZ1N0b3JlKSB7CisgICAgICAgIGNsZWFuV2Vha01hcChtX2Jh
Y2tpbmdTdG9yZU1hcCk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlTWFwLnNldChmaWxlSWRlbnRp
ZmllciwgYmFja2luZ1N0b3JlLT5jcmVhdGVXZWFrUHRyKCkpOwogICAgICAgICByZXR1cm4gYmFj
a2luZ1N0b3JlLnJlbGVhc2UoKTsKKyAgICB9CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmgKaW5kZXggMjRmNzNhZWY4ODk3YTAyMGM2NDQyNTI3ZjI5OWFjYTM1OWU2ZmEwOC4uOGM4
YTg2YTllZmUwZWZjMDU5YWJjMWQ4OWY5NDYwYTRmZGY0NDNjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgK
QEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCkBAIC01NCw4ICs1Niw2IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMg
ZnJvbSB3ZWFrIHBvaW50ZXJzLgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJh
Y2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICB2b2lkIGFkZElEQkJh
Y2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYg
ZmlsZUlkZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2
b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwpAQCAtNzAsNyArNzAsNyBAQCBwcml2
YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiA+IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRN
YXAgbV9kYXRhYmFzZUJhY2tlbmRNYXA7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJ
REJCYWNraW5nU3RvcmUqPiBJREJCYWNraW5nU3RvcmVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgV2Vha1B0cjxJREJCYWNraW5nU3RvcmU+ID4gSURCQmFja2luZ1N0b3JlTWFwOwog
ICAgIElEQkJhY2tpbmdTdG9yZU1hcCBtX2JhY2tpbmdTdG9yZU1hcDsKIAogICAgIC8vIE9ubHkg
b25lIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5IHNob3VsZCBleGlzdCBhdCBhbnkgZ2l2ZW4gdGlt
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmFja2luZ1N0
b3JlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJhY2tpbmdTdG9y
ZVRlc3QuY3BwCmluZGV4IGFhNGNkYzlmYTgzNDdkNDBlZWZmMGY3NjczNTcxNDczN2Y3NjQ5MTcu
LjUzMDJlMTJhZmMyNzM1ZTFjMTc4YTg3YmRkMGVjNzA0ZmZhNjFjMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmFja2luZ1N0b3JlVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcApAQCAt
MjcsOSArMjcsMTEgQEAKIAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogCisjaW5jbHVk
ZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
ICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtp
dF9zdXBwb3J0Lmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApAQCAtNDMsMTEg
KzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiA9IDA7Ci0gICAgICAgIG1fZmFjdG9yeSA9IDA7CiAg
ICAgICAgIC8vIEVtcHR5IHBhdGhCYXNlIG1lYW5zIGFuIGluLW1lbW9yeSBkYXRhYmFzZS4KICAg
ICAgICAgU3RyaW5nIHBhdGhCYXNlOwogICAgICAgICBTdHJpbmcgZmlsZUlkZW50aWZpZXI7Ci0g
ICAgICAgIG1fYmFja2luZ1N0b3JlID0gSURCQmFja2luZ1N0b3JlOjpvcGVuKHNlY3VyaXR5T3Jp
Z2luLCBwYXRoQmFzZSwgZmlsZUlkZW50aWZpZXIsIG1fZmFjdG9yeSk7CisgICAgICAgIG1fYmFj
a2luZ1N0b3JlID0gSURCQmFja2luZ1N0b3JlOjpvcGVuKHNlY3VyaXR5T3JpZ2luLCBwYXRoQmFz
ZSwgZmlsZUlkZW50aWZpZXIpOwogCiAgICAgICAgIC8vIHVzZWZ1bCBrZXlzIGFuZCB2YWx1ZXMg
ZHVyaW5nIHRlc3RzCiAgICAgICAgIGNvbnN0IGNoYXIgcmF3VmFsdWUxW10gPSAidmFsdWUxIjsK
QEAgLTU5LDcgKzYwLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIElEQkZh
Y3RvcnlCYWNrZW5kSW1wbCogbV9mYWN0b3J5OwogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+
IG1fYmFja2luZ1N0b3JlOwogCiAgICAgLy8gU2FtcGxlIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFy
ZSBjb25zaXN0ZW50LgpAQCAtMTgzLDYgKzE4Myw0MiBAQCBURVNUX0YoSURCQmFja2luZ1N0b3Jl
VGVzdCwgQ3JlYXRlRGF0YWJhc2UpCiAgICAgfQogfQogCitjbGFzcyBNb2NrSURCRmFjdG9yeUJh
Y2tlbmQgOiBwdWJsaWMgSURCRmFjdG9yeUJhY2tlbmRJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNb2NrSURCRmFjdG9yeUJhY2tlbmQ+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tJREJGYWN0b3J5QmFja2VuZCgpKTsKKyAgICB9
CisKKyAgICBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gdGVzdE9wZW5CYWNraW5nU3RvcmUo
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJl
Y3RvcnkpCisgICAgeworICAgICAgICByZXR1cm4gb3BlbkJhY2tpbmdTdG9yZShvcmlnaW4sIGRh
dGFEaXJlY3RvcnkpOworICAgIH0KK307CisKK1RFU1QoSURCRmFjdG9yeUJhY2tlbmRUZXN0LCBC
YWNraW5nU3RvcmVMaWZldGltZSkKK3sKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
bjEgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImxvY2FsaG9zdCIsIDgxKTsKKyAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjIgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KCJodHRwIiwgImxvY2FsaG9zdCIsIDgyKTsKKworICAgIFJlZlB0cjxNb2NrSURCRmFjdG9yeUJh
Y2tlbmQ+IGZhY3RvcnkgPSBNb2NrSURCRmFjdG9yeUJhY2tlbmQ6OmNyZWF0ZSgpOworCisgICAg
T3duUHRyPHdlYmtpdF9zdXBwb3J0OjpTY29wZWRUZW1wRGlyZWN0b3J5PiB0ZW1wRGlyZWN0b3J5
ID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVNjb3BlZFRlbXBEaXJlY3RvcnkoKSk7
CisgICAgdGVtcERpcmVjdG9yeS0+Q3JlYXRlVW5pcXVlVGVtcERpcigpOworICAgIGNvbnN0IFN0
cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wRGlyZWN0b3J5LT5wYXRoKCkuY19zdHIo
KSk7CisKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBkaXNrU3RvcmUxID0gZmFjdG9yeS0+
dGVzdE9wZW5CYWNraW5nU3RvcmUob3JpZ2luMSwgcGF0aCk7CisgICAgRVhQRUNUX1RSVUUoZGlz
a1N0b3JlMS0+aGFzT25lUmVmKCkpOworCisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gZGlz
a1N0b3JlMiA9IGZhY3RvcnktPnRlc3RPcGVuQmFja2luZ1N0b3JlKG9yaWdpbjEsIHBhdGgpOwor
ICAgIEVYUEVDVF9FUShkaXNrU3RvcmUyLmdldCgpLCBkaXNrU3RvcmUxLmdldCgpKTsKKyAgICBF
WFBFQ1RfRVEoZGlza1N0b3JlMi0+cmVmQ291bnQoKSwgMik7CisKKyAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBkaXNrU3RvcmUzID0gZmFjdG9yeS0+dGVzdE9wZW5CYWNraW5nU3RvcmUob3Jp
Z2luMiwgcGF0aCk7CisgICAgRVhQRUNUX1RSVUUoZGlza1N0b3JlMy0+aGFzT25lUmVmKCkpOwor
ICAgIEVYUEVDVF9FUShkaXNrU3RvcmUxLT5yZWZDb3VudCgpLCAyKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJDbGVhbnVwT25JT0Vycm9yVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNw
cAppbmRleCA5MGRjY2Q2YjExOWY1MmQ5ODhmNzM0ZjM5MWU5ZjZjZjMzNGU1OTFmLi43NDNlNWM4
MjBlZDAxOTkxZTE3ZDhkYzEwZWI3NTAzNjcxZGFmMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNwcApAQCAt
NzcsOSArNzcsOCBAQCBURVNUKElEQklPRXJyb3JUZXN0LCBDbGVhblVwVGVzdCkKICAgICB0ZW1w
RGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CiAgICAgY29uc3QgU3RyaW5nIHBhdGgg
PSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0cigpKTsKICAgICBT
dHJpbmcgZHVtbXlGaWxlSWRlbnRpZmllcjsKLSAgICBJREJGYWN0b3J5QmFja2VuZEltcGwqIGR1
bW15SURCRmFjdG9yeSA9IDA7CiAgICAgTW9ja0xldmVsREJGYWN0b3J5IG1vY2tMZXZlbERCRmFj
dG9yeTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBJREJCYWNr
aW5nU3RvcmU6Om9wZW4ob3JpZ2luLmdldCgpLCBwYXRoLCBkdW1teUZpbGVJZGVudGlmaWVyLCBk
dW1teUlEQkZhY3RvcnksICZtb2NrTGV2ZWxEQkZhY3RvcnkpOworICAgIFJlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6b3BlbihvcmlnaW4uZ2V0
KCksIHBhdGgsIGR1bW15RmlsZUlkZW50aWZpZXIsICZtb2NrTGV2ZWxEQkZhY3RvcnkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192239</attachid>
            <date>2013-03-08 09:34:28 -0800</date>
            <delta_ts>2013-03-08 09:44:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-111459-20130308093031.patch</filename>
            <type>text/plain</type>
            <size>17680</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM4NGRlMzMwYjJhYTMy
YTY3ZmI1ZjZiM2M2YTE5YjAzMzNiZDZkNi4uYjA1YTc2NWRhMmY4ZjhkYTgzZDliZDJkNzg1NTRi
MDk4OGVjNTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAzLTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBVc2Ug
V2Vha1B0ciBmb3IgRmFjdG9yeS10by1CYWNraW5nU3RvcmUgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE0NTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCBt
YWludGFpbnMgYSBtYXAgb2YgYmFja2luZyBzdG9yZXMgLSBpZiBhbm90aGVyIGRhdGFiYXNlIGlu
IHRoZSBzYW1lCisgICAgICAgIG9yaWdpbiBpcyBvcGVuZWQsIHRoZSBiYWNraW5nIHN0b3JlIGlu
c3RhbmNlIG11c3QgYmUgcmUtdXNlZCkuIFRoaXMgd2FzIGEgbWFwIHRvIHJhdworICAgICAgICBw
b2ludGVycyBzbyB0aGF0IHRoZSBiYWNraW5nIHN0b3JlIGNhbiBiZSBjb2xsZWN0ZWQgd2hlbiBh
bGwgZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUKKyAgICAgICAgZHJvcHBlZC4gVGhlIG1hcCB3YXMg
bWFpbnRhaW5lZCBtYW51YWxseSBieSBwYXNzaW5nIHRoZSBmYWN0b3J5IHRvIHRoZSBJREJCYWNr
aW5nU3RvcmUgd2hpY2gKKyAgICAgICAgd291bGQgYWRkL3JlbW92ZSBpdHNlbGYgb24gY3JlYXRp
b24vZGVzdHJ1Y3Rpb24uCisKKyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggYSBIYXNoTWFwPFdl
YWtQdHI8VD4+LiBUaGlzIHNpbXBsaWZpZXMgdGhlIHBsdW1iaW5nOyBtYXAgZW50cmllcworICAg
ICAgICAibGVhayIgYnV0IGFyZSBwdXJnZWQgb24gc3Vic2VxdWVudCBvcGVucy4KKworICAgICAg
ICBBZGRlZCB3ZWJraXRfdW5pdF90ZXN0IChDaHJvbWl1bSBwb3J0KSB0byB2ZXJpZnkgcmVmY291
bnRzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6SURCQmFja2luZ1N0b3JlKTogTm8g
bmVlZCB0byBub3RpZnkgZmFjdG9yeSBvZiBsaWZldGltZS4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkJhY2tpbmdTdG9yZTo6fklEQkJhY2tpbmdTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SURCQmFja2luZ1N0b3JlOjpvcGVuKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmg6IE5vIHJlZmVyZW5jZSB0byB0aGUgZmFjdG9yeSwgYnV0
Li4uCisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmNyZWF0ZVdlYWtQdHIpOiBE
byBuZWVkIHRvIGV4cG9zZSB3ZWFrIHBvaW50ZXJzIGZvciB0aGUgZmFjdG9yeSB0byBob2xkLgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjbGVhbldlYWtNYXApOiBIZWxwZXIgZnVuY3Rpb24gdG8gc2NydWIg
YSBIYXNoTWFwPFdlYWtQdHI8VD4+IG9mIGVtcHR5IHBvaW50ZXJzLgorICAgICAgICBNYXkgbW92
ZSB0byBXVEYgd2hlbiB3ZSd2ZSBsZWFybmVkIGhvdyBnZW5lcmFsIGl0IGlzLCBvciBjb21lIHVw
IHdpdGggYSBkZWRpY2F0ZWQgV2Vha1B0ckhhc2hNYXAgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6
OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZSk6IFdlYWtQdHIgZnUuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6CisgICAg
ICAgIChJREJGYWN0b3J5QmFja2VuZEltcGwpOiBSZW1vdmUgcGx1bWJpbmcgbWV0aG9kcy4KKwog
MjAxMy0wMy0wNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIEltcHJvdmUgd2FybmluZyBtZXNzYWdlcyB3aGVuIGlucHV0IHZhbHVlIGlz
IG91dCBvZiByYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTc3ZTU2OTJiMjE1
ZjMxZWVhOTI2YzI3NTAxMTFjNzM0ZWE3NTA4Yy4uNjI0MTQyZGEzM2MzZjBkZGNlYzQ2MzIwZDdj
Yjc1MWE0MjZkNzc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMy0wMy0wOCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEluZGV4ZWREQjogVXNlIFdlYWtQdHIgZm9yIEZhY3RvcnktdG8tQmFja2luZ1N0b3JlIHJl
ZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTExNDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIG5ldyB0ZXN0IHRoYXQgdmVyaWZpZXMgcmVmY291bnRzLgorCisgICAgICAgICogV2ViS2l0
Lmd5cDogRG9uJ3QgaW5jbHVkZSBmaWxlcyBkZXBlbmRpbmcgb24gd2Via2l0X3N1cHBvcnQuCisg
ICAgICAgICogdGVzdHMvSURCQmFja2luZ1N0b3JlVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJCYWNraW5nU3RvcmVUZXN0OjpTZXRVcCk6IE5vIG5lZWQgZm9yIGR1bW15IGZhY3Rvcnku
CisgICAgICAgIChNb2NrSURCRmFjdG9yeUJhY2tlbmQpOiBBbGxvdyBhY2Nlc3MgdG8gcHJvdGVj
dGVkIG9wZW5CYWNraW5nU3RvcmUgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6IEFk
ZCBuZXcgdGVzdCB0aGF0IHZlcmlmaWVzIHJlZmNvdW50cy4KKyAgICAgICAgKiB0ZXN0cy9JREJD
bGVhbnVwT25JT0Vycm9yVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKTogTm8gbmVl
ZCBmb3IgZHVtbXkgZmFjdG9yeS4KKwogMjAxMy0wMy0wNiAgQW5rdXIgVGFseSAgPGF0YWx5QGdv
b2dsZS5jb20+CiAKICAgICAgICAgTW9kaWZ5IGxvZyBtZXRob2QgaW4gV2ViRE9NQWN0aXZpdHlM
b2dnZXIgc28gdGhhdCB0aGUgYXBpTmFtZSBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGUzN2Q3YTYwMzRkMjVj
MDQ3YjNlOTkxMTkxZGEzOWJiZDdjZTFmMTIuLjBhYmNmZWQ4NmM3NGE3MTVmZjY2NTYzMGU4MjNl
ZjdkNGI3NzRlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhpc3RvZ3JhbVN1cHBvcnQuaCIKLSNpbmNsdWRlICJJREJG
YWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJL
ZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKQEAgLTQ0LDkgKzQzLDYgQEAKICNp
bmNsdWRlICJMZXZlbERCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgotI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzM5LDI4ICszMzUsMjAgQEAgcHVibGlj
OgogICAgIH0KIH07CiAKLUlEQkJhY2tpbmdTdG9yZTo6SURCQmFja2luZ1N0b3JlKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBQYXNzT3du
UHRyPExldmVsREJEYXRhYmFzZT4gZGIpCitJREJCYWNraW5nU3RvcmU6OklEQkJhY2tpbmdTdG9y
ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBk
YikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9mYWN0b3J5KGZhY3Rv
cnkpCiAgICAgLCBtX2RiKGRiKQorICAgICwgbV93ZWFrRmFjdG9yeSh0aGlzKQogewotI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQotICAgIEFTU0VSVChtX2ZhY3RvcnkgfHwgV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKSk7Ci0jZW5kaWYKLSAgICBpZiAobV9mYWN0
b3J5KQotICAgICAgICBtX2ZhY3RvcnktPmFkZElEQkJhY2tpbmdTdG9yZShpZGVudGlmaWVyLCB0
aGlzKTsKIH0KIAogSURCQmFja2luZ1N0b3JlOjpJREJCYWNraW5nU3RvcmUoKQorICAgIDogbV93
ZWFrRmFjdG9yeSh0aGlzKQogewogfQogCiBJREJCYWNraW5nU3RvcmU6On5JREJCYWNraW5nU3Rv
cmUoKQogewotICAgIC8vIE9ubHkgbnVsbCBpbiB0ZXN0cy4KLSAgICBpZiAobV9mYWN0b3J5KQot
ICAgICAgICBtX2ZhY3RvcnktPnJlbW92ZUlEQkJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOwot
CiAgICAgLy8gbV9kYidzIGRlc3RydWN0b3IgdXNlcyBtX2NvbXBhcmF0b3IuIFRoZSBvcmRlciBv
ZiBkZXN0cnVjdGlvbiBpcyBpbXBvcnRhbnQuCiAgICAgbV9kYi5jbGVhcigpOwogICAgIG1fY29t
cGFyYXRvci5jbGVhcigpOwpAQCAtMzgwLDEzICszNjgsMTMgQEAgZW51bSBJREJMZXZlbERCQmFj
a2luZ1N0b3JlT3BlblJlc3VsdCB7CiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZU9wZW5NYXgs
CiB9OwogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCQmFja2luZ1N0b3JlOjpvcGVu
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZUFy
ZywgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBm
YWN0b3J5KQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkJhY2tpbmdTdG9yZTo6b3Bl
bihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGF0aEJhc2VB
cmcsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpCiB7CiAgICAgRGVmYXVsdExldmVsREJG
YWN0b3J5IGxldmVsREJGYWN0b3J5OwotICAgIHJldHVybiBJREJCYWNraW5nU3RvcmU6Om9wZW4o
c2VjdXJpdHlPcmlnaW4sIHBhdGhCYXNlQXJnLCBmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgJmxl
dmVsREJGYWN0b3J5KTsKKyAgICByZXR1cm4gSURCQmFja2luZ1N0b3JlOjpvcGVuKHNlY3VyaXR5
T3JpZ2luLCBwYXRoQmFzZUFyZywgZmlsZUlkZW50aWZpZXIsICZsZXZlbERCRmFjdG9yeSk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJCYWNraW5nU3RvcmU6Om9wZW4oU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBj
b25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3Rv
cnksIExldmVsREJGYWN0b3J5KiBsZXZlbERCRmFjdG9yeSkKK1Bhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBJREJCYWNraW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlm
aWVyLCBMZXZlbERCRmFjdG9yeSogbGV2ZWxEQkZhY3RvcnkpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJCYWNraW5nU3RvcmU6Om9wZW4iKTsKICAgICBTdHJpbmcgcGF0aEJhc2UgPSBwYXRoQmFzZUFy
ZzsKQEAgLTQ1Niw3ICs0NDQsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCQmFj
a2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbgogCiAgICAgLy8g
RklYTUU6IEhhbmRsZSBjb21wYXJhdG9yIG5hbWUgY2hhbmdlcy4KIAotICAgIFJlZlB0cjxJREJC
YWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihuZXcgSURCQmFja2luZ1N0b3JlKGZp
bGVJZGVudGlmaWVyLCBmYWN0b3J5LCBkYi5yZWxlYXNlKCkpKSk7CisgICAgUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKGFkb3B0UmVmKG5ldyBJREJCYWNraW5nU3RvcmUoZmls
ZUlkZW50aWZpZXIsIGRiLnJlbGVhc2UoKSkpKTsKICAgICBiYWNraW5nU3RvcmUtPm1fY29tcGFy
YXRvciA9IGNvbXBhcmF0b3IucmVsZWFzZSgpOwogCiAgICAgaWYgKCFzZXRVcE1ldGFkYXRhKGJh
Y2tpbmdTdG9yZS0+bV9kYi5nZXQoKSwgZmlsZUlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBmY2ZlMmRh
ZTkwYzBjNGFmMGI1MDIzNWU1YTExODJhMjc5MTk2ZDYwLi5lOGVlNmI2Yzg4MGM2MjU4NTg5NTYw
NjE2NDllMzI1N2NhNmI2MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtMzQsMTMgKzM0LDEzIEBACiAjaW5jbHVkZSAi
TGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBMZXZlbERCQ29tcGFyYXRvcjsKIGNsYXNzIExldmVsREJEYXRh
YmFzZTsKIGNsYXNzIExldmVsREJUcmFuc2FjdGlvbjsKLWNsYXNzIElEQkZhY3RvcnlCYWNrZW5k
SW1wbDsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleVJhbmdlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CkBAIC01Nyw4ICs1Nyw5IEBAIHB1YmxpYzoKICAgICBjbGFzcyBUcmFuc2FjdGlvbjsK
IAogICAgIHZpcnR1YWwgfklEQkJhY2tpbmdTdG9yZSgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4gb3BlbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgcGF0
aEJhc2UsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1w
bCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbihTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50
aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIExldmVsREJGYWN0b3J5Kik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgTGV2
ZWxEQkZhY3RvcnkqKTsKKyAgICBXZWFrUHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlV2Vha1B0
cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKICAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGdldERhdGFiYXNlTmFtZXMoKTsKICAgICB2aXJ0dWFsIGJvb2wg
Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0
YWRhdGEqLCBib29sJiBzdWNjZXNzKSBXQVJOX1VOVVNFRF9SRVRVUk47CkBAIC0xNzAsNyArMTcx
LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByb3RlY3RlZDoKLSAgICBJREJCYWNraW5nU3RvcmUo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBQYXNzT3du
UHRyPExldmVsREJEYXRhYmFzZT4pOworICAgIElEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPik7CiAKICAgICAvLyBTaG91
bGQgb25seSB1c2VkIGZvciBtb2NraW5nLgogICAgIElEQkJhY2tpbmdTdG9yZSgpOwpAQCAtMTgw
LDEwICsxODEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE6Oklu
ZGV4TWFwKik7CiAKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwotICAgIFJlZlB0cjxJREJGYWN0
b3J5QmFja2VuZEltcGw+IG1fZmFjdG9yeTsKKwogICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+
IG1fZGI7CiAgICAgT3duUHRyPExldmVsREJDb21wYXJhdG9yPiBtX2NvbXBhcmF0b3I7Ci0KKyAg
ICBXZWFrUHRyRmFjdG9yeTxJREJCYWNraW5nU3RvcmU+IG1fd2Vha0ZhY3Rvcnk7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCAyM2M2MTZlYTc1
Njk0NDg0YjZhMjNjOGZkYmIzMDQ2MzM1MTlmZDhiLi40MTkxNzUwMGIzYTgwMTk0MWY0OGIyMjEx
ODI2YTkxMTcwMGMyZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTQxLDYgKzQxLDIwIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUg
TT4KK3N0YXRpYyB2b2lkIGNsZWFuV2Vha01hcChIYXNoTWFwPEssIFdlYWtQdHI8TT4gPiYgbWFw
KQoreworICAgIEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+IG90aGVyOworICAgIG90aGVyLnN3YXAo
bWFwKTsKKworICAgIHR5cGVuYW1lIEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+Ojpjb25zdF9pdGVy
YXRvciBpdGVyID0gb3RoZXIuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXRlciAhPSBvdGhlci5lbmQo
KSkgeworICAgICAgICBpZiAoaXRlci0+dmFsdWUuZ2V0KCkpCisgICAgICAgICAgICBtYXAuc2V0
KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOworICAgICAgICArK2l0ZXI7CisgICAgfQorfQorCiBz
dGF0aWMgU3RyaW5nIGNvbXB1dGVGaWxlSWRlbnRpZmllcihTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4pCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgbGV2ZWxEQkZpbGVTdWZmaXhbXSA9
ICJAMSI7CkBAIC02NiwxOCArODAsNiBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6cmVt
b3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZgogICAgIG1f
ZGF0YWJhc2VCYWNrZW5kTWFwLnJlbW92ZSh1bmlxdWVJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJ
REJGYWN0b3J5QmFja2VuZEltcGw6OmFkZElEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZp
bGVJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSkKLXsKLSAgICBBU1NF
UlQoIW1fYmFja2luZ1N0b3JlTWFwLmNvbnRhaW5zKGZpbGVJZGVudGlmaWVyKSk7Ci0gICAgbV9i
YWNraW5nU3RvcmVNYXAuc2V0KGZpbGVJZGVudGlmaWVyLCBiYWNraW5nU3RvcmUpOwotfQotCi12
b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6cmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0
cmluZyYgZmlsZUlkZW50aWZpZXIpCi17Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlTWFwLmNv
bnRhaW5zKGZpbGVJZGVudGlmaWVyKSk7Ci0gICAgbV9iYWNraW5nU3RvcmVNYXAucmVtb3ZlKGZp
bGVJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OmdldERhdGFi
YXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURp
cmVjdG9yeSk7CkBAIC0xMjcsMTYgKzEyOSwxOCBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8Uwog
ewogICAgIGNvbnN0IFN0cmluZyBmaWxlSWRlbnRpZmllciA9IGNvbXB1dGVGaWxlSWRlbnRpZmll
cihzZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBi
YWNraW5nU3RvcmU7CiAgICAgSURCQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdDIgPSBtX2Jh
Y2tpbmdTdG9yZU1hcC5maW5kKGZpbGVJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQyICE9IG1fYmFj
a2luZ1N0b3JlTWFwLmVuZCgpKQotICAgICAgICBiYWNraW5nU3RvcmUgPSBpdDItPnZhbHVlOwot
ICAgIGVsc2UgewotICAgICAgICBiYWNraW5nU3RvcmUgPSBJREJCYWNraW5nU3RvcmU6Om9wZW4o
c2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFEaXJlY3RvcnksIGZpbGVJZGVudGlmaWVyLCB0aGlz
KTsKKyAgICBpZiAoaXQyICE9IG1fYmFja2luZ1N0b3JlTWFwLmVuZCgpKSB7CisgICAgICAgIGlm
IChpdDItPnZhbHVlLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0Mi0+dmFsdWUuZ2V0KCk7
CiAgICAgfQogCi0gICAgaWYgKGJhY2tpbmdTdG9yZSkKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0
b3JlPiBiYWNraW5nU3RvcmUgPSBJREJCYWNraW5nU3RvcmU6Om9wZW4oc2VjdXJpdHlPcmlnaW4u
Z2V0KCksIGRhdGFEaXJlY3RvcnksIGZpbGVJZGVudGlmaWVyKTsKKyAgICBpZiAoYmFja2luZ1N0
b3JlKSB7CisgICAgICAgIGNsZWFuV2Vha01hcChtX2JhY2tpbmdTdG9yZU1hcCk7CisgICAgICAg
IG1fYmFja2luZ1N0b3JlTWFwLnNldChmaWxlSWRlbnRpZmllciwgYmFja2luZ1N0b3JlLT5jcmVh
dGVXZWFrUHRyKCkpOwogICAgICAgICByZXR1cm4gYmFja2luZ1N0b3JlLnJlbGVhc2UoKTsKKyAg
ICB9CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggMjRmNzNhZWY4ODk3
YTAyMGM2NDQyNTI3ZjI5OWFjYTM1OWU2ZmEwOC4uOGM4YTg2YTllZmUwZWZjMDU5YWJjMWQ4OWY5
NDYwYTRmZGY0NDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNs
dWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC01NCw4ICs1Niw2IEBA
IHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgZnJvbSB3ZWFrIHBvaW50ZXJzLgogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlx
dWVJZGVudGlmaWVyKTsKLSAgICB2b2lkIGFkZElEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcm
IGZpbGVJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpOwogCiAgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXIpOwpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiA+IElEQkRhdGFiYXNlQmFj
a2VuZE1hcDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXAgbV9kYXRhYmFzZUJhY2tlbmRNYXA7
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJCYWNraW5nU3RvcmUqPiBJREJCYWNr
aW5nU3RvcmVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgV2Vha1B0cjxJREJCYWNr
aW5nU3RvcmU+ID4gSURCQmFja2luZ1N0b3JlTWFwOwogICAgIElEQkJhY2tpbmdTdG9yZU1hcCBt
X2JhY2tpbmdTdG9yZU1hcDsKIAogICAgIC8vIE9ubHkgb25lIGluc3RhbmNlIG9mIHRoZSBmYWN0
b3J5IHNob3VsZCBleGlzdCBhdCBhbnkgZ2l2ZW4gdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAppbmRleCA5MTQ3MmJmMDg0MWQzMTYyYzQxNzNmMDNjNDA1MDBkYjY4OGI5MDQxLi43ZTkw
MDdlNmVjZGQyOTdmMzNjM2RhYWEyOTcyNDE2YmRkNDM4MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCkBAIC02NTEsNiArNjUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBXZSBzaG91bGQgbm90IGluY2x1ZGUgZmlsZXMgZGVwZW5kaW5nIG9uIHdlYmtpdF9z
dXBwb3J0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZXNlIHRlc3RzIGRl
cGVuZCBvbiB3ZWJraXRfc3VwcG9ydCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIyBmdW5jdGlvbnMgZGVmaW5lZCBvbmx5IGluICFXRUJLSVRfSU1QTEVNRU5UQVRJT04uCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0
LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9JREJDbGVhbnVw
T25JT0Vycm9yVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVz
dHMvTGV2ZWxEQlRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmFja2luZ1N0b3JlVGVzdC5j
cHAKaW5kZXggYWE0Y2RjOWZhODM0N2Q0MGVlZmYwZjc2NzM1NzE0NzM3Zjc2NDkxNy4uNTMwMmUx
MmFmYzI3MzVlMWMxNzhhODdiZGQwZWM3MDRmZmE2MWMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJhY2tpbmdTdG9yZVRlc3QuY3BwCkBAIC0yNyw5ICsy
NywxMSBAQAogCiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCiAKKyNpbmNsdWRlICJJREJG
YWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBv
cnQuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCkBAIC00MywxMSArNDUsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgU2V0VXAoKQogICAgIHsKICAgICAgICAgU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luID0gMDsKLSAgICAgICAgbV9mYWN0b3J5ID0gMDsKICAgICAgICAg
Ly8gRW1wdHkgcGF0aEJhc2UgbWVhbnMgYW4gaW4tbWVtb3J5IGRhdGFiYXNlLgogICAgICAgICBT
dHJpbmcgcGF0aEJhc2U7CiAgICAgICAgIFN0cmluZyBmaWxlSWRlbnRpZmllcjsKLSAgICAgICAg
bV9iYWNraW5nU3RvcmUgPSBJREJCYWNraW5nU3RvcmU6Om9wZW4oc2VjdXJpdHlPcmlnaW4sIHBh
dGhCYXNlLCBmaWxlSWRlbnRpZmllciwgbV9mYWN0b3J5KTsKKyAgICAgICAgbV9iYWNraW5nU3Rv
cmUgPSBJREJCYWNraW5nU3RvcmU6Om9wZW4oc2VjdXJpdHlPcmlnaW4sIHBhdGhCYXNlLCBmaWxl
SWRlbnRpZmllcik7CiAKICAgICAgICAgLy8gdXNlZnVsIGtleXMgYW5kIHZhbHVlcyBkdXJpbmcg
dGVzdHMKICAgICAgICAgY29uc3QgY2hhciByYXdWYWx1ZTFbXSA9ICJ2YWx1ZTEiOwpAQCAtNTks
NyArNjAsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKiBtX2ZhY3Rvcnk7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gbV9iYWNr
aW5nU3RvcmU7CiAKICAgICAvLyBTYW1wbGUga2V5cyBhbmQgdmFsdWVzIHRoYXQgYXJlIGNvbnNp
c3RlbnQuCkBAIC0xODMsNiArMTgzLDQyIEBAIFRFU1RfRihJREJCYWNraW5nU3RvcmVUZXN0LCBD
cmVhdGVEYXRhYmFzZSkKICAgICB9CiB9CiAKK2NsYXNzIE1vY2tJREJGYWN0b3J5QmFja2VuZCA6
IHB1YmxpYyBJREJGYWN0b3J5QmFja2VuZEltcGwgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1vY2tJREJGYWN0b3J5QmFja2VuZD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTW9ja0lEQkZhY3RvcnlCYWNrZW5kKCkpOworICAgIH0KKworICAg
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiB0ZXN0T3BlbkJhY2tpbmdTdG9yZShQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkK
KyAgICB7CisgICAgICAgIHJldHVybiBvcGVuQmFja2luZ1N0b3JlKG9yaWdpbiwgZGF0YURpcmVj
dG9yeSk7CisgICAgfQorfTsKKworVEVTVChJREJGYWN0b3J5QmFja2VuZFRlc3QsIEJhY2tpbmdT
dG9yZUxpZmV0aW1lKQoreworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luMSA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCAibG9jYWxob3N0IiwgODEpOworICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luMiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAi
LCAibG9jYWxob3N0IiwgODIpOworCisgICAgUmVmUHRyPE1vY2tJREJGYWN0b3J5QmFja2VuZD4g
ZmFjdG9yeSA9IE1vY2tJREJGYWN0b3J5QmFja2VuZDo6Y3JlYXRlKCk7CisKKyAgICBPd25QdHI8
d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBEaXJlY3RvcnkgPSBhZG9w
dFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVjdG9yeSgpKTsKKyAgICB0
ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAgY29uc3QgU3RyaW5nIHBh
dGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0cigpKTsKKwor
ICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGRpc2tTdG9yZTEgPSBmYWN0b3J5LT50ZXN0T3Bl
bkJhY2tpbmdTdG9yZShvcmlnaW4xLCBwYXRoKTsKKyAgICBFWFBFQ1RfVFJVRShkaXNrU3RvcmUx
LT5oYXNPbmVSZWYoKSk7CisKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBkaXNrU3RvcmUy
ID0gZmFjdG9yeS0+dGVzdE9wZW5CYWNraW5nU3RvcmUob3JpZ2luMSwgcGF0aCk7CisgICAgRVhQ
RUNUX0VRKGRpc2tTdG9yZTIuZ2V0KCksIGRpc2tTdG9yZTEuZ2V0KCkpOworICAgIEVYUEVDVF9F
UShkaXNrU3RvcmUyLT5yZWZDb3VudCgpLCAyKTsKKworICAgIFJlZlB0cjxJREJCYWNraW5nU3Rv
cmU+IGRpc2tTdG9yZTMgPSBmYWN0b3J5LT50ZXN0T3BlbkJhY2tpbmdTdG9yZShvcmlnaW4yLCBw
YXRoKTsKKyAgICBFWFBFQ1RfVFJVRShkaXNrU3RvcmUzLT5oYXNPbmVSZWYoKSk7CisgICAgRVhQ
RUNUX0VRKGRpc2tTdG9yZTEtPnJlZkNvdW50KCksIDIpOworfQorCiB9IC8vIG5hbWVzcGFjZQog
CiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkNsZWFudXBPbklPRXJyb3JUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQ2xlYW51cE9uSU9FcnJvclRlc3QuY3BwCmluZGV4
IDkwZGNjZDZiMTE5ZjUyZDk4OGY3MzRmMzkxZTlmNmNmMzM0ZTU5MWYuLjc0M2U1YzgyMGVkMDE5
OTFlMTdkOGRjMTBlYjc1MDM2NzFkYWYxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCQ2xlYW51cE9uSU9FcnJvclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCQ2xlYW51cE9uSU9FcnJvclRlc3QuY3BwCkBAIC03Nyw5ICs3
Nyw4IEBAIFRFU1QoSURCSU9FcnJvclRlc3QsIENsZWFuVXBUZXN0KQogICAgIHRlbXBEaXJlY3Rv
cnktPkNyZWF0ZVVuaXF1ZVRlbXBEaXIoKTsKICAgICBjb25zdCBTdHJpbmcgcGF0aCA9IFN0cmlu
Zzo6ZnJvbVVURjgodGVtcERpcmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpOwogICAgIFN0cmluZyBk
dW1teUZpbGVJZGVudGlmaWVyOwotICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZHVtbXlJREJG
YWN0b3J5ID0gMDsKICAgICBNb2NrTGV2ZWxEQkZhY3RvcnkgbW9ja0xldmVsREJGYWN0b3J5Owot
ICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9y
ZTo6b3BlbihvcmlnaW4uZ2V0KCksIHBhdGgsIGR1bW15RmlsZUlkZW50aWZpZXIsIGR1bW15SURC
RmFjdG9yeSwgJm1vY2tMZXZlbERCRmFjdG9yeSk7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlID0gSURCQmFja2luZ1N0b3JlOjpvcGVuKG9yaWdpbi5nZXQoKSwgcGF0
aCwgZHVtbXlGaWxlSWRlbnRpZmllciwgJm1vY2tMZXZlbERCRmFjdG9yeSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192241</attachid>
            <date>2013-03-08 09:44:43 -0800</date>
            <delta_ts>2013-03-08 10:08:30 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-111459-20130308094046.patch</filename>
            <type>text/plain</type>
            <size>17676</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM4NGRlMzMwYjJhYTMy
YTY3ZmI1ZjZiM2M2YTE5YjAzMzNiZDZkNi4uYjA1YTc2NWRhMmY4ZjhkYTgzZDliZDJkNzg1NTRi
MDk4OGVjNTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAzLTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBVc2Ug
V2Vha1B0ciBmb3IgRmFjdG9yeS10by1CYWNraW5nU3RvcmUgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE0NTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCBt
YWludGFpbnMgYSBtYXAgb2YgYmFja2luZyBzdG9yZXMgLSBpZiBhbm90aGVyIGRhdGFiYXNlIGlu
IHRoZSBzYW1lCisgICAgICAgIG9yaWdpbiBpcyBvcGVuZWQsIHRoZSBiYWNraW5nIHN0b3JlIGlu
c3RhbmNlIG11c3QgYmUgcmUtdXNlZCkuIFRoaXMgd2FzIGEgbWFwIHRvIHJhdworICAgICAgICBw
b2ludGVycyBzbyB0aGF0IHRoZSBiYWNraW5nIHN0b3JlIGNhbiBiZSBjb2xsZWN0ZWQgd2hlbiBh
bGwgZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUKKyAgICAgICAgZHJvcHBlZC4gVGhlIG1hcCB3YXMg
bWFpbnRhaW5lZCBtYW51YWxseSBieSBwYXNzaW5nIHRoZSBmYWN0b3J5IHRvIHRoZSBJREJCYWNr
aW5nU3RvcmUgd2hpY2gKKyAgICAgICAgd291bGQgYWRkL3JlbW92ZSBpdHNlbGYgb24gY3JlYXRp
b24vZGVzdHJ1Y3Rpb24uCisKKyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggYSBIYXNoTWFwPFdl
YWtQdHI8VD4+LiBUaGlzIHNpbXBsaWZpZXMgdGhlIHBsdW1iaW5nOyBtYXAgZW50cmllcworICAg
ICAgICAibGVhayIgYnV0IGFyZSBwdXJnZWQgb24gc3Vic2VxdWVudCBvcGVucy4KKworICAgICAg
ICBBZGRlZCB3ZWJraXRfdW5pdF90ZXN0IChDaHJvbWl1bSBwb3J0KSB0byB2ZXJpZnkgcmVmY291
bnRzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6SURCQmFja2luZ1N0b3JlKTogTm8g
bmVlZCB0byBub3RpZnkgZmFjdG9yeSBvZiBsaWZldGltZS4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkJhY2tpbmdTdG9yZTo6fklEQkJhY2tpbmdTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SURCQmFja2luZ1N0b3JlOjpvcGVuKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmg6IE5vIHJlZmVyZW5jZSB0byB0aGUgZmFjdG9yeSwgYnV0
Li4uCisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmNyZWF0ZVdlYWtQdHIpOiBE
byBuZWVkIHRvIGV4cG9zZSB3ZWFrIHBvaW50ZXJzIGZvciB0aGUgZmFjdG9yeSB0byBob2xkLgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjbGVhbldlYWtNYXApOiBIZWxwZXIgZnVuY3Rpb24gdG8gc2NydWIg
YSBIYXNoTWFwPFdlYWtQdHI8VD4+IG9mIGVtcHR5IHBvaW50ZXJzLgorICAgICAgICBNYXkgbW92
ZSB0byBXVEYgd2hlbiB3ZSd2ZSBsZWFybmVkIGhvdyBnZW5lcmFsIGl0IGlzLCBvciBjb21lIHVw
IHdpdGggYSBkZWRpY2F0ZWQgV2Vha1B0ckhhc2hNYXAgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6
OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZSk6IFdlYWtQdHIgZnUuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6CisgICAg
ICAgIChJREJGYWN0b3J5QmFja2VuZEltcGwpOiBSZW1vdmUgcGx1bWJpbmcgbWV0aG9kcy4KKwog
MjAxMy0wMy0wNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIEltcHJvdmUgd2FybmluZyBtZXNzYWdlcyB3aGVuIGlucHV0IHZhbHVlIGlz
IG91dCBvZiByYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTc3ZTU2OTJiMjE1
ZjMxZWVhOTI2YzI3NTAxMTFjNzM0ZWE3NTA4Yy4uZmU3NjM0OGE4NjEwYWU3NmYxMzRmNGNjZTM1
YmQ1ZTQwMDg1ZGRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMy0wMy0wOCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEluZGV4ZWREQjogVXNlIFdlYWtQdHIgZm9yIEZhY3RvcnktdG8tQmFja2luZ1N0b3JlIHJl
ZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTExNDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBBZGQg
bmV3IHRlc3QgdGhhdCB2ZXJpZmllcyByZWZjb3VudHMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OiBEb24ndCBpbmNsdWRlIGZpbGVzIGRlcGVuZGluZyBvbiB3ZWJraXRfc3VwcG9ydC4KKyAgICAg
ICAgKiB0ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkJhY2tpbmdTdG9yZVRlc3Q6OlNldFVwKTogTm8gbmVlZCBmb3IgZHVtbXkgZmFjdG9yeS4KKyAg
ICAgICAgKE1vY2tJREJGYWN0b3J5QmFja2VuZCk6IEFsbG93IGFjY2VzcyB0byBwcm90ZWN0ZWQg
b3BlbkJhY2tpbmdTdG9yZSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpURVNUKTogQWRkIG5l
dyB0ZXN0IHRoYXQgdmVyaWZpZXMgcmVmY291bnRzLgorICAgICAgICAqIHRlc3RzL0lEQkNsZWFu
dXBPbklPRXJyb3JUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOiBObyBuZWVkIGZv
ciBkdW1teSBmYWN0b3J5LgorCiAyMDEzLTAzLTA2ICBBbmt1ciBUYWx5ICA8YXRhbHlAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBNb2RpZnkgbG9nIG1ldGhvZCBpbiBXZWJET01BY3Rpdml0eUxvZ2dl
ciBzbyB0aGF0IHRoZSBhcGlOYW1lIGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZTM3ZDdhNjAzNGQyNWMwNDdi
M2U5OTExOTFkYTM5YmJkN2NlMWYxMi4uMGFiY2ZlZDg2Yzc0YTcxNWZmNjY1NjMwZTgyM2VmN2Q0
Yjc3NGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiSGlzdG9ncmFtU3VwcG9ydC5oIgotI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVBh
dGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAtNDQsOSArNDMsNiBAQAogI2luY2x1
ZGUgIkxldmVsREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0jaW5jbHVk
ZSA8cHVibGljL1BsYXRmb3JtLmg+Ci0jZW5kaWYKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMzksMjggKzMzNSwyMCBAQCBwdWJsaWM6CiAg
ICAgfQogfTsKIAotSURCQmFja2luZ1N0b3JlOjpJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIFBhc3NPd25QdHI8
TGV2ZWxEQkRhdGFiYXNlPiBkYikKK0lEQkJhY2tpbmdTdG9yZTo6SURCQmFja2luZ1N0b3JlKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IGRiKQog
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkK
ICAgICAsIG1fZGIoZGIpCisgICAgLCBtX3dlYWtGYWN0b3J5KHRoaXMpCiB7Ci0jaWYgUExBVEZP
Uk0oQ0hST01JVU0pCi0gICAgQVNTRVJUKG1fZmFjdG9yeSB8fCBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpKTsKLSNlbmRpZgotICAgIGlmIChtX2ZhY3Rvcnkp
Ci0gICAgICAgIG1fZmFjdG9yeS0+YWRkSURCQmFja2luZ1N0b3JlKGlkZW50aWZpZXIsIHRoaXMp
OwogfQogCiBJREJCYWNraW5nU3RvcmU6OklEQkJhY2tpbmdTdG9yZSgpCisgICAgOiBtX3dlYWtG
YWN0b3J5KHRoaXMpCiB7CiB9CiAKIElEQkJhY2tpbmdTdG9yZTo6fklEQkJhY2tpbmdTdG9yZSgp
CiB7Ci0gICAgLy8gT25seSBudWxsIGluIHRlc3RzLgotICAgIGlmIChtX2ZhY3RvcnkpCi0gICAg
ICAgIG1fZmFjdG9yeS0+cmVtb3ZlSURCQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7Ci0KICAg
ICAvLyBtX2RiJ3MgZGVzdHJ1Y3RvciB1c2VzIG1fY29tcGFyYXRvci4gVGhlIG9yZGVyIG9mIGRl
c3RydWN0aW9uIGlzIGltcG9ydGFudC4KICAgICBtX2RiLmNsZWFyKCk7CiAgICAgbV9jb21wYXJh
dG9yLmNsZWFyKCk7CkBAIC0zODAsMTMgKzM2OCwxMyBAQCBlbnVtIElEQkxldmVsREJCYWNraW5n
U3RvcmVPcGVuUmVzdWx0IHsKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlT3Blbk1heCwKIH07
CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJCYWNraW5nU3RvcmU6Om9wZW4oU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBj
b25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3Rv
cnkpCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCQmFja2luZ1N0b3JlOjpvcGVuKFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZUFyZywg
Y29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcikKIHsKICAgICBEZWZhdWx0TGV2ZWxEQkZhY3Rv
cnkgbGV2ZWxEQkZhY3Rvcnk7Ci0gICAgcmV0dXJuIElEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1
cml0eU9yaWdpbiwgcGF0aEJhc2VBcmcsIGZpbGVJZGVudGlmaWVyLCBmYWN0b3J5LCAmbGV2ZWxE
QkZhY3RvcnkpOworICAgIHJldHVybiBJREJCYWNraW5nU3RvcmU6Om9wZW4oc2VjdXJpdHlPcmln
aW4sIHBhdGhCYXNlQXJnLCBmaWxlSWRlbnRpZmllciwgJmxldmVsREJGYWN0b3J5KTsKIH0KIAot
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0
IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwg
TGV2ZWxEQkZhY3RvcnkqIGxldmVsREJGYWN0b3J5KQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU+IElEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIs
IExldmVsREJGYWN0b3J5KiBsZXZlbERCRmFjdG9yeSkKIHsKICAgICBJREJfVFJBQ0UoIklEQkJh
Y2tpbmdTdG9yZTo6b3BlbiIpOwogICAgIFN0cmluZyBwYXRoQmFzZSA9IHBhdGhCYXNlQXJnOwpA
QCAtNDU2LDcgKzQ0NCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJCYWNraW5n
U3RvcmU6Om9wZW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luCiAKICAgICAvLyBGSVhN
RTogSGFuZGxlIGNvbXBhcmF0b3IgbmFtZSBjaGFuZ2VzLgogCi0gICAgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZT4gYmFja2luZ1N0b3JlKGFkb3B0UmVmKG5ldyBJREJCYWNraW5nU3RvcmUoZmlsZUlk
ZW50aWZpZXIsIGZhY3RvcnksIGRiLnJlbGVhc2UoKSkpKTsKKyAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBiYWNraW5nU3RvcmUoYWRvcHRSZWYobmV3IElEQkJhY2tpbmdTdG9yZShmaWxlSWRl
bnRpZmllciwgZGIucmVsZWFzZSgpKSkpOwogICAgIGJhY2tpbmdTdG9yZS0+bV9jb21wYXJhdG9y
ID0gY29tcGFyYXRvci5yZWxlYXNlKCk7CiAKICAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2lu
Z1N0b3JlLT5tX2RiLmdldCgpLCBmaWxlSWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGZjZmUyZGFlOTBj
MGM0YWYwYjUwMjM1ZTVhMTE4MmEyNzkxOTZkNjAuLmU4ZWU2YjZjODgwYzYyNTg1ODk1NjA2MTY0
OWUzMjU3Y2E2YjYyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0zNCwxMyArMzQsMTMgQEAKICNpbmNsdWRlICJMZXZl
bERCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIExldmVsREJDb21wYXJhdG9yOwogY2xhc3MgTGV2ZWxEQkRhdGFiYXNl
OwogY2xhc3MgTGV2ZWxEQlRyYW5zYWN0aW9uOwotY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbXBs
OwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKQEAgLTU3LDggKzU3LDkgQEAgcHVibGljOgogICAgIGNsYXNzIFRyYW5zYWN0aW9uOwogCiAg
ICAgdmlydHVhbCB+SURCQmFja2luZ1N0b3JlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlPiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFz
ZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKik7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmll
ciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgTGV2ZWxEQkZhY3RvcnkqKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBT
dHJpbmcmIHBhdGhCYXNlLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW4oU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBTdHJpbmcmIHBhdGhCYXNlLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBMZXZlbERC
RmFjdG9yeSopOworICAgIFdlYWtQdHI8SURCQmFja2luZ1N0b3JlPiBjcmVhdGVXZWFrUHRyKCkg
eyByZXR1cm4gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KIAogICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gZ2V0RGF0YWJhc2VOYW1lcygpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRJ
REJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0
YSosIGJvb2wmIHN1Y2Nlc3MpIFdBUk5fVU5VU0VEX1JFVFVSTjsKQEAgLTE3MCw3ICsxNzEsNyBA
QCBwdWJsaWM6CiAgICAgfTsKIAogcHJvdGVjdGVkOgotICAgIElEQkJhY2tpbmdTdG9yZShjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIFBhc3NPd25QdHI8
TGV2ZWxEQkRhdGFiYXNlPik7CisgICAgSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+KTsKIAogICAgIC8vIFNob3VsZCBv
bmx5IHVzZWQgZm9yIG1vY2tpbmcuCiAgICAgSURCQmFja2luZ1N0b3JlKCk7CkBAIC0xODAsMTAg
KzE4MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhN
YXAqKTsKIAogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7Ci0gICAgUmVmUHRyPElEQkZhY3RvcnlC
YWNrZW5kSW1wbD4gbV9mYWN0b3J5OworCiAgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gbV9k
YjsKICAgICBPd25QdHI8TGV2ZWxEQkNvbXBhcmF0b3I+IG1fY29tcGFyYXRvcjsKLQorICAgIFdl
YWtQdHJGYWN0b3J5PElEQkJhY2tpbmdTdG9yZT4gbV93ZWFrRmFjdG9yeTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IDIzYzYxNmVhNzU2OTQ0
ODRiNmEyM2M4ZmRiYjMwNDYzMzUxOWZkOGIuLjQxOTE3NTAwYjNhODAxOTQxZjQ4YjIyMTE4MjZh
OTExNzAwYzJmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtNDEsNiArNDEsMjAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBNPgor
c3RhdGljIHZvaWQgY2xlYW5XZWFrTWFwKEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+JiBtYXApCit7
CisgICAgSGFzaE1hcDxLLCBXZWFrUHRyPE0+ID4gb3RoZXI7CisgICAgb3RoZXIuc3dhcChtYXAp
OworCisgICAgdHlwZW5hbWUgSGFzaE1hcDxLLCBXZWFrUHRyPE0+ID46OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBvdGhlci5iZWdpbigpOworICAgIHdoaWxlIChpdGVyICE9IG90aGVyLmVuZCgpKSB7
CisgICAgICAgIGlmIChpdGVyLT52YWx1ZS5nZXQoKSkKKyAgICAgICAgICAgIG1hcC5zZXQoaXRl
ci0+a2V5LCBpdGVyLT52YWx1ZSk7CisgICAgICAgICsraXRlcjsKKyAgICB9Cit9CisKIHN0YXRp
YyBTdHJpbmcgY29tcHV0ZUZpbGVJZGVudGlmaWVyKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbikKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciBsZXZlbERCRmlsZVN1ZmZpeFtdID0gIkAx
IjsKQEAgLTY2LDE4ICs4MCw2IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJ
REJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmCiAgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAucmVtb3ZlKHVuaXF1ZUlkZW50aWZpZXIpOwogfQogCi12b2lkIElEQkZh
Y3RvcnlCYWNrZW5kSW1wbDo6YWRkSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlk
ZW50aWZpZXIsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlKQotewotICAgIEFTU0VSVCgh
bV9iYWNraW5nU3RvcmVNYXAuY29udGFpbnMoZmlsZUlkZW50aWZpZXIpKTsKLSAgICBtX2JhY2tp
bmdTdG9yZU1hcC5zZXQoZmlsZUlkZW50aWZpZXIsIGJhY2tpbmdTdG9yZSk7Ci19Ci0KLXZvaWQg
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5n
JiBmaWxlSWRlbnRpZmllcikKLXsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmVNYXAuY29udGFp
bnMoZmlsZUlkZW50aWZpZXIpKTsKLSAgICBtX2JhY2tpbmdTdG9yZU1hcC5yZW1vdmUoZmlsZUlk
ZW50aWZpZXIpOwotfQotCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Z2V0RGF0YWJhc2VO
YW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKIHsKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBi
YWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0
b3J5KTsKQEAgLTEyNywxNiArMTI5LDE4IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJ
REJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTCiB7CiAg
ICAgY29uc3QgU3RyaW5nIGZpbGVJZGVudGlmaWVyID0gY29tcHV0ZUZpbGVJZGVudGlmaWVyKHNl
Y3VyaXR5T3JpZ2luLmdldCgpKTsKIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tp
bmdTdG9yZTsKICAgICBJREJCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0MiA9IG1fYmFja2lu
Z1N0b3JlTWFwLmZpbmQoZmlsZUlkZW50aWZpZXIpOwotICAgIGlmIChpdDIgIT0gbV9iYWNraW5n
U3RvcmVNYXAuZW5kKCkpCi0gICAgICAgIGJhY2tpbmdTdG9yZSA9IGl0Mi0+dmFsdWU7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1
cml0eU9yaWdpbi5nZXQoKSwgZGF0YURpcmVjdG9yeSwgZmlsZUlkZW50aWZpZXIsIHRoaXMpOwor
ICAgIGlmIChpdDIgIT0gbV9iYWNraW5nU3RvcmVNYXAuZW5kKCkpIHsKKyAgICAgICAgaWYgKGl0
Mi0+dmFsdWUuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gaXQyLT52YWx1ZS5nZXQoKTsKICAg
ICB9CiAKLSAgICBpZiAoYmFja2luZ1N0b3JlKQorICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1cml0eU9yaWdpbi5nZXQo
KSwgZGF0YURpcmVjdG9yeSwgZmlsZUlkZW50aWZpZXIpOworICAgIGlmIChiYWNraW5nU3RvcmUp
IHsKKyAgICAgICAgY2xlYW5XZWFrTWFwKG1fYmFja2luZ1N0b3JlTWFwKTsKKyAgICAgICAgbV9i
YWNraW5nU3RvcmVNYXAuc2V0KGZpbGVJZGVudGlmaWVyLCBiYWNraW5nU3RvcmUtPmNyZWF0ZVdl
YWtQdHIoKSk7CiAgICAgICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgpOworICAgIH0K
IAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAppbmRleCAyNGY3M2FlZjg4OTdhMDIw
YzY0NDI1MjdmMjk5YWNhMzU5ZTZmYTA4Li44YzhhODZhOWVmZTBlZmMwNTlhYmMxZDg5Zjk0NjBh
NGZkZjQ0M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUg
IklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTU0LDggKzU2LDYgQEAgcHVi
bGljOgogCiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9tIHdlYWsgcG9pbnRlcnMuCiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIHVuaXF1ZUlk
ZW50aWZpZXIpOwotICAgIHZvaWQgYWRkSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmls
ZUlkZW50aWZpZXIsIElEQkJhY2tpbmdTdG9yZSopOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJ
REJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IGludDY0X3QgdmVyc2lvbiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0
YURpcik7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+ID4gSURCRGF0YWJhc2VCYWNrZW5k
TWFwOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcCBtX2RhdGFiYXNlQmFja2VuZE1hcDsKIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQkJhY2tpbmdTdG9yZSo+IElEQkJhY2tpbmdT
dG9yZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBXZWFrUHRyPElEQkJhY2tpbmdT
dG9yZT4gPiBJREJCYWNraW5nU3RvcmVNYXA7CiAgICAgSURCQmFja2luZ1N0b3JlTWFwIG1fYmFj
a2luZ1N0b3JlTWFwOwogCiAgICAgLy8gT25seSBvbmUgaW5zdGFuY2Ugb2YgdGhlIGZhY3Rvcnkg
c2hvdWxkIGV4aXN0IGF0IGFueSBnaXZlbiB0aW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDkxNDcyYmYwODQxZDMxNjJjNDE3M2YwM2M0MDUwMGRiNjg4YjkwNDEuLjdlOTAwN2U2
ZWNkZDI5N2YzM2MzZGFhYTI5NzI0MTZiZGQ0MzgyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTY1MSw2ICs2NTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIFdlIHNob3VsZCBub3QgaW5jbHVkZSBmaWxlcyBkZXBlbmRpbmcgb24gd2Via2l0X3N1cHBv
cnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlc2UgdGVzdHMgZGVwZW5k
IG9uIHdlYmtpdF9zdXBwb3J0IGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IGZ1bmN0aW9ucyBkZWZpbmVkIG9ubHkgaW4gIVdFQktJVF9JTVBMRU1FTlRBVElPTi4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0lEQkJhY2tpbmdTdG9yZVRlc3QuY3Bw
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0lEQkNsZWFudXBPbklP
RXJyb3JUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9M
ZXZlbERCVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJhY2tpbmdTdG9yZVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcApp
bmRleCBhYTRjZGM5ZmE4MzQ3ZDQwZWVmZjBmNzY3MzU3MTQ3MzdmNzY0OTE3Li41MzAyZTEyYWZj
MjczNWUxYzE3OGE4N2JkZDBlYzcwNGZmYTYxYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkJhY2tpbmdTdG9yZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCQmFja2luZ1N0b3JlVGVzdC5jcHAKQEAgLTI3LDkgKzI3LDEx
IEBACiAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKIAorI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5o
PgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKQEAgLTQzLDExICs0NSwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpCiAgICAgewogICAgICAgICBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4gPSAwOwotICAgICAgICBtX2ZhY3RvcnkgPSAwOwogICAgICAgICAvLyBF
bXB0eSBwYXRoQmFzZSBtZWFucyBhbiBpbi1tZW1vcnkgZGF0YWJhc2UuCiAgICAgICAgIFN0cmlu
ZyBwYXRoQmFzZTsKICAgICAgICAgU3RyaW5nIGZpbGVJZGVudGlmaWVyOwotICAgICAgICBtX2Jh
Y2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1cml0eU9yaWdpbiwgcGF0aEJh
c2UsIGZpbGVJZGVudGlmaWVyLCBtX2ZhY3RvcnkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZSA9
IElEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1cml0eU9yaWdpbiwgcGF0aEJhc2UsIGZpbGVJZGVu
dGlmaWVyKTsKIAogICAgICAgICAvLyB1c2VmdWwga2V5cyBhbmQgdmFsdWVzIGR1cmluZyB0ZXN0
cwogICAgICAgICBjb25zdCBjaGFyIHJhd1ZhbHVlMVtdID0gInZhbHVlMSI7CkBAIC01OSw3ICs2
MCw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBJREJGYWN0b3J5QmFja2Vu
ZEltcGwqIG1fZmFjdG9yeTsKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdT
dG9yZTsKIAogICAgIC8vIFNhbXBsZSBrZXlzIGFuZCB2YWx1ZXMgdGhhdCBhcmUgY29uc2lzdGVu
dC4KQEAgLTE4Myw2ICsxODMsNDIgQEAgVEVTVF9GKElEQkJhY2tpbmdTdG9yZVRlc3QsIENyZWF0
ZURhdGFiYXNlKQogICAgIH0KIH0KIAorY2xhc3MgTW9ja0lEQkZhY3RvcnlCYWNrZW5kIDogcHVi
bGljIElEQkZhY3RvcnlCYWNrZW5kSW1wbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TW9ja0lEQkZhY3RvcnlCYWNrZW5kPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNb2NrSURCRmFjdG9yeUJhY2tlbmQoKSk7CisgICAgfQorCisgICAgUGFz
c1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IHRlc3RPcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wZW5CYWNraW5nU3RvcmUob3JpZ2luLCBkYXRhRGlyZWN0b3J5
KTsKKyAgICB9Cit9OworCitURVNUKElEQkZhY3RvcnlCYWNrZW5kVGVzdCwgQmFja2luZ1N0b3Jl
TGlmZXRpbWUpCit7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4xID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJsb2NhbGhvc3QiLCA4MSk7CisgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4yID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJs
b2NhbGhvc3QiLCA4Mik7CisKKyAgICBSZWZQdHI8TW9ja0lEQkZhY3RvcnlCYWNrZW5kPiBmYWN0
b3J5ID0gTW9ja0lEQkZhY3RvcnlCYWNrZW5kOjpjcmVhdGUoKTsKKworICAgIE93blB0cjx3ZWJr
aXRfc3VwcG9ydDo6U2NvcGVkVGVtcERpcmVjdG9yeT4gdGVtcERpcmVjdG9yeSA9IGFkb3B0UHRy
KHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVTY29wZWRUZW1wRGlyZWN0b3J5KCkpOworICAgIHRlbXBE
aXJlY3RvcnktPkNyZWF0ZVVuaXF1ZVRlbXBEaXIoKTsKKyAgICBjb25zdCBTdHJpbmcgcGF0aCA9
IFN0cmluZzo6ZnJvbVVURjgodGVtcERpcmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpOworCisgICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gZGlza1N0b3JlMSA9IGZhY3RvcnktPnRlc3RPcGVuQmFj
a2luZ1N0b3JlKG9yaWdpbjEsIHBhdGgpOworICAgIEVYUEVDVF9UUlVFKGRpc2tTdG9yZTEtPmhh
c09uZVJlZigpKTsKKworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGRpc2tTdG9yZTIgPSBm
YWN0b3J5LT50ZXN0T3BlbkJhY2tpbmdTdG9yZShvcmlnaW4xLCBwYXRoKTsKKyAgICBFWFBFQ1Rf
RVEoZGlza1N0b3JlMi5nZXQoKSwgZGlza1N0b3JlMS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKGRp
c2tTdG9yZTItPnJlZkNvdW50KCksIDIpOworCisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
ZGlza1N0b3JlMyA9IGZhY3RvcnktPnRlc3RPcGVuQmFja2luZ1N0b3JlKG9yaWdpbjIsIHBhdGgp
OworICAgIEVYUEVDVF9UUlVFKGRpc2tTdG9yZTMtPmhhc09uZVJlZigpKTsKKyAgICBFWFBFQ1Rf
RVEoZGlza1N0b3JlMS0+cmVmQ291bnQoKSwgMik7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCQ2xlYW51cE9uSU9FcnJvclRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJDbGVhbnVwT25JT0Vycm9yVGVzdC5jcHAKaW5kZXggOTBk
Y2NkNmIxMTlmNTJkOTg4ZjczNGYzOTFlOWY2Y2YzMzRlNTkxZi4uNzQzZTVjODIwZWQwMTk5MWUx
N2Q4ZGMxMGViNzUwMzY3MWRhZjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJDbGVhbnVwT25JT0Vycm9yVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJDbGVhbnVwT25JT0Vycm9yVGVzdC5jcHAKQEAgLTc3LDkgKzc3LDgg
QEAgVEVTVChJREJJT0Vycm9yVGVzdCwgQ2xlYW5VcFRlc3QpCiAgICAgdGVtcERpcmVjdG9yeS0+
Q3JlYXRlVW5pcXVlVGVtcERpcigpOwogICAgIGNvbnN0IFN0cmluZyBwYXRoID0gU3RyaW5nOjpm
cm9tVVRGOCh0ZW1wRGlyZWN0b3J5LT5wYXRoKCkuY19zdHIoKSk7CiAgICAgU3RyaW5nIGR1bW15
RmlsZUlkZW50aWZpZXI7Ci0gICAgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBkdW1teUlEQkZhY3Rv
cnkgPSAwOwogICAgIE1vY2tMZXZlbERCRmFjdG9yeSBtb2NrTGV2ZWxEQkZhY3Rvcnk7Ci0gICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gSURCQmFja2luZ1N0b3JlOjpv
cGVuKG9yaWdpbi5nZXQoKSwgcGF0aCwgZHVtbXlGaWxlSWRlbnRpZmllciwgZHVtbXlJREJGYWN0
b3J5LCAmbW9ja0xldmVsREJGYWN0b3J5KTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBi
YWNraW5nU3RvcmUgPSBJREJCYWNraW5nU3RvcmU6Om9wZW4ob3JpZ2luLmdldCgpLCBwYXRoLCBk
dW1teUZpbGVJZGVudGlmaWVyLCAmbW9ja0xldmVsREJGYWN0b3J5KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>